操作系统-线程

操作系统-线程

线程

概念
  • 引入进程是为了多道程序并发执行,引入线程则为了减小程序并发执行的开销,提高并发性能
  • 线程又称为轻量级进程,是基本的CPU执行单元,也是程序执行流的最小单元; 是进程中的一个实体,是被系统独立调度和分配的基本单位
  • 线程由**线程ID,程序计数器,寄存器集合和堆栈组成
  • 一个线程可以创建和撤销另一个线程,同一个进程中的多个线程可以并发执行
  • 线程也有就绪,阻塞,运行

属性
  • 线程是轻型实体,不拥有系统资源,但每个线程具有唯一的标识符和线程控制块; 线程控制块记录线程执行的寄存器和栈等线程状态
  • 不同的线程可以执行相同的程序; 即同一个服务程序被不同用户调用时,操作系统把它们创建成不同的线程
  • 线程不拥有系统资源,只拥有运行必不可少的一点资源; 与同属一个进程的其他线程共享进程中的资源
  • 单CPU系统中,各线程交替占用CPU; 多CPU系统中,各线程占用不同的CPU,若各个CPU同时为一个进程中各个线程服务,可缩短处理时间

与进程比较
  • 引入线程之后,线程是独立调度的基本单位,进程是拥有资源的基本单位
  • 线程不拥有资源,但线程可以访问其隶属进程的系统资源
  • 引入线程的操作系统,不仅进程可以并发执行,线程也可以,使得操作系统有更好的并发性
  • 创建和撤销进程时,系统为之分配或回收资源等付出的开销远大于创建和撤销线程; 进程切换涉及执行进程CPU环境的保存和新调度到进程CPU环境的设置,而线程切换只需要保存和设置少量寄存器的内容,开销很小
  • 进程间通信(IPC)需要经常同步和互斥手段辅助,以保证数据一致性,而线程间可以直接读写进程数据段进行通信

线程的实现
  • 用户级线程(User-Level Thread ULT)
    • 线程管理的所有工作都由应用程序完成,内核意识不到线程存在
    • 应用程序可以通过使用线程库设计成多线程程序
  • 内核级线程(Kernel-Level Thread KLT)
    • 线程管理的所有工作由内核完成,应用程序没有进行线程管理的代码
    • 内核为进程及其内部的每个线程维护上下文信息,调度也在内核基于线程架构的基础上完成

avator


多线程模型
  • 多对一模型
    • 多个用户级线程映射到一个内核级线程
      • 优点: 线程管理在用户空间完成,因此效率比较高
      • 缺点: 若一个线程在使用内核服务时被阻塞,整个进程都会被阻塞; 多个线程不能并行运行在处理器上
  • 一对一模型
    • 一个用户级线程映射到一个内核级线程
      • 优点: 运行并发执行,一个线程阻塞,运行另一个进程执行
      • 缺点: 每创建一个用户级线程都要创建一个内核级线程,开销大,影响性能
  • 多对多模型
    • n个用户级线程映射到m个内核级线程 m<=n
      • 是上两个模型的折中,既克服了多对一模型的并发度不高,又克服了一对一模型开销大的缺点,还拥有各自的优点
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值