正在加载图片...
一利用Swap指令实现进程互斥 初值lck= false表示资源可用。 s Procedure Swa key = true Var temp: boolean Swap(lock, key): Until key= false ritical section := b lock: = false remainder section until false 3.2信号量机制 wait(P)和 Signal(v)原语 整型信号量机制 wait(s)a Begin sem>=0:表示可供并发进程使用的资源实体的个歌 Lock out interrupts sem<0:表示正在等特使用帧界区的进程数。 If s<0 then Begin Sem的值只能由P、Ⅴ操作改变 Status(q)t =blocked; Pt wait( s 的同步 Unlock interrupts; Scheduler 按信号量数值分为二元信号和信号量 22 End sIgna原语 利用信号量实现互斥 Lock out interrupts; processIt Begin LIn wait (mutex): CsI; signal(mutex): Remainder of process If s<=0 then Begin Goto LI atus(R)I Insert(RL, R 作系统|进程的 Process2: Begin L2t wait(mutex ): CS2; Unlock interrupts: Coend4 操 作 系 统 | 进 程 的 同 步 与 通 信 19 CUIT 徐虹 ¾利用Swap指令实现进程互斥 初值lock = false 表示资源可用。 Procedure Swap (var a,b : boolean) Var temp : boolean ; Begin Temp := a ; a := b ; b := temp ; End 操 作 系 统 | 进 程 的 同 步 与 通 信 20 CUIT 徐虹 repeat key := true ; repeat Swap(lock,key) ; Until key = false ; critical section lock := false ; remainder section until false ; 操 作 系 统 | 进 程 的 同 步 与 通 信 21 CUIT 徐虹 3. 2 信号量机制 ¾ 整型信号量机制 ¾ 信号量(sem) sem>=0: 表示可供并发进程使用的资源实体的个数 sem<0: 表示正在等待使用临界区的进程数。 Sem的值只能由P、V操作改变。 P:wait ( s ) V:signal (s ) 按信号量数值分为二元信号量和一般信号量。 操 作 系 统 | 进 程 的 同 步 与 通 信 22 CUIT 徐虹 ¾Wait(P)和signal(V)原语 ¾Wait(s) 原语 wait(s) :Begin Lock out interrupts; s = s – 1; If s < 0 then Begin Status(q) := blocked; Insert(WL, q); Unlock interrupts; Scheduler; End Else unlock interrupts; End 操 作 系 统 | 进 程 的 同 步 与 通 信 23 CUIT 徐虹 ¾signal原语 signal(s) :Begin Lock out interrupts; s = s + 1; If s < =0 then Begin Remove(WL,R); Status(R) := ready; Insert(RL,R); End Unlock interrupts; End 操 作 系 统 | 进 程 的 同 步 与 通 信 24 CUIT 徐虹 ¾利用信号量实现互斥 Begin integer mutex = 1; cobegin process1:Begin L1:wait (mutex);CS1; signal (mutex); Remainder of process 1; Goto L1; End Process2: Begin L2:wait (mutex);CS2; signal (mutex); Remainder of process 2; Goto L2; End Coend End
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有