网站的不足之处,企业采购网站有哪些,建湖网站建设价格,有没有帮忙做标书的网站目录
线程的实现方式
用户级线程
内核级线程
多线程模型
一对一模型
多对多模型
多对多模型
本节思维导图 线程的实现方式
用户级线程 历史背景#xff1a;早期操作系统只支持进程#xff0c;不支持线程#xff0c;当时的线程是由线程库实现的
本质#xff1a;从…目录
线程的实现方式
用户级线程
内核级线程
多线程模型
一对一模型
多对多模型
多对多模型
本节思维导图 线程的实现方式
用户级线程 历史背景早期操作系统只支持进程不支持线程当时的线程是由线程库实现的
本质从代码角度来看线程其实就是一段代码逻辑
int main()
{int i 0;while(true){if(i 0) {处理视频聊天的代码;}if(i 1) {处理视频聊天的代码;}if(i 2) {处理视频聊天的代码;}i (i1) % 3; }
} 在上面这段代码中while循环就相当于一个“线程库”它完成了对线程的管理工作调度即函数调用在进入while循环后由于取模运算的特性i的值会在012之间无限循环直到在线程的运行过程中出现了比如break等操作才会结束 注意事项1、用户级线程的管理工作由线程库来完成所有的线程管理工作都由应用程序负责
2、用户级线程中线程切换可以在用户态下完成无序操作系统的干预进行CPU变态
3、操作系统不能意识到用户级线程的存在只有用户才能感知到用户级线程的存在
优点用户级线程的切换在用户空间即可完成不需要切换到核心态线程管理的系统开销小效率高
缺点当一个用户级线程被阻塞后整个进程都会被阻塞并发度不高多个线程不可以在多核处理机上并行运行此时CPU还是给进程分配系统资源的
内核级线程 大多数现代操作系统都实现了内核级线程
注意事项1、内核级线程的管理工作由操作系统内核完成
2、内核级线程中线程调度、切换等操作由内核负责必须要在核心态下完成所以需要操作系统干预从而进行CPU变态
3、操作系统会为每个内核级线程建立相应的TCB通过TCB对线程进行管理它是操作系统能看到的线程
优点当一个线程被阻塞后别的线程还可以继续执行并发能力强多线程可以在多核处理机上执行内核级线程是处理机调度的基本单位进程是分配资源的基本单位在多核CPU的环境下这些内核级线程可以被分配到不同的核心下并发执行不同的内核级线程中又可以跑不同的代码逻辑
缺点一个用户进程会占用多个内核级线程线程切换由操作系统内核完成需要切换到核心态因此线程管理成本高开销大变态销毁内存空间
多线程模型 在支持内核级线程的程序中根据用户级线程和内核级线程的映射关系可以划分为几种多线程模型
一对一模型 特点一个用户级线程映射到一个内核级线程每个用户进程有与用户级线程同数量的内核级线程
优点当一个线程被阻塞后其余线程还可以继续执行并发能力强多线程可以在多核处理机上并行执行
缺点一个用户进程会占用多个内核级线程线程切换由操作系统内核完成需要切换到核心态因此线程管理成本高开销大
多对多模型 特点多个用户级线程映射到一个内核级线程且一个线程只被分配一个内核级线程
优点用户级线程的切换在用户空间即可完成不需要切换到核心态线程管理的系统开销小效率高
缺点当一个用户级线程被阻塞后整个进程都会被阻塞并发程度不高且多线程不可在多核处理机上并行运行一个线程只被分配一个内核级线程
注意事项操作系统只能看见内核级线程因此只有内核级线程才是处理机分配的单位
多对多模型 特点n个用户级线程映射到m个内核级线程nm每个用户进程对应m个内核级线程克服了多对一模型并发度不高的缺点又克服了一对一模型中一个用户进程占用太多内核级线程系统资源开销过大的缺点
注意事项1、用户级线程是“代码逻辑”的载体内核级线程是“运行机会”的载体
2、内核级线程才是处理机分配的基本单位多核CPU环境下上图的进程最多被分配两个核
3、一段“代码逻辑”只有获得了“运行机会”才会被CPU执行
4、内核级线程中可以运行任意一个有映射关系的用户级线程中只有连个内核级线程中正在运行的“代码逻辑”均阻塞时改进程才会阻塞 本节思维导图 ~over~