操作系統精髓與設計原理讀書筆記5

進程同步互斥

進程的並發執行:並發是所有問題產生的基礎,並發是操作系統設計的基礎

進程互斥

由於各進程要求使用共享資源(變數、文件等),而這些資源需要排他性使用

各進程之間競爭使用這些資源

—— 這一關係稱為進程互斥

臨界資源:critical resource

系統中某些資源一次只允許一個進程使用,稱這樣的資源為臨界資源或互斥資源或共享變數

臨界區(互斥區):critical section(region)

各個進程中對某個臨界資源(共享變數)實施操作的程序片段

軟體方案 Dekker解法、Peterson解法

硬體方案 屏蔽中斷、TSL(XCHG)指令

進程同步:synchronization

指系統中多個進程中發生的事件存在某種時序關係,需要相互合作,共同完成一項任務

具體地說,一個進程運行到某一點時,要求另一夥伴進程為它提供消息,在未獲得消息之前,該進程進入阻塞態,獲得消息後被喚醒進入就緒態

生產者/消費者問題

問題描述:

一個或多個生產者生產某種類型的數據放置在緩衝區中

有消費者從緩衝區中取數據,每次取一項

只能有一個生產者或消費者對緩衝區進行操作

要解決的問題:

當緩衝區已滿時,生產者不會繼續向其中添加數據;

當緩衝區為空時,消費者不會從中移走數據

避免忙等待

睡眠 與 喚醒 操作(原語)

讀者寫者問題

問題描述:

多個進程共享一個數據區,這些進程分為兩組:

讀者進程:只讀數據區中的數據

寫者進程:只往數據區寫數據

要求滿足條件:

允許多個讀者同時執行讀操作

不允許多個寫者同時操作

不允許讀者、寫者同時操作

讀者優先

如果讀者執行:

無其他讀者、寫者,該讀者可以讀

若已有寫者等,但有其他讀者正在讀,則該讀者也可以讀

若有寫者正在寫,該讀者必須等

如果寫者執行:

無其他讀者、寫者,該寫者可以寫

若有讀者正在讀,該寫者等待

若有其他寫者正在寫,該寫者等待

信號量及PV操作

一個特殊變數

用於進程間傳遞信息的一個整數值

定義如下:

struc semaphore

{

int count;

queueType queue;

}

信號量說明:semaphore s;

對信號量可以實施的操作:初始化、P和V(P、V分別是荷蘭語的test(proberen)和increment(verhogen))

經典的IPC問題

推薦閱讀:

如何減少電腦中病毒的幾率?
谷歌自研Fuchsia OS將兼容安卓:亦可在x86體系運行
銀河麒麟系統的前世今生
OS 實驗二 | Linux 內核模塊編程
Linux性能分析工具

TAG:操作系統 | 計算機科學 |