【操作系统】线程

人们引入进程解决了单处理机环境下多个程序并发执行的问题, 提高了资源利用率和系统吞吐量.
引入线程则是为了能够地提高程序并发执行程度,减少程序在并发时所付出的时空开销, 从而使OS具有更好的并发性

线程的引入

进程

进程是一个可拥有资源和可独立调度和分派的基本单位, 由于进程的这两个属性, 使进程成为一个能独立运行的基本单位, 也构成了进程并发执行的基础

进程并发所付出的开销

  1. 创建进程, 需为其分配资源, 如内存, I/O, 相应的PCB等
  2. 撤销进程, 又需将之前占有的资源进行回收, 将PCB撤销等
  3. 切换进程, 需要切换进程的上下文, 保留当前CPU的环境, 设置新的环境, 开销大.

进程的创建, 撤销, 切换开销都很大, 因此限制系统中进程数目, 所以限制了并发程度的进一步提高

线程 - 作为调度和分派的基本单位*

因此要设法将拥可有资源和可独立调度和分派这两个属性分开, 即拥有资源的单位不对其施以频繁的切换, 不把作为调度和分派的基本单位作为拥有资源的单位.
为了解决进程创建调度分派开销过大, 并发程度差的问题, 在OS中引入线程, 以线程作为调度和分派的基本代为, 可以有效改善系统的性能.

线程和进程的比较

线程又称为轻型进程或进程元

1. 调度的基本单位

在传统的OS中因为进程是调度的基本单位, 所以每次被调度时进行上下文切换, 开销大.
吧线程作为调度和分派的基本单位, 因而线程是能独立运行的基本单位, 当线程切换时仅需保存少量寄存器内容.
在同一进程中线程的切换不会引起进程的切换.

2. 并发性

引入线程后, 进程间不但可以并发执行, 一个进程中的多个线程之间也可以并发执行.同理多个进程中的多个线程也能并发执行.从而时OS具有良好的并发性, 更加有效地增加了系统的资源利用率和系统吞吐量.
如果一个进程要执行多个相似的任务, 如果传统的进程只能一次为一个客户服务, 如果设置多个线程则一次可以为多个客户服务.

3. 拥有资源

进程拥有资源, 并作为系统中拥有资源的一个基本单位
线程仅拥有一点必不可少的, 能保证其独立运行的资源, 例如 线程控制块TCB.程序计数器PC, 保留局部变量, 少数状态参数,返回地址等的一组寄存器和堆栈.
线程除了自己拥有少量的资源外, 还允许多个线程共享其进程的资源. 属于同一进程的所有线程具有相同的地址空间, 可以访问进程所有的资源, 如一打开的文件, 定时器, 信号量机制等内存空间和I/O设备等

4. 独立性

线程之间的独立性要比进程低得多, 因为进程拥有独立的地址空间和资源, 除了共享全局变量.
线程是为了提高并发性以及进行相互间的合作而创建的, 他们共享内存地址空间和资源, 如一个线程的堆栈可以被其他线程读写甚至清楚, 一个线程打开的文件可以供其他线程读写.

5. 系统开销

进程的创建和撤销需要系统为之分配回收PCB, 回收分配其他资源, 因此速度和开销明显大于线程, 而进程的切换涉及到上下文切换,.其效率也远低于线程.
因为同一个线程具有相同的地址空间, 所以线程之间的同步和通信也比进程简单

6. 支持多处理机

传统的进程无论有多少处理机, 只能在一个上运行. 对于多线程的进程, 可以将其中的多个线程分配到多个处理机上, 使他们并行执行.

线程的状态

1. 执行态

表示线程正在执行

2. 就绪态

线程已经就绪, 已经具备了执行条件, 一旦获取CPU即可执行

3. 阻塞态

线程因为某些事件而处于暂停的状态, 例如未获取到临界资源.

线程的状态和其切换与进程相似.

线程控制块TCB

同进程一样, 系统也为每个线程配置了一个线程控制块TCP, 用于管理和控制线程的信息记录在TCB中包括

  1. 线程标识符
    唯一表示线程的标识符
  2. 一组寄存器
    包括程序计数器PC, 状态寄存器和通用寄存器
  3. 线程运行状态
    描述线程正处于何种太子
  4. 优先级
    描述线程优先级程度
  5. 线程专有存储区
    用于线程切换时存放现场保护信息与线程相关的统计信息等
  6. 信号屏蔽
    对某些信号加以屏蔽
  7. 堆栈指针

多线程OS中的进程属性

多线程OS中的进程具有以下属性

  1. 进程仍是一个可拥有资源的基本单位.
  2. 多个线程并发执行, 通常一个进程都含有若干个相独立的线程, 且至少要有一个线程. 由进程为这些线程提供资源和运行环境
  3. 进程已经不是可执行的实体, 在多线程OS中, 把线程作为独立运行的基本单位. 但进程仍有相关的状态, 例如进程处于执行状态, 实际上是指进程中某线程正在执行, 而对进程所施加的对进程状态有关的操作也对线程起作用.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值