OS筆記 14 程序同步篇 基本概念

2021-10-23 13:25:16 字數 1572 閱讀 8196

程序同步要解決什麼問題?

在os中引入程序後,如果不進行妥善的管理,必然會因為這些程序對系統資源的無序爭奪而給系統造成混亂。致使每次處理的結果存在不確定性,即程式執行結果的不可再現性。為保證多個程序能有條不紊地執行,在多道程式系統中,必須引入程序同步機制。

程序同步機制的主要任務,是對多個相關程序在執行次序上的協調,使併發執行的諸程序之間能按照一定的規則(或時序)共享系統資源,並能很好地合作,從而使程式的執行具有可再現性。

1. 間接相互制約關係(互斥關係)

是指由於共享系統資源,如cpu、i/o裝置等,致使這些併發執行的程序形成的相互制約關係。

2. 直接相互制約關係(同步關係)

乙個程式為了完成某任務而建立了多個程序,這些程序需要相互合作。直接制約關係就是源於它們的相互合作,比如需要共享緩衝區等。

(1)定義:一次僅允許乙個程序使用的資源稱為臨界資源。

(2)包括:慢速裝置(印表機、磁帶機等)、共享的變數、資料結構、緩衝區等。

(3)結論:諸程序間應採用互斥方式,實現對這些資源的共享。

eg 1.多道系統中,像這種兩個或多個程序併發地讀寫乙個共享資料, 共享資料的值取決於最後訪問它的程序的執行結果,這種情況稱為 競態條件(race condition),要保證對臨界資源的互斥使用。

eg 2.生產者——消費者問題,是乙個經典的程序同步問題。

所有的生產者和消費者程序都是以非同步方式執行的,但它們之間必須保持同步:既不允許消費者程序到乙個空緩衝區去取產品,也不允許生產者程序向乙個已裝滿產品的緩衝區投放產品。

(1)定義:每個程序中訪問臨界資源的那段** 稱為臨界區(critical section)

(2)可以把訪問臨界資源的迴圈程序描述如下:

進入區:用於對欲訪問的臨界資源進行檢查,看它是否正被訪問。是的話,則本程序不能進入臨界區,否的話,就可以訪問,並要設定訪問標誌。

退出區:用於將臨界區正被訪問的標誌恢復為未訪問的標誌。

剩餘區:程序中除了進入區、臨界區、退出區以外的**都稱為剩餘區。

1 和 2 就是很簡單的互斥原則;

1. 空閒讓進

當沒有程序處於臨界區時,應允許乙個請求進入臨界區的程序立即進入。

2. 忙則等待

當已有程序進入臨界區時,其它試圖進入的程序必須等待。

3. 有限等待

應保證每乙個程序在有限時間內能進入自己的臨界區,避免陷入「死等」狀態。(可以通過限制其它程序進入臨界區的次數來實現)

4. 讓權等待

當程序不能進入自己的臨界區時,應立即釋放處理機。(也就是此時程序沒啥工作可做了,只能等到臨界區允許進入才能繼續下去,所以佔著cpu也沒啥意義了,讓出cpu的使用權,繼續等待資源,就這意思)

程序同步的基本概念 臨界資源 同步和互斥

在多道程式環境下,程序是併發執行的,不同程序之間存在著不同的相互制約關係。為了協調程序之間的相互制約關係,引入了程序同步的概念。雖然多個程序可以共享系統中的各種資源,但其中許多資源一次只能為乙個程序所使用,我們把一次僅允許乙個程序使用的資源稱為臨界資源。許多物理裝置都屬於臨界資源,如印表機等。此外,...

OS筆記 16 程序同步篇 訊號量機制

1.訊號量的定義 除初始化外,僅能由同步原語對其進行操作的整型變數。2.訊號量的分類 整型訊號量 記錄型訊號量 and型訊號量 訊號量集 按照用途分類,又可分為兩大類 二元訊號量 用作互斥變數,初值為1 一般訊號量 用於一般同步,初值為共享資源的初始數量 1.整型訊號量的定義 除初始化外,僅能通過兩...

程序學習之基本概念(筆記)

順序程式特徵 1.順序性 2.封閉性 執行環境封閉性 3.確定性 4.可再現性 併發程式特徵 1.共享性 2.併發性 3.隨機性 由於程序要求共享資源,而且有些資源需要互斥使用,因此各程序間競爭使用這些資源,程序這種關係為程序的互斥。系統中某些資源一次只允許乙個程序使用,稱這樣的資源為臨界資源或互斥...