作業系統概念第六章 同步

2021-10-01 10:30:47 字數 830 閱讀 9447

多個程序併發訪問和操作同一資料並且執行結果與訪問順序有關,稱為競爭條件。為防止出現競爭條件,需確保一次只有乙個程序可以運算元據,為此要求這些程序按照一定方式來進行同步。

同步的解決方案1-互斥鎖

當乙個程序試圖獲取不可用的鎖時,它會阻塞,知道鎖被釋放。當有乙個程序在臨界區時,任何其他程序在進入臨界區時必須連續迴圈地試圖去獲取鎖(忙等待),這種型別的互斥鎖也被稱為自旋鎖,因為程序不停地旋轉以等待鎖變得可用。

忙等待浪費cpu週期,但也有優點,當程序在等待鎖時,沒有上下文切換。因此當使用鎖的時間較短時,自旋鎖還是有用的,自旋鎖通常用於多處理器系統,乙個執行緒可以在乙個處理器上旋轉,而其他執行緒在其他處理器上執行臨界區。

同步的解決方案2-訊號量

每個訊號量都有乙個整數value和乙個程序鍊錶list,當乙個程序必須等待訊號量時,就被新增到程序鍊錶。

訊號量操作應原子執行,即對同一訊號量,沒有兩個程序可以同時執行wait()和signal()操作。

優先順序反**

高優先順序程序等待低優先順序程序占用的資源,但等待的過程中該資源可能被中等優先順序的程序搶占,即優先順序反轉。

解決優先順序反轉問題的方法是使用優先順序繼承協議。即低優先順序程序繼承高優先順序程序的優先順序,確保占用的資源不會被中等優先順序程序搶占,在低優先順序程序使用完該程序後便放棄繼承來的優先順序同時釋放資源,此時資源被高優先順序程序正常訪問占用。

linux同步的解決方案如下:

作業系統 第六章 同步

協作程序能與系統內的其他執行程序相互影響。協作程序或能直接共享邏輯位址空間 即 和資料 或能通過檔案或訊息來共享資料,然而共享資料的併發訪問可能導致資料的不一致 共享資料併發 並行訪問 例 有界緩衝 防止競爭條件方法 併發程序同步或互斥 互斥若能保證諸程序互斥進入關聯的臨界區,可實現對臨界資源的互斥...

作業系統 第六章 程序同步

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

作業系統第六章 檔案管理

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