作業系統學習 併發和互斥

2021-06-21 02:12:04 字數 1441 閱讀 8426

一、併發基礎

併發並不是真的並行執行,但是其表現為並行執行,可以提高效率

併發的基本要求是互斥。

併發出現的情況:①多道程式執行

②多處理器技術

③分布式系統

二、併發原理

單處理器為替換,多處理器為重疊執行和替換

三、併發要考慮的問題

(1)程序資源競爭

例如,多個程序要同時訪問同乙個i/o時,發生競爭,作業系統作為管理者要進行協調。要考慮的問題

①互斥。保證在乙個時間只有乙個程序訪問臨界資源

②死鎖。程序a和b同時需要資源1和2,而a擁有1,b擁有2,a和b永遠相互等待,不釋放各自的資源。發生死鎖。

③餓死。程序a,b,c同時需要資源1,而資源1的控制權在a和b間傳遞,c無法獲得控制權,餓死。

(2)程序資源共享

因為有資源的訪問也會發生死鎖和餓死的情況,但主要是保證資料的一致性和完整性。只有寫過程需要保證互斥。

(3)程序間的通訊

傳送訊息和接受訊息,也會發生死鎖和餓死

死鎖:程序a和b在互相等待對方的訊息,發生死鎖

餓死:程序a和b始終處於活躍狀態,要求和a通訊的c被餓死。

四、互斥機制要解決的問題

①必須強制進行互斥。訪問臨界區的程序一次只能有乙個

②乙個處於非臨界區的程序停止不影響其他程序

③不允許乙個訪問臨界區的程序被無限的拒絕

④沒有程序在臨界區時,任何想要進入的程序都能進入

⑤對相關程序的數目和處理器的速度沒有要求

⑥乙個程序留駐在臨界區的時間是有限的

五、解決方法

(1)軟體方法

(2)硬體方法

專門的指令

(3)訊號量

(4)管程

六、利用訊號量解決具體相關問題

(1)生產者和消費者的問題

(2)程序間通訊的問題

程序互動的兩個基本要求:同步和通訊,為了互斥,需要同步;為了合作,需要通訊。

傳送原語:send(destination,message);

接受原語:receive(source,message);

①同步:傳送方和接收方均有兩種方式:阻塞和不阻塞。因此有四種組合

②定址:            直接定址:傳送原語的目的為程序標識,而接收方有兩種處理方式,一是顯式的指定傳送方即事先知道希望得到哪個程序的訊息,二是隱式,如列印程序

間接定址:信箱(佇列)和相應的程序關聯,可以靜態關聯也可以動態關聯。

③訊息格式:和具體的訊息機制和作業系統有關

④排隊原則:通常是先進先出佇列和緊急事件的優先順序相結合。

(3)讀/寫問題

要求:①任意多的讀程序可以同時執行。

②一次只有乙個寫程序執行。

③有乙個寫程序執行時,禁止任何讀程序。

兩種處理策略:

①讀程序具有優先權

②寫程序具有優先權



作業系統學習

看了幾天的資料,今天終於有時間把測試環境搭建起來。模擬機bochs nasm ultraiso 模擬機bochs的設定不難,在網上搜了些資料和參考了bochs的說明檔案,基本上就可以組建並執行起來。在網上下了個dos的映象,執行bochs從a盤啟動,之後把硬碟分割槽格式化,乙個最基礎的測試環境就完成...

作業系統學習

1 處理器硬體故障中斷事件 由處理器,記憶體儲器,匯流排等故障引起 程式性中斷事件 2 處理器執行機器指令引起 1.1 除數為零,運算元溢位等算術異常 1.3 終止程序指令 終止程序 3 自願性中斷事件 1.1 處理器執行陷入指令請求os服務引起 1.2 請求分配外設,請求io等 1.3 處理流程是...

作業系統 併發 互斥與同步

在多道程式設計系統種,程序會被交替執行,進而在巨集觀上表現出一種併發的外部特徵。為什麼需要併發?假設乙個支援單使用者的單處理器多道程式設計系統,使用者可以從乙個應用程式切換到另乙個應用程式,每個應用程式都使用同一鍵盤輸入,使用同一鍵盤輸出。由於每個程式都需要使用某乙個輸入輸出過程,所以將他視為乙個共...