【操作系统】进程的描述与控制[线程](4)

写在前面
资料来源于我的操作系统老师——WYQ老师
感谢我的老师

2.8 线程及其实现

1.线程的基本概念
2.线程的实现及控制

引入进程 的目的:
使多个程序能并发执行,提高资源利用率和系统吞吐量。
引入线程 的目的:
应用的需要/ 开销的考虑/ 性能的提升

开销的考虑

(1)进程相关的操作:

  • 创建进程
  • 撤消进程
  • 进程通信
  • 进程切换
    → 时间/空间开销大,限制了并发度的提高。

(2)线程的开销小

  • 创建一个新线程花费时间少(撤销亦如此)
  • 两个线程切换花费时间少
  • 线程之间相互通信无须调用内核(同一进程内的线程共享内存和文件)

性能的提升

  • 多个线程,有的计算,有的I/O,进一步提高并发度。
  • 充分利用多处理器的优势。

1.线程的概念

在同一进程增加了多个执行序列(线程)
在这里插入图片描述
(1)线程:进程中的一个运行实体,是CPU的调度单位,有时将线程称为轻量级进程
进程与线程

  • 进程是资源分配单位
  • 线程是CPU执行单位
    多线程优点
  • 切换速度快(地址空间不变)
  • 系统开销小
  • 通讯容易(共享数据空间)
    在这里插入图片描述
    在这里插入图片描述
    (2)线程模型
    每个线程拥有自己的栈:局部变量、返回地址
    (3)线程控制块
  • TCB(Thread control block)
    标志线程存在的数据结构, 其中包含对线程管理需要的全部信息.
  • 内容
    线程标识、线程状态
    调度参数、现场(通用寄存器,PC,SP)
  • 存放位置
    用户级线程:目态空间
    核心级线程:管态空间

(4)线程的属性:并发性、共享性、动态性

  • 轻型实体:只有一点必不可少的、能保证独立运行的资源
  • CPU调度的基本单位
  • 可并发执行
  • 共享进程资源

(5)线程的优点

  • 快速切换;
  • 易于通信;
  • 并行度高;
  • 节省内存;
  • 减少管理开销。

(6)线程的基本状态

  • 执行状态
  • 就绪状态
  • 阻塞状态

(7)线程的创建和终止

  • 线程的创建
    利用线程创建函数(或系统调用);
    创建成功后,返回一个线程标识符。

  • 线程的终止方式
    自愿退出
    被其它线程强行终止

(8)线程与进程的比较

  • 线程:作为CPU调度单位。
    线程只拥有必不可少的资源,如:线程状态、寄存器上下文和栈
    同样具有就绪、阻塞和执行三种基本状态
  • 进程:其它资源分配单位(存储器、文件、IO等)。
  • 调度:线程作为CPU调度的基本单位,而进程只作为其它资源分配单位。
  • 并发性:进程之间可以并发,且一个进程的多个线程之间亦可并发。
  • 拥有资源:进程间相互独立,同一进程的各线程间共享资源。某进程内的线程在其它进程不可见。
  • 系统开销:线程上下文切换比进程上下文切换要快得多。

练习题

1. 线程机制中,一个进程可以对应多个线程,一个线程也可以对应若干个进程。
解答: 错!
一个进程可以拥有若干个线程,线程从属于该进程,同一进程内所有线程共享该进程的地址空间,而不同进程之间的地址空间是完全独立的,如果一个线程可以对应若干个进程,那么也就意味着不同进程之间的地址空间可以共享,这显然是不合适的。

2.线程的实现及控制

  • 用户级线程——User-level thread
  • 核心级线程——Kernel-level thread
  • 混合线程——Hybrid approach

(1)用户级线程和内核支持线程

  • 内核支持线程,它们是依赖于内核的,即无论是用户进程中的线程,还是系统进程中的线程,它们的创建、撤消、切换都由内核实现。
  • 用户级线程,对于这种线程的创建、撤消、和切换,都不用系统调用来实现。内核并不知道用户级线程的存在。

(2)核心级线程

  • 所有线程管理由核心完成
  • 没有线程库,但核心提供API
  • 核心维护进程和线程的上下文
  • 线程之间的切换需要核心支持
  • 以线程为基础进行调度
    在这里插入图片描述
    当一个线程想去创建一个新线程或撤消已存在的线程时,它发出一个内核调用,完成创建和回收工作。
    实现方法:
  • 基于系统调用
  • 创建、撤销、状态转换由操作系统完成

优点:

  • 对多处理器,核心可以同时调度同一进程的多个线程
  • 某线程阻塞,其它线程仍可执行

缺点:

  • 应用程序线程在用户态运行,而线程调度和管理在内核实现,在同一进程中,控制权从一个线程传送到另一个线程时需要用户态-内核态-用户态的模式切换,系统开销较大。
  • 调度算法不能灵活控制

(3)用户级线程
在这里插入图片描述
运行时系统:用于管理和控制线程的函数集合。
(4)线程库
提供线程运行管理系统:

  • 创建、撤消线程
  • 在线程之间传递消息和数据
  • 调度线程执行
  • 保护和恢复线程上下文

用户级的线程库能在不支持线程的操作系统中实现线程

  • 切换效率高
  • 允许每一个进程有自已定制的调度算法

实现方法:

  • 基于library函数,系统不可见
  • 线程创建、撤销、状态转换在目态完成
  • TCB在用户空间,每个进程一个系统栈

优点:

  • 不依赖于操作系统,调度灵活
  • 切换无须从目态到管态,速度快
  • ULT可运行在任何操作系统上(只需要线程库),可以在一个不支持线程的OS上实现

缺点:

  • 核心只将处理器分配给进程,在多处理机中同一进程中多个线程不能真正并行
  • 一个线程进入系统受阻,进程中其它线程不能执行

例题

1. 设进程A拥有1个用户级线程,进程B拥有100个用户级线程,则在系统调度时各占用几个时间片?
:1个
2. 设进程A拥有1个内核级线程,进程B拥有100个内核级线程,则在系统调度时各占用几个时间片?
:A:1个;B:100个

用户级线程与核心级线程的比较
在这里插入图片描述
(5)混合线程

  • 在混合式线程系统中,内核支持KLT多线程的建立、调度和管理;
  • 同时,也提供线程库,允许用户应用程序建立、调度和管理ULT;
  • 一个应用程序的多个ULT映射成一些KLT,程序员可按应用需要和机器配置调整KLT数目,以达到较好效果;
  • 混合式中,一个应用中的多个线程能同时在多处理器上并行运行,且阻塞一个线程时并不需要封锁整个进程。如果设计得当,混合式多线程机制能够结合了两者优点,舍去缺点。

练习题

1. 在以下描述中,(C)并不是多线程系统的特长。
A. 利用线程并行地执行矩阵的乘法运算
B. Web服务器利用线程响应HTTP请求
C. 键盘驱动程序为每一个正在运行的应用配备一个线程,用以响应该应用的键盘输入
D. 基于GUI的调试程序用不同的线程分别处理用户输入、计算和跟踪等操作

2. 同一进程中的多个线程有哪些成分是共用的,哪些成分是私用的?
答: 线程的公有成分包括:
代码区、数据区、动态堆空间。
线程的私有成分包括:
线程控制块;
一个执行栈;
运行时动态分给线程的寄存器。

3. [2012考研试题 31]下列关于进程和线程的叙述中,正确的是(A)
A.不管系统是否支持线程,进程都是资源分配的基本单位
B.线程是资源分配的基本单位,进程是调度的基本单位
C.系统级线程和用户级线程的切换都需要内核的支持
D.同一进程中的各个线程拥有各自不同的地址空间

4. 在支持多线程的系统中,进程P创建的若干线程不嗯呢该共享的事(D)
A.进程的代码段
B.进程P中打开的文件
C.进程P的全局变量
D.进程P中某线程的栈指针

5. 下列对线程的描述中,(B)是错误的。
A.不同的线程可执行相同的程序
B.线程是资源分配单位
C.线程是调度和执行单位
D.同一进程中的线程可共享该进程的主存空间

6. 以下说法中哪个是正确的?(C)
A.线程是进程中可独立执行的子任务,一个进程可以包含一个或多个线程,一个线程可以属于一个或多个进程。
B.线程又称为轻型进程,因为线程都比进程小。
C.多线程技术具有明显的优越性,如速度快、通信简便、并行性高等。
D.由于线程不作为资源分配单位,线程之间可以无约束地并行执行。

**7.**进程与线程的根本区别是(C)
A.进程要占用一个进程控制块,开销较大,而线程无此开销
B.进程会增加死锁的机会,而线程有效避免了这一问题
C. 进程是资源分配单位,而线程是调度和执行的单位
D. 进程是调度和执行的单位,而线程是资源分配单位

8. 用户级线程执行时,同一进程不同线程的切换不需要内核支持。
答: 正确

9. 在支持线程的操作系统中,同一个进程中的各个线程共享该进程的用户栈。
答: 错误

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值