第 3章 进程管理
进程的概念
进程的状态
进程的描述与管理
进程控制
Windows2000/XP进程管理
一、进程的概念
进程的引入
进程的定义
进程和程序的关系
1、进程的引入
(一)程序的顺序执行
(二)程序的并发执行
(一)程序的顺序执行
顺序环境,
在系统中只有一个程序在运行,该程序独占
系统所有资源,其执行不受外界影响。
特征,
? 程序执行的封闭性
独占资源,执行过程中不受外界影响
? 程序执行结果的确定性
程序运行结果与程序执行速度无关,只
要初始状态相同,结果应相同
(二)程序的并发执行
并发环境,
在一定时间内有两个或两个以上的程序
同处于开始运行但尚未结束的状态,并
且次序不是事先确定的
A
B
B
A
A
B A
B
特征,
( 1)程序结果的不可再现性
并发程序执行的结果与其执行的相对速度
有关,是不确定的
( 2)在并发环境下程序的执行是间断性的
执行 ——停 ——执行
( 3)资源共享
系统中资源被多个进程使用
( 4)独立性和制约性
独立的相对速度、起始时间
进程之间可相互作用(相互制约)
可分为直接作用和间接作用
( 5)程序和程序的执行不再一一对应
2,进程( process)的定义
?程序在处理机上的执行。
?进程是一个可调度的实体。
?进程是这样的计算,它可以与别的计算并
行运行。
?进程是逻辑上的一段程序,它在每一瞬间
都含有一个程序控制点,指出正在执行指令
?进程是一个具有独立功能的程序关于某个
数据集合的一次运行活动。
父亲 食谱 做蛋糕的原料
CPU 程序 输入数据
进程:父亲阅读食谱,取各种原料,制作蛋糕
的一系列动作总和。
急救手册 药品
进程:父亲阅读急救手册,取药品,为儿子
疗伤的一系列动作总和。
3、进程和程序的关系
? 进程是一个动态概念,程序是静态概念。
? 程序可作为资料长期保存,进程有生命期,
它能动态产生,消亡。
? 进程的组成是程序,数据,PCB。
? 同一程序运行于不同数据集合,将属于不
同进程。
? 一个程序可对应多个进程,一个进程可包
含多个程序。
二、进程的状态
进程的状态及变化
进程的挂起和解挂
1、进程状态
进程的基本状态有三个,
? 就绪状态
? 运行状态
? 等待状态
进程在生命消亡前处于且仅处于三种基本
状态之一
不同系统设置的进程状态数目不同
? 运行态( Running),
进程占有 CPU,并在 CPU上运行
? 就绪态( Ready),
一个进程已经具备运行条件,但由于无 CPU暂时不能运
行的状态 (当调度给其 CPU时,立即可以运行)
? 等待态( Blocked),
指进程因等待某种事件的发生而暂时不能运行的状态
(即使 CPU空闲,该进程也不可运行)
运行
就绪 等待
进程的状态及其转换
?
? ?
?
? 就绪 —运行
? 运行 —就绪
? 运行 —等待
? 等待 —就绪
? 就绪 --> 运行
– 调度程序选择一个新的进程运行
? 运行 --> 就绪
– 运行进程用完了时间片
– 运行进程被中断,因为一高优先级进程
处于就绪状态
进程状态转换,根据进程自身进展情况及外界环境的
变化,三种状态可以相互转换
? 运行 --> 等待
– 当一进程必须等待时
? OS尚未完成服务
? 对一资源的访问尚不能进行
? 初始化 I/O 且必须等待结果
? 等待某一进程提供输入 (IPC)
? 等待 --> 就绪
– 当所等待的事件发生时
2、进程的挂起与解挂
进程挂起的原因
进程的解挂
具有挂起功能的进程状态转换
五状态转换
? 等待 -->挂起等待
– 当所有进程都阻塞,OS会安排空间让一就绪进程进
入内存
? 挂起等待 --> 挂起就绪
– 当等待的事件发生时 (状态信息已在 OS中 )
? 挂起就绪 -->活动就绪
– 当内存中没有就绪进程时
? 活动就绪 -->挂起就绪
– 当没有被阻塞的进程,而为了性能上的考虑,必须
释放一些内存时
三、进程的描述和管理
1、进程的描述
进程控制块
进程的组成
2、进程的管理
( 1)进程控制块
( PCB,Process Control Block )
? 系统为了管理进程设置的一个专门的数据结构,
用它来记录进程的外部特征,描述进程的运动
变化过程
? 系统利用 PCB来控制和管理进程,所以 PCB是系
统感知进程存在的唯一标志
? 进程与 PCB是一一对应的
1、进程的描述
进程映象 (process image)
? 用户程序
? 用户数据
? 栈
– 用于过程调用和参数传递
? 进程控制块 PCB (执行上下文 )
– 控制进程所需的数据 (进程属性 ),包括,
? 进程标识符信息
? 处理器状态信息
? 进程控制信息
PCB应包含以下三类信息,
? 进程标识信息
? 处理器状态信息
? 进程控制信息
进程标识信息,
–本进程的标识 ID
? 索引至 (直接或间接 ) 主进程表
– 创建本进程的某个进程的标识 ID
– 用户标识
? 与某个作业对应的用户
处理器状态信息,
–用户使用的寄存器
–控制和状态寄存器
–堆栈指针
进程控制信息
? 调度和状态信息
– 进程状态 (如, 运行,就绪,阻塞,..)
– 进程优先级
– 该进程在等待的事件 (若被阻塞 )
? 数据结构信息
– 进程可能需要有指向其他 PCB的指针,父 -子
进程关系及其它结构
进程控制信息 (续 )
? 进程间通信
– IPC可能需要标志和信号
? 进程特权
– 如, 访问特定的内存地址,.,
? 存储管理
– 指向赋予该进程的段 /页表的指针
? 所拥有的资源和使用情况
– 使用中的资源, 打开的文件,I/O设备,.,
– (CPU,I/O...)的时间使用史
进程控制块的作用,
–记录进程的属性信息,以便操作系统
对进程进行控制和管理
–标志进程的存在
( 2)进程的组成
进程的组成:程序,数据。 PCB
2、进程管理
将 PCB用适当的方法组织起来,把它们
放在内存的固定区域,构成 PCB表
PCB的组织方法,
? 把所有不同状态的进程的 PCB组织在一
张表格中。
? 分别把有着相同状态的进程的 PCB组织
在同一张表格中。
? 分别把具有相同状态的所有进程的 PCB
按优先数排成一个或多个队列。
四、进程的控制
1、进程控制概念
2、进程的控制原语
3、进程切换
4、操作系统的执行方式
1、进程的控制概念
职责,对系统中所有进程实施有效管理,
是处理机管理的一部分。
任务,创建进程,撤消进程,实现进程间转换。
?进程控制由内核完成。内核有原语实现。
?原语,由若干条机器指令构成,用以完成特定
功能的一段程序。
?原语操作具有不可分割性。
2、进程的控制原语
创建进程原语
挂起进程原语
解除挂起原语
撤消进程原语
改变进程优先数原语
创建进程原语
? 创建一个 PCB
? 赋予一个统一进程标识符
? 为进程分配空间
? 初始化进程控制块
– 许多默认值 (如, 状态为 New,无 I/O设备
或文件,..)
? 设置相应的链接
– 如, 把新进程加到就绪队列的链表中
Procedure Create ( n,s0,k0,m0,R0,acc)
begin
i,= Get New Internal Name (n);
id(i),= n;
Priority(i),= k0 ;
Cpustate(i),= s0 ;
MainStore(i),= m0 ;
Resource(i),= R0 ;
State(i),= ‘Readys’ ;
Parent(i),= * ;
Set Accounting Data ;
insert ( RL,i ) ;
end,
挂起进程原语,
?挂起命令的执行,
? 把本命令的进程挂起
? 把具有指定标识符进程挂起
? 把某进程及其全部或部分子进程挂起
?进程的挂起完成下列状态转换,
就绪 ?挂起就绪 运行 ?挂起就绪
等待 ?挂起等待
Procedure Suspend( n,a)
begin
i,= Get Internal Name(n);
s,= State(i) ;
If s =‘Running’ Then Stop(i);
a,=Copy PCB(i) ;
Status(i),= If a = ‘Blockeda’
Then ‘Blokeds’
else ‘Readys’;
If s = ‘Running’ Then SCHEDULER
end,
解挂原语
?解挂原语实现状态的转化,
挂起就绪 ? 就绪 挂起等待 ? 等待
?一个进程可挂起自己,但不能解挂自己。
?一个进程可挂起解挂自己子孙,但不能
解挂别的族系进程。
Procedure Resume(n) ;
begin
i,= Get Internal Name(n) ;
Status(i),= If Status(i) = ‘Readys’
then ‘Readya’
else ‘Blockeda’;
If Status(i) = ‘Readya’ then SCHEDULER
end
撤消进程原语,
? 进程撤消的原因,
– 进程已完成所要求的功能而正常终止
– 由于某种错误导致非正常终止
– 祖先进程要求撤消某个子进程
? 进程撤消的策略(两种)
? 撤消原语一般由其父进程或祖先发出,
不会自己撤消自己
Procedure Destroy (n);
begin
Sched,= false ;
i,= Get Internal Name(n) ;
kill(i) ;
if Sched = true then
SCHEDULER;
end (Destroy)
Procedure kill(I);
begin
if Status(i) = ‘Running’ then
begin
Stop(i) ;
Sched,= true
end
Remve(Queue(i),i ) ;
for all S ? Progeny(i) do Kill(s);
for all r ? Resources(i) do
RELEASE(r) ;
RELEASE ( PCB(i) ) ;
end(Kill)
改变优先数原语
优先数与下列因素有关,
?与作业静态优先数有关。
?与进程类型有关:系统进程 >I/O进程 >CPU型进程
?与进程所用资源有关:占资源 ? 优先数 ?
?与进程等待时间有关, 等待时间 ? 优先数 ?
UNIX系统的优先数
Pri = min {127,100 + Pcpu / 16 + Pnice }
Pcpu为每个进程使用及等待 CPU时间相关的量。
? 运行进程,每隔 20ms加 1,直至 255为止
? 非运行进程,每秒减 10,直至小于 10为止
Pnice由用户通过系统调用设置的初值。
Procedure Change Priority(n);
begin
i,= Get Internal Name (n) ;
a,= Calculate Priority (i) ;
Pri(i),= a ;
If Status(i) = ‘Readya’ then
begin
Insert ( RL,i,Pri ) ;
for all P ? Running Process Queue do
If Pri(p)<Pri(I) then SCHEDULER
end
end
进程阻塞原语
阻塞原语完成运行状态 ?等待状态
流程,入口
保存当前 CPU现场
置该进程为阻塞状态
入等待队列
转进程调度
阻塞进程原语
输入参数,无
返回参数,转进程调度
功能,把现行进程的 PCB置为“阻塞”状态

加入阻塞队列。
进程唤醒原语
唤醒原语完成,
等待状态 ?就绪状态 挂起 等待 ?挂起就绪
流程,入口
判进程状态是挂起阻塞? N
Y
置状态为挂起就绪 置状态为就绪
入挂起就绪队列 入就绪队列
返回 进程调度
唤醒进程原语
输入参数,进程号
返回参数,成功或失败标记
功能,把指定进程的 PCB从阻塞队列取出,改
状态为“就绪”后,列入就绪队列。
3、进程切换
?进程切换的概念,OS中断现行进程,指定另
一个进程为运行状态。
?中断进程执行的可能事件,
时钟中断,I/O中断、存储器、访管中断
3、操作系统的执行方式
? 非进程的内核方式
? 用户方式
练习
1.如果系统中有 N个进程,运行的进程最
多几个,最少几个;就绪进程最多几个
最少几个;等待进程最多几个,最少几
个?
2,有没有这样的状态转换,为什么?
等待 —运行; 就绪 —等待
3,一个状态转换的发生,是否一定导致另
一个转换发生,列出所有的可能。
4.请写出阻塞原语和唤醒原语的程序描述。