第三章进程管理-
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/* 置i的家族指针为空 */
i.progency=i;
/* 把i填入其父进程PCB的家族指针处 */
i.state=RQ;
/* 置i所在状态队列首指针 */
insert(RQ,i);
/* 把i进程插入到RQ对尾 */
End 2020/11/16
21
第三章 进 程 管 理
Procedure kill(i)
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设备号,传送的数据长度,缓冲区地址,缓冲区长度
进程:一段功能完整的程序在处理机上的执行过程。
2020/11/16
3
第三章 进 程 管 理
3.1.3 进程的定义
进程:是一个具有独立功能的程序对某个数据集在处理 机上的执行过程和分配资源的基本单位.
程序:指一组操作序列.
数据集:接受程序规定操作的一组存储单元的内容.
进程的特征
动态性 并行性 独立性 异步性
的系统栈,用于存放过程和系统调用参数和调用地址。
由于PCB中包含较多的信息(占几百~几千BYTE),在有的系 统中只含PCB中最常用部分(CPU现场保护部分,进程描述 信息,控制信息)常驻内存,其他部分则放在外存中,待该 进程将要执行时与其他数据一起装入内存。
2020/11/16
12
第三章 进 程 管 理
if i.status=“readya”
• 等待态:等待某个事件的完成时进程所处的状态.除了 CPU之外其他的资源也没有得到满足
2020/11/16
8
第三章 进 程 管 理
撤销
进程调度策略
运行
等待某一事件发生
创建
就绪
等待
等待事件结束
进程的三种基本状态及其转换
2020/11/16
9
第三章 进 程 管 理
3.3 进程的描述与管理
• 进程控制块
例:UNIX进程上下文
用户级上下文
寄存器上下文 系统级上下文
2020/11/16
13
第三章 进 程 管 理
*进程的组成
进程=PCB+程序(代码和数据)
进程的表记
PCB
程序
PCB
代码
程序
2020/11/16
14
第三章 进 程 管 理
*PCB的组成方式
在一个系统中,通常可以拥有数十个以及若干个PCB, 为了能对他们进行有效的管理,应当用适当的方式将 他们组织起来。
if owner (r) insert(r.semaphore,r.data);
归还属于父进程资源且插入父资源清单.
for all RЄcreated resoure(i) do remove descriptor(R) ;
撤销自己的资源清单并归还系统
remove process control block(i);
1. 系统态(核心态):具有较高的特权,能执行一切指令,访问 所有的寄存器和存储区.
2. 用户态:具有较低特权的执行状态,只能执行规定的指令, 访问指定的寄存器和存储区.
进程控制:
就是系统使用一些具有特定功能的程序段来创建、撤销进程以及 完成进程状态间的转换,从而达到多进程高效率并发执行和协调 实现资源共享的目的。
原语(Atomic Operation):
系统态下执行的某些具有特定功能的程序段。
2020/11/16
18
第三章 进 程 管 理
3.4.1. 进程的创建
. 创建原语
为此进程分配进程控制块 为此进程分配资源
把此进程插入到就绪队列中,等待CPU的调度
. 引起创建进程的事件
用户登陆 作业调度 提供服务 应用请求
/* 填CPU初始状态 */
i.mainstore=Mo;
/* 填写主存区域 */
i.resource=Ro;
/* 填写资源清单 */
i.status=readys;
/* 填写进程状态 */
j=EP;
/* 获取调用者内部标识 */
i.parent=j;
/* 填写i进程的父进程j */
j.progency=Ø;
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
挂起某个标识符的进程
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保留起来以便查看是属于哪一种挂起.
1.OS感知进程存在的唯一标识-PCB
2.记录了OS所需的用于描述进程及控制进程全部信息. 在PCB中主要包括下面信息: 1) 进程描述信息 2) 进程控制信息 3) 资源信息 4) 现场保护信息
1) 进程描述信息:进程名或进程标识符. 家族关系.
2020/11/16
10
第三章 进 程 管 理
2) 进程控制信息
为了描述和控制进程的运行,系统为每个进程定义了一个数据
结构,即进程控制块PCB (Process Control Block),系统根据
PCB,感知该进程的存在,故亦称PCB是进程存在的标志. 感知进程的存在
PCB的作用: 记录进程的状态或有关信息
通常在一个实际系统中,PCB的总数是固定的,该数目规定了系 统所允许拥有的进程数目,同时将所有的PCB形成一个结构数 组(或称PCB表),存放在系统的数据区中. 一个进程的PCB机构全部或部分常驻内存.
if s==blocka i.status=Blocks else i.status=readys;
if s=running schedule else continue;
End
Leabharlann Baidu
2020/11/16
24
第三章 进 程 管 理
2. 进程的挂起
当出现了引起进程挂起的事件时,比如,用户进程请求将自己 挂起,或父进程请求将自己的某个子进程挂起, 系统将利用挂起原 语suspend( )将指定进程或处于阻塞状态的进程挂起。挂起原语的 执行过程是:首先检查被挂起进程的状态,若处于活动就绪状态, 便将其改为静止就绪;对于活动阻塞状态的进程,则将之改为静止 阻塞。 为了方便用户或父进程考查该进程的运行情况而把该进程的 PCB复制到某指定的内存区域。最后,若被挂起的进程正在执行, 则转向调度程序重新调度。
*进程上下文
是对进程动态活动的静态描述
进程的上下文是其相应的程序地址空间的内容,硬件 寄存器的内容以及与该进程有关的核心数据结构(系 统堆栈,用户堆栈)构成的。
包括:计算机系统中与执行该进程有关的各种寄存器 值;程序段经过编译连接后形成的机器指令代码段 (text);数据段以及各种堆栈的值和PCB块)。
2020/11/16
7
第三章 进 程 管 理
3.2.1 进程的基本状态
1. 进程状态
• 就绪态:等待系统分配处理机以便执行时 所处的状态. 即获得了除处理机之外的所以资源,一旦由调度 程序选中得到处理机就可以立即执行的状态.
• 运行态:正在处理机上执行时所处的状态. 在单CPU情况下,处于该状态的进程数只有一个.
及所有设备的有关数据结构指针. 5. 指向文件系统的指针及有关标识符.
11
第三章 进 程 管 理
4) CPU现场保护信息(进程上下文)
当处理机被中断时,各种寄存器的内容都必须保存在 被中断进程的PCB中,以便在该进程重新执行时,能从 断点继续执行.
1. 通用寄存器的用户 2. PC 3. PSW :含状态信息(条件码的执行方式,中断屏蔽标识)。 4. 用户栈指针:为每个用户进程有一个或若干隔与之相关
2020/11/16
20
第三章 进 程 管 理
.进程创建原语的描述形式
i PCB
create(n,So,Po,Mo,Ro,acc)
Begin
i=get internal name(n);/* 获得内部名*/
i.id=n;
/* 填外部名 */
i.priority=Po;
/* 设优先级 */
i.Cpustate=So;
END
2020/11/16
22
第三章 进 程 管 理
2.进程的终止过程
1. 根据被终止进程的标识符,从PCB链表中检索出该进程的PCB,从中读 出该进程的状态。
2. 若被终止进程正处于执行状态,应立即终止该进程的执行,并置调度标 志为真,用于指示该进程被终止后应重新进行调度。
3. 若该进程还有子孙进程,还应将其所有子孙进程予以终止,以防他们成 为不可控的进程。
执行指针 就绪表指针 阻塞表指针
2020/11/16
就绪索引表 阻塞索引表
按索引方式组织PCB
P CB1 P CB2 P CB3 P CB4 P CB5 P CB6 P CB7
17
第三章 进 程 管 理
3.4 进程控制
为了防止OS及关键数据如PCB等,受到用户程序有意或无意的破坏,通 常将处理机的执行状态分为:系统态和用户态.
线性表
执 行指 针
P CB1 4 P CB2 3
就 绪队 列 指针
P CB3 0 P CB4 8 P CB5
阻 塞队 列 指针
P CB6 7 P CB7 9
空 闲队 列 指针
P CB8 0 P CB9 1
…
PCB链接队列示意图
2020/11/16
16
第三章 进 程 管 理
2. 索引方式
系统根据所有进程的状态,建立几张索引表,如就绪索引表,阻塞索引 表,并把各索引表在内存的首地址记录于内存中的一些专用库文件中.
2020/11/16
19
第三章 进 程 管 理
3.4.2 . 进程的终止 正常结束
1. 引起进程终止的事件 异常结束
外界干预
Procedure Destroy(n) begin
sched=false; i=获取n进程内部名 kill(i); if (sched) schedure else continue(当前正在执行的进程); end
系统中进程队列分类:就绪队列,等待队列,运行队列。 就绪队列:整个系统一个 等待队列:每一个等待事件一个。 运行队列:单机系统中整个系统一个。
PCB目前常用的组织方式:链接方式;索引方式
2020/11/16
15
第三章 进 程 管 理
1. 链接方式
把具有相同状态的PCB,用其中的链接字链接成一个队列.
2020/11/16
4
第三章 进 程 管 理
进程的结构特征:PCB,程序代码段,数据段
PCB
程序
数据
进程的结构特征
2020/11/16
5
第三章 进 程 管 理
2020/11/16
进程与程序的区别与联系
进程
程序
动态
静态
暂时
永久
并行
串行(顺序)
PCB 多个
一个
一个
多个
6
第三章 进 程 管 理
3.2 进程的基本状态
第三章 进 程 管 理
第三章进程管理-
第三章 进 程 管 理
3.1 进程的基本概念
3.1.1 进程概念的引入
程序A
C
编
译
C
程
序
程序B
C
时间片用完
中断
2020/11/16
2
可再入程序
第三章 进 程 管 理
3.1.2 进程与程序的区别
① 进程是动态的,程序是静态的 ② 进程是暂时的概念,程序是永久的概念 ③ 进程有自己的数据结构-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;