进程的创建

Download Report

Transcript 进程的创建

第三章 进程管理











3.1 进程的概念
3.2 进程的描述
3.3 进程状态及其转换
3.4 进程控制
3.5 进程互斥
3.6 进程同步
3.7 进程通信
3.8 死锁问题
3.9 线程的概念
3.10 线程分类与执行
小结
1
3.2.2进程上下文





进程上下文是进程执行过程中顺序关联的静态描述
进程上下文包含了每个进程执行多的、执行时的以
及待执行的指令和数据,在指令寄存器、堆栈、状
态寄存器等中的内容
上文:已经执行过的进程指令和数据在相关寄存器
与堆栈中的内容称为上文
正文:正在执行的指令和数据在相关寄存器与堆栈
中的内容称为正文
下文:待执行的指令和数据在相关寄存器与堆栈中
的内容称为下文
2
进程上下文结构
进程上下文结构
3
3.2.3进程上下文切换


指出进程上下文的概念主要时为了进程上下
文的切换
进程上下文切换发生在不同的进程之间而不
是同一个进程内
4

进程上下文切换过程
包括



保存被切换进程的正
文部分(或当前状态)
至有关存储区
操作系统进程中有关
调度和资源分配程序
执行,并选取新的进
程
将被选中进程的正文
从有关的存储区中提
取出来
进程上下文的切换过程
5
3.2.4进程空间与大小


进程空间:每个进程都有自己
的地址空间,该地址空间就称
为进程空间或虚空间
分类


用户空间:用户程序只能够在
用户空间内执行
系统空间:操作系统内核程序
在系统空间执行
进程空间示例
6
3.3进程状态及其转换
3.3.1进程状态

进程的生命周期可以划分为一组状态,这些
状态刻画了整个进程



1) 就绪(Ready)状态:进程一旦获得CPU就可以
投入运行的状态
2) 执行状态:进程获得CPU正在运行的状态
3) 阻塞状态:进程由于等待资源或某个事件的
发生而暂停执行的状态
7
3.3.2进程状态转换
进程状态转换
8
进程控制块的组织方式
1) 链接方式 :把具有同一状态的PCB,用其中的链接
字链接成一个队列
Ö´ÐÐÖ¸Õë
¾ÍÐ÷¶ÓÁÐÖ¸Õë
×èÈû¶ÓÁÐÖ¸Õë
4
3
0
8
7
9
0
1
¡-
¿ÕÏжÓÁÐÖ¸Õë
PCB1
PCB2
PCB3
PCB4
PCB5
PCB6
PCB7
PCB8
PCB9
PCB链接队列示意图
9
2) 索引方式:系统根据所有进程的状态建立几张索引表。
PCB1
执行指针
就绪索引表
PCB2
PCB3
就绪表指针
PCB4
阻塞索引表
PCB5
PCB6
阻塞表指针
PCB7
按索引方式组织PCB
10
3.4 进程控制



进程控制:就是系统使用一些具有特定功能
的程序段来创建、撤销进程以及完成进程各
状态间的转换,从而达到多进程高效率并发
执行和协调、实现资源的共享
原语:是系统态下执行的某些具有特定功能
的程序段
原语类别


机器指令级:执行期间不允许中断,是不可分
割的单位
功能级:程序段不允许并发执行
11
3.4.1进程创建与撤销
1. 进程创建

创建的方式:


由系统程序模块统一创建:进程之间是平等的关
系,不存在继承关系
由父进程创建
A
B
D
I
C
E
J
F
K
G
L
H
M
12
进程的创建(Creation of Progress)
(1)申请空白PCB。
(2) 为新进程分配资源。
(3) 初始化进程控制块。
(4) 将新进程插入就绪队列,如果进程就绪队列能够
接纳新进程, 便将新进程插入就绪队列。
13

创建原语流图
14
引起创建进程的事件
(1) 用户登录。
(2) 作业调度。
(3) 提供服务。
(4) 应用请求。
15
2. 进程撤销

引起进程终止(Termination of Process)的事件



正常结束
异常结束
外界干预:外界干预并非指在本进程运行中出现了异常
事件,而是指进程应外界的请求而终止运行。这些干预
有:



① 操作员或操作系统干预。 由于某种原因,例如,发生了死锁,
由操作员或操作系统终止该进程;
② 父进程请求。 由于父进程具有终止自己的任何子孙进程的
权利, 因而当父进程提出请求时,系统将终止该进程;
③ 父进程终止。 当父进程终止时,OS也将他的所有子孙进程
终止
16

撤销原语
17
3.4.2 进程的阻塞与唤醒
1. 引起进程阻塞和唤醒的事件
1) 请求系统服务
2) 启动某种操作
3) 新数据尚未到达
4) 无新工作可做
18
2. 进程阻塞过程
正在执行的进程,当发现上述某事件时,由于无法继续
执行,于是进程便通过调用阻塞原语block把自己阻塞。可见,
进程的阻塞是进程自身的一种主动行为。
19
3.
当被阻塞进程所期待的事件出现时,如I/O完成或其所
期待的数据已经到达,则由有关进程(比如,用完并释放
了该I/O设备的进程)调用唤醒原语wakeup( ),将等待该事
件的进程唤醒。
20
3.5进程互斥
3.5.1资源共享所引起的制约
临界资源



多道程序环境->进程之间存在资源共享,进
程的运行时间受影响
硬件或软件(如外设、共享代码段、共享数据
结构),多个进程在对其进行访问时(关键是
进行写入或修改),必须互斥地进行--有些
共享资源可以同时访问,如只读数据
21

进程间资源访问冲突



共享变量的修改冲突
操作顺序冲突
进程间的制约关系


间接制约:进行竞争--独占分配到的部分或全
部共享资源,“互斥”
直接制约:进行协作--等待来自其他进程的信
息,“同步”
22
一个飞机订票系统,两个终端,运行T1、T2进
程
T1 :
T2:
...
...
Read( x) ;
Read( x) ;
i f x>=1 t hen
i f x>=1 t hen
x: =x- 1;
x: =x- 1;
wri t e( x) ;
wri t e( x) ;
...
...
共享变量的修改冲突
23
临界区(critical section)
repeat
entry section
critical section;
exit section
remainder section;
until false;
24
相关概念




临界区(critical section):进程中访问临界资源的
一段代码。
进入区(entry section):在进入临界区之前,检
查可否进入临界区的一段代码。如果可以进入临
界区,通常设置相应"正在访问临界区"标志
退出区(exit section):用于将"正在访问临界区"
标志清除。
剩余区(remainder section):代码中的其余部分。
25
3.5.2互斥的加锁实现

加锁后的临界区程序描述





Lock(key[S])
<临界资源>
Lock(key[S])
S:表示类名为S的临界区
缺点:


开销大:每个进程每次都进入临界区之前都必须
对临界资源进行测试
不公平:不同的进程获取进入临界资源的机会不
一样,刚刚访问了的进程机会要大些
26
3.5.3信号量和P,V原语
1. 信号量(semaphore)
 信号是铁路交通管理中的一种常用设备
 操作系统信号量sem是一个整数。意义:


Sem大于等于0表示可供并发进程使用的资源的
数量
Sem小于0表示正在等待使用临界资源的进程数
量
27
2. P,V原语

P原语操作功能
28

V原语操作功能
29

P、V操作的一种实现方
式:用加锁软件方法实
现
30
3.5.4用P,V原语实现进程互斥



设sem为互斥信号量,范围为(1,0,-1)
S表示临界区
实现描述:

PA进程:
P(sem)
<S>
V(sem):
….

PB进程:
P(sem)
<S>
V(sem):
….
31
信号量的应用
1. 利用信号量实现进程互斥
用于互斥的信号量mutex与所有的并发进程有关,称之为公有信
号量,公有信号量的值反映了可用该公有资源的数量.要实现进
程互斥,只需用P(mutex)、V(mutex)框住临界区CS。程序如下:
进程A
.
.
P(mutex);
CSA;
V(mutex);
.
.
.
进程B
.
.
P(mutex);
CSB;
V(mutex);
.
.
.
32
例1:某车站售票厅,任何时刻最多可
容纳20名购票者进入,当售票厅中少
于20名购票者时,厅外的购票者可立
即进入,否则需要在外面等待。每个
购票者可看成一个进程。
33
分析:首先确定进程间的关系,售票厅是各进程共享的公有资
源,当售票厅中多于20名购票者时,厅外的购票者需要在外
面等待,所以进程间是互斥的关系;然后确定信号量及其值,
只有一个公有资源:售票厅,所以设置一个信号量mutex.售
票厅最多容纳20个进程,即可用该资源实体数为20,mutex的
初值就设为20.程序如下:
REPEAT
P(mutex);
进入售票厅;
购票;
退出;
V(mutex);
UNTIL false:
由此可知,互斥信号量的初值可大于等于1(当售票厅内至多容
纳1名购票者时,初值为1),初值取什么,关键是可用资源
数.
34
课后练习

P83:2
35