2010年11月28日 星期日

Operating Systems's 5th assignment


1.  
n !  { n * ( n – 1 ) * ( n – 2 ) * … }
2.
主要為了解決競爭情況的發生,讓同一時間內只讓一個行程去存取一個變數( Lock up )。讓行程間不會互相影響執行結果。
3.  
號誌是來實現行程同步的工具。號誌的值像個計數器,記錄多少行程可以進入臨界區。
signal( )將號誌的值加一。
wait( )則先測試號誌的值,如果號誌的值大於零,將值減一,否則就繼續等待到值大於零再執行。
4.  
不使用阻隔式的號誌在有行程進入臨界區時,其它想要進入臨界區的行程會在入口區不斷的執行迴圈來等待,造成忙碌等待。阻隔式的號誌不再忙碌等待,而是讓行程將自己阻隔起來,wait( )會將呼叫的行程放入一個阻隔式號誌新增的串列,專門用來記錄在該號誌等待的行程。等到signal( )被呼叫時,再從串列中叫醒一個被阻隔的行程繼續執行。新架構因此大大縮短了忙碌等待的時間。