作業系統同步和互斥

  作業系統中的程序之間的關係只有兩種:同步與互斥。下面由小編為大家整理了作業系統的同步和互斥的相關知識,希望對大家有幫助!

  

  1.程序同步

  程序同步也是程序之間直接的制約關係,是為完成某種任務而建立的兩個或多個執行緒,這個執行緒需要在某些位置上協調他們的工作次序而等待、傳遞資訊所產生的制約關係。程序間的直接制約關係來源於他們之間的合作。

  比如說程序A需要從緩衝區讀取程序B產生的資訊,當緩衝區為空時,程序B因為讀取不到資訊而被阻塞。而當程序A產生資訊放入緩衝區時,程序B才會被喚醒。

  2.程序互斥

  程序互斥是程序之間的間接制約關係。當一個程序進入臨界區使用臨界資源時,另一個程序必須等待。只有當使用臨界資源的程序退出臨界區後,這個程序才會解除阻塞狀態。

  比如程序B需要訪問印表機,但此時程序A佔有了印表機,程序B會被阻塞,直到程序A釋放了印表機資源,程序B才可以繼續執行。

  擴充套件:臨界資源

  在作業系統中,程序是佔有資源的最小單位***執行緒可以訪問其所在程序內的所有資源,但執行緒本身並不佔有資源或僅僅佔有一點必須資源***。但對於某些資源來說,其在同一時間只能被一個程序所佔用。這些一次只能被一個程序所佔用的資源就是所謂的臨界資源。典型的臨界資源比如物理上的印表機,或是存在硬碟或記憶體中被多個程序所共享的一些變數和資料等***如果這類資源不被看成臨界資源加以保護,那麼很有可能造成丟資料的問題***。

  對於臨界資源的訪問,必須是互訴進行。也就是當臨界資源被佔用時,另一個申請臨界資源的程序會被阻塞,直到其所申請的臨界資源被釋放。而程序內訪問臨界資源的程式碼被成為臨界區。

  對於臨界區的訪問過程分為四個部分:

  1.進入區:檢視臨界區是否可訪問,如果可以訪問,則轉到步驟二,否則程序會被阻塞

  2.臨界區:在臨界區做操作

  3.退出區:清除臨界區被佔用的標誌

  4.剩餘區:程序與臨界區不相關部分的程式碼

  臨界資源使用規則:忙則等待、優先等待、空閒讓進、讓權等待***在臨界區的程序,不能在臨界區內長時間處於事件等待,必須在一定時間退出臨界區***。

  多個程序常常需要共同修改某些共享變數、表格、檔案資料庫等,協作完成一些功能。共享協作帶來了程序的同步和互斥、死鎖、飢餓等問題。