1
第 2章 进程描述与控制
本章知识点:
? 2.1 进程状态
? 2.2 进程描述
? 2.3 进程控制
? 2.4 线程和 SMP
? 2.5 系统举例 (略 )
2
2.1 进程状态
进程是程序在并发环境中的执行过程。
其基本特征是动态性、并发性、独立性、
异步性和结构性。进程是一个主动的实
体,而程序是被动的实体。进程的执行
必须按一种顺序的方式进行,即在任何
时刻至多只有一条指令被执行。 处理器
的主要功能就是执行驻留在内存中的指
令。为了提高效率,处理器可以同时执
行多个进程。
3
2.1.1 进程产生和终止
最简单的模型 (a)基于这样一个事实:进程要么正在执
行,要么没有执行。这样,一个进程就有两种状态:
运行和非运行 。 还有一种模型 (b)是设计一种进程队列,
队列中的每项都是一个指向进程的指针。 无论采用哪
种模型,进程的生命周期都同产生和终止联系在一起。
进程队列
进入
处理器
分派 退出
暂停
(b)
进入
分派
退出
暂停
( a )
非运行 运 行
4
2.1.1 进程产生和终止
1.进程产生
通常有 4种事件会导致新进程产生:
? ① 在一个交互式环境中,当一个新用户在终端键入登
录命令后,若是合法用户,系统将为该用户建立一个
进程。
? ② 在一个批处理环境中,为了响应一个任务的要求而
产生进程。
? ③ 当运行中获取用户程序提出的某种请求后,OS可以
代用户程序产生进程以实现某种功能,使用户不必等
待。
? ④ 基于应用进程的需要,由已存在的进程产生另一个
进程,以便使新程序以并发运行方式完成特定任务。
5
2.1.1 进程产生和终止
2.进程终止
导致进程终止的事件大致有 14种, 正常
结束, 超时限制, 内存不足, 超界,
保护错误, 算术错误, 超越时限, I/O
失败, 非法指令, 特权指令, 错误使用
数据, 操作员或 OS干预, 父进程终止,
父进程需要 。
6
2.1.2 进程状态模型
进程的动态性质是由其状态变化决定的。
通常操作系统中进程都具有三种状态, 运
行态、就绪态和阻塞态。进程的生命周期
中通常还有创建和消失两种状态。 创建和
终止状态对进程管理非常有用。
7
2.1.2 进程状态模型
? 运行, 进程当前处于运行状态 。
? 就绪 ; 进程已准备好运行 。
? 阻塞 ; 进程等待某些事件发生 ( 如 I/O操作 ) 后才能运行 。
? 创建:进程刚产生, 但还未被操作系统提交到可运行进程池中 。
? 消失:进程被操作系统从可运行进程池中释放。
事件
发生
准许
创 建 就 绪
分派
运 行
超时
释放
消 失
阻塞
等待
事件
8
2.1.2 进程状态模型
进程状态转换
(转下表)
原状态 转换后状态
创建 运行 就绪 阻塞 终止
OS根据作业控制请
求;分时系统用户
登录;进程产生子
进程而创建进程
× × × ×
创建 × × OS准备
运行新
的进程
× ×
9
2.1.2 进程状态模型
原状态 转换后状态
创建 运行 就绪 阻塞 终止
运行 × × 超时; OS服
务请求; OS
响应具有更
高优先级的
进程;进程
释放控制
OS服务
请求;
资源请
求;事
件请求
进程
完成,
进程
夭折
就绪 × 被分派程序选
择为下一个即
将执行的进程
× × 被父
进程
终止
阻塞 × × 事件发生 × 被父
进程
终止
10
2.1.3 进程挂起
1,进程挂起的状态
由于 I/O操作比 CPU计算慢得多,故常会出现内
存中所有进程都等待 I/O的现象。即使运行多
个程序,处理器在大多数时间仍处于空闲状态。
为此可采用交换方法,将内存中的一部分进程
转移到磁盘中。在进程行为模式中需增加一个
新的挂起状态,当内存所有进程阻塞时,操作
系统可将一进程置为挂起状态并交换到磁盘,
再调入另一进程执行。挂起状态与原有的阻塞
和就绪状态结合为阻塞挂起状态和就绪挂起状
态。
11
2.1.3 进程挂起
事件
发生
准许
创 建 就 绪
分派
运 行
超时
准许
消 失
阻塞
等待
事件
挂 起
激活
挂起
事件
发生
就绪,
挂起
就 绪 运 行
分派
超时
释放
消 失
阻 塞
等待
事件
阻塞
挂起
激活
挂起
激活
事件
发生
创 建
挂起准许准许
有挂起状态的进程转换图
(a) 带有一个挂起状态
(b) 带有两个挂起状态
12
2.1.3 进程挂起
进程挂起的原因
原 因 说 明
交换 OS需要释放足够的内存空间以调入就绪进程执行
其他 OS原

OS可能会挂起一个后台进程或怀疑引起问题的进程
交互用户
要求
用户可能为了调试或与资源连接而要求挂起进程
间断 一个进程可能是周期性地执行的, 那么它在等待下一次执行时如被挂起
父进程请

父进程有时希望挂起某个后代进程以检查或修正挂起
进程, 或协调多个后代进程的运行
13
2.2 进程描述
在计算机系统中,操作系统负责调度进
程、分配资源、响应用户程序服务的请
求,可以认为操作系统管理整个系统资
源的使用和控制整个系统的事件。
14
2.2.1 操作系统控制结构
为了管理进程和资源,操作系统必须掌握每一
个进程和资源的当前状态信息。 几乎所有操作
系统都会用 以下 4类表来保存信息:内存表、
I/O表、文件表和进程表 。
? ①内存表用来跟踪主 (实 )存和辅 (虚拟 )存。
? ② I/O表用来管理 I/O设备和通道。
? ③文件表提供当前存在文件中的信息:文件在
辅存中的位置、当前状态及其他性质。
? ④进程表用来管理进程。
15
2.2.2 进程控制结构
操作系统通过称为进程映象的进程属性
集合来控制进程。进程映象中通常包括 /;
用户数据、用户程序、系统栈、进程控
制块。 进程映像的存储依赖于所使用的
存储器管理调度方式。 。
16
2.2.3 进程属性
进程控制块 (PCB)是进程映象中最关键
的部分,它含有进程的描述信息和控制
信息,是进程动态特性的集中反映,是
系统对进程施行识别和控制的依据。 操
作系统管理进程所需的信息类型都收集
在进程控制块中。
17
2.2.3 进程属性
进程控制块的主要内容有:
① 进程标识 。
② 处理器状态信息 。
③ 进程控制信息 。 具体内容为
? 调度和状态信息
? 数据结构
?进程间通信
?进程特权
?存储器管理
?资源的拥有和使用
18
2.3 进程控制
操作系统内核负责控制和管理进程的产
生、执行和消亡的整个过程,这主要通
过对它们的控制操作实现。操作系统的
进程控制操作主要有:创建进程、撤消
进程、挂起进程、恢复进程、改变进程
优先级、封锁进程、唤醒进程、调度进
程等。
19
2.3.1 执行模式
大多数处理器都至少支持两种执行模式,
一种是同操作系统有关的模式,另一种
则是同用户程序有关的模式。较低特权
模式称为用户模式。较高特权模式指系
统模式, 控制模式或内核模式 。 内核是
操作系统中最核心功能的集合。
20
2.3.2 进程创建
一旦 OS决定创建一个进程时,便调用进
程创建原语 Creat( ),进行如下操作:
① 给新进程一个编号并申请空白 PCB。
② 为进程分配空间。
③ 初始化 PCB。
④ 设置合适的链接。
⑤ 生成其他一些数据结构。
21
2.3.3 进程切换
在某时刻,一个正在运行的进程被中断,
操作系统就将另一个进程置为运行状态,
并对其进行控制。 当操作系统掌握控制
权时,切换随时会发生。可能将控制权
交给操作系统的事件 有,中断,陷阱 以
及 监管调用 。
22
2.3.4 上下文切换
上下文切换发生时, 可能并不改变当前处于运行态的
进程状态 。 当前运行进程的状态要改变时, 操作系统
将进行以下步骤完成进程切换:
① 保存处理器内容 。
② 对当前运行进程的 PCB进行更新 。
③ 将这个进程的 PCB移入适当的队列 。
④ 挑选其他进程执行 。
⑤ 对挑选进程的 PCB进行更新 。。
⑥ 对存储器管理数据结构进行更新 。
⑦ 将被选中进程上次移出时的处理器状态进行恢复 。
23
2.3.5 操作系统的运行
操作系统的运行方式同普通软件一样,
也是一个由处理器执行的程序。
P 1 P n?
内 核
OS
进程转换功能
P 1


?
P n?
OS


进程转换功能
U 1 ? U n OS 1 ? OS k
(a) 在进程以外运行 (b) 在用户进程中运行 (c) 作为独立进程运行
24
2.3.6 微核
微核是一个操作系统的核心,它为组件
扩展提供了基础。 微核所应遵循的原理
是:只有那些绝对必要的操作系统核心
功能才能放在内核中。次重要的服务和
应用功能则建立在微核之外。
25
2.4 线程和 SMP
线程 (Thread)是近年来操作系统中出现
的一个非常重要的技术。 线程的引入,
进一步提高了程序并发执行的程度,从
而进一步提高了系统的吞吐量。
26
2.4.1 线程及其管理
1.线程的引入
进程引入的目的是为了程序的并发执行,
以改善资源利用率及提高系统的吞吐量 。
进程有两个基本属性:
( 1) 进程是一个拥有资源的独立单元 。
( 2) 进程是一个被处理机独立调度和分
配的单元 。
27
2.4.1 线程及其管理
为了既能提高程序的并发程度, 又能减少
OS的开销, 操作系统设计者引入了线程,
把进程的两个基本属性分离开来 。 让线
程去完成第二个基本属性任务, 而进程
只完成第一个基本属性的任务 。 引入线
程还有一个好处, 就是能较好地支持对
称 多 处 理 器 系 统 ( Symmetric
Multiprocessor,简称 SMP)。
28
2.4.1 线程及其管理
2.线程的定义及特征
线程是进程内的一个相对独立的、可独立调度
和指派的执行单元。
线程具有以下性质:
? 线程是进程内的一个相对独立的可执行单元 。
? 线程是操作系统中的基本调度单元 。
? 一个进程中至少应有一个线程 。
? 线程并不拥有资源, 而是共享和使用包含它的
进程所拥有的所有资源 。
? 线程在需要时也可创建其他线程 。
29
2.4.1 线程及其管理
进程和线程的区别与联系:
? 调度
? 拥有资源
? 并发性
? 系统开销
30
2.4.1 线程及其管理
3.线程的状态和管理
线程也有一个从创建到消亡的生命过程,虽然
在不同的操作系统,线程的状态设计不完全相
同,但就绪, 运行, 阻塞 3个关键的状态是共
有的。线程中不具有进程中的挂起状态。对具
有多线程的进程状态,若一个线程被阻塞, 整
个进程 不 被阻塞 。 线程使用线程控制块 (TCB)
来描述其数据结构 。 线程的状态转换是通过相
关的控制原语来实现的。
31
2.4.2 多线程的实现
多线程机制是指 OS支持在一个进程内执
行多个线程的能力。线程虽在许多系统
中实现,但实现的方式并不完全相同。
32
2.4.2 多线程的实现
1.用户级线程
用户级线程 ULT由用户应用程序建立,由
用户应用程序负责对这些线程进行调度
和管理,操作系统内核并不知道有用户
级线程的存在。因而这种线程与内核无
关。
33
2.4.2 多线程的实现
2.内核级线程
内核级线程 KLT中的所有线程的创建、调度和
管理全部由操作系统内核负责。一个应用进程
可按多线程方式编制程序,当它被提交给多线
程操作系统运行时,内核为它创建一个进程和
一个线程,线程在运行中还会创建新的线程。
这就是通常所说的, 纯 KLT方法, 。
34
2.4.2 多线程的实现
3.KLT和 ULT结合
由于纯 KLT和纯 ULT各有自己的优点和缺点,
因此,如果将两种方法结合起来,则可得
到两者的全部优点,将两种方法结合起来
的系统称之为多线程的操作系统。
35
2.4.3 进程与线程的关系
线程 ∶ 进程 描 述
1∶1 每个线程的执行就是一个进程
n∶1 每个进程定义一个地址空间并动态
拥有资源;
同一进程可产生多个线程并运行
1∶ n 一个线程可以在多个进程间转移
n∶ n 包含 n∶ 1和 1∶ n的性质
36
2.4.4 SMP
按照多处理器之间的通信方式可将多处理
器系统划分为两种类型:
第一种为共享存储器多处理系统 (Shared
Memory Multiprocessor)。 第二种为分
布式存储器系统 (Distributed Memory)。
37
2.4.4 SMP
1.SMP的特点
① 系统中有多个处理器, 且每个处理器的
地位是相同的 。
② 所有处理器共享主存储器 。
38
2.4.4 SMP
2.SMP系统设计问题
SMP操作系统设计的关键是:
① 同时并发执行多进程和多线程 。
② 调度 。
③ 同步 。
④ 存储器管理 。
⑤ 可靠性和容错能力 。
39
The end
Thanks!