线程、线程与进程、ULT与KLT

2.6 线程

进程分为两个组成部分
  • 调度的基本单位
  • 资源的独立单元

线程作为基本调度单位独立出来,由OS调度

多线程

单个进程内支持多个并发路径的能力
多线程

单线程

一个进程只有一个线程
单线程

线程是进程中的一个实体,是独立调度和分派的单元
2.6.1 进程vs线程

一个进程可以有一个或多个线程
挂起或终止一个进程=挂起或终止其内部所有线程

线程
  • 执行状态state:派生、阻塞、解除阻塞、结束
  • 上下文context
  • 局部变量
  • 共享的资源和内存
    单线程多线程

多线程比单线程多一个tcb(线程的“pcb”)

线程优点
  1. 创建耗时短
  2. 终止耗时短
  3. 切换耗时短(同进程内)
  4. 提高了不同执行程序间的通信效率
线程同步
  • 一个进程中的所有线程共享该进程数据和空间
  • 一个线程对数据修改会影响其他线程
2.6.2线程分类
用户级线程 ULT(User-Level Thread)
  • 线程内核不可见,由应用程序管理
  • 进程阻塞,线程不一定阻塞;进程运行,线程也可能阻塞
  • 优点
  • 线程切换不需要切换内核模式
  • 调度策略可以应用程序定制
  • 可运行在任何种类的OS上
  • 缺点
  • 线程系统调用时会阻塞该进程所有线程
  • 不适用于多核系统
  • 缺点的改进办法
  • jacketing技术:由应用级调用替代系统调用
    ULT
内核级线程 KLT(Kernel level Thread)
  • 内核管理线程,应用程序不管理线程
  • 优点
  • 可以将多个线程分配到多个cpu上
  • 一个线程阻塞时,同进程其他线程不会阻塞
  • 内核本身也可以使用多线程
  • 缺点
  • 线程切换要进行模式切换

KLT

混合方法(ULT+KLT)
  • 线程在用户级创建
  • 线程调度、同步由应用程序完成
  • 用户线程一个或多个映射到内核线程上(内核线程要更少)
    MIX
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FangYwang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值