作業系統學習筆記之程序同步
- 一、競争條件和臨界區
- 二、信号量
- 三、生産者消費者問題
- 四、讀寫者問題
- 五、哲學家問題
- 六、管程
一、競争條件和臨界區
- 資料不一緻性
多個程序并發或并行執行
每個程序可以在任何時候被中斷
僅僅程序的部分代碼片段可連續執行
共享資料并發/并行通路:資料不一緻性
又稱不可在現性:同一程序在同一批資料上多次運作的結果不一樣
解決方法:同步(互斥)機制
-
競争條件
多個程序并發通路同意共享資料的情況(共享資料的最終結果取決于最後操作的程序)
防止競争條件方法:并發程序同步或互斥
-
同步和互斥
同步:協調程序的執行次序,保證資料一緻性
互斥:程序排他性地運作某段代碼,任何時候隻有一個程序能夠運作
-
臨界資源
一次隻允許一個程序使用的資源
又稱互斥資源、獨占資源或共享變量
-
臨界區
涉及臨界資源的代碼片段,也就是說臨界區就是代碼片段
每個程序有一個或多個臨界區
臨界區的設定方法由程式員确定
- 臨界區使用準則
互斥:
如果有程序在某個臨界區執行,其他程序将被排斥在該臨界區外
有相同臨界資源的臨界區都需互斥
無相同臨界資源的臨界區不需互斥
有空讓進
有限等待