• 2

[考題]求救...研究所(作業系統)考題..請各位幫幫忙

小弟這個問題...已經PO在奇摩知識快1個月了...
都沒人回應..希望站上有高手可以幫忙...

題目如下: Find a counterexample that demonstrates that this solution is incorrect
(請找出下列程式中的錯誤)

Concider the following program:
1 bollean block[2];
2 in turn;
3 void P(int id){
4 while(true){
5 blocked[id]=true;
6 while(turn!=id){
7 while(Blocked[1-id])
8 ;
9 turn=id;
10 }
11 /* critical section*/
12 blocked[id]=false;
13 /* remainder*/
14 }
15 }
16 void manin(){
17 blocked[0]false;
18 blocked[1]false;
19 turn=0;
20 parbegin(P(0),P(1));
21 }

這邊沒點數可給...只能先給各位高手說聲謝謝!!
2006-04-20 8:23 發佈
給你一個建議啦
1. 為何你不要把程式打好, compile 一下, compiler 會告訴你錯在那
2. 如果看不懂 ...... 你不應該考這個系吧, 考上了, 你會很痛苦的
我不是本科系的,不過有一點點看法,如果有錯請見諒囉.

1.第20行是表示兩個行程開始run吧??如果是的話.
2. 第4行的while( true )是故意讓他一直跑嗎?如果是的話.
3.若行程P(1)先跑,且跑到第7行測試完畢,準備要進入9行時,產生行程切換.換P(0)跑.
4.P(0)跑到第6行時由於turn此時還是0,故不會進入迴圈,跑進了critical session,若又發生了行程切換.由p(1)接著跑.
5. P(1)由第9行開始run,也跟著進入了,critical session了.

不知道這樣看法對不對???
說的太狠了!不過我到比較想知道這考題是哪一年哪一所出的?!
建議樓主--很多時候答案就在您伸手可及的地方!
GeorgeS wrote:
給你一個建議啦1. ...(恕刪)
bollean block[2]; //error:bollean not defined
in turn; // error:in not defined maybe 'int'
void P(int id)
{
while(true) // forever loop ?
{
blocked[id]=true;
while(turn!=id)
{
while(Blocked[1-id]) ;
turn=id;
}
/* critical section*/
blocked[id]=false;
/* remainder*/
}
}

void manin() //?? main?
{
blocked[0]false; //wherw is '='
blocked[1]false; //wherw is '='
turn=0;
parbegin(P(0),P(1)); //?? parbegin not defined
}


m01是很有人情味的地方,我用人工compiler的...
不過....如果這是題目,那出題的人很可能有問題@@
說真的,跟你說解答後,對你考研究所不太會有幫助,
GeorgeS兄說的沒錯,自己run一下不是比較快?
上了研究所之後才是真正痛苦的開始(當然,混過去的也有),

我想現在比較重要的是先把自己的能力再提昇一點才是
花了一個月時間去po文章
不知道你有沒自己動手下去做看看
白白浪費了時間

至少我沒看見你寫出你自己覺得錯的地方
只是純粹的把題目po上來而已
你自己卻在那邊等答案 (想再等一個月嗎?)
那我覺得這樣子你應該很難考的上
討論作業系統,一般都不會用真正的code吧.
而只是要討論觀念而以.
所以拿去compile當然不會過囉.
厲害,這裡也發文,PCDVD也發文,請問樓主還有在哪個網站也發這個文啊?
一心求解的求知欲,真是另我佩服,不過個人認為問老師比較快。
這是...

程式的片段嗎?

應該很多錯誤吧…

連邏輯都怪怪的....((個人覺得啦..))
★這傢洗艾台玩啦!☆
  • 2
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?