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