作業(yè)調(diào)度模擬程序設(shè)計(jì)說(shuō)明書(shū).doc_第1頁(yè)
作業(yè)調(diào)度模擬程序設(shè)計(jì)說(shuō)明書(shū).doc_第2頁(yè)
作業(yè)調(diào)度模擬程序設(shè)計(jì)說(shuō)明書(shū).doc_第3頁(yè)
作業(yè)調(diào)度模擬程序設(shè)計(jì)說(shuō)明書(shū).doc_第4頁(yè)
作業(yè)調(diào)度模擬程序設(shè)計(jì)說(shuō)明書(shū).doc_第5頁(yè)
已閱讀5頁(yè),還剩21頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、*實(shí)踐教學(xué)實(shí)踐教學(xué)* 蘭州理工大學(xué)蘭州理工大學(xué)計(jì)算機(jī)與通信學(xué)院2012 年秋季學(xué)期操作系統(tǒng)原理操作系統(tǒng)原理課程設(shè)計(jì)課程設(shè)計(jì) 題 目: 作業(yè)調(diào)度模擬程序 專(zhuān)業(yè)班級(jí): 計(jì)算機(jī)科學(xué)與技術(shù) 1 班 姓 名: 陳萬(wàn)鵬 學(xué) 號(hào): 10240125 指導(dǎo)教師: 李明 成 績(jī): 目目 錄錄前前 言言.2摘要及關(guān)鍵字摘要及關(guān)鍵字.4正正 文文.51。設(shè)計(jì)思想:.52。用類(lèi) C 語(yǔ)言定義相關(guān)的數(shù)據(jù)類(lèi)型:.73.各模塊偽碼:.84。調(diào)度算法的流程圖 :.105.測(cè)試結(jié)果:.11總結(jié)總結(jié).14參考文獻(xiàn)參考文獻(xiàn).16致致 謝謝.17源程序:源程序:.18前前 言言實(shí)驗(yàn)設(shè)計(jì)方案及原理:假設(shè)在單道批處理環(huán)境下有四個(gè)作業(yè) J

2、OB1、JOB2、JOB3、JOB4,已知它們進(jìn)入系統(tǒng)的時(shí)間、估計(jì)運(yùn)行時(shí)間。分別采用先來(lái)先服務(wù)(FCFS) ,最短作業(yè)優(yōu)先(SJF) 、響應(yīng)比高者優(yōu)先(HRN)的調(diào)度算法,計(jì)算出作業(yè)的平均周轉(zhuǎn)時(shí)間和帶權(quán)的平均周轉(zhuǎn)時(shí)間 。 作業(yè) i 的周轉(zhuǎn)時(shí)間:Ti=Tci-Tsi作業(yè)的平均周轉(zhuǎn)時(shí)間:T=作業(yè) i 的帶權(quán)周轉(zhuǎn)時(shí)間:Wi=Ti/Tri作業(yè)的平均帶權(quán)周轉(zhuǎn)時(shí)間:W=先來(lái)先服務(wù)調(diào)度算法(FCFS):每次調(diào)度都是從后備作業(yè)隊(duì)列中,選擇一個(gè)或多個(gè)最先進(jìn)入該隊(duì)列的作業(yè),將它們調(diào)入內(nèi)存,為它們分配資源、創(chuàng)建進(jìn)程,然后放入就緒隊(duì)列.在進(jìn)程調(diào)度中采用 FCFS 算法時(shí),這每次調(diào)度是從就緒隊(duì)列中,選擇一個(gè)最先進(jìn)入該隊(duì)

3、列的進(jìn)程,為之分配處理機(jī),使之投入運(yùn)行。該進(jìn)程一直運(yùn)行到完成或發(fā)生某事件阻賽后,才放棄處理機(jī)。短作業(yè)(進(jìn)程)優(yōu)先調(diào)度算法 SJ(P)F,是指對(duì)短作業(yè)或短進(jìn)程優(yōu)先調(diào)度的算法。它們可分別用于作業(yè)調(diào)度和進(jìn)程調(diào)度。該調(diào)度算法是從后備(就緒)隊(duì)列中選擇一個(gè)或若干個(gè)估計(jì)運(yùn)行時(shí)間最短的作業(yè)(進(jìn)程),將它們調(diào)度內(nèi)存運(yùn)行。響應(yīng)比高者優(yōu)先(HRN):每次從后備隊(duì)列中選擇一個(gè)或若干個(gè)估計(jì)響應(yīng)比最高的作業(yè),將它們調(diào)入內(nèi)存運(yùn)行。響應(yīng)比 Rp=作業(yè)響應(yīng)時(shí)間/運(yùn)行時(shí)間 =作業(yè)等待時(shí)間+作業(yè)運(yùn)行時(shí)間 =1+作業(yè)等待時(shí)間每個(gè)作業(yè)由一個(gè)作業(yè)控制塊 JCB 表示,JCB 可以包含如下信息:作業(yè)名、提交時(shí)間、所需的運(yùn)行時(shí)間、所需的資

4、源、作業(yè)狀態(tài)、鏈指針等等。 作業(yè)的狀態(tài)可以是等待 W(Wait)、運(yùn)行 R(Run)和完成 F(Finish)三種狀態(tài)之一.每個(gè)作業(yè)的最初狀態(tài)總是等待 W。 各個(gè)等待的作業(yè)按照提交時(shí)刻的先后次序排隊(duì),總是首先調(diào)度等待隊(duì)列中隊(duì)首的作業(yè)。 每個(gè)作業(yè)完成后要打印該作業(yè)的開(kāi)始運(yùn)行時(shí)刻、完成時(shí)刻、周轉(zhuǎn)時(shí)間和帶權(quán)周轉(zhuǎn)時(shí)間,這一組作業(yè)完成后要計(jì)算并打印這組作業(yè)的平均周轉(zhuǎn)時(shí)間、帶權(quán)平均周轉(zhuǎn)時(shí)間。摘要摘要及關(guān)鍵字及關(guān)鍵字 編寫(xiě)作業(yè)調(diào)度程序,允許多個(gè)作業(yè)共行的作業(yè)調(diào)度程序。進(jìn)程調(diào)度算法 先來(lái)先服務(wù)調(diào)度算法、最短作業(yè)優(yōu)先調(diào)度算法、和最高相應(yīng)比優(yōu)先調(diào)度算法。 設(shè)有作業(yè) J0、J1、J2、J3,其估計(jì)運(yùn)行時(shí)間分別為 2

5、,20,8,12,打印出三種算法下平均周轉(zhuǎn)時(shí)間比較表.根據(jù)運(yùn)行結(jié)果分析各個(gè)算法的優(yōu)缺點(diǎn)。關(guān)鍵詞:作業(yè)關(guān)鍵詞:作業(yè) 調(diào)度調(diào)度 先來(lái)先服務(wù)先來(lái)先服務(wù) 最短作業(yè)優(yōu)先最短作業(yè)優(yōu)先 最高相應(yīng)比優(yōu)先最高相應(yīng)比優(yōu)先正正 文文1。設(shè)計(jì)思想:。設(shè)計(jì)思想:先來(lái)先服務(wù)算法比較有利于長(zhǎng)作業(yè),而不利于短作業(yè)。 (1)短作業(yè)(SJF)的調(diào)度算法可以照顧到實(shí)際上在所有作業(yè)中占很大比例的短作業(yè),使它能比長(zhǎng)作業(yè)優(yōu)先執(zhí)行。SPF 優(yōu)先調(diào)度算法:是從就緒隊(duì)列中選出一估計(jì)運(yùn)行時(shí)間最短的進(jìn)程,將處理機(jī)分配給它,使它立即執(zhí)行到完成,或發(fā)生某事件而被阻塞放棄處理機(jī)時(shí),再重新調(diào)度。為了和 FCFS 調(diào)度算法進(jìn)行比較,我們利用 FCFS 算法

6、中所使用的實(shí)例并改用 SJ(P)F 算法重新調(diào)度,再進(jìn)行性能分析。采用 SJF 算法后,不論是平均周轉(zhuǎn)時(shí)間還是平均帶權(quán)周轉(zhuǎn)時(shí)間都有較明顯的改善,尤其是對(duì)短作業(yè) D,其周轉(zhuǎn)時(shí)間由 FCFS 算法的 11 降為 SJF 算法中的 3;而平均帶權(quán)周轉(zhuǎn)時(shí)間是從 5.5 降到 1。5。這說(shuō)明 SJF 調(diào)度算法能有效地降低作業(yè)的平均等待時(shí)間和提高系統(tǒng)的吐量。短作業(yè)優(yōu)先調(diào)度算法對(duì)比先來(lái)先服務(wù),不論是平均周轉(zhuǎn)時(shí)間還是平均帶權(quán)周轉(zhuǎn)時(shí)間,都有較明顯的改善,尤其是對(duì)短作業(yè).該算法對(duì)長(zhǎng)作業(yè)不利,而且未考慮作業(yè)的緊迫程度,因而不能保證緊迫性作業(yè)會(huì)被及時(shí)處理。 如作業(yè) C 的周轉(zhuǎn)時(shí)間由 10 增至 16,帶權(quán)周轉(zhuǎn)時(shí)間由

7、2 增至3。1。更嚴(yán)重的是,如果有一長(zhǎng)作業(yè)(進(jìn)程)進(jìn)入系統(tǒng)的后備隊(duì)列(就緒隊(duì)列),由于調(diào)度程序總是優(yōu)先調(diào)度那些(即使是后進(jìn)來(lái)的)短作業(yè)(進(jìn)程) ,將致使長(zhǎng)作業(yè)(進(jìn)程)得不到調(diào)度。 (2)該算法完全未考慮作業(yè)的緊迫程度,因而不能保證緊迫性作業(yè)(進(jìn)程),會(huì)得到及時(shí)處理; (3)由于作業(yè)(進(jìn)程)的長(zhǎng)短只是根據(jù)用戶(hù)所提供的估計(jì)執(zhí)行時(shí)間而定,而用戶(hù)又可能會(huì)有意或無(wú)意地縮短其作業(yè)的估計(jì)執(zhí)行時(shí)間,致使該算法不一定能真正做到短作業(yè)優(yōu)先調(diào)度。 高響應(yīng)比優(yōu)先調(diào)度算法在批處理系統(tǒng)中,用作作業(yè)調(diào)度的短作業(yè)優(yōu)先算法是一個(gè)比較好的算法。其主要缺點(diǎn)是作業(yè)的運(yùn)行得不到保證。如果我們能為每個(gè)作業(yè)引入前面所述的動(dòng)態(tài)優(yōu)先權(quán)機(jī)制,并

8、使以速率 a 增加,則長(zhǎng)作業(yè)在等待一定的時(shí)間后,必須有機(jī)會(huì)分配到處理機(jī)。該優(yōu)先權(quán)的變化可描述為: 優(yōu)先權(quán)=(等待時(shí)間+要求服務(wù)時(shí)間)/要求服務(wù)時(shí)間 由于等待時(shí)間加上要求服務(wù)時(shí)間,就是系統(tǒng)對(duì)該作業(yè)的響應(yīng)時(shí)間,故該優(yōu)先權(quán)又相當(dāng)于響應(yīng)比 Rp = 等待時(shí)間加要求服務(wù)時(shí)間/要求服務(wù)時(shí)間=響應(yīng)時(shí)間/要求服務(wù)時(shí)間 由上式可以看出: (1)如果作業(yè)的等待時(shí)間相同,則要求服務(wù)的時(shí)間愈短,其優(yōu)先權(quán)愈高,因而該算法有利于短作業(yè); (2)當(dāng)要求服務(wù)的時(shí)間相同時(shí),作業(yè)的優(yōu)先權(quán)決定于其等待時(shí)間,因而實(shí)現(xiàn)了先來(lái)先服務(wù); (3)對(duì)于長(zhǎng)作業(yè),當(dāng)其等待時(shí)間足夠長(zhǎng)時(shí),其優(yōu)先權(quán)便可升到很高,從而也可獲得處理機(jī)。 該算法既照顧了短作

9、業(yè),又考慮了作業(yè)到達(dá)的先后順序,也不會(huì)使作業(yè)長(zhǎng)期得不到服務(wù).因此,該算法實(shí)現(xiàn)了一種較好的折衷。當(dāng)然,再利用該算法時(shí),每要進(jìn)行調(diào)度之前,都需先進(jìn)行響應(yīng)應(yīng)比的計(jì)算,這會(huì)增加系統(tǒng)的開(kāi)銷(xiāo)。 假設(shè)在單道批處理環(huán)境下有四個(gè)作業(yè) JOB1、JOB2、JOB3、JOB4,已知它們進(jìn)入系統(tǒng)的時(shí)間、估計(jì)運(yùn)行時(shí)間。分別采用先來(lái)先服務(wù)(FCFS) ,最短作業(yè)優(yōu)先(SJF)、響應(yīng)比高者優(yōu)先(HRN)的調(diào)度算法,計(jì)算出作業(yè)的平均周轉(zhuǎn)時(shí)間和帶權(quán)的平均周轉(zhuǎn)時(shí)間 . 作業(yè) i 的周轉(zhuǎn)時(shí)間:Ti=Tci-Tsi 作業(yè)的平均周轉(zhuǎn)時(shí)間:T= 作業(yè) i 的帶權(quán)周轉(zhuǎn)時(shí)間:Wi=Ti/Tri 作業(yè)的平均帶權(quán)周轉(zhuǎn)時(shí)間:W= 先來(lái)先服務(wù)調(diào)度算

10、法(FCFS):每次調(diào)度都是從后備作業(yè)隊(duì)列中,選擇一個(gè)或多個(gè)最先進(jìn)入該隊(duì)列的作業(yè),將它們調(diào)入內(nèi)存,為它們分配資源、創(chuàng)建進(jìn)程,然后放入就緒隊(duì)列。 在進(jìn)程調(diào)度中采用 FCFS 算法時(shí),這每次調(diào)度是從就緒隊(duì)列中,選擇一個(gè)最先進(jìn)入該隊(duì)列的進(jìn)程,為之分配處理機(jī),使之投入運(yùn)行。該進(jìn)程一直運(yùn)行到完成或發(fā)生某事件阻賽后,才放棄處理機(jī)。 短作業(yè)(進(jìn)程)優(yōu)先調(diào)度算法 SJ(P)F,是指對(duì)短作業(yè)或短進(jìn)程優(yōu)先調(diào)度的算法。它們可分別用于作業(yè)調(diào)度和進(jìn)程調(diào)度.該調(diào)度算法是從后備(就緒)隊(duì)列中選擇一個(gè)或若干個(gè)估計(jì)運(yùn)行時(shí)間最短的作業(yè)(進(jìn)程) ,將它們調(diào)度內(nèi)存運(yùn)行。 響應(yīng)比高者優(yōu)先(HRN):每次從后備隊(duì)列中選擇一個(gè)或若干個(gè)估計(jì)

11、響應(yīng)比最高的作業(yè),將它們調(diào)入內(nèi)存運(yùn)行。 響應(yīng)比 Rp=作業(yè)響應(yīng)時(shí)間/運(yùn)行時(shí)間 =作業(yè)等待時(shí)間+作業(yè)運(yùn)行時(shí)間 =1+作業(yè)等待時(shí)間 每個(gè)作業(yè)由一個(gè)作業(yè)控制塊 JCB 表示,JCB 可以包含如下信息:作業(yè)名、提交時(shí)間、所需的運(yùn)行時(shí)間、所需的資源、作業(yè)狀態(tài)、鏈指針等等。 作業(yè)的狀態(tài)可以是等待 W(Wait) 、運(yùn)行 R(Run)和完成 F(Finish)三種狀態(tài)之一。每個(gè)作業(yè)的最初狀態(tài)總是等待 W. 各個(gè)等待的作業(yè)按照提交時(shí)刻的先后次序排隊(duì),總是首先調(diào)度等待隊(duì)列中隊(duì)首的作業(yè)。 每個(gè)作業(yè)完成后要打印該作業(yè)的開(kāi)始運(yùn)行時(shí)刻、完成時(shí)刻、周轉(zhuǎn)時(shí)間和帶權(quán)周轉(zhuǎn)時(shí)間,這一組作業(yè)完成后要計(jì)算并打印這組作業(yè)的平均周轉(zhuǎn)時(shí)間

12、、帶權(quán)平均周轉(zhuǎn)時(shí)間.2.用類(lèi) C 語(yǔ)言定義相關(guān)的數(shù)據(jù)類(lèi)型:定義頭文件:#include #define getpch(type) (type*)malloc(sizeof(type) )定義結(jié)構(gòu)體:struct worktime float Tb; /作業(yè)運(yùn)行時(shí)刻 float Tc; /作業(yè)完成時(shí)刻 float Ti; /周轉(zhuǎn)時(shí)間 float Wi; /帶權(quán)周轉(zhuǎn)時(shí)間 ;struct jcb /定義作業(yè)控制塊 JCB char name10; /作業(yè)名 float subtime; /作業(yè)提交時(shí)間 float runtime; /作業(yè)所需的運(yùn)行時(shí)間 char resource; /所需資源 fl

13、oat Rp; /后備作業(yè)響應(yīng)比 char state; /作業(yè)狀態(tài) struct worktime wt; struct jcb* link; /鏈指針*jcb_ready=NULL,*j;3.各模塊偽碼:void SJFget() / 獲取隊(duì)列中的最短作業(yè) JCB front,mintime,*rear;/定義 JCB 指針 int ipmove=0; mintime=jcb_ready; rear=mintime-link; while(rear!=NULL) if(rear!=NULL)&(T=rear-subtime)&(mintime-runtime) (rear-

14、runtime)) /隊(duì)列不空時(shí),給作業(yè)排隊(duì) front=mintime; mintime=rear; rear=rearlink; ipmove=1; else rear=rear-link; if (ipmove=1)/隊(duì)首作業(yè)完成,后續(xù)作業(yè)重新排隊(duì) front-link=mintimelink; mintimelink=jcb_ready; jcb_ready=mintime;void HRNget()/ 獲取隊(duì)列中的最高響應(yīng)作業(yè) JCB *front,mintime,*rear; int ipmove=0;/初始化 mintime=jcb_ready; rear=mintime-lin

15、k; while(rear!=NULL) if (rear!=NULL)&(T=rear-subtime)(mintime-Rp)link; if (ipmove=1) /隊(duì)首作業(yè)完成,改變指針 frontlink=mintime-link; mintime-link=jcb_ready; jcb_ready=mintime;4.調(diào)度算法的流程圖 : 開(kāi) 始初始化所有的 JCB使 JCB 按作業(yè)提交的時(shí)刻的先后順序排隊(duì)時(shí)間量:調(diào)度隊(duì)首的作業(yè)投入運(yùn)行:(更改隊(duì)首指針,使作業(yè)的狀態(tài)為 R,記住作業(yè)開(kāi)始運(yùn)行的時(shí)刻Tb 等)計(jì)算并打印運(yùn)行作業(yè) i 的完成時(shí)刻 Tc,周轉(zhuǎn)時(shí)間 Ti,帶權(quán)周轉(zhuǎn)時(shí)間

16、 Wi(完成時(shí)刻 Tc=開(kāi)始運(yùn)行時(shí)刻+運(yùn)行時(shí)間周轉(zhuǎn)時(shí)間 Ti=完成時(shí)刻提交時(shí)刻帶權(quán)周轉(zhuǎn)時(shí)間 Wi=周轉(zhuǎn)時(shí)間運(yùn)行時(shí)間)更改時(shí)間量 T 的值(T:=T+作業(yè) i 的運(yùn)行時(shí)間)隊(duì)列為空 ?5.測(cè)試結(jié)果:計(jì)算并打印這組作業(yè)的平均周轉(zhuǎn)時(shí)間及帶權(quán)平均周轉(zhuǎn)時(shí)間結(jié) 束main()Input()FCFS()SJF()HRN()check()disp ()總結(jié)總結(jié) 短作業(yè)(SJF)的調(diào)度算法可以照顧到實(shí)際上在所有作業(yè)中占很大比例的短作業(yè),使它能比長(zhǎng)作業(yè)優(yōu)先執(zhí)行。SPF 優(yōu)先調(diào)度算法:是從就緒隊(duì)列中選出一估計(jì)運(yùn)行時(shí)間最短的進(jìn)程,將處理機(jī)分配給它,使它立即執(zhí)行到完成,或發(fā)生某事件而被阻塞放棄處理機(jī)時(shí),再重新調(diào)度。為了

17、和 FCFS 調(diào)度算法進(jìn)行比較,我們利用 FCFS 算法中所使用的實(shí)例并改用 SJ(P)F 算法重新調(diào)度,再進(jìn)行性能分析。采用 SJF 算法后,不論是平均周轉(zhuǎn)時(shí)間還是平均帶權(quán)周轉(zhuǎn)時(shí)間都有較明顯的改善,尤其是對(duì)短作業(yè) D,其周轉(zhuǎn)時(shí)間由 FCFS 算法的 11 降為 SJF 算法中的 3;而平均帶權(quán)周轉(zhuǎn)時(shí)間是從 5.5 降到 1.5.這說(shuō)明 SJF 調(diào)度算法能有效地降低作業(yè)的平均等待時(shí)間和提高系統(tǒng)的吐量。短作業(yè)優(yōu)先調(diào)度算法對(duì)比先來(lái)先服務(wù),不論是平均周轉(zhuǎn)時(shí)間還是平均帶權(quán)周轉(zhuǎn)時(shí)間,都有較明顯的改善,尤其是對(duì)短作業(yè)。該算法對(duì)長(zhǎng)作業(yè)不利,而且未考慮作業(yè)的緊迫程度,因而不能保證緊迫性作業(yè)會(huì)被及時(shí)處理.如作業(yè)

18、 C 的周轉(zhuǎn)時(shí)間由 10 增至 16,帶權(quán)周轉(zhuǎn)時(shí)間由 2 增至 3.1。更嚴(yán)重的是,如果有一長(zhǎng)作業(yè)(進(jìn)程)進(jìn)入系統(tǒng)的后備隊(duì)列(就緒隊(duì)列),由于調(diào)度程序總是優(yōu)先調(diào)度那些(即使是后進(jìn)來(lái)的)短作業(yè)(進(jìn)程) ,將致使長(zhǎng)作業(yè)(進(jìn)程)得不到調(diào)度。(2)該算法完全未考慮作業(yè)的緊迫程度,因而不能保證緊迫性作業(yè)(進(jìn)程) ,會(huì)得到及時(shí)處理;(3)由于作業(yè)(進(jìn)程)的長(zhǎng)短只是根據(jù)用戶(hù)所提供的估計(jì)執(zhí)行時(shí)間而定,而用戶(hù)又可能會(huì)有意或無(wú)意地縮短其作業(yè)的估計(jì)執(zhí)行時(shí)間,致使該算法不一定能真正做到短作業(yè)優(yōu)先調(diào)度。3.高響應(yīng)比優(yōu)先調(diào)度算法在批處理系統(tǒng)中,用作作業(yè)調(diào)度的短作業(yè)優(yōu)先算法是一個(gè)比較好的算法。其主要缺點(diǎn)是作業(yè)的運(yùn)行得不到保

19、證。如果我們能為每個(gè)作業(yè)引入前面所述的動(dòng)態(tài)優(yōu)先權(quán)機(jī)制,并使以速率 a 增加,則長(zhǎng)作業(yè)在等待一定的時(shí)間后,必須有機(jī)會(huì)分配到處理機(jī)。該優(yōu)先權(quán)的變化可描述為:優(yōu)先權(quán)=(等待時(shí)間+要求服務(wù)時(shí)間)/要求服務(wù)時(shí)間 由于等待時(shí)間加上要求服務(wù)時(shí)間,就是系統(tǒng)對(duì)該作業(yè)的響應(yīng)時(shí)間,故該優(yōu)先權(quán)又相當(dāng)于響應(yīng)比 Rp=等待時(shí)間加要求服務(wù)時(shí)間/要求服務(wù)時(shí)間=響應(yīng)時(shí)間/要求服務(wù)時(shí)間由上式可以看出:(1)如果作業(yè)的等待時(shí)間相同,則要求服務(wù)的時(shí)間愈短,其優(yōu)先權(quán)愈高,因而該算法有利于短作業(yè);(2)當(dāng)要求服務(wù)的時(shí)間相同時(shí),作業(yè)的優(yōu)先權(quán)決定于其等待時(shí)間,因而實(shí)現(xiàn)了先來(lái)先服務(wù);(3)對(duì)于長(zhǎng)作業(yè),當(dāng)其等待時(shí)間足夠長(zhǎng)時(shí),其優(yōu)先權(quán)便可升到很高

20、,從而也可獲得處理機(jī).該算法既照顧了短作業(yè),又考慮了作業(yè)到達(dá)的先后順序,也不會(huì)使作業(yè)長(zhǎng)期得不到服務(wù)。因此,該算法實(shí)現(xiàn)了一種較好的折衷。當(dāng)然,再利用該算法時(shí),每要進(jìn)行調(diào)度之前,都需先進(jìn)行響應(yīng)應(yīng)比的計(jì)算,這會(huì)增加系統(tǒng)的開(kāi)銷(xiāo)。參考文獻(xiàn)參考文獻(xiàn)1。湯子瀛。 計(jì)算機(jī)操作系統(tǒng).西安電子科技大學(xué)出版社2.王清,李光明。 計(jì)算機(jī)操作系統(tǒng) 。冶金工業(yè)出版社3。孫中秀等。 操作系統(tǒng)教程.高等教育出版社4。曾明。 linux 操作系統(tǒng)教程.陜西科學(xué)技術(shù)出版社5.張麗芬,劉利雄。 操作系統(tǒng)教程.清華大學(xué)出版社6.孟靜.操作系統(tǒng)原理和實(shí)例分析.高等教育出版社7.周長(zhǎng)林.計(jì)算機(jī)操作系統(tǒng)教程.高等教育出版社8。張堯?qū)W.計(jì)算

21、機(jī)操作系統(tǒng)教程.清華大學(xué)出版社9.任滿(mǎn)杰。 操作系統(tǒng)教程 。電子工業(yè)出版社致致 謝謝經(jīng)過(guò)兩周的上機(jī)實(shí)踐,我的課程設(shè)計(jì)基本完成了,這次課程設(shè)計(jì)培養(yǎng)了我耐心、慎密、全面地考慮問(wèn)題的能力,從而加快了問(wèn)題解決的速度、提高了個(gè)人的工作效率,以及鍛煉圍繞問(wèn)題在短時(shí)間內(nèi)得以解決的頑強(qiáng)意志。在編寫(xiě)程序的過(guò)程中,我得到了王旭陽(yáng)老師的指導(dǎo)和孜孜不倦的教誨,在老師的指導(dǎo)下,我的能力得到了提高,同時(shí)養(yǎng)成了科學(xué)、嚴(yán)謹(jǐn)?shù)淖黠L(fēng)和習(xí)慣。為此我要感謝計(jì)通學(xué)院開(kāi)設(shè)了這門(mén)操作系統(tǒng)課程設(shè)計(jì),為我們提供了進(jìn)一步學(xué)習(xí)算法、操作系統(tǒng)和鞏固 C 語(yǔ)言程序計(jì)設(shè)這個(gè)平臺(tái)并對(duì)王旭陽(yáng)老師的精心栽培表示衷心的感謝。同時(shí)還要感謝對(duì)同一題目進(jìn)行攻關(guān)的同學(xué)

22、們給予的幫助,沒(méi)他們的幫助可能有很多問(wèn)題我個(gè)人不能進(jìn)行很好的解決.在此我對(duì)他們幫助給予衷心的感謝。源程序:源程序:#include ”stdio。h” include define getpch(type) (type)malloc(sizeof(type)) struct worktime float Tb; /作業(yè)運(yùn)行時(shí)刻 float Tc; /作業(yè)完成時(shí)刻 float Ti; /周轉(zhuǎn)時(shí)間 float Wi; /帶權(quán)周轉(zhuǎn)時(shí)間 ;struct jcb /*定義作業(yè)控制塊 JCB */ char name10; /作業(yè)名 float subtime; /作業(yè)提交時(shí)間 float runtime

23、; /作業(yè)所需的運(yùn)行時(shí)間 char resource; /所需資源 float Rp; /后備作業(yè)響應(yīng)比 char state; /作業(yè)狀態(tài) struct worktime wt; struct jcb link; /鏈指針*jcb_ready=NULL,*j;typedef struct jcb JCB;float T=0;void sort() / 建立對(duì)作業(yè)進(jìn)行提交時(shí)間排列函數(shù)*/ JCB *first, second; int insert=0; if((jcb_ready=NULL)((jsubtime) (jcb_ready-subtime)) /*作業(yè)提交時(shí)間最短的,插入隊(duì)首*/

24、 jlink=jcb_ready; jcb_ready=j; T=j-subtime; j-Rp=1; else /* 作業(yè)比較提交時(shí)間,插入適當(dāng)?shù)奈恢弥?/ first=jcb_ready; second=firstlink; while(second!=NULL) if((jsubtime) (second-subtime) /*若插入作業(yè)比當(dāng)前作業(yè)提交時(shí)間短,*/ /*插入到當(dāng)前作業(yè)前面*/ jlink=second; firstlink=j; second=NULL; insert=1; else /* 插入作業(yè)優(yōu)先數(shù)最低,則插入到隊(duì)尾/ first=first-link; secon

25、d=secondlink; if (insert=0) first-link=j; void SJFget()/ 獲取隊(duì)列中的最短作業(yè) */ JCB front,*mintime,rear; int ipmove=0; mintime=jcb_ready; rear=mintimelink; while(rear!=NULL)if((rear!=NULL)(T=rearsubtime)&(mintimeruntime) (rear-runtime)) front=mintime; mintime=rear; rear=rearlink; ipmove=1; else rear=rear

26、link; if (ipmove=1) frontlink=mintime-link; mintimelink=jcb_ready; jcb_ready=mintime;void HRNget()/* 獲取隊(duì)列中的最高響應(yīng)作業(yè) */ JCB front,mintime,*rear; int ipmove=0; mintime=jcb_ready; rear=mintimelink; while(rear!=NULL) if (rear!=NULL)(T=rear-subtime)&(mintimeRp)(rear-Rp)) front=mintime; mintime=rear; re

27、ar=rearlink; ipmove=1; else rear=rearlink; if (ipmove=1) frontlink=mintimelink; mintime-link=jcb_ready; jcb_ready=mintime;void input() / 建立作業(yè)控制塊函數(shù)*/ int i,num; printf(n 請(qǐng)輸入作業(yè)數(shù):?”); scanf(”%d,&num) ; for(i=0;iruntime); printf(”n”) ; j-state=w; jlink=NULL; sort(); /* 調(diào)用 sort 函數(shù)*/ int space() int l

28、=0; JCB jr=jcb_ready; while(jr!=NULL) l+; jr=jr-link; return(l); void disp(JCB* jr,int select) /*建立作業(yè)顯示函數(shù),用于顯示當(dāng)前作業(yè)/ if (select=3) printf(”n 作業(yè) 服務(wù)時(shí)間 響應(yīng)比 運(yùn)行時(shí)刻 完成時(shí)刻 周轉(zhuǎn)時(shí)間 帶權(quán)周轉(zhuǎn)時(shí)間 n) ; else printf(n 作業(yè) 服務(wù)時(shí)間 運(yùn)行時(shí)刻 完成時(shí)刻 周轉(zhuǎn)時(shí)間 帶權(quán)周轉(zhuǎn)時(shí)間 n); printf(” |st,jrname); printf(” |%.2ft ”,jrruntime) ; if (select=3) printf(” %。2f ,jr-Rp) ; if (j=jr) printf(” 。2ft”,jr-wt.Tb); printf(” |.2f ,jr-wt。Tc) ; printf(” %。2f t”,jr-wt.Ti); printf(” |%。2f,jrwt.Wi); printf(”n) ; void check(int select) /* 建立作業(yè)查看函數(shù) / JCB jr; printf(”n * 當(dāng)前正在運(yùn)行的作業(yè)是:s”,j-name); /顯示當(dāng)前運(yùn)行作業(yè)*/ disp(j,select); jr=j

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論