同步(互斥是同步的一種)是一種理念,而實現這種理念的有2種方式:訊號量(整型訊號量,結構型訊號量,二值訊號量);管道(pipe)。
注:例子便於記憶。
《小狗爭食之互斥》
飯點時間到了,小狗a(程序a或執行緒a)與小狗b(程序b或執行緒b)都衝向放有**(臨界資源,可以說乙個變數i等等)的狗屋(臨界資源區),小狗a(程序a或執行緒a)先衝到狗屋(臨界資源區),而狗屋(臨界資源區)只能容納乙隻小狗,所以小狗a(程序a或執行緒a)先吃,小狗b(程序b或執行緒b)只能在狗屋(臨界資源區)外等待,直到屋裡小狗a(程序a或執行緒a)吃完**(臨界資源)。這就是互斥,互斥是關於共享資源的,關於競爭的,而共享資源在同一時間只能有乙個程序享用它。那**如何實現互斥?pv訊號量。
《軟體開發之同步》
有一間公司,要開發乙個名為「同步」的軟體,開發軟體先寫文件後寫**,所以該公司的經理(程序a)開始著手寫文件,經理(程序a)寫完文件後,會把文件放在乙個盒子(緩衝區,管道等)裡,程式設計師(程序b)就可以去盒子(緩衝區,管道等)裡拿文件,然後根據文件寫**。經理(程序a)只有寫完文件(程序a執行完),程式設計師才能能拿到文件去寫**(程序b才能執行),經理和程式設計師是合作關係。
這就是同步,同步是兩個程序合作的、協作的,它們的執行必須嚴格按照規定的 某種先後次序來執行
,
只有上游程序a提供了資源,下游程序b才能拿到資源,典型的例子還有生產者-消費者。
總結:同步是一種更為複雜的互斥,而互斥是一種特殊的同步。
臨界區、互斥區、事件、訊號量四種方式:**)
作業系統 同步與互斥問題
1.生產者 消費者問題 define n 100 有界緩衝區大小 typedef int semaphore 定義訊號量 semaphore mutex 1 臨界區互斥訊號量 semaphore empty n 空閒緩衝區 semaphore full 0 緩衝區初始化為空 void produce...
作業系統 併發 互斥與同步
在多道程式設計系統種,程序會被交替執行,進而在巨集觀上表現出一種併發的外部特徵。為什麼需要併發?假設乙個支援單使用者的單處理器多道程式設計系統,使用者可以從乙個應用程式切換到另乙個應用程式,每個應用程式都使用同一鍵盤輸入,使用同一鍵盤輸出。由於每個程式都需要使用某乙個輸入輸出過程,所以將他視為乙個共...
作業系統實驗 同步互斥
實習1 程序同步 實習要求 在windows 2000 環境下,建立乙個包含n 個執行緒的控制台程序。用這n 個執行緒來表示n 個讀者或寫者。每個執行緒按相應測試資料檔案的要求,進行讀寫操作。請用訊號量機制分別 實現讀者優先和寫者優先的讀者 寫者問題。讀者 寫者問題的讀寫操作限制 1 寫 寫互斥 2...