>進程的幾種狀態(tài):" />
>>在什么時候進程調(diào)度有意義:當系統(tǒng)負載很高,時時刻刻都有 N 多個進程處于可運行狀態(tài),等待被調(diào)度運行時進程調(diào)度程序為了協(xié)調(diào)這 N 個進程的運行,必然得做非常多工作。如果當系統(tǒng)長時間都沒有一個進程要運行,那么進程調(diào)度就沒多大用處了。
>>進程的幾種狀態(tài):
創(chuàng)建狀態(tài):進程在創(chuàng)建時需要申請一個空白PCB,向其中填寫控制和管理進程的信息,完成資源分配。如果創(chuàng)建工作無法完成,比如資源無法滿足,就無法被調(diào)度運行,把此時進程所處狀態(tài)稱為創(chuàng)建狀態(tài)
就緒狀態(tài):進程已經(jīng)準備好,已分配到所需資源,只要分配到CPU就能夠立即運行
執(zhí)行狀態(tài):進程處于就緒狀態(tài)被調(diào)度后,進程進入執(zhí)行狀態(tài)
阻塞狀態(tài):正在執(zhí)行的進程由于某些事件(I/O請求,申請緩存區(qū)失。┒鴷簳r無法運行,進程受到阻塞。在滿足請求時進入就緒狀態(tài)等待系統(tǒng)調(diào)用
終止狀態(tài):進程結(jié)束,或出現(xiàn)錯誤,或被系統(tǒng)終止,進入終止狀態(tài)。無法再執(zhí)行
>>進程調(diào)度方式:
這里按照是否剝奪的方式分為兩種調(diào)度方式。
1. 非剝奪方式(非搶占方式)
分派程序一旦把處理機分配給某進程后便讓它一直運行下去,直到進程完成或發(fā)生某事件而阻塞時,才把處理機分配給另一個進程。
2. 剝奪方式(搶占方式)
當一個進程正在運行時,系統(tǒng)可以基于某種原則,剝奪已分配給它的處理機,將之分配給其它進程。剝奪原則有:優(yōu)先權(quán)原則、短進程、優(yōu)先原則、時間片原則。
>>進程調(diào)度算法:
先來先服務(FCFS):屬于不可剝奪算法。算法每次從后備作業(yè)隊列中選擇最先進入該隊列的一個或幾個作業(yè)進行處理。特點:算法簡單,效率低,對長作業(yè)有利,對短作業(yè)不利。
短作業(yè)優(yōu)先:時間片短的任務先處理特點:有效降低作業(yè)的平均等待時間和提高系統(tǒng)的吞吐量。
優(yōu)先級:可分為非剝奪式和剝奪式;其中優(yōu)先級可分為:靜態(tài)優(yōu)先級和動態(tài)優(yōu)先級。
時間片輪轉(zhuǎn):定義了一個的時間單元,稱為時間片(或時間量)。一個時間片通常在1~100 ms之間。當正在運行的進程用完了時間片。后,即使此進程還要運行,操作系統(tǒng)也不讓它繼續(xù)運行,而是從就緒隊列依次選擇下一個處于就緒態(tài)的進程執(zhí)行,而被剝奪CPU使用的進程返回到就緒隊列的末尾,等待再次被調(diào)度。
高響應比優(yōu)先調(diào)度算法:(響應比)Rp=(等待時間+預計執(zhí)行時間)/執(zhí)行時間=響應時間/執(zhí)行時間