您的位置:首页 > 其它

线程实现的两种方式 —— 用户空间和内核中

2017-06-17 11:18 417 查看

在用户空间中实现线程

特点:

整个线程包放入用户空间中,内核对线程包一无所知。从内核角度考虑,就是按正常的方式管理,即单线程进程

优点:

1、用户级线程包可以在不支持线程的操作系统上实现

2、线程切换比内核快更多

3、允许每个进程有自己定制的调度算法

缺点:

线程发生I/O或页面故障引起的阻塞时,如果调用阻塞系统调用则内核由于不知道有多线程的存在,而会阻塞整个进程从而阻塞所有线程

一个单独的进程内部,没有时钟中断,所以不可能用轮转调度的方式调度线程

在内核中实现线程

特点:

当某个线程希望创建一个新线程或撤销一个已有线程时,它进行一个系统调用,这个系统调用通过对线程的更新完成线程创建或撤销工作

优点:

1、所有能够阻塞线程的调用都以系统调用的形式实现

2、如果某个线程引起了页面故障,内核可以很方便地检查该进程是否有任何其他可运行的线程



混合实现

结合以上两种实现的优点

第一种方法:使用内核级线程,然后将用户级线程与某些或全部内核线程多路复用,如下图



内核只识别内核级线程,并对其进行调度,一些内核级线程会被多个用户级多路复用,可以创建、撤销和调度这些用户级线程,每个内核级线程有一个可以轮流使用用户级线程集合
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: