作業(yè)佑力,進(jìn)程,線程
作業(yè)
作業(yè)是由一組統(tǒng)一管理和操作的進(jìn)程集合構(gòu)成暴拄,是用戶(hù)要求計(jì)算機(jī)系統(tǒng)完成一項(xiàng)相對(duì)獨(dú)立的工作编饺。
所以,作業(yè)有作業(yè)調(diào)度透且。
作業(yè)調(diào)度,就是按照操作系統(tǒng)預(yù)先規(guī)定的作業(yè)調(diào)度策略鲸沮,從磁盤(pán)的作業(yè)后備隊(duì)列中選擇作業(yè)調(diào)入內(nèi)锅论,為作業(yè)分配所需要的資源并建立與作業(yè)相對(duì)應(yīng)的進(jìn)程。
作業(yè)調(diào)度的單位是作業(yè)棍厌。
進(jìn)程
進(jìn)程是可并發(fā)執(zhí)行的,具有獨(dú)立功能的程序在一定數(shù)據(jù)集合上的一次執(zhí)行過(guò)程敬肚,是操作系統(tǒng)進(jìn)行資源分配和調(diào)度的基本單位束析。
進(jìn)程狀態(tài)變化
(1)運(yùn)行:當(dāng)一個(gè)進(jìn)程在處理機(jī)上運(yùn)行時(shí),則稱(chēng)該進(jìn)程處于運(yùn)行狀態(tài)弄慰。處于此狀態(tài)的進(jìn)程的數(shù)目小于等于處理器的數(shù)目蝶锋,對(duì)于單處理機(jī)系統(tǒng),處于運(yùn)行狀態(tài)的進(jìn)程只有一個(gè)扳缕。在沒(méi)有其他進(jìn)程可以執(zhí)行時(shí)(如所有進(jìn)程都在阻塞狀態(tài))别威,通常會(huì)自動(dòng)執(zhí)行系統(tǒng)的空閑進(jìn)程驴剔。
(2)就緒:當(dāng)一個(gè)進(jìn)程獲得了除處理機(jī)以外的一切所需資源,一旦得到處理機(jī)即可運(yùn)行丧失,則稱(chēng)此進(jìn)程處于就緒狀態(tài)。就緒進(jìn)程可以按多個(gè)優(yōu)先級(jí)來(lái)劃分隊(duì)列科侈。例如炒事,當(dāng)一個(gè)進(jìn)程由于時(shí)間片用完而進(jìn)入就緒狀態(tài)時(shí),排入低優(yōu)先級(jí)隊(duì)列挠乳;當(dāng)進(jìn)程由I/O操作完成而進(jìn)入就緒狀態(tài)時(shí),排入高優(yōu)先級(jí)隊(duì)列盟蚣。
(3)阻塞:也稱(chēng)為等待或睡眠狀態(tài)卖怜,一個(gè)進(jìn)程正在等待某一事件發(fā)生(例如請(qǐng)求I/O而等待I/O完成等)而暫時(shí)停止運(yùn)行,這時(shí)即使把處理機(jī)分配給進(jìn)程也無(wú)法運(yùn)行马靠,故稱(chēng)該進(jìn)程處于阻塞狀態(tài)。
還有創(chuàng)建逞度,終止妙啃,掛起。
掛起和阻塞差別:
阻塞:主動(dòng)進(jìn)入阻塞揖赴,等待系統(tǒng)喚醒。I/O渐北,突倍,等待進(jìn)程之間通信盆昙。
掛起:被動(dòng)進(jìn)入掛起焊虏,放到外存中秕磷,掛起它的人,來(lái)負(fù)責(zé)喚醒澎嚣。由于資源不足,或是父進(jìn)程要審核它等原因褥琐。
各種狀態(tài)機(jī)晤郑,不過(guò)是系統(tǒng)怎么實(shí)現(xiàn),
這里系統(tǒng)認(rèn)為應(yīng)該有這么多種狀態(tài)造寝,所以設(shè)計(jì)了這樣的狀態(tài)機(jī)诫龙,
用于將各個(gè)進(jìn)程分類(lèi),從而好管理而已签赃。
#所以線程的狀態(tài)是為了解決實(shí)際問(wèn)題方便管理分配二抽象出來(lái)的。
#你可以往里面加更多的狀態(tài)晰绎。
中級(jí)調(diào)度和低級(jí)調(diào)度都是對(duì)進(jìn)程而言的調(diào)度括丁。
中級(jí)調(diào)度是,在換出內(nèi)存的進(jìn)程中確定需要進(jìn)入內(nèi)存的進(jìn)程史飞。
低度調(diào)度是按照一定的調(diào)度算法從內(nèi)存的就緒進(jìn)程隊(duì)列中選擇進(jìn)程,為進(jìn)程分配處理器抽诉,避免進(jìn)程對(duì)處理器的競(jìng)爭(zhēng)吐绵。
一個(gè)CPU怎么可以保證多個(gè)程序河绽,可以安然運(yùn)行唉窃?
方法就是恢復(fù)現(xiàn)場(chǎng)」豆颍恢復(fù)上下文。
所以線程就是為了恢復(fù)線程而存在的東西件已。
為此維護(hù)了一個(gè)結(jié)構(gòu)PCB,用于恢復(fù)現(xiàn)場(chǎng)元暴。
PCB
進(jìn)程標(biāo)志信息
處理劑狀態(tài)信息(通用寄存器,指令寄存器鉴未,程序狀態(tài)字寄存器和用戶(hù)堆棧指針寄存器的內(nèi)容援岩。)
進(jìn)程調(diào)度信息(調(diào)度狀態(tài),進(jìn)程優(yōu)先級(jí)享怀,進(jìn)程的等待時(shí)間。進(jìn)程執(zhí)行時(shí)間梅屉,進(jìn)程狀態(tài)變化相關(guān)時(shí)間)
進(jìn)程控制信息(程序和數(shù)據(jù)地址)
PCB表的存儲(chǔ)結(jié)構(gòu):
鏈表結(jié)構(gòu):只記錄頭指針鳞贷,然后,每一個(gè)PCB都有一個(gè)指針指向下一個(gè)惰聂。
索引方式:維護(hù)幾個(gè)表咱筛,就緒索引表,阻塞索引表迅箩,然后里面存了PCB的地址。
作業(yè)調(diào)度算法
只是一些為調(diào)度而設(shè)計(jì)出來(lái)的算法拐揭,看你怎么設(shè)計(jì),你也可以設(shè)計(jì)自己覺(jué)得優(yōu)秀的算法
評(píng)價(jià)標(biāo)準(zhǔn):
{
1.處理器利用率
CPU利用率 = CPU的有效工作時(shí)間 /CPU總的運(yùn)行時(shí)間
CPU總的工作時(shí)間 = CPU有效工作時(shí)間+CPU空閑時(shí)間
2.響應(yīng)時(shí)間 提交請(qǐng)求家肯,到反應(yīng)的時(shí)間
3.周轉(zhuǎn)時(shí)間 作業(yè)提交到作業(yè)完成
4.系統(tǒng)吞吐量 單位時(shí)間完成的進(jìn)程數(shù)目為系統(tǒng)吞吐量
}
調(diào)度算法:
1.FCFS 先來(lái)先服務(wù)
2.短作業(yè)優(yōu)先(搶占的)
執(zhí)行時(shí)間段的先運(yùn)行敷鸦。比較的是剩余時(shí)間寝贡。
3.響應(yīng)比搞著優(yōu)先
就是計(jì)算響應(yīng)比而已:
響應(yīng)比 = 響應(yīng)時(shí)間/處理時(shí)間
=( 等待時(shí)間+處理時(shí)間)/處理時(shí)間 =1+ 等待時(shí)間/處理時(shí)間
為什么不直接比,等待時(shí)間/處理時(shí)間算了...
4.優(yōu)先權(quán)高優(yōu)先
進(jìn)程調(diào)度算法
同樣也是你可以設(shè)計(jì)的算法啦碟案。
1.FCFS
2.時(shí)間片輪轉(zhuǎn)颇蜡。TRR算法
3.優(yōu)先級(jí)調(diào)度算法
4.多級(jí)隊(duì)列調(diào)度算法
將進(jìn)程分成若干個(gè)隊(duì)列,
不同隊(duì)列之間风秤,優(yōu)先級(jí)高的隊(duì)列先調(diào)度,
不同對(duì)列內(nèi)部采用不同的調(diào)度算法领迈。
5.度級(jí)反饋隊(duì)列調(diào)度算法
(書(shū)上寫(xiě)了規(guī)則碍沐,總之,運(yùn)行時(shí)間以會(huì)影響有優(yōu)先級(jí)以及分配的時(shí)間片)