作業系統概念(第七版) 第六章 程序同步

2021-09-14 07:22:23 字數 1345 閱讀 6127

目錄

臨界區問題

peterson演算法

硬體同步

訊號量(semaphore)

計數訊號量 和 二進位制訊號量 173p

忙等待 和 自旋鎖 174p

死鎖與飢餓

有限快取問題—生產者消費問題 177p

讀者-寫者問題

管程

協作程序是可以與系統中其它執行的程序之間互相影響的程序。 如果乙個程序是協作的,那麼該程序可以直接共享邏輯位址空間 ( 即**和資料 ), 或者只通過檔案或訊息來共享資料。

臨界區問題需要注意的有:

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

具有等待佇列的訊號量的實現可能會導致這樣的情況:

與死鎖相關的另乙個問題是無限期阻塞(indefinite blocking)或飢餓(starvation):即程序在訊號量內無限期等待。

舉個例子來理解死鎖與飢餓的區別:

死鎖(deadlock)

例如:1、桌子上有慢慢一桌子的美食,但是只有一雙筷子。 

2、甲拿了一根,然後在找另一根。 

3、乙拿了一根,然後也在找另一根。 

4、因為他們都掌握了對方必需的資源,導致最後他們倆誰都吃不到美食。

飢餓(starvation)

例如:1、小明要告訴媽媽明天開家長會。 

2、小明媽媽因為工作太忙,在公司加班,沒有回家。 

3、於是第二天,小明的媽媽就錯過了家長會。(「餓死」) 

4、其實小明的媽媽沒有出現「死鎖」。只是小明的優先順序過低,不如工作重要。

作業系統 第六章 程序同步

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

作業系統原理第六章(程序排程)

一 排程 分派結構 排程 依照完全確定的策略將一批程序進行排序 分派 從就緒佇列中移出乙個程序並給它提供處理機的使用權 排程程式負責將乙個程序插入到就緒佇列中,並按一定原則保持佇列結構 分派程式將程序下從就緒佇列中移出並建立該程序執行的機器狀態。二 程序排程的功能和排程準則 1.程序排程的功能 記錄...

第三章 程序(作業系統概念第七版)

一.基本概念 為什麼要建立子程序 總結來講,就是時候對於同一程序而言,這些函式 執行緒都是存在於同乙個位址空間下的,而且在執行時,大多只對與其相關的一些資料進行處理,對於無關的就要保護,所以建立子程序。父程序來掌握子程序的啟動 執行和退出從而保護父程序中的無關資料。程序的五個狀態 五個狀態 new ...