作業系統 第六章 同步

2022-04-25 04:01:07 字數 1550 閱讀 3278

協作程序能與系統內的其他執行程序相互影響。協作程序或能直接共享邏輯位址空間(即**和資料),或能通過檔案或訊息來共享資料,然而共享資料的併發訪問可能導致資料的不一致

共享資料併發/並行訪問:

例:有界緩衝

防止競爭條件方法:併發程序同步或互斥

互斥若能保證諸程序互斥進入關聯的臨界區,可實現對臨界資源的互斥訪問

臨界區問題:設計乙個協議以便協作程序

進入區:在進入臨界區前,每個程序應請求許可,實現這一請求**區段為進入區

退出區:臨界區之後可以有退出區

剩餘區:其他**為剩餘區

處理作業系統臨界區問題的兩種常用方法:

臨界區使用準則

有空讓進(progress)

有限等待(bounded waiting)

訪問臨界區

自旋鎖:忙等待,當有乙個程序在臨界區中,任何其他程序在進入臨界區時必須連續迴圈地呼叫acquire(),因為程序不停地旋轉,以等待鎖變得可用

訊號量-軟體解決方案

二值訊號量

當程序使用資源時,要對訊號量執行wait操作;當程序釋放資源時,要對訊號量執行signal操作;當訊號量為0時,所有資源都在使用中,需要使用資源的程序將會阻塞,直到計數器大於0

整型訊號量

整型訊號量的問題:忙等(解決方案,修改訊號量操作(記錄型訊號量)):

理解wait()(p操作)和signal()(v操作)這兩個原子操作

注意訊號量初值

訊號量使用中注意的問題

例:概念

互斥分析

消費者(多個):

劃分臨界區

增加互斥機制

同步分析

生產者與消費者

同步訊號量定義概念

問題詳述

寫者:方案一:

方案二:

第二讀者-作者問題(寫者優先):一旦作者就緒,那麼作者會盡快可能地執行;如果有乙個作者等待訪問物件,那麼不會有新的讀者可以開始讀

有些系統將讀者-寫者問題及其解答進行了抽象,從而提供了讀寫鎖

概念解決方法

死鎖解決措施

僅當乙個哲學家左右兩邊的筷子都可用時,才允許他拿起筷子(筷子要一起拿)

給所有哲學家編號,奇數號的哲學家必須首先拿左邊的筷子,偶數號的哲學家則反之(效率低,並不知道程序會申請什麼資源)

問題

解決方法

訊號量是分布式;管程是集中式

同步:條件變數問題:

存在可能:

管程內程序p喚醒q後

condition x

x.wait()

x.signal()

作業系統概念第六章 同步

多個程序併發訪問和操作同一資料並且執行結果與訪問順序有關,稱為競爭條件。為防止出現競爭條件,需確保一次只有乙個程序可以運算元據,為此要求這些程序按照一定方式來進行同步。同步的解決方案1 互斥鎖 當乙個程序試圖獲取不可用的鎖時,它會阻塞,知道鎖被釋放。當有乙個程序在臨界區時,任何其他程序在進入臨界區時...

作業系統 第六章 程序同步

實驗 經典同步問題之讀者寫者問題 關於前面討論過的共享記憶體問題,為了讓它能夠儲存buffersize個元素,我們修改其 如下。生產者 while true 消費者 while true 乍一看,消費者和生產者 都正確,但是當這兩段 併發執行的時候就有問題了。併發時,兩個程序會同時操作counter...

作業系統第六章 檔案管理

檔案在檔案系統中是乙個基本的管理單元,這個管理單元必然有一組屬性 資料形式 訪問控制屬性 組織形式和處理方法 作業系統中的各類檔案 管理檔案的軟體,以及管理檔案所涉及到的資料結構等資訊的集合 物件及其屬性 對物件操縱和管理的軟體集合 檔案系統的介面 close也會出錯,乙個是資料還沒有寫進乙個是檔案...