花了大概半年的時(shí)間不緊不慢的把《現(xiàn)代操作系統(tǒng)》讀了一遍咆畏,第一遍讀得感覺比較費(fèi)勁松邪,不過讀下來也得以對操作系統(tǒng)整體概念有了一個(gè)整體的認(rèn)識礼饱。
下面践宴,我講把我讀書之后一些知識進(jìn)行一個(gè)梳理鲸匿,作為自己對操作系統(tǒng)的知識儲備。其中缺陷錯(cuò)誤之處請大家多多批評指正阻肩。
1. 進(jìn)程與線程
在看這一章時(shí)带欢,首先我不斷讓自己明確進(jìn)程是程序的一次執(zhí)行,是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個(gè)獨(dú)立單位,線程是進(jìn)程的實(shí)體乔煞,是cpu調(diào)度和分配的基本單位吁朦。書中指出,每個(gè)進(jìn)程有一個(gè)地址空間和一個(gè)控制線程渡贾。
進(jìn)程包括三種狀態(tài):運(yùn)行態(tài)逗宜,就緒態(tài),阻塞態(tài)剥啤。進(jìn)程會由于等待資源或者獲得資源的原因在這三個(gè)狀態(tài)間切換锦溪。一個(gè)進(jìn)程可以分為多個(gè)線程的運(yùn)行,這些線程公用相同的地址空間和所有數(shù)據(jù)府怯,線程比進(jìn)程更輕量刻诊,可以做到更快的創(chuàng)建和撤銷,在需要大量的io和cpu計(jì)算時(shí)牺丙,多個(gè)線程可以做到多個(gè)線程的同時(shí)運(yùn)行则涯,加快執(zhí)行速度,在多核計(jì)算機(jī)中冲簿,多個(gè)線程也可以同時(shí)運(yùn)行粟判。
進(jìn)程與線程還有一個(gè)重點(diǎn),即進(jìn)程間通信峦剔。進(jìn)程間通信需要解決三個(gè)問題:
- 一個(gè)進(jìn)程如何給另一個(gè)進(jìn)程傳遞信息
- 如何保證進(jìn)程之間不相互干擾
- 當(dāng)進(jìn)程間出現(xiàn)相互依賴關(guān)系時(shí)該如何處理档礁。
同樣的線程也存在這樣的問題,但是由于線程擁有相同的地址空間吝沫,因此第一個(gè)問題對于線程而言并不困難呻澜。但是另外兩個(gè)問題同樣困擾線程。那么我們就需要了解幾種概念惨险。
競爭條件:兩個(gè)或多個(gè)進(jìn)程讀寫某些共享數(shù)據(jù)羹幸,而最后的結(jié)果取決于程序運(yùn)行的精確時(shí)序。
臨界區(qū):對于這些競爭條件辫愉,就需要做到互斥栅受。這里講共享內(nèi)存進(jìn)行訪問的程序片段稱為臨界區(qū)。因此需要進(jìn)行