《作業系統 FCFS和SJF》

2022-01-23 21:19:02 字數 1625 閱讀 6442

**:

fcfs排程演算法

先來先服務(fcfs)排程演算法是一種最簡單的排程演算法,該演算法既可用於作業排程,也可用於程序排程。當在作業排程中採用該演算法時,每次排程都是從後備作業佇列中選擇乙個或多個最先進入該佇列的作業,將它們調入記憶體,為它們分配資源、建立程序,然後放入就緒佇列。在程序排程中採用fcfs演算法時,則每次排程是從就緒佇列中選擇乙個最先進入該佇列的程序,為之分配處理機,使之投入執行。該程序一直執行到完成或發生某事件而阻塞後才放棄處理機。

周轉時間= 作業完成時刻  -  作業到達時刻;

fcfs演算法比較有利於長作業(程序),而不利於短作業(程序)。下表列出了a、b、c、d四個作業分別到達系統的時間、要求服務的時間、開始執行的時間及各自的完成時間,並計算出各自的周轉時間和帶權周轉時間。

從表上可以看出,其中短作業c的帶權周轉時間競高達100,這是不能容忍的;而長作業d的帶權周轉時間僅為1.99。據此可知,fcfs排程演算法有利於cpu繁忙型的作業,而不利於i/o繁忙型的作業(程序)。

cpu繁忙型作業:    是指該類作業需要大量的cpu時間進行計算,而很少請求i/o。通常的科學計算便屬於cpu繁忙型作業。

i/o繁忙型作業:    是指cpu進行處理時需頻繁地請求i/o。目前的大多數事務處理都屬於i/o繁忙型作業。

上圖表示出有五個程序a、b、c、d、e,它們到達的時間分別是0、1、2、3和4,所要求的服務時間分別是4、3、5、2和4,其完成時間分別是4、7、12、14和18。

從每個程序的完成時間中減去其到達時間,即得到其周轉時間,進而可以算出每個程序的帶權周轉時間。

短作業(程序)優先排程演算法sj(p)f,是指對短作業或短程序優先排程的演算法。它們可以分別用於作業排程和程序排程。短作業優先(sjf)的排程演算法是從後備佇列中選擇乙個或若干個估計執行時間最短的作業,將它們調入記憶體執行。

而短程序優先(spf)排程演算法則是從就緒佇列中選出乙個估計執行時間最短的程序,將處理機分配給它,使它立即執行並一直執行到完成,或發生某事件而被阻塞放棄處理機時再重新排程。

為了和fcfs排程演算法進行比較,我們仍利用fcfs演算法中所使用的例項,並改用sj(p)f演算法重新排程,再進行效能分析。由上圖中的(a)和(b)可以看出,採用sj(p)f演算法後,不論是平均周轉時間還是平均帶權周轉時間,都有較明顯的改善,尤其是對短作業d,其周轉時間由原來的(用fcfs演算法時)11降為3;而平均帶權周轉時間是從5.5降到1.5。這說明sjf排程演算法能有效地降低作業的平均等待時間,提高系統吞吐量。

sj(p)f排程演算法也存在不容忽視的缺點:

該演算法對長作業不利,如作業c的周轉時間由10增至16,其帶權周轉時間由2增至3.1。更嚴重的是,如果有一長作業(程序)進入系統的後備佇列(就緒佇列),由於排程程式總是優先排程那些(即使是後進來的)短作業(程序),將導致長作業(程序)長期不被排程。

該演算法完全未考慮作業的緊迫程度,因而不能保證緊迫性作業(程序)會被及時處理。

由於作業(程序)的長短只是根據使用者所提供的估計執行時間而定的,而使用者又可能會有意或無意地縮短其作業的估計執行時間,致使該演算法不一定能真正做到短作業優先排程。

作業系統實驗一FSFC和SJF

作業系統先來先服務fsfc演算法以及短作業優先sjf演算法c define crt secure no warnings include include include using namespace std class fsfc void rank int jobarrivetime 作業到達時間...

作業系統原理 運用FCFS法模擬處理機排程實驗

定義程序控制塊 typedef struct pcbpcb 程序建立函式 void initpcb pcb p 程序執行函式 void runpcb pcb p,int time ttime time p arrivetime cout time slice is time process p na...

分時作業系統和實時作業系統

1.linux分時作業系統和rtos 實時作業系統 我們知道,相對比vxworks,linux核心屬於非實時作業系統,原因主要是 1 實時任務搶占時間是不可預期的。2 為什麼搶占是不可預期的呢?這涉及到核心中的搶占點知識,其中spin lock鎖,在unlock時是乙個搶占點,但是spinlock本...