先來先服務 非強佔式短程序優先演算法

2023-01-17 07:30:04 字數 3546 閱讀 6976

課程設計

課程設計任務書

學生姓名: 專業班級

指導教師: 吳利軍工作單位: 電腦科學與技術學院

題目: 程序排程模擬設計——先來先服務、非強佔式短程序優先演算法

初始條件:

1.預備內容:閱讀作業系統的處理機管理章節內容,對程序排程的功能以及程序排程演算法有深入的理解。

2.實踐準備:掌握一種計算機高階語言的使用。

要求完成的主要任務: (包括課程設計工作量及其技術要求,以及說明書撰寫等具體要求)

1.模擬程序排程,能夠處理以下的情形:

⑴ 能夠選擇不同的排程演算法(要求中給出的排程演算法);

⑵ 能夠輸入程序的基本資訊,如程序名、到達時間和執行時間等;

⑶ 根據選擇的排程演算法顯示程序排程佇列;

⑷ 根據選擇的排程演算法計算平均周轉時間和平均帶權周轉時間。

2.設計報告內容應說明:

⑴ 課程設計目的與功能;

⑵ 需求分析,資料結構或模組說明(功能與框圖);

⑶ 源程式的主要部分;

⑷ 測試用例,執行結果與運**況分析;

⑸ 自我評價與總結:

)你認為你完成的設計哪些地方做得比較好或比較出色;

)什麼地方做得不太好,以後如何改正;

)從本設計得到的收穫(在編寫,除錯,執行過程中的經驗和教訓);

)完成本題是否有其他方法(如果有,簡要說明該方法);

)對實驗題的評價和改進意見,請你推薦設計題目。

時間安排:

設計安排一周:周1、周2:完成程式分析及設計。

周2、周3:完成程式除錯及測試。

周4、周5:驗收、撰寫課程設計報告。

(注意事項:嚴禁抄襲,一旦發現,抄與被抄的一律按0分記)

指導教師簽名年月日

系主任(或責任教師)簽名年月日

課程設計報告書

先來先服務,非強佔式短程序優先演算法

1. 課程設計目的與功能

1.1課程設計目的

通過這次課程設計,了解和掌握程序的一些排程演算法。了解先來先服務和非強佔式短程序優先演算法之間的相同和不同點。

1.2課程設計功能

能夠選擇不同的排程演算法(先來先服務,非強佔式短程序優先演算法),通過給出程序名、程序的到達時間和程序的執行時間,根據排程演算法計算出程序的平均周轉時間和平均帶權周轉時間,比較排程演算法的優劣。

2.需求分析,資料結構或模組說明(功能與框圖)

2.1需求分析

通過設計乙個模擬程序排程的系統,來實現程序排程,對程序排程的功能以及程序排程演算法有乙個更加深入的理解。

程序pcb(包含程序名、到達時間、預計執行時間)

排程演算法(先來先服務、非強佔式短程序優先)

模擬程序排程,能夠處理以下的情形:

⑴ 能夠選擇不同的排程演算法(要求中給出的排程演算法);

⑵ 能夠輸入程序的基本資訊,如程序名、到達時間和執行時間等;

⑶ 根據選擇的排程演算法顯示程序排程佇列;

⑷ 根據選擇的排程演算法計算平均周轉時間和平均帶權周轉時間。

此次做的程序排程模擬系統,使用者可以輸入各程序資訊(包含程序名、到達時間、執行時間)。輸入程序數,然後輸入程序的提交時間和執行時間,顯示先來先服務排程演算法和非強佔式短程序優先排程演算法的作業號、提交時間、執行時間、開始時間、結束時間、周轉時間、帶權周轉時間、執行時間、平均周轉時間和平均帶權周轉時間。

2.2 對排程演算法的描述和實現

2.2.1先來先服務排程演算法(fcfs,first come first serve)

基本思想:按照作業提交或程序變為就緒狀態的先後次序,調入系統或分派cpu ,換句話說,排程程式每次選擇的作業/程序是等待時間最久的,而不管其執行時間的長短。這種排程演算法突出的優點是實現簡單,效率較低,在一些實際的系統和一般應用程式中採用這種演算法的較多。

適用於作業排程,也可用於程序排程。要實現此先來先服務排程演算法以及考慮程式的簡潔性,用乙個資料結構如優先順序佇列,容器等來儲存程序基本資訊,並要對所有的程序按其到達時間先後順序進行排序,實現依次取出的程序是所有未執行程序中到達時間最早的程序。

2.2.2非強佔式短程序優先排程演算法

不可搶占式 non-preemptive(非剝奪式):某一程序被排程執行後,除非由於它自身的原因不能執行,否則一直執行下去。

短作業優先排程演算法(sjf, shortest job first),又稱為「短程序優先」spn(shortest process next);這是對fcfs演算法的改進,其目標是減少平均周轉時間。基本思想:對預計執行時間短的作業(程序)優先處理。

通常後來的短作業不搶先正在執行的作業。在一般情況下這種排程演算法比先來先服務排程演算法的效率要高一些。實現相對先來先服務排程演算法要困難些,如果作業的到來順序及執行時間不合適,會出現餓死現象,例如,系統中有乙個執行時間很長的作業j,和幾個執行時間小的作業,然後,不斷地有執行時間小於j的作業的到來,這樣,作業j就得不可排程而餓死。

另外,作業執行的估計時間也有問題。

2.3資料結構

此次程式從大的方面來說是利用鍊錶來實現的,在程式中定義了乙個結構體struct pcb用來儲存每一條記錄,每個結點包括程序名(作業名)、程序的提交時間、執行時間、開始時間、結束時間、周轉時間、帶權周轉時間、平均周轉時間和平均帶權周轉時間。

struct pro的定義如下:

struct pro

;定義乙個double型的handtime(提交時間),乙個double型的asktime(執行時間)、starttime(開始時間)、endtime(結束時間)、usetime(周轉時間)、right(帶權周轉時間)以及整型的runorder(執行的順序)和num(程序數),還定義乙個指標next。

2.4模組說明(功能與框圖)

2.4.1先來先服務排程演算法

先來先服務排程演算法有兩種情況:一是程序的提交時間不一樣,是根據到達的先後順序來執行的,先到達先執行;二是程序的提交時間一樣,即所有的程序的到達時間是一樣的,要看程序的執行順序,在前的程序先執行。

2.4.2非強佔式短程序優先排程演算法

非強佔式短程序優先排程演算法,有兩種情況:一是程序的到達的時間不一樣,那麼首先執行第乙個到達的程序,執行完後,然後比較剩下程序的到達時間和執行時間,先到達的和執行時間短的程序先執行;二是程序的到達時間一樣,比較所有的程序的執行時間,執行時間短的程序先執行。

3源程式的主要部分

3.1 先來先服務排程演算法的**如下:

void fcfs(pro p,int n)

double sumtime=0,sumright=0;

cout<<"fcfs"< cout<<"作業號\t提交\t執行\t開始\t結束\t周轉\t帶權\t執行"< for(i=0;i

cout<<"平均\t\t\t\t\t"< system(「pause」);

}3.2非強佔式短程序優先排程演算法的**如下:

void sjf(pro p,int n)

// coutnum< p[n-1].next=null;

/* while(now!=null)

*/while(now->next!=null)

{nextrun=now->next;

cout

強責任重服務 招商引資

招商引資工作顯成效 今年以來,街道緊緊圍繞市委提出 四個第一和四個打造 的戰略部署,切實加大招商引資力度,加快推進 工業化 和 城鎮化 建設,順利推進了省道285線迎賓大道 海利新廠 中潤花園 大屋花園 中國石油天然氣股份 等重點專案建設。至目前止,引進新專案25個,總投資近10億元。其中已投產專案...

上 橡膠用非炭黑補強填料的研究進展

中國化工資訊網2011年1月6日 除天然橡膠 nr 和氯丁橡膠 cr 等少數自補強橡膠品種外,大部分合成橡膠在不填充補強填料的情況下效能較差,單獨使用的價值不大。補強填料在橡膠加工中具有重要而又獨特的作用。它可以提高橡膠的力學效能,對非自補強型膠種如丁苯橡膠 sbr 丁腈橡膠 nbr 等更是不可或缺...

物業品牌百強2019中國物業服務品牌百強企業名單

華潤置地 北京 深圳 深圳 物業管理 綠城物業服務集團 廈門海投物業 保利物業管理 重慶加州物業服務 北京 獅城怡安 上海 山東東晨物業管理 廈門聯發 集團 中國 福建 深圳市保利物業管理集團 北京恆富物業服務 廣州和融物業管理 深圳市萬廈居業 重慶新鷗鵬物業管理 集團 蘇州市會議中心物業管理股份 ...