iT邦幫忙

2024 iThome 鐵人賽

DAY 21
0

上一篇我們提到了 race condition,解決 race condition 的兩大策略:

I. 禁用中斷(Disable Interrupt)

這種方法主要用於實時系統中,當一個執行緒正在執行關鍵操作時,暫時禁用中斷,以防止其他執行緒或中斷處理程序干擾該操作。這樣可以確保在執行關鍵區段時不會有其他執行緒進入,從而避免競爭條件的發生。然而,這種方法可能會導致系統響應變慢,因為它會阻止其他重要的中斷。

II. 臨界區域設計(Critical Section Design)

這種方法涉及到將共享資源的訪問限制在一個稱為臨界區域的範圍內。只有一個執行緒可以在任何時候進入這個區域,通常使用鎖(如互斥鎖)來實現。這樣可以確保對共享資源的訪問是互斥的,從而防止競爭條件的發生。臨界區域設計的好處是能夠保持系統的響應性,但需要小心設計,以避免死鎖和其他同步問題。

名詞定義

  • 臨界區域(Critical Section):若一個系統含有 n 個行程,其中每一行程含有一段叫做臨界區域的程式碼。當一個行程在其臨界區間內執行,不允許其它的行程在它們的臨界區間內執行。也就是,沒有兩個行程同時在它們的臨界區間執行。
  • 臨界區域問題:設計一套協定,使得各行程能夠互相合作。每一個行程必須要求與允許才能進入其臨界區間。實現此要求的程式碼區段叫做入口區段(Entry Section)。臨界區間之後可能緊跟著出口區段(Exit Section)。剩餘的程式碼則是剩餘區段(Remainder Section)。行程的結構如圖6.1所示
    https://ithelp.ithome.com.tw/upload/images/20241005/20168766Mrl1C4V60W.png

解決臨界區域問題必須滿足下列三項要求:(周志遠老師比喻為上廁所問題😂)

  1. 互斥(mutual exclusion):最多一 process 在 critical section。
  2. 進行(progress):critical section 裡面如果是空的,要執行的人一定可以進去。
  3. 限制性的等待(bounded waiting):從申請到進入 critical section 的時間是有限的。

上一篇
ch6-生產者—消費者問題 race condition
下一篇
ch6-Peterson's Solution for Two Processes
系列文
十年後重讀作業系統恐龍本30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言