进程的同步,信号量机制
2018-09-27 本文已影响0人
星q_p光
主要任务:并发执行的进程之间有效的共享资源和相互合作,从而使程序的执行具有可再现性
临界资源:一次仅允许一个进程使用的资源,临界资源的访问必须是互斥的
互斥:一种相互制约关系,一种进程使 用资源的时候另一个进程必须等待,直到占用资源的进程退出临界区
临界区:每个进程中访问临界资源的那段代码叫临界区
同步机制遵循的规则:
(1)空闲让进
(2)忙则等待
(3)有限等待
(4)让权等待:主动释放CPU防止忙等
信号量机制
一种同步机制
整形信号量:是一个整形量,根据初始情况赋相应的值,仅通过两个原子操作访问
wait(S)
while s<=0 do no-op;
s=s-1;
signal(s)
s=s+1
整形信号量符合有限等待,但不符合让权等待
记录型信号量:
整形变量value(资源数目):value>0当前可使用资源的数量
value<=0绝对值的表示等待使用该资源的进程数,在该信号队列上排队的PCB个数
进程链表L(链接所有等待进程)
wait()
s.value=s.value-1;
if s.value<0 then block(s.l)
signal()
s.value=s.value+1
if s.value<=0 then wakeup(s.l);
信号量的基本应用:
(1)实现互斥
(2)实现进程间的前驱关系
互斥信号的mutex初值为1