摘要:异步环境下的一组并发进程之间互发消息、相互合作、互相等待,使得各进程按一定的速度执行的过程称为进程同步,也即同步是使在异步环境下的各进程按一定的顺序和速度执行。
2.1.2题机与进程管理
3.进程互斥与同步以及P, V操作
进程间的同步
异步环境下的一组并发进程之间互发消息、相互合作、互相等待,使得各进程按一定的速度执行的过程称为进程同步,也即同步是使在异步环境下的各进程按一定的顺序和速度执行。
进程间的互斥
一组并发进程中的一个或多个程序段,因共享某一公有资源而使得它们必须以一个 不允许交叉的顺序执行。也即,互斥要保证临界资源在某一时刻只被一个进程访问。
临界资源
系统中有些资源可以供多个进程同时使用,有些资源一次只能供一个进程使用,称 为临界资源(Critical Resource, CR),如打印机、公共变量和表格等。
临界区管理原则
临界区(Critical Section, CS)是进程中对临界资源实施操作的那段程序。互斥临界区管理的原则是有空即进、无空则等、有限等待、让权等待。
信号量机制
1965年,荷兰学者Dijkstra提出的信号量机制是一种卓有成效的进程同步与互斥的工具。
整型信号量与PV操作
信号量是一个整型变量,根据控制对象的不同赋不同的值。信号量分为两类。
公用信号量:实现进程间的互斥,初值=1或资源的数目。
私用信号量:实现进程间的同步,初值=0或某个正整数。
信号SS的物理意义是:S>0表示某资源的可用数,S<0其绝对值表示阻塞队列中 等待该资源的进程数。
PV操作是实现进程同步与互斥的常用方法。PV操作是低级通信原语,在执行期间 不可分割。其中,p操作表示申请一个资源,V操作表示释放一个资源。
P操作定义:S:=S-1,若S彡0,则执行P操作的进程继续执行;否则若S<0,则置 该进程为阻塞状态(因为无可用资源),并将其插入阻塞队列。
P操作可用如下过程表示:
Procedure P (Var S:Semaphore);
Begin
S:=S-1;
If S<0 then W (S) {执行P操作的进程插入等待队列}
End;
V操作定义:S:=S+1,若SX),则执行V操作的进程继续执行;否则若S<0,则从 阻塞状态唤醒一个进程,并将其插入就绪队列,然后执行V操作的进程继续执行。
V操作可用如下过程表示:
Procedure V (Var S:Semaphore);
Begin
S:=S+1;
If S彡0 then R (S) {从阻塞队列中唤醒一个进程}
.End;
利用PV操作实现进程的互斥
令信号量mutex的初值为"1",当进入临界区时执行P操作,退出临界区时执行V 操作。则进入临界区的代码段如下:
P (mutex)
临界区
V (mutex)
利用PV操作实现进程的同步
进程的同步是由于进程间合作引起的相互制约的问题,要实现进程的同步可用一个信号量与消息联系起来。当信号量的值为0时表示希望的消息未产生,当信号量的值为非0时表示希望的消息己经存在。假定用信号量S表示某条消息,进程可以通过调用P操作测试消息是否到达,调用V操作通知消息已准备好。
同步问题的经典例子是生产者-消费者问题。相应的程序段形式如下:
生产者 Loop
生产一产品next;
P (Bufempty);
Next产品存缓冲区:
(Buffiill); endloop
消费者 Loop
P (BufRill);
(Bufempty);
从缓冲区中取产品;
使用产品; endloop
其中,信号量Bufempty和Buffbll分别表示缓冲区中的空单元数和非空单元数,它们的初值分别是1和0.
软考备考资料免费领取
去领取