东坡网 - 更多系统软件下载,请关注东坡网:www.dongpow.com

当前位置:首页 > 系统教程 > Linux教程 > 详细页面

Linux系统进程管理介绍(3)

时间:2017-08-17来源:东坡网作者:zhijie

  线程相关

  用户线程&内核线程

  线程从一开始诞生就有两个分类:用户级线程 和 内核级线程。

  我们在Linux上常见的是内核级线程, 即线程调度相关操作都在内核里实现, 不太常见的是用户级线程。

  用户级线程的优势是:

  1.线程切换成本低,不用内核操作

  2.用户可以自定义线程调度策略

  3.跟操作系统无关,可以很快移植到另外一台机器上

  但是用户线程也有如下问题:

  1.一个线程的阻塞会影响其他线程,因为操作系统看不到别的线程

  2.不能很好的利用多核能力,因为操作系统会把一个内核进程放到一个CPU上

  目前Linux上只使用内核级线程, Solaris上面两者都提供。

  线程切换

  一个进程的上下文主要有如下几个部分的信息构成:

  1.程序计数器

  2.寄存器信息

  3.栈信息

  一个进程切换的过程包含:

  1.保存当前进程的上下文

  2.将当前进程加入操作系统对应队列

  3.通过调度算法选择另外一个进程

  4.调整虚存映射

  5.加载新进程的上下文

  但是线程切换就不一样了,之需要切换PC寄存器指向的代码地址就好,其他操作都不用做,所以线程切换的成本比进程切换低多了。

  互斥和同步

  简介

  当多个进程需要对同一个资源进行访问的时候, 为了避免同时使用这个资源造成的混乱, 所以需要考虑进程间的互斥。

  典型的互斥实现方案如下:

  方案介绍

  中断禁用

  杀敌一千, 自损八百。虽然能实现互斥, 但是大大降低了处理器的执行效率。而且再多处理器体系结构中, 他还不能达到互斥

  专用机器指令

  往往是通过一个不可中断的指令, 用于原子修改内存中的值, 常见的两个指令是testset和exchange, 其对应的demo代码如下图。该方案的好处是实现简单, 坏处是使用了忙等待, 可能出现饥饿, 可能死锁, 需要操作系统层进行管理和避免。

分享到:

相关信息

  • Linux如何通过netstat命令查看80端口连接数

    Linux系统下netstat命令的用法有很多,能够列出所有端口,显示当前UDP连接状况,今天小编要给大家介绍的是Linux使用netstat命令查看80端口连接数的方法,不了解的朋友可以来学习下。...

    2023-03-16

  • Linux启动sshd服务报错could not load host怎么办?

    Linux在启动sshd服务的时候,出现错误提示,提示Could not load host key:/etc/ssh/ssh_ed25519_key,这段错误代码是什么意思呢?遇到该错误代码该如何解决问题呢?随小编一起来学习下吧。...

    2023-03-16

系统教程栏目

栏目热门教程

人气教程排行

站长推荐

热门系统下载

公众号