作業系統 程序間通訊

2021-05-24 12:02:31 字數 679 閱讀 8208

程序間通訊涉及到3個問題:

1.乙個程序如何把資訊傳遞給另乙個程序;

2.確保兩個或多個程序之間不會在關鍵活動中出現交叉;

3.程序間執行的順序對執行結果的影響。

注意:確保程序對臨界區的「互斥」訪問。

忙等待的互斥:

1.遮蔽中斷:當乙個程序進入臨界區後立即遮蔽所有中斷,(時鐘中斷也被遮蔽)。這樣cpu就不會進行程序的切換,此程序就不用擔心 其它程序的介入。直達訪問完資源後離開時再開啟中斷。   把遮蔽中斷的權利交給使用者程式是不明智的,設想當程序遮蔽中斷後不再開啟中斷會是什麼情況。

2.鎖變數:設定乙個共享變數,其初始值為0。當乙個程序想進入臨界區時先檢測這個變數,若為0,則將其置為1,並進入臨界區,離開時將其值置為0。   但也有問題,當乙個程序讀出它的值為0,而恰好在他將值變為1之前,另乙個程序被排程。並進入臨界區。當第乙個程序再被排程時,他也將鎖變數置為1,並進入臨界區,此時有兩個程序進去臨界區。

3.嚴格輪換法:設定乙個變數turn.當值是0時,程序a進入,當值為1時,程序b進去,當乙個程序已經處於臨界區時,另乙個程序就一直等待,直到值變為他需要的值為止。    但這種方式嚴重浪費了cpu時間,通常應該避免。

4.peterson解法:

5.tsl指令:硬體支援的解決方案。該指令結束前,其他任何處理器都不能訪問記憶體,特別是針對多核處理器。

作業系統 程序間通訊

include include include include include include ifndef semun h 條件編譯,即若semun在標頭檔案中沒有被定義,就進行下面的編譯 define semun h union semun endif static int set semval...

作業系統 程序間通訊

程序間通訊方式總結 優缺點 linus下的程序通訊手段基本上是從unix平台上的程序通訊手段繼承而來的。1 無名管道通訊 半雙工通訊,只能在具有親緣關係的程序間使用 1 管道 2 高階管道通訊 將另乙個程式當做乙個新的程序在當前程式程序中啟動,則它算是當前程式的子 程序 3 有名管道通訊 半雙工通訊...

現代作業系統 程序間通訊

如何避免競爭條件 1.任何兩個程序不能同時處於其臨界區 2.不應對cpu的速度和數量做任何假設 3.臨界區外執行的程序不得阻塞其他程序 4.不得使程序無限期等待進入臨界區 生產者 消費者問題 兩個程序共享乙個公共的固定大小的緩衝區,其中乙個是生產者,將資訊放入緩衝區,另乙個是消費者,從緩衝區中取出資...