第三章进程管理-
挂起某个标识符的进程
1. 挂起原语的方式
将某个指定标识符的进程及其全部或部分子孙挂起.
挂起用以保存N进程的PCB副本的内存区,以备参考.
Procedure suspend(n,a)
Begin
i=get internal name(n);
s=i.status;
if i.status=“running” stop(i); a=copy pcb(i); /* 相应的PCB保留起来以便查看是属于哪一种挂起.
END
2020/11/16
22
第三章 进 程 管 理
2.进程的终止过程
1. 根据被终止进程的标识符,从PCB链表中检索出该进程的PCB,从中读 出该进程的状态。
2. 若被终止进程正处于执行状态,应立即终止该进程的执行,并置调度标 志为真,用于指示该进程被终止后应重新进行调度。
3. 若该进程还有子孙进程,还应将其所有子孙进程予以终止,以防他们成 为不可控的进程。
进程:一段功能完整的程序在处理机上的执行过程。
2020/11/16
3
第三章 进 程 管 理
3.1.3 进程的定义
进程:是一个具有独立功能的程序对某个数据集在处理 机上的执行过程和分配资源的基本单位.
程序:指一组操作序列.
数据集:接受程序规定操作的一组存储单元的内容.
进程的特征
动态性 并行性 独立性 异步性
2020/11/16
19
第三章 进 程 管 理
3.4.2 . 进程的终止 正常结束
1. 引起进程终止的事件 异常结束
外界干预
Procedure Destroy(n) begin
sched=false; i=获取n进程内部名 kill(i); if (sched) schedure else continue(当前正在执行的进程); end
第三章 进 程 管 理
第三章进程管理-
第三章 进 程 管 理
3.1 进程的基本概念
3.1.1 进程概念的引入
程序A
C
编
译
C
程
序
程序B
C
时间片用完
中断
2020/11/16
2
可再入程序
第三章 进 程 管 理
3.1.2 进程与程序的区别
① 进程是动态的,程序是静态的 ② 进程是暂时的概念,程序是永久的概念 ③ 进程有自己的数据结构-PCB ④ 进程和程序不是一一对应的。
2020/11/16
4
第三章 进 程 管 理
进程的结构特征:PCB,程序代码段,数据段
PCB
程序
数据
进程的结构特征
2020/11/16
5
第三章 进 程 管 理
2020/11/16
进程与程序的区别与联系
进程
程序
动态
静态
暂时
永久
并行
串行(顺序)
PCB 多个
一个
一个
多个
6
第三章 进 程 管 理
3.2 进程的基本状态
/* 置i的家族指针为空 */
i.progency=i;
/* 把i填入其父进程PCB的家族指针处 */
i.state=RQ;
/* 置i所在状态队列首指针 */
insert(RQ,i);
/* 把i进程插入到RQ对尾 */
End 2020/11/16
21
第三章 进 程 管 理
Procedure kill(i)
原语(Atomic Operation):
系统态下执行的某些具有特定功能的程序段。
2020/11/16
18
第三章 进 程 管 理
3.4.1. 进程的创建
. 创建原语
为此进程分配进程控制块 为此进程分配资源
把此进程插入到就绪队列中,等待CPU的调度
. 引起创建进程的事件
用户登陆 作业调度 提供服务 应用请求
1. 系统态(核心态):具有较高的特权,能执行一切指令,访问 所有的寄存器和存储区.
2. 用户态:具有较低特权的执行状态,只能执行规定的指令, 访问指定的寄存器和存储区.
进程控制:
就是系统使用一些具有特定功能的程序段来创建、撤销进程以及 完成进程状态间的转换,从而达到多进程高效率并发执行和协调 实现资源共享的目的。
begin
if i->status=“running”
begin
stop(i);
sched=true;
end
remove(i->state,i);将被撤销进程i从i.state所指示的队列中去掉.
for all sЄ(i.progency) do kill(s);
for all rЄ(i.mainstoreUi.resoure) do
例:UNIX进程上下文
用户级上下文
寄存器上下文 系统级上下文
2020/11/16
13
第三章 进 程 管 理
*进程的组成
进程=PCB+程序(代码和数据)
进程的表记
PCB
程序
PCB
代码
程序
2020/11/16
14
第三章 进 程 管 理
*PCB的组成方式
在一个系统中,通常可以拥有数十个以及若干个PCB, 为了能对他们进行有效的管理,应当用适当的方式将 他们组织起来。
2020/11/16
25
第三章 进 程 管 理
. 激活原语的激活方式 激活指定标识符的进程
激活某进程及其子孙
Procedure active(n)
Begin
i=get internal name(n);
if i.status=“readys”
i.status=readya
else
பைடு நூலகம்
i.status=blocka;
执行指针 就绪表指针 阻塞表指针
2020/11/16
就绪索引表 阻塞索引表
按索引方式组织PCB
P CB1 P CB2 P CB3 P CB4 P CB5 P CB6 P CB7
17
第三章 进 程 管 理
3.4 进程控制
为了防止OS及关键数据如PCB等,受到用户程序有意或无意的破坏,通 常将处理机的执行状态分为:系统态和用户态.
• 等待态:等待某个事件的完成时进程所处的状态.除了 CPU之外其他的资源也没有得到满足
2020/11/16
8
第三章 进 程 管 理
撤销
进程调度策略
运行
等待某一事件发生
创建
就绪
等待
等待事件结束
进程的三种基本状态及其转换
2020/11/16
9
第三章 进 程 管 理
3.3 进程的描述与管理
• 进程控制块
系统中进程队列分类:就绪队列,等待队列,运行队列。 就绪队列:整个系统一个 等待队列:每一个等待事件一个。 运行队列:单机系统中整个系统一个。
PCB目前常用的组织方式:链接方式;索引方式
2020/11/16
15
第三章 进 程 管 理
1. 链接方式
把具有相同状态的PCB,用其中的链接字链接成一个队列.
及所有设备的有关数据结构指针. 5. 指向文件系统的指针及有关标识符.
11
第三章 进 程 管 理
4) CPU现场保护信息(进程上下文)
当处理机被中断时,各种寄存器的内容都必须保存在 被中断进程的PCB中,以便在该进程重新执行时,能从 断点继续执行.
1. 通用寄存器的用户 2. PC 3. PSW :含状态信息(条件码的执行方式,中断屏蔽标识)。 4. 用户栈指针:为每个用户进程有一个或若干隔与之相关
2020/11/16
7
第三章 进 程 管 理
3.2.1 进程的基本状态
1. 进程状态
• 就绪态:等待系统分配处理机以便执行时 所处的状态. 即获得了除处理机之外的所以资源,一旦由调度 程序选中得到处理机就可以立即执行的状态.
• 运行态:正在处理机上执行时所处的状态. 在单CPU情况下,处于该状态的进程数只有一个.
4. 将被终止进程所拥有的全部资源,或者归还给其父进程, 或者归还给 系统。
5. 将被终止进程(它的PCB)从所在队列(或链表)中移出, 等待其他程序来 搜集信息。
2020/11/16
23
第三章 进 程 管 理
3.4.3 进程的挂起和激活
挂起:让进程暂时不参与资源的竞争
把挂起原语调用者本身挂起,即自己挂起自己
1. 进程的当前信息:指明进程的当前状态,作为进程调度 和对换的依据.
2. 进程优先级:调度依据,是进程占有处理机的重要依据. 3. 程序开始地址:便于执行这段程序. 4. 各种计时信息:记录资源占用的信息. 5. 通信信息:保证进程之间相应的联系.
3) 资源管理信息
2020/11/16
1. 占用内存大小及其管理用数据结构指针. 2. 对换或覆盖用的有关信息. 3. 共享程序的大小及起始地址. 4. I/O设备号,传送的数据长度,缓冲区地址,缓冲区长度
if owner (r) insert(r.semaphore,r.data);
归还属于父进程资源且插入父资源清单.
for all RЄcreated resoure(i) do remove descriptor(R) ;
撤销自己的资源清单并归还系统
remove process control block(i);
2020/11/16
20
第三章 进 程 管 理
.进程创建原语的描述形式
i PCB
create(n,So,Po,Mo,Ro,acc)
Begin
i=get internal name(n);/* 获得内部名*/