看板 Grad-ProbAsk 關於我們 聯絡資訊
※ 引述《chris750630 (goodness)》之銘言: : ※ 引述《nypgand1 (祈附‧征前御祭)》之銘言: : : var flag: array[0..1] of Boolean; (initailly false) : : turn: 0..1; (initailly 1) : : The following program is for process Pi (i = 0 or 1), : : with Pj (j = 1 or 0) being the other process : : repeat : : flag[i]:=ture; : : while turn < > i : : do begin : : while flag[j] do no-op; : : turn:=i; : : end : : //critical section : : flag[i]:=false; : : //remainder section : : until fasle; : : 類似像這樣給code然後要求證明 : : mutual exclusive、progress、bounded waiting : ME 有 因為有turn的存在 導致進入CS唯一 : progress 無 若turn=j 則Pi要進CS要等Pj進去後才能進 : BW 無 原因同上 Pj若不進去的話 就無窮等待啦 解答只寫了一行說違背mutual exclusion 沒有說另外兩個有沒有符合 這是台大電機的題目沒有寫年份 progress我猜有 bounded waiting我也是猜沒有 可是原因跟c大的好像有點不一樣 想問一下c大或是其他神人 1.progress那邊 Pj只要不是在remainder section 好像會卡住Pi也沒關係耶 2.bounded waiting那邊 我記得無窮等待是指等待process的"個數" 好像不是指等待的"時間" 所以我猜跟Pj進不進去無關 我是想到一種情況是Pi被卡在while flag[j] do no-op; Pj離開CS並set flag[j]=false後 CPU沒有換Pj作 而是做完RS又從頭要求了一次進入CS 這期間一直都是turn==i沒有變 所以Pi又進去了CS 一直這樣下去可能Pj等Pi無窮多次 3.starvation分成兩種 (1)可能"全部人"都進不去 (2)可能"某些人"都進不去(像前例) 我想問說如果發現了code會造成上面其中一種情況 有一定可以推到說那三個條件之中哪些一定合或不合嗎 4.progress的定義中有提到the selection cannot be postponed indefinitely 這邊的無限延遲是跟bounded waiting一樣指等待process"個數"? 還是指時間? (如果是"時間"的話 "全部人"starvation就一定違背progress了) 這類題目真的好難 太多可能的情況 要想很久 希望有神人能分享判斷的技巧 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.230.126.34 ※ 編輯: nypgand1 來自: 61.230.126.34 (08/21 13:53)
christianSK:bound wait應該是說至多等待n-1次就可以進入 08/21 15:12
christianSK:滿足這個條件自然就不會餓死 我想應該是有的 08/21 15:13
chris750630:其實吃飯時想想 我解錯了 XDD 08/21 15:24
nypgand1:那如果是先看出來了starvation要推到那三個條件呢? 08/21 15:28