OS 线程实现

线程实现方式 :

  • 用户线程(User Thread) : 由用户态的线程库管理线程
  • 内核线程(Kernel Thread) : 由内核管理的线程
  • 轻量级进程(LightWeight Process) : 在内核中管理用户线程

用户/内核线程关系 :

  • 一对一 : 一个用户线程对应一个内核线程
  • 多对一 : 多个用户线程对应同个内核线程
  • 多对多 : 多个用户线程对应多个内核线程

一对一 :

image.png

多对一 :

image.png

多对多 :

image.png

用户线程

线程管理库 : 管理用户线程调度 , 系统不管

image.png

用户线程优点:

  • 用户线程库管理线程控制块 (TCB) 列表,记录各线程状态信息 (PC、栈指针、寄存器)
  • 线程库管理用户线程切换 , 无需用户/内核态切换,速度较快

用户线程缺点:

  • 操作无法调度线程,当用户线程阻塞,那该进程的所有用户线程都无法执行
  • 用户线程没法抢占运行线程
  • 时间片分配给进程,多线程的每个线程的时间片较少

内核线程

内核线程 : 由操作系统管理

  • 线程的 TCB 放在操作系统中

image.png

内核线程优点:

  • 进程内,某个内核线程阻塞,不会影响其他内核线程的运行
  • 多线程获更多 CPU 运行时间

内核线程缺点:

  • 由内核管理进程和线程的上下文信息,如 : PCB 和 TCB
  • 通过系统调用管理线程的创建、终止和切换 , 系统开销较大

轻量级进程

轻量级进程 (Light-weight process , LWP) : 内核支持的用户线程

  • 每个 LWP 与每个内核线程对应

LWP/用户线程关系 :

  • 1 : 1 : 一个 LWP 对应一个用户线程
  • N : 1 : 一个 LWP 对应多个用户线程
  • M : N : 多个 LWP 对应多个用户线程

image.png

1 : 1 模式 : 一个线程对应一个 LWP 对应一个内核线程 , 如 : 进程 4

  • 优点 : 实现并行,当某个 LWP 阻塞,不会影响其他 LWP
  • 缺点:每个用户线程,用一个内核线程,创建线程开销较大

N : 1 模式 : 多个用户线程对应一个 LWP 对应一个内核线程 , 如 : 进程 2

  • 优点 : 线程上下文切换发生用户空间,切换效率较高
  • 缺点 : 某个用户线程阻塞,则整个进程都会阻塞 , 没法充分利用多核 CPU

M : N 模式 : 多个用户线程对应到多个 LWP,LWP 再对应每个内核线程,如 : 进程 3

  • 优点 : 大部分的线程上下文发生在用户空间,且多个线程又充分利用多核 CPU
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值