3.1處理機(jī)調(diào)度相關(guān)基本概念
處理機(jī)調(diào)度
1高級(jí)調(diào)度:又稱作業(yè)調(diào)度或長(zhǎng)程調(diào)度,接納調(diào)度(主要在早期批處理階段,處理在外存上的作業(yè))
系統(tǒng)運(yùn)行并不一定存在高級(jí)調(diào)度
2.低級(jí)調(diào)度:也稱為進(jìn)程調(diào)度、微觀調(diào)度或短程調(diào)度
最基本的一種調(diào)度,在批處理系統(tǒng)、分時(shí)系統(tǒng)、實(shí)時(shí)系統(tǒng)中都有
3.中級(jí)調(diào)度
引入目的:提高內(nèi)存利用率和系統(tǒng)吞吐量
5.選擇調(diào)度方式和調(diào)度算法的若干準(zhǔn)則
1)面向用戶的準(zhǔn)則:周轉(zhuǎn)時(shí)間短、響應(yīng)時(shí)間快、均衡性、截止時(shí)間的保證、優(yōu)先權(quán)準(zhǔn)則
2)面向系統(tǒng)的準(zhǔn)則:系統(tǒng)吞吐量高、處理機(jī)利用率好、各類資源的平衡利用
二、調(diào)度算法
1.先來先服務(wù)調(diào)度算法FCFS(非搶占方式)
按照作業(yè)提交。或進(jìn)程變?yōu)榫途w狀態(tài)的先后次序分派CPU,新作業(yè)只有當(dāng)當(dāng)前作業(yè)或進(jìn)程執(zhí)行完或阻塞才獲得CPU運(yùn)行
不利于段作業(yè)(進(jìn)程)
不足:段作業(yè)C的帶權(quán)周轉(zhuǎn)時(shí)間高達(dá)100長(zhǎng)作業(yè)D的帶權(quán)周轉(zhuǎn)時(shí)間僅為1.99;有利于CPU繁忙型的作業(yè),而不利于I/o繁忙的作業(yè)
???????? 2.短作業(yè)(進(jìn)程)有限調(diào)度算法SJF/SPF
此算法能有效的降低作業(yè)的平均等待時(shí)間,提高系統(tǒng)吞吐量
方式:分搶占和非搶占兩種方式,上例為簡(jiǎn)單的非搶占式。
不足:1.對(duì)短作業(yè)有利,但同時(shí)造成了對(duì)長(zhǎng)作業(yè)的不利。2.由于作業(yè)(進(jìn)程)的長(zhǎng)短含主觀因素,不一定能真正做到短作業(yè)優(yōu)先。3.未考慮作業(yè)的緊迫程度,因而不能保證緊迫性作業(yè)的及時(shí)處理。
3.高優(yōu)先權(quán)優(yōu)先調(diào)度算法HPF
1)分非搶占式和搶占式優(yōu)先權(quán)算法(關(guān)鍵點(diǎn):新作業(yè)產(chǎn)生時(shí))
2)優(yōu)先權(quán)的類型
靜態(tài)優(yōu)先權(quán):創(chuàng)建進(jìn)程時(shí)確定,整個(gè)運(yùn)行期間保持不變
動(dòng)態(tài)優(yōu)先權(quán):創(chuàng)建進(jìn)程時(shí)賦予的優(yōu)先權(quán),可隨進(jìn)程的推進(jìn)或隨其等待時(shí)間的增加而改變
3)高響應(yīng)比優(yōu)先調(diào)度算法HRRN
HRRN為每個(gè)作業(yè)引入動(dòng)態(tài)優(yōu)先權(quán),使作業(yè)的優(yōu)先級(jí)隨著等待時(shí)間的增加而以速率a提高
1.同時(shí)到達(dá)的作業(yè)優(yōu)先權(quán)相同(若等待時(shí)間t相同,利于短作業(yè);長(zhǎng)作業(yè)的優(yōu)先級(jí)隨等待時(shí)間的增加而提高)
2.實(shí)行時(shí)間相同的作業(yè),優(yōu)先權(quán)的高低決定于其等待時(shí)間的長(zhǎng)短,也就是先來先服務(wù)
什么時(shí)候計(jì)算各進(jìn)程的響應(yīng)比優(yōu)先權(quán)?
調(diào)度選擇時(shí):作業(yè)完成時(shí)、新作業(yè)完成時(shí)(搶占、非搶占)、時(shí)間片完成時(shí)、進(jìn)程阻塞時(shí)
3.基于時(shí)間片的輪轉(zhuǎn)調(diào)度算法RR
(1)時(shí)間片輪轉(zhuǎn)算法
時(shí)間片長(zhǎng)度???????????????? 過長(zhǎng):FCFS??? 過短:頻繁切換
(2)多級(jí)反饋隊(duì)列算法FB
1.設(shè)置多個(gè)就緒隊(duì)列,各隊(duì)列有不同的優(yōu)先級(jí),優(yōu)先級(jí)從第一個(gè)隊(duì)列依次降低
2.賦予各隊(duì)列進(jìn)程執(zhí)行時(shí)間片大小不同,優(yōu)先權(quán)越高,時(shí)間片越短
三、實(shí)時(shí)調(diào)度
1.系統(tǒng)能夠在限定的響應(yīng)時(shí)間內(nèi)提供所需水平的服務(wù)
2.計(jì)算的正確性不僅取決于程序的邏輯正確性,也取決于結(jié)果產(chǎn)生的時(shí)間,如果系統(tǒng)的時(shí)間約束條件得不到滿足,將會(huì)發(fā)生系統(tǒng)出錯(cuò)
基本條件:
1)提供必要的信息
就緒時(shí)間、開始截止時(shí)間、完成截止時(shí)間、處理時(shí)間、資源要求、優(yōu)先級(jí)
2)系統(tǒng)能力足夠強(qiáng)
3)采用搶占式調(diào)度機(jī)制
4)具有快速切換機(jī)制
搶占式調(diào)度算法:1、基于時(shí)鐘:某高優(yōu)先級(jí)任務(wù)到達(dá)后并不立即搶占,,而等下一個(gè)時(shí)鐘中斷時(shí)搶占。2、立即搶占:一旦出現(xiàn)外部中斷,只要當(dāng)前任務(wù)未處于臨界區(qū),就立即搶占處理機(jī)。
最早截止時(shí)間優(yōu)先EDF、最低松弛度優(yōu)先LLF(主要用于搶占調(diào)度方式中)
四、產(chǎn)生死鎖的原因和必要條件
多道程序系統(tǒng)借助并發(fā)執(zhí)行改善資源利用率,提高系統(tǒng)吞吐量,但可能發(fā)生一種危險(xiǎn)——死鎖(指多個(gè)進(jìn)程在運(yùn)行過程中,因爭(zhēng)奪資源而造成的一種僵局。當(dāng)進(jìn)程處于這種狀態(tài)時(shí),若無外力作用,它們都將無法再向前推進(jìn))
饑餓:指一個(gè)進(jìn)程無休止地等待
產(chǎn)生死鎖的原因:1.競(jìng)爭(zhēng)資源???? 2.進(jìn)程間推進(jìn)程序非法(請(qǐng)求和釋放資源的順序不當(dāng))
產(chǎn)生死鎖的必要條件:互斥條件、請(qǐng)求和保持條件、不剝奪條件、環(huán)路等待條件
死鎖避免屬于動(dòng)態(tài)策略
預(yù)防死鎖:
①摒棄“請(qǐng)求和保持”條件:所有進(jìn)程開始運(yùn)行前,必須一次性的申請(qǐng)其在整個(gè)運(yùn)行過程所需的全部資源(AND)。算法簡(jiǎn)單、易于實(shí)現(xiàn)且很安全。但缺點(diǎn)是資源浪費(fèi)嚴(yán)重、或進(jìn)程延遲運(yùn)行。
②摒棄“不剝奪”條件:允許進(jìn)程先運(yùn)行,但當(dāng)提出的新要求不被滿足時(shí)必須釋放它已保持的所有資源,待以后需要時(shí)再重新申請(qǐng)。實(shí)現(xiàn)比較復(fù)雜且付出很大代價(jià)。可能會(huì)造成前功盡棄,反復(fù)申請(qǐng)和釋放等情況。
③摒棄“環(huán)路等待”條件:將所有資源按類型進(jìn)行線性排隊(duì),賦予不同序號(hào)。所有進(jìn)程對(duì)資源的請(qǐng)求必須嚴(yán)格按照資源序號(hào)遞增的次序提出,這樣在所形成的資源分配圖中,不可能會(huì)出現(xiàn)環(huán)路。
2.避免死鎖
安全狀態(tài):沒有死鎖;不安全狀態(tài):可能會(huì)產(chǎn)生死鎖
安全序列:只要系統(tǒng)按此進(jìn)程列分配資源,就能使每個(gè)進(jìn)程都順利完成。
3.銀行家算法避免死鎖
死鎖的解除:1.剝奪進(jìn)程。2.撤銷進(jìn)程