這一篇部落格主要學習程序同步的知識。程序同步的主要任務是對多個相關程序在執行次序上進行協調,以使併發執行的諸程序之間能有效地共享資源和相互合作,從而使程式的執行具有可再現性。
在多道程式環境下,當程式併發執行時,由於資源共享和程序合作,使同處於乙個系統中的諸程序之間可能存在著以下兩種形式的制約關係:
間接相互制約關係。同處於乙個系統中的程序,通常都共享著某種系統資源,如共享 cpu、共享 i/o 裝置等。這種資源共享導致了間接相互制約。例如,有兩個程序 a和 b,如果在 a 程序提出列印請求時,系統已將惟一的一台印表機分配給了程序 b,則此時程序 a 只能阻塞;一旦程序 b 將印表機釋放,則 a 程序才能由阻塞改為就緒狀態。
直接相互制約關係。這種制約主要源於程序間的合作。例如,有一輸入程序 a 通過單緩衝向程序 b 提供資料。當該緩衝空時,計算程序因不能獲得所需資料而阻塞,而當程序 a 把資料輸入緩衝區後,便將程序 b 喚醒;反之,當緩衝區已滿時,程序 a 因不能再向緩衝區投放資料而阻塞,當程序 b 將緩衝區資料取走後便可喚醒 a。
互斥:互斥是併發執行的多個程序由於競爭同一資源而產生的相互排斥的關係。
同步:同步是程序間共同完成一項任務時直接發生相互作用關係。同步程序間具有合作關係,在執行時間上必須按一定的順序協調進行。
一次僅允許乙個程序使用的共享資源。如印表機、磁帶機、**等。
不論是硬體臨界資源,還是軟體臨界資源,多個程序必須互斥地對它進行訪問。人們把在每個程序中訪問臨界資源的那段**稱為臨界區(critical section)。
為了保證諸程序互斥地進入自己的臨界區,便可實現諸程序對臨界資源的互斥訪問。為此每個程序在進入臨界區之前,應先對欲訪問的臨界資源進行檢查,看它是否正被訪問。如果此刻該臨界資源未被訪問,程序便可進入臨界區對該資源進行訪問,並設定它正被訪問的標誌;如果此刻該臨界資源正被某程序訪問,則本程序不能進入臨界區。如果此刻該臨界資源正被某程序訪問,則本程序不能進入臨界區。相應地,在臨界區後面也要加上一段稱為退出區(exit section)的**,用於將臨界區正被訪問的標誌恢復為未被訪問的標誌。程序中除上述進入區、臨界區及退出區之外的其它部分的**,在這裡都稱為剩餘區。
這樣,可把乙個訪問臨界資源的迴圈程序描述如下:
為實現程序互斥地進入自已的臨界區。通常會在系統中設定專門的同步機構來協調各程序間的執行。所有同步機制都應遵循下述四條準則:
空閒讓進。當無程序處於臨界區時,表明臨界資源處於空閒狀態,應允許乙個請求進入臨界區的程序立即進入自己的臨界區,以有效地利用臨界資源。
忙則等待。當已有程序進入臨界區時,表明臨界資源正在被訪問,因而其它試圖進入臨界區的程序必須等待,以保證對臨界資源的互斥訪問。
有限等待。對要求訪問臨界資源的程序,應保證在有限時間內能進入自己的臨界區,以免陷入「死等」狀態。
讓權等待。當程序不能進入自己的臨界區時,應立即釋放處理機,以免程序陷入「忙等」狀態。
作業系統 程序同步
臨界資源 critical resouce 臨界區 critical section 硬體同步機制 訊號量機制 訊號量的應用 管程3使用多道批處理系統不僅能有效的改善資源的利用率,還可以顯著地提高系統的吞吐量,但同時會使系統變得更加複雜,會使程式的執行結果存在不確定性。所以必須引入程序同步機制從而保...
作業系統 程序同步
引入程序 提高了資源的利用率和系統的吞吐量 程序的非同步性 會給系統造成混亂 程序同步基本概念 1,兩種形式的制約關係 a 間接相互制約 ab兩程序爭用一台印表機 b 直接相互制約 a程序放資料 緩衝區 b程序從緩衝區取資料 2,臨界資源 硬體臨界資源 軟體臨界資源 印表機,磁帶機,緩衝區。3,臨界...
作業系統 程序同步
ipc.件 include include include include include include include define bufsz 256 建立或獲取 ipc 的一組函式的原型說明 int get ipc id char proc file,key t key char set s...