close

software-based

two process (load, store)

不能被interrupted

share two variables

 

int turn;    //表示哪個process進入critical section

Boolean flag[2];    //表示是否有process進入critical section

這個演算法正確的條件:

Mutual exclusion is preserved

Progress requirement is satisfied

Bounded-waiting requirement is met

 

Pi enters its critical section only if either flag[j]==false or turn==i

do{

      flag[i]=true;    //自己想進入

      turn = j;    //將優先權先給對方

      while (flag[j] && turn==j) ;

      //當對方想進入且優先權在對方手上時,則自己在while中空轉,而一旦對方不想進入或是對方把優先權讓回來時,自己能立刻進入

              <critical section>

      flag[i]=flase;    //表示自己剛離開,沒有意願再進入

              <remainder section>

  }while(true)

 

當對方進入一次又想再進入,會把優先權讓給自己

 

Priority: inheritance protocol

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 cc08310112tw 的頭像
    cc08310112tw

    墨墨喵喵喵

    cc08310112tw 發表在 痞客邦 留言(3) 人氣()