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

多对一的线程模型

N对M的线程模型

线程的两种实现方式
用户级线程
实现在用户态的线程实例,用一个TCB(Thread Control Block)来描述一个用户线程,该TCB存放在用户态。
- 内核看不到用户级线程,对于内核来讲,只能看到当前的进程,在当前进程中创建的线程无法被操作系统调度;
- 用户级线程的创建,销毁,以及切换都是特别快的,不需要用户态和内核态来回切换;
- 当一个用户线程阻塞或者陷入内核,那么当前整个进程都会阻塞,其他的用户线程也将不能使用(可以考虑使用异步调用缓解);
- 进程中的所有用户线程需要主动让出CPU,否则一次性将CPU时间片耗完,因为对于内核来讲,只能看到进程,只能将时间片分配给当前进程;
- 每个进程可以自定义线程调度算法。
用户级线程是由一些应用程序中的线程库实现。
内核级线程
实现在内核态的线程实例,用一个TCB(Thread Control Block)来描述一个用户线程,该TCB存放在内核态,内核可以直接进行调度管理。
- 线程的创建,终止以及切换开销较大,都是由内核完成;
- 内核能感知到线程的存在,被操作系统管理,受操作系统调度;
- 内核时间片的分配是以线程为单位的,内核是将一整个时间片分配给线程的。
协程
协程 = 用户级线程 + 调度器
边栏推荐
猜你喜欢

AugFPN:改進多尺度特征學習用於目標檢測

Wechat applet project: tab navigation bar

UE4 VS的Visual Assist插件设置

SSD Improvement cfenet

Written test question "arrange version numbers from large to small"

Instance error iopub data rate exceeded

How to do unit test well

Mongodb persistence

Western Polytechnic University, one of the "seven national defense schools", was attacked by overseas networks

记微信小程序setData动态修改字段名
随机推荐
Open3d farthest point sampling (FPS)
微信小程序分享页面,分享到朋友圈
UE4 蓝图修改Array 中Get a copy 为 reference
Member inner class, static inner class, local inner class
easyexecl导出100万行execl报字体错误的解决办法
Understanding of singleton mode
How to do unit test well
pytoch总结—TENSOR 和NUMPY相互转换
UE4 在4.20-23版本安装Datasmith插件
promise方法的简单使用
微信小程序最新canvas2d手写签名
实例报错IOPub data rate exceeded
Debug H5 page -vconsole
使用GPU训练kernel切换
Simplicity Studio无法识别新买的JLink v9解决方法
GPU训练云平台记录
Abstract classes and interfaces
SSD Improvement cfenet
YOLO Nano:一种高度紧凑的只看一次的卷积神经网络用于目标检测
深卷积神经网络时代的目标检测研究进展