第四章 進程同步與互斥
1.進程間的相互作用
識記
與時間有關的錯誤
進程同步互斥舉例
2.進程互斥
領會
臨界區
使用臨界資源的程序
臨界區的使用規則
有空讓進
無空等待
多中擇一
有限等待
讓權等待
3.進程同步
領會
典型的進程同步例子
進程A從硬盤上讀記錄,每讀出一個記錄就存入緩衝器。進程B從緩衝器中取出記錄加工,直至所有的記錄都處理結束
解決進程同步問題遇到的問題
進程A的執行速度超過進程B的執行速度,進程A可能在進程B還沒有取走一個記錄前,又把新讀出的一個記錄送人緩衝器,於是後一個記錄把上一個尚未取走的記錄覆蓋了
4.信號量機制
綜合應用
信號量和P、V操作的物理含義
信號量表示某類可用的臨界資源
每次P操作意味着請求的進程分配到一個資源;每次V操作,意味着進程釋放了一個資源
用P、V操作解決進程間同步互斥問題
進程A
P(S);
臨界區操作;
V(S);
進程B
P(S);
臨界區操作;
V(S);
5.經典的同步互斥問題
生產者——消費者問題
P
while(true){
P(empty);
生產一個產品;
送產品到緩衝區;
V(full);
};
Q
while(true){
P(full);
從緩衝區取產品;
V(empty);
消費產品;
};
讀者——寫者問題
讀者進程
while(true){
P(mutex);
read_count = read_count + 1;
if(read_count = 1) P(write);
V(mutex);
讀文件;
P(mutex);
read_count = read_count - 1;
if(read_count = 0) V(write);
V(mutex);
}
寫者進程
while(true){
P(write);
寫文件;
V(write);
}
6.管程機制
識記
管程的概念
管程是一個由過程、變量及數據結構等組成的一個集合,它們組成一個特殊的模塊或軟件包
管程的組成
管程名稱
共享數據的說明
對數據進行操作的一組過程
對共享變量賦初值的語句
7.進程通信
領會
共享內存
在相互通信的進程之間設有一個公共內存區,一組進程向該公共內存中寫,另一組進程從公共區中讀
消息隊列
進程間的數據交換,是以格式化的消息爲單位的。程序員直接利用操作系統提供的一組通信命令,實現大量數據的傳遞,通信過程對用戶是透明的
信箱機制
以發送信件以及接受回答信件爲進程間通信的基本方式
管道
連接兩個進程之間的一個打開的共享文件,專用於進程之間進行數據通信。發送進程可以源源不斷地從管道一端寫入數據流,接收進程在需要時可以從管道的另一端讀出數據,寫入和讀出的信息長度都是可變的
第四章 進程同步與互斥
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.