【操作系统】线程、多线程

为什么要引入线程?

传统的进程只能串行的执行一系列程序,线程增加并发度。同一个进程分为多个线程。

线程是调度的基本单元,程序执行流的最小单位,基本的CPU执行单元。

进程是资源分配的基本单位。

线程的实现方式

用户级线程

代码中用线程库实现的线程,操作系统还是只看到进程。

优点:管理用户级线程开销小,不用用户态和内核态切换。

缺点:一个线程被阻塞,整个进程都被阻塞,并行差。

内核级线程

操作系统内核管理内核级线程,需要在核心态下完成,从操作系统内核视角可以看到线程。

优缺点与前者相反。

内核级线程才是处理机的分配单位。

多线程模型

用户级线程是"代码逻辑"的载体

内核级线程是"运行机会"的载体

线程的状态与转换与进程一样

TCB (线程控制块)

线程标织符TID,程序计数器PC,其他寄存器,堆栈指针,线程运行状态,优先级。

线程表:存放多个TCB的表

相关推荐
我星期八休息13 小时前
网络编程—应用层HTTP协议
linux·运维·开发语言·前端·网络·网络协议·http
ShineWinsu14 小时前
对于Linux:UDPsocket编程基础的解析
linux·运维·网络协议·udp·ip·端口号·进程间通信
hehelm15 小时前
AI大模型接入SDK—通用模块设计
linux·开发语言·c++
Ai拆代码的曹操17 小时前
K8s Pod Pending 逐层排查:从 FailedScheduling 到 PVC StorageClass 不存在的实战记录
java·linux·kubernetes
Reart18 小时前
操作系统实验哈工大lab2——系统调用
后端·操作系统
TechEdu20260618 小时前
银河麒麟操作系统(KylinOS):架构、版本与应用概览
操作系统·计算机科学·kylinos
wangbing112518 小时前
JPA下自定义主键
java·linux·服务器
bush418 小时前
正点原子imx6ull-uboot,奇怪的问题
linux·学习
dddwjzx19 小时前
嵌入式Linux C应用编程——Framebuffer应用编程
linux·嵌入式
今天也想躺ping20 小时前
linux系统移植pjsua库实现sip通话功能
linux·sip·交叉编译