開(kāi)篇語(yǔ)
今天第三次看《操作系統(tǒng)》,本次碼字實(shí)在“汽車(chē)概論”的課堂上寫(xiě)出來(lái)的,懷著洽洁,唔,應(yīng)該算是比較糟糕的心情懒鉴。三月份的計(jì)算機(jī)的等級(jí)考試是在月底3/25-28的。所以不做好筆記碎浇,到時(shí)候考前還得重新學(xué)一遍临谱,簡(jiǎn)書(shū)學(xué)習(xí)筆記模式---開(kāi)!EАOつ!
前面還有兩篇類似的:
計(jì)算機(jī)四級(jí)網(wǎng)絡(luò)工程師--《操作系統(tǒng)(Operating System)》重點(diǎn)內(nèi)容學(xué)習(xí)
計(jì)算機(jī)四級(jí)網(wǎng)絡(luò)工程師--《操作系統(tǒng)(Operating System)》重點(diǎn)內(nèi)容學(xué)習(xí)2
正文-----進(jìn)程線程
進(jìn)程有兩個(gè)屬性:資源分配抄课、擁有 and 獨(dú)立調(diào)度、執(zhí)行雳旅。
因此跟磨,系統(tǒng)要不停地進(jìn)行資源的分配、回收攒盈;現(xiàn)場(chǎng)的保護(hù)抵拘、恢復(fù),這樣會(huì)極大地占用系統(tǒng)的資源型豁,不利于系統(tǒng)的性能的充分利用以及并發(fā)性的增強(qiáng)僵蛛。所以尚蝌,分開(kāi)進(jìn)程的兩個(gè)屬性,進(jìn)程只作為分配和擁有的單位充尉,具體的執(zhí)行由線程進(jìn)行飘言。所以,線程產(chǎn)生了驼侠!從此姿鸿,CPU站起來(lái)了。(這什么鬼梗泪电,不管了般妙,寫(xiě)進(jìn)去就不刪了)
一、線程的概念:
進(jìn)程中的一個(gè)實(shí)體--線程相速。被系統(tǒng)獨(dú)立的調(diào)度和執(zhí)行碟渺,基本上不擁有系統(tǒng)的資源,只擁有一部分必不可少的資源【程序計(jì)數(shù)器突诬、一組寄存器苫拍、棧】旺隙。線程之間共享資源绒极,同一個(gè)進(jìn)程內(nèi)的線程具有異步性,也具有三個(gè)基本狀態(tài)--就緒蔬捷、等待垄提、執(zhí)行。
二周拐、線程/進(jìn)程的比較:
- 調(diào)度:進(jìn)程任何時(shí)候都是資源的占有者铡俐,線程只負(fù)責(zé)調(diào)度執(zhí)行
- 并發(fā)性:進(jìn)程并發(fā),線程也并發(fā)妥粟,所以整機(jī)在并發(fā)性上大大增強(qiáng)
- 擁有資源:資源一直占有資源审丘;線程可以訪問(wèn)進(jìn)程的系統(tǒng)資源
- 系統(tǒng)開(kāi)銷(xiāo):創(chuàng)建、撤銷(xiāo)所花費(fèi)的資源 進(jìn)程>線程勾给;切換 進(jìn)程>線程 所以實(shí)際的開(kāi)銷(xiāo)大大減小
- 關(guān)系:一個(gè)程序至少有一個(gè)進(jìn)程滩报,一個(gè)進(jìn)程至少有一個(gè)線程(進(jìn)程由程序、數(shù)據(jù)播急、PCB表組成)
三脓钾、線程實(shí)現(xiàn)機(jī)制:
(1)用戶級(jí)線程:用戶控制、與系統(tǒng)控制無(wú)關(guān)
(2)內(nèi)核級(jí)線程:依賴于內(nèi)核
(3)混合式實(shí)現(xiàn):混合上述兩者
四桩警、Pthread線程包(俗稱API惭笑,應(yīng)用程序接口)
用戶及線程庫(kù)定義標(biāo)準(zhǔn),大部分UNIX系統(tǒng)支持
五、進(jìn)程調(diào)度(大家伙來(lái)了)
【1沉噩、進(jìn)程調(diào)度層次】
- 高級(jí)調(diào)度
- 低級(jí)調(diào)度
- 中級(jí)調(diào)度:部分的資源調(diào)度進(jìn)入內(nèi)存捺宗、另外一部分 進(jìn)入外存,這就形成了---虛擬存儲(chǔ)技術(shù)川蒙,也就是很多時(shí)候電腦參數(shù)顯示的虛擬內(nèi)存大小的來(lái)源
【2蚜厉、時(shí)機(jī)】
- 正在執(zhí)行的進(jìn)程結(jié)束
- 正在執(zhí)行的進(jìn)程調(diào)用阻塞原語(yǔ)進(jìn)入阻塞狀態(tài)
- 激活原語(yǔ)激活等待的進(jìn)程
- 時(shí)間片用完了
- 就緒隊(duì)列中有高于當(dāng)前運(yùn)行的進(jìn)程的優(yōu)先級(jí)的進(jìn)程進(jìn)入
六、調(diào)度算法
【1畜眨、調(diào)度算法設(shè)計(jì)原則】
- To Users :周轉(zhuǎn)時(shí)間短
- To System : 系統(tǒng)的吞吐量高
【2昼牛、進(jìn)程調(diào)度算法】
- 先來(lái)先服務(wù)算法(FCFS)
如果早就緒的進(jìn)程排在就緒隊(duì)列的前面,遲就緒的進(jìn)程排在就緒隊(duì)列的后面康聂,那么先來(lái)先服務(wù)(FCFS: first come first service)總是把當(dāng)前處于就緒隊(duì)列之首的那個(gè)進(jìn)程調(diào)度到運(yùn)行狀態(tài)贰健。也就說(shuō),它只考慮進(jìn)程進(jìn)入就緒隊(duì)列的先后恬汁,而不考慮它的下一個(gè)CPU周期的長(zhǎng)短及其他因素伶椿。FCFS算法簡(jiǎn)單易行,是一種非搶占式策略氓侧,但性能卻不大好脊另。
- 最短作業(yè)優(yōu)先調(diào)度算法(SPF)
最短作業(yè)優(yōu)先(SPF)調(diào)度算法從就緒隊(duì)列中選出一個(gè)估計(jì)運(yùn)行時(shí)間最短的進(jìn)程,將處理機(jī)分配給它约巷,使它立即執(zhí)行并一直執(zhí)行到完成偎痛,或發(fā)生某事件而被阻塞放棄處理機(jī)再重新調(diào)度。優(yōu)點(diǎn)是SPF調(diào)度算法能有效地降低作業(yè)(進(jìn)程)的平均等待時(shí)間独郎,提高系統(tǒng)吞吐量踩麦。缺點(diǎn)是該算法對(duì)長(zhǎng)作業(yè)不利;完全未考慮作業(yè)的緊迫程度氓癌,因而不能保證緊迫性作業(yè)(進(jìn)程)長(zhǎng)期不被調(diào)度谓谦;由于作業(yè)(進(jìn)程)的長(zhǎng)短只是根據(jù)用戶所提供的估計(jì)執(zhí)行時(shí)間而定的,而用戶又可能會(huì)有意或無(wú)意地縮短其作業(yè)的估計(jì)運(yùn)行時(shí)間顽铸,致使該算法不一定能真正做到短作業(yè)優(yōu)先調(diào)度茁计。
- 最短剩余時(shí)間優(yōu)先調(diào)度算法(SRT)
這是對(duì)FCFS和SPF算法的改進(jìn)料皇,其目標(biāo)是減少平均周轉(zhuǎn)時(shí)間谓松。對(duì)預(yù)計(jì)執(zhí)行時(shí)間短的作業(yè)(進(jìn)程)優(yōu)先分派處理機(jī)。通常后來(lái)的短作業(yè)不搶先正在執(zhí)行的作業(yè)践剂。
[上述三個(gè)算法的實(shí)例比較]
假設(shè)有三個(gè)進(jìn)程:P1 P1 P3
分別需要 5s 2s 1s
P1最先到達(dá)鬼譬,P2隨后到達(dá),時(shí)間上排在一起逊脯,P3 3s后到達(dá)
- 時(shí)間片輪轉(zhuǎn)調(diào)度算法(RR)
時(shí)間片輪轉(zhuǎn)調(diào)度是一種最古老优质,最簡(jiǎn)單,最公平且使用最廣的算法。每個(gè)進(jìn)程被分配一個(gè)時(shí)間段巩螃,稱作它的時(shí)間片演怎,即該進(jìn)程允許運(yùn)行的時(shí)間。如果在時(shí)間片結(jié)束時(shí)進(jìn)程還在運(yùn)行避乏,則CPU將被剝奪并分配給另一個(gè)進(jìn)程爷耀。如果進(jìn)程在時(shí)間片結(jié)束前阻塞或結(jié)束,則CPU當(dāng)即進(jìn)行切換拍皮。調(diào)度程序所要做的就是維護(hù)一張就緒進(jìn)程列表歹叮,當(dāng)進(jìn)程用完它的時(shí)間片后,它被移到隊(duì)列的末尾铆帽。
適用于交互式進(jìn)程調(diào)度
- 最高優(yōu)先級(jí)調(diào)度算法
在這種調(diào)度方式下咆耿,系統(tǒng)一旦把處理機(jī)分配給就緒隊(duì)列中優(yōu)先級(jí)最高的進(jìn)程后,該進(jìn)程就能一直執(zhí)行下去爹橱,直至完成萨螺;或因等待某事件的發(fā)生使該進(jìn)程不得不放棄處理機(jī)時(shí),系統(tǒng)才能將處理機(jī)分配給另一個(gè)優(yōu)先級(jí)高的就緒進(jìn)程宅荤。
在這種調(diào)度方式下屑迂,進(jìn)程調(diào)度程序把處理機(jī)分配給當(dāng)時(shí)優(yōu)先級(jí)最高的就緒進(jìn)程,使之執(zhí)行冯键。一旦出現(xiàn)了另一個(gè)優(yōu)先級(jí)更高的就緒進(jìn)程時(shí)惹盼,進(jìn)程調(diào)度程序就停止正在執(zhí)行的進(jìn)程,將處理機(jī)分配給新出現(xiàn)的優(yōu)先級(jí)最高的就緒進(jìn)程惫确。
進(jìn)程的優(yōu)先級(jí)可采用靜態(tài)優(yōu)先級(jí)和動(dòng)態(tài)優(yōu)先級(jí)兩種手报,優(yōu)先級(jí)可由用戶自定或由系統(tǒng)確定。
- 多級(jí)反饋隊(duì)列調(diào)度算法(MLF)
設(shè)有N個(gè)隊(duì)列(Q1,Q2....QN)改化,其中各個(gè)隊(duì)列對(duì)于處理機(jī)(CPU)的優(yōu)先級(jí)是不一樣的掩蛤,也就是說(shuō)位于各個(gè)隊(duì)列中的作業(yè)(進(jìn)程)的優(yōu)先級(jí)也是不一樣的。一般來(lái)說(shuō)陈肛,優(yōu)先級(jí)Priority(Q1) > Priority(Q2) > ... > Priority(QN)揍鸟。怎么講,位于Q1中的任何一個(gè)作業(yè)(進(jìn)程)都要比Q2中的任何一個(gè)作業(yè)(進(jìn)程)相對(duì)于CPU的優(yōu)先級(jí)要高(也就是說(shuō)句旱,Q1中的作業(yè)一定要比Q2中的作業(yè)先被處理機(jī)調(diào)度阳藻,依次類推其它的隊(duì)列。
對(duì)于最后一個(gè)隊(duì)列來(lái)說(shuō)谈撒,里面是遵循時(shí)間片輪轉(zhuǎn)法腥泥。也就是說(shuō),位于隊(duì)列Q2中有N個(gè)作業(yè)啃匿,它們的運(yùn)行時(shí)間是通過(guò)Q2這個(gè)隊(duì)列所設(shè)定的時(shí)間片來(lái)確定的
結(jié)束語(yǔ)
先到這里了蛆楞。今天,唔夹厌,容我花點(diǎn)時(shí)間調(diào)整心情再來(lái)面對(duì)這個(gè)世界豹爹!對(duì)了,推薦一首我很喜歡的歌矛纹,歌手喜歡(好吧帅戒,因?yàn)樯ぷ酉矚g),歌詞很喜歡崖技,調(diào)調(diào)特別喜歡逻住,你們能相信我會(huì)為了多聽(tīng)?zhēng)妆檫@首歌,而在雨天從圖書(shū)館走回去嗎迎献?而且還特意的減速繞路瞎访,因?yàn)椋谟曛杏趸校悦傻囊篃粝掳墙眨澜缍甲兊煤苊腊。?/p>
個(gè)人宣言
知識(shí)傳遞力量,技術(shù)無(wú)國(guó)界感局,文化改變生活尼啡!