线程实现的两种方式 —— 用户空间和内核中
来源:互联网 发布:奶茶店如何做网络 编辑:程序博客网 时间:2024/06/18 07:00
在用户空间中实现线程
特点:
整个线程包放入用户空间中,内核对线程包一无所知。从内核角度考虑,就是按正常的方式管理,即单线程进程
优点:
1、用户级线程包可以在不支持线程的操作系统上实现
2、线程切换比内核快更多
3、允许每个进程有自己定制的调度算法
缺点:
线程发生I/O或页面故障引起的阻塞时,如果调用阻塞系统调用则内核由于不知道有多线程的存在,而会阻塞整个进程从而阻塞所有线程
一个单独的进程内部,没有时钟中断,所以不可能用轮转调度的方式调度线程
在内核中实现线程
特点:
当某个线程希望创建一个新线程或撤销一个已有线程时,它进行一个系统调用,这个系统调用通过对线程的更新完成线程创建或撤销工作
优点:
1、所有能够阻塞线程的调用都以系统调用的形式实现
2、如果某个线程引起了页面故障,内核可以很方便地检查该进程是否有任何其他可运行的线程
混合实现
结合以上两种实现的优点
第一种方法:使用内核级线程,然后将用户级线程与某些或全部内核线程多路复用,如下图
内核只识别内核级线程,并对其进行调度,一些内核级线程会被多个用户级多路复用,可以创建、撤销和调度这些用户级线程,每个内核级线程有一个可以轮流使用用户级线程集合
阅读全文
0 0
- 线程实现的两种方式——用户空间和内核中
- 线程实现的两种方式 —— 用户空间和内核中
- 线程的3种实现方式--内核级线程, 用户级线程和混合型线程
- 用户空间实现线程 内核实现线程 线程的调度
- 操作系统之用户空间和内核空间实现线程
- linux系统内核空间和用户空间的通信方式
- Linux内核和用户空间通信的方式— proc文件和mmap共享内存
- 线程-实现线程的两种方式
- Linux内核中线程的实现方式
- Java中线程实现的两种方式例程
- linux内核和用户空间交流方式
- Linux内核和用户空间通信的方式(一)— proc文件和mmap共享内存
- Linux内核和用户空间通信的方式(一)— proc文件和mmap共享内存
- Linux内核和用户空间通信的方式(一)— proc文件和mmap共享内存
- Linux内核和用户空间通信的方式(一)— proc文件和mmap共享内存
- Linux内核和用户空间通信的方式(一)— proc文件和mmap共享内存
- Linux内核和用户空间通信的方式(一)— proc文件和mmap共享内存
- Linux内核和用户空间通信的方式(一)— proc文件和mmap共享内存
- Mac终端设置
- equals和equalsignorecase的区别
- Git初学笔记
- Android中Button的三种监听机制
- 部署Maven项目到tomcat报错:java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderLi
- 线程实现的两种方式 —— 用户空间和内核中
- symfony框架twig模板中获取版本号信息
- js监听回车登录
- Delphi显示Opencv的Mat/IplImage图像
- JAVA获得UUID、获得当前时间(年月日,并转化为数据库存储的Timestamp、String格式)
- 动态规划实例(二):最长公共子序列(LCS)
- Android开发-数据存储与IO
- MongoDB使用笔记
- 苹果IOS开发者账号总结