20 下列何者 CPU 排班演算法可以得到最短的等待時間?
(A)先到先服務排班法(FCFS)
(B)循環排班法(RR)
(C)最短工作優先排班法(SJF)
(D)最長工作優先排班法(LJF)
統計: A(138), B(108), C(1195), D(11), E(0) #1625072
詳解 (共 3 筆)
1.先到先處理:
先來先做之排班方法 (First-Come, First-Served Scheduling)
每次從就緒佇列選擇最先進入佇列的程式,然後一直執行,直到程式退出或被阻塞,才會繼續從佇列中選擇第一個程式接著執行。FCFS 對長作業有利,適用於 CPU 繁忙型作業的系統,而不適用於 I/O 繁忙型作業的系統。但在FCFS方法下的平均等待時間經常是很長的。
2.最短工作先處理:
最短的工作先做之排班方式(Shortest-Job-First Scheduling)
它會優先選擇執行時間最短的程式來執行,這有助於提高系統的吞吐量。這顯然對長作業不利,很容易造成一種極端現象。
比如,一個長作業在就緒佇列等待執行,而這個就緒佇列有非常多的短作業,那麼就會使得長作業不斷的往後推,週轉時間變長,致使長作業長期不會被執行。
3.優先排班權:
優先權排班方式 (Priority Scheduling)
最短的工作先做(SJF)是一般優先權排班演算法的一個特例。每一個行程都有它的優先順序。CPU將分配給具有最高優先權的行程,具有相同優先順序的行程則按照FCFS來排班。
。
要注意的是我們討論排班是以高優先權和低優先權來決定。優先權一般是一些固定範圍的數字,譬如0到7或0至4095 o。但是,到底0是最高優先權還是最低優先權並沒有一致的看法。有些系統使用低數值表示低優先次序;其他的則恰好相反,這種差異可能會導致一些混亂。
4.依序循環排班:
依序循環之排班方式 (Round-Robin Scheduling)
每個程式被分配一個時間段,稱為時間片(Quantum),即允許該程式在該時間段中執行。
如果時間片用完,程式還在執行,那麼將會把此程式從 CPU 釋放出來,並把 CPU 分配另外一個程式;
如果該程式在時間片結束前阻塞或結束,則 CPU 立即進行切換;另外,時間片的長度就是一個很關鍵的點:
如果時間片設得太短會導致過多的程式上下文切換,降低了 CPU 效率;
如果設得太長又可能引起對短作業程式的響應時間變長。將
通常時間片設為 20ms~50ms 通常是一個比較合理的折中值。
5.即時排班 (Real Time Scheduling)
即時計算可分為兩種型式。硬性即時系統(hard real-time system)必須在一定量的時間內完成一項很重要的任務。通常,一個行程交付執行時會附帶一行,描述它所需要計算或執行I/O的時間量。排班程式可能會接受這個行程,並保證這個行程可以準時完成;或是拒絕這個不可能的執行要求。這就是所謂的資源預約(resource reservation)。這種保證要求排班程式正確地知道每一種型式的作業系統函數要花多少時間執行;而由此每一項操作必須保證花費最多的時間。
程式的優先順序可以分為,靜態優先順序或動態優先順序:
靜態優先順序:建立程式時候,就已經確定了優先順序了,然後整個執行時間優先順序都不會變化;
動態優先順序:根據程式的動態變化調整優先順序,比如如果程式執行時間增加,則降低其優先順序,如果程式等待時間(就緒佇列的等待時間)增加,則升高其優先順序,也就是隨著時間的推移增加等待程式的優先順序。
非搶佔式:當就緒佇列中出現優先順序高的程式,執行完當前程式,再選擇優先順序高的程式。
搶佔式:當就緒佇列中出現優先順序高的程式,當前程式掛起,排程優先順序高的程式執行。