2第二章进程管理Convertor.doc
文本预览下载声明
第二章 进 程 管 理(2)
张 琦
内容
2.1 进程的基本概念
2.2 进程控制
2.3 进程同步
2.4 经典进程的同步问题
2.5 进程通信
2.6 线程
本章节要讨论的问题
如何控制和协调并发进程异步执行的时
序?
进程同步的主要任务是对多个相关进程在执行次序上进行协调,以使并发执行的诸进程之间能有效地共享资源和相互合作。
进程的同步机制
2.3 进 程 同 步
2.3.1 进程同步的基本概念
1. 两种形式的制约关系
当程序并发执行时,由于资源共享和进程合作,使同处于一个系统中的诸进程之间可能存在着以下两种制约关系。
间接相互制约关系 --- 同处于一个系统的
进程,通常都共享着某种系统资源。
(2) 直接相互制约关系 --- 主要源于进程间的
合作。
2.3 进 程 同 步
2. 临界资源 (Critical Resource)
凡是以互斥方式使用的共享资源都称为临界资源。
临界资源具有一次只允许一个进程使用的属性。
3. 临界区 (Critical Section)
把每个进程中访问临界资源的那段代码称为临界区。
repeat
entry section
critical section;
exit section
remainder section;
until false;
进入区---申请进入临界区
临界区---访问临界资源
退出区---退出对临界资源的访问
剩留区---进程的其他代码
2.3 进 程 同 步
4. 同步机制应遵循的规则
空闲让进 无进程处于临界区内时,可让一个
申请进入该临界区的进程进入。
忙则等待 临界区内有进程时,申请进入临界
区的进程必须等待。
有限等待 进程进入临界区的请求,必须在有
限的时间内满足。
让权等待 等待进入临界区的进程,必须立即
释放CPU。
2.3 进 程 同 步
2.3.2 信号量机制
1. 什么是信号量(semaphore)
并发进程间的相互制约关系从本质上说是由于争夺和共享资源而产生的。将资源抽象为信号量, 在信号量基础上引入同步操作原语: P操作、V操作。
2. 整形信号量
整形信号量用于表示资源数目,用S表示。除初始化外,仅能通过两个标准的原子操作wait(S)和signal(S)来访问。这两个操作一直被分别称为P、V操作。 wait和signal操作可描述为:
wait(S): while S≤0 do no-op
S∶=S-1;
signal(S): S∶=S+1;
P操作:申请资源
V操作:释放资源
2.3 进 程 同 步
3. 记录型信号量
在信号量机制中,除了需要一个用于代表资源数目的整型变量value外,还应增加一个进程链表L,用于链接上述的所有等待进程。
其中:
信 号 量 值 —表示某种资源的数量。
等待队列指针—当信号量值为负时,表示该类资源已分配
完,等待该类资源的进程排在等待队列中。
L为指向该信号量等待队列的指针。
记录型信号量是由于它采用了记录型的数据结构而得名的。
上述两个数据项可描述为:
2.3 进 程 同 步
type semaphore=record
value: integer;
L: list of process;
end
P操作(wait原语)
每执行一次P操作,即申请分配一个单位的资源。
P(S)—表示对信号量S 进行P操作。
① S.value : = S.value – 1
② 若S.value ≥ 0 进程继续执行。
若S.value 0 进程阻塞,并进入等待队列(L)。
2.3 进 程 同 步
V操作(signal原语)
V(S)— 表示对信号量S 进行V操作,即释放一个单
位的资源。
① S.value := S.value + 1;
② 若 S.value 0 进程继续执行。
若
显示全部