线程实现的两种方式 —— 用户空间和内核中
2017-06-17 11:18
417 查看
在用户空间中实现线程
特点:整个线程包放入用户空间中,内核对线程包一无所知。从内核角度考虑,就是按正常的方式管理,即单线程进程
优点:
1、用户级线程包可以在不支持线程的操作系统上实现
2、线程切换比内核快更多
3、允许每个进程有自己定制的调度算法
缺点:
线程发生I/O或页面故障引起的阻塞时,如果调用阻塞系统调用则内核由于不知道有多线程的存在,而会阻塞整个进程从而阻塞所有线程
一个单独的进程内部,没有时钟中断,所以不可能用轮转调度的方式调度线程
在内核中实现线程
特点:当某个线程希望创建一个新线程或撤销一个已有线程时,它进行一个系统调用,这个系统调用通过对线程的更新完成线程创建或撤销工作
优点:
1、所有能够阻塞线程的调用都以系统调用的形式实现
2、如果某个线程引起了页面故障,内核可以很方便地检查该进程是否有任何其他可运行的线程
混合实现
结合以上两种实现的优点第一种方法:使用内核级线程,然后将用户级线程与某些或全部内核线程多路复用,如下图
内核只识别内核级线程,并对其进行调度,一些内核级线程会被多个用户级多路复用,可以创建、撤销和调度这些用户级线程,每个内核级线程有一个可以轮流使用用户级线程集合
相关文章推荐
- 线程实现的两种方式——用户空间和内核中
- Operating System-Thread(3)用户空间和内核空间实现线程
- 用户空间实现线程 内核实现线程 线程的调度
- [Linux内存管理] linux内存布局的内核实现--用户空间的映射方式
- 用户空间实现线程 内核实现线程 线程的调度
- Operating System-Thread(3)用户空间和内核空间实现线程
- 操作系统之用户空间和内核空间实现线程
- 操作系统基础知识-用户空间实现线程-内核实现线程
- linux内存布局的内核实现--用户空间的映射方式
- linux内存布局的内核实现--用户空间的映射方式
- 线程(2)--匿名内部类实现线程的两种方式
- 在 Linux 下用户空间与内核空间数据交换的方式,第 2 部分: procfs、seq_file、debugfs和relayfs
- 在用户空间实现的线程
- 用户与内核空间数据交换的方式(4)-relayfs
- 使用netlink机制实现内核空间和用户空间的双向消息通讯
- 用户空间与内核空间数据交换的方式(2)------procfs
- Linux环境下用户空间与内核空间数据的交换方式
- 用户空间与内核空间数据交换的方式(3)------模块参数与sysfs
- Linux 下用户空间与内核空间数据交换的方式
- Linux 系统内核空间与用户空间通信的实现与分析