当前位置:网站首页>用户级线程和内核级线程
用户级线程和内核级线程
2022-06-29 08:41:00 【KingOfMyHeart】
线程模型
一对一线程模型

多对一的线程模型

N对M的线程模型

线程的两种实现方式
用户级线程
实现在用户态的线程实例,用一个TCB(Thread Control Block)来描述一个用户线程,该TCB存放在用户态。
- 内核看不到用户级线程,对于内核来讲,只能看到当前的进程,在当前进程中创建的线程无法被操作系统调度;
- 用户级线程的创建,销毁,以及切换都是特别快的,不需要用户态和内核态来回切换;
- 当一个用户线程阻塞或者陷入内核,那么当前整个进程都会阻塞,其他的用户线程也将不能使用(可以考虑使用异步调用缓解);
- 进程中的所有用户线程需要主动让出CPU,否则一次性将CPU时间片耗完,因为对于内核来讲,只能看到进程,只能将时间片分配给当前进程;
- 每个进程可以自定义线程调度算法。
用户级线程是由一些应用程序中的线程库实现。
内核级线程
实现在内核态的线程实例,用一个TCB(Thread Control Block)来描述一个用户线程,该TCB存放在内核态,内核可以直接进行调度管理。
- 线程的创建,终止以及切换开销较大,都是由内核完成;
- 内核能感知到线程的存在,被操作系统管理,受操作系统调度;
- 内核时间片的分配是以线程为单位的,内核是将一整个时间片分配给线程的。
协程
协程 = 用户级线程 + 调度器
边栏推荐
- Debugging H5 page -weinre and spy debugger real machine debugging
- What exactly does Devops mean?
- (转)MySQL: ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes
- 记一些笔试题
- UE4 在viewport视口中显示3D可编辑点
- 微信小程序底部导航栏中间突出
- promise方法的简单使用
- Augfpn: amélioration de l'apprentissage des caractéristiques à plusieurs échelles pour la détection des cibles
- cmd进入虚拟机
- Twinmotion beginner tutorial
猜你喜欢

js轮播图观后重做(较长的完整版,可运行)

Record the field name dynamically modified by SetData of wechat applet

微信小程序判断url的文件格式

Training kernel switching using GPU

微信小程序子组件向页面传值(父子组件间的通信)带源码

Debugging H5 page -weinre and spy debugger real machine debugging

微信小程序最新canvas2d手写签名

Yotact real-time instance segmentation

LSM6DSL之SPI驱动

1.4 机器学习方法之回归问题
随机推荐
Wechat applet sharing page, sharing to the circle of friends
微信小程序判断url的文件格式
LSM6DSL之SPI驱动
Detailed version of two-stage target detection principle
Can we trust bounding box annotations for object detection
微信小程序自定义多项选择器
Wechat applet project: wechat applet page layout
深卷积神经网络时代的目标检测研究进展
YOLO Nano:一种高度紧凑的只看一次的卷积神经网络用于目标检测
Twinmotion 初学者教程
微信小程序分享页面,分享到朋友圈
Solutions to ineffective uniapp import components
Picture format -webp
记微信小程序分享代码片段
Training kernel switching using GPU
UE4 编译单个文件(VS与编辑器分别启动)
Record the field name dynamically modified by SetData of wechat applet
爱快安装或重置后,PC或手机端获取不到ip
YOLACT实时实例分割
Understanding of singleton mode