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