1..一個排程法決定了行程的執行順序,假設系統中有n 個不可搶先的行程需要排程,可能產生哪幾種不同的執行順序?請用n 寫出一個公式。
ANS:n! = n * (n-1) * (n-2) * … * 2 * 1 2.行程之間為何需要同步?
ANS: 為了避免掉race condition ,而方法就是鎖定critical section。
3.說明號誌的作用為何?並分別說明號誌中 wait()與 signal() 的作用?
ANS:號誌的作用用來解決比較複雜的同步問題。因為號誌的值只能用wait() and signal()來存取,而signal()會將號誌的值加1,wait() 則會先測試號誌的值,如果號誌的值大於零, 會將該值減 1,否則 wait() 會等待到該值大於零再繼 續執行。目的是達到行程之間的同步。
4. 試說明為什麼阻隔式的號誌實作能大幅地縮短忙碌等待的時間?
ANS:因為他直接讓行程將自己阻隔起來,而且新的號誌另外增加了一個串列,記錄正在該號誌等待的行程。意思就是去修改過signal() and wait(),且使用先進先出的方法來實作串列號誌,讓其部會進入無限阻隔之中,且必須保證signal() and wait()不會中斷。
沒有留言:
張貼留言