一、併發基礎
併發並不是真的並行執行,但是其表現為並行執行,可以提高效率
併發的基本要求是互斥。
併發出現的情況:①多道程式執行
②多處理器技術
③分布式系統
二、併發原理
單處理器為替換,多處理器為重疊執行和替換
三、併發要考慮的問題
(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 處理流程是...
作業系統 併發 互斥與同步
在多道程式設計系統種,程序會被交替執行,進而在巨集觀上表現出一種併發的外部特徵。為什麼需要併發?假設乙個支援單使用者的單處理器多道程式設計系統,使用者可以從乙個應用程式切換到另乙個應用程式,每個應用程式都使用同一鍵盤輸入,使用同一鍵盤輸出。由於每個程式都需要使用某乙個輸入輸出過程,所以將他視為乙個共...