停车场与记录型信号量.ppt
记录型信号量,信号量机制,进程同步机制:协调进程间执行次序,信号量机制:使用信号量及有关的P、V操作原语来实现进程的互斥与同步。是一种卓有成效的进程同步机制,信号量:semaphore,控制进程的执行,1、整型信号量机制2、记录型信号量机制3、信号量集机制,记录型信号量,数据结构:type semaphore=record value:integer;L:list of process;end,初值为资源信号量的数目。,链表L用于链接所有等待的进程。,等待,系统资源,进程,信号量整型变量,场景模拟,L,2.signal操作,3.S.value值的含义,1.wait操作,wait操作和signal操作,wait操作:Procedure wait(S)var S:semaphore;begin S.value:=S.value()1;if S.value()0 then block(S.L);end,signal操作:Procedure signal(S)var S:semaphore;begin S.value:=S.value()1;if S.value()0 then wakeup(S.L);end,wait操作:申请一个单位资源,signal操作:释放一个单位资源,Procedure wait(S)var S:semaphore;begin S.value:=S.value()1;if S.value()0 block(S.L);end,问题1.wait操作,S.value=,S.value:=,S.value=,S.value=,S.value=,S.value=,L,等待,wait操作,3,S.value-1=2,1,0,-1,-2,Procedure wait(S)var S:semaphore;begin S.value:=S.value()1;if S.value()0 block(S.L);end,wait操作,Procedure signal(S)var S:semaphore;begin S.value:=S.value()1;if S.value()0 then wakeup(S.L);end,+,问题2.signal操作,S.value=,S.value:=,S.value=,S.value=,S.value=,S.value=,L,等待,signal操作,-2,S.value+1=-1,0,1,2,3,Procedure signal(S)var S:semaphore;begin S.value:=S.value(+)1;if S.value(=0)then wakeup(S.L);end,signal操作,若信号量S.value的初值为2,当前值为-1,则表示有()个进程等待。A、0 B、1 C、2 D、3,问题3.S.value值的含义,S.value=3,S.Value=2,S.value=1,S.value0:系统中可利用的资源数量,S.value数值含义,S.value=0,L,等待,S.value=0:资源恰好分配完毕,S.value数值含义,S.value=-1,L,等待,S.value=-2,L,等待,S.value0:其绝对值表示在该信号量链表中已阻塞进程的数目。,S.value数值含义,若信号量S.value的初值为2,当前值为-1,则表示有()个进程等待。A、0 B、1 C、2 D、3,S.value值的含义,B,1.wait(S)和signal(S)是原子操作;2.信号量的值仅由wait、signal操作改变;3.必须给信号量赋初值,且只能赋一次初值;4.互斥信号量为1,使用信号量时注意几点:,1.对于两个并发进程,设互斥信号量为mutex,若mutex=0,则()A、表示没有进程进入临界区 B、表示有一个进程进入临界区 C、表示有一个进程进入临界区,另一个进程等待 D、表示有2个进程进入临界区2.每执行一次wait操作,信号量的数值S减1。若S=0,则该进程;若S0,则该进程。3.每执行一次signal操作,信号量的数值S加1。若,则该进程继续执行;否则,从对应的 队列中移出一个进程并 状态赋予该进程。4.信号量的物理意义是当信号量值大于零时表示;当信号量值小于零时,其绝对值为。5.操作系统中,对信号量S的wait原语操作定义中,使进程进入相应等待队列等待的条件是_。,练习,