處理機(jī)調(diào)度程序-操作系統(tǒng)課程設(shè)計(jì)報(bào)告(共21頁)_第1頁
處理機(jī)調(diào)度程序-操作系統(tǒng)課程設(shè)計(jì)報(bào)告(共21頁)_第2頁
處理機(jī)調(diào)度程序-操作系統(tǒng)課程設(shè)計(jì)報(bào)告(共21頁)_第3頁
處理機(jī)調(diào)度程序-操作系統(tǒng)課程設(shè)計(jì)報(bào)告(共21頁)_第4頁
處理機(jī)調(diào)度程序-操作系統(tǒng)課程設(shè)計(jì)報(bào)告(共21頁)_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上北 華 航 天 工 業(yè) 學(xué) 院操作系統(tǒng)課程設(shè)計(jì)報(bào)告課程設(shè)計(jì)題目: 處理機(jī)調(diào)度程序 作者所在系部: 計(jì)算機(jī)與遙感信息技術(shù)學(xué)院作者所在專業(yè): 網(wǎng)絡(luò)工程 作者所在班級(jí): B12522 作 者 姓 名 : 梁爽 作 者 學(xué) 號(hào) : 指導(dǎo)教師姓名: 劉立媛 完 成 時(shí) 間 : 2015.1.5 北華航天工業(yè)學(xué)院教務(wù)處制專心-專注-專業(yè)課程設(shè)計(jì)任務(wù)書課題名稱處理機(jī)調(diào)度程序完成時(shí)間2015.1.5指導(dǎo)教師劉立媛職稱助教學(xué)生姓名梁爽班級(jí)B12522總體設(shè)計(jì)要求和技術(shù)要點(diǎn)處理機(jī)調(diào)度程序:選擇一個(gè)調(diào)度算法,實(shí)現(xiàn)處理機(jī)調(diào)度。設(shè)計(jì)要求:主界面可靈活選擇某算法,且以下算法都要實(shí)現(xiàn):1、時(shí)間片輪

2、轉(zhuǎn)法2、短作業(yè)優(yōu)先算法3、動(dòng)態(tài)優(yōu)先級(jí)算法執(zhí)行時(shí)在主界面選擇算法(可用函數(shù)實(shí)現(xiàn)),進(jìn)入子頁面后輸入進(jìn)程數(shù),運(yùn)行時(shí)間,優(yōu)先數(shù)(由隨機(jī)函數(shù)產(chǎn)生),執(zhí)行,顯示結(jié)果。工作內(nèi)容及時(shí)間進(jìn)度安排時(shí)間:此次課程設(shè)計(jì)時(shí)間為兩周,第18、19周,共40學(xué)時(shí)。分四個(gè)階段完成:1.分析設(shè)計(jì)階段:明確設(shè)計(jì)要求,找出實(shí)現(xiàn)方法。這一階段在第1天完成。2.編碼調(diào)試階段:根據(jù)設(shè)計(jì)分析方案編寫代碼,然后調(diào)試該代碼,實(shí)現(xiàn)課題要求的功能。這一階段在第2-8天完成。3.總結(jié)報(bào)告階段:總結(jié)設(shè)計(jì)工作,撰寫課程設(shè)計(jì)報(bào)告,這一階段在第8-9天完成。4.考核階段:這一階段在第10天完成。地點(diǎn):計(jì)算機(jī)與遙感信息技術(shù)學(xué)院實(shí)驗(yàn)室課程設(shè)計(jì)成果1與設(shè)計(jì)內(nèi)容

3、對(duì)應(yīng)的軟件程序2課程設(shè)計(jì)報(bào)告書摘 要計(jì)算機(jī)自從1946年第一臺(tái)真正意義上的數(shù)字電子計(jì)算機(jī)ENIAC 的誕生以來,已經(jīng)經(jīng)歷了1854年1890年、1890年20世紀(jì)早期、20世紀(jì)中期、20世紀(jì)晚期現(xiàn)在四個(gè)階段,每一個(gè)階段的發(fā)展都發(fā)生了質(zhì)與量的突飛猛進(jìn)。然而,計(jì)算機(jī)的發(fā)展只是代表了硬件的提升,對(duì)于軟件,操作系統(tǒng)的發(fā)展更加引人注目。操作系統(tǒng)(OS)是管理電腦硬件與軟件資源的程序,同時(shí)也是計(jì)算機(jī)系統(tǒng)的內(nèi)核與基石。操作系統(tǒng)是控制其他程序運(yùn)行,管理系統(tǒng)資源并為用戶提供操作界面的系統(tǒng)軟件的集合。操作系統(tǒng)身負(fù)諸如管理與配置內(nèi)存、決定系統(tǒng)資源供需的優(yōu)先次序、控制輸入與輸出設(shè)備、操作網(wǎng)絡(luò)與管理文件系統(tǒng)等基本事務(wù)。

4、操作系統(tǒng)的型態(tài)非常多樣,不同機(jī)器安裝的OS可從簡(jiǎn)單到復(fù)雜,可從手機(jī)的嵌入式系統(tǒng)到超級(jí)電腦的大型操作系統(tǒng)。目前微機(jī)上常見的操作系統(tǒng)有DOS、OS/2、UNIX、XENIX、LINUX、Windows、Netware等。操作系統(tǒng)的不斷提升對(duì)于計(jì)算機(jī)整體性能的提高有著至關(guān)重要的作用。操作系統(tǒng)對(duì)于各個(gè)方面的要求都不得不提到效率的問題,計(jì)算機(jī)系統(tǒng)的處理機(jī)調(diào)度便變得尤為重要。處理機(jī)調(diào)度的效率甚至可能成為提高計(jì)算機(jī)處理速度的瓶頸。處理機(jī)調(diào)度就是對(duì)系統(tǒng)的資源做出合理的分配,因而,提高處理機(jī)的調(diào)度算法也變得尤為重要。關(guān)鍵詞:操作系統(tǒng) 處理機(jī)調(diào)度 系統(tǒng)資源目 錄44669121455556第1章 緒 論在多道程序

5、設(shè)計(jì)系統(tǒng)中,內(nèi)存中有多道程序運(yùn)行,他們相互爭(zhēng)奪處理機(jī)這一重要的資源。處理機(jī)調(diào)度就是從就緒中,按照一定的算法選擇一個(gè)進(jìn)程并將處理機(jī)分配給它運(yùn)行,以實(shí)現(xiàn)進(jìn)程并發(fā)地執(zhí)行。1.1 處理機(jī)調(diào)度功能一般情況下,當(dāng)占用處理機(jī)的進(jìn)程因?yàn)槟撤N請(qǐng)求得不到滿足而不得不放棄CPU進(jìn)入等待狀態(tài)時(shí),或者當(dāng)時(shí)間片到,系統(tǒng)不得不將CPU分配給就緒中另一進(jìn)程的時(shí)候,都要引起處理機(jī)調(diào)度。除此之外,進(jìn)程正常結(jié)束、等也可能引起處理機(jī)的調(diào)度。因此,處理機(jī)調(diào)度是操作系統(tǒng)核心的重要組成部分,它的主要功能如下:(1)記住進(jìn)程的狀態(tài),如、指令計(jì)數(shù)器、程序以及所有等現(xiàn)場(chǎng)信息,將這些信息記錄在相應(yīng)的中。(2)根據(jù)一定的算法,決定哪個(gè)進(jìn)程能獲得處理

6、機(jī),以及占用多長(zhǎng)時(shí)間。(3)收回處理機(jī),即正在執(zhí)行的進(jìn)程因?yàn)闀r(shí)間片用完或因?yàn)槟撤N原因不能再執(zhí)行的時(shí)候,保存該進(jìn)程的現(xiàn)場(chǎng),并收回處理機(jī)。處理機(jī)調(diào)度的功能中,很重要的一項(xiàng)就是根據(jù)一定算法,從就緒隊(duì)列中選出一個(gè)進(jìn)程占用CPU運(yùn)行??梢?,算法是處理機(jī)調(diào)度的關(guān)鍵。1.2 處理機(jī)調(diào)度性能準(zhǔn)則處理機(jī)調(diào)度,有許多不問的,不同的調(diào)度算法具有不同的特性。因此,在介紹算法之前,先介紹衡量一個(gè)算法的基本準(zhǔn)則。衡量和比較性能優(yōu)劣主要有一下幾個(gè)因素:(1)CPU利用率。CPU是中最重要的資源,所以應(yīng)盡可能使CPU保持忙,使這一資源利用率最高。(2)。CPU運(yùn)行時(shí)表示系統(tǒng)正處于工作狀態(tài),工作量的大小是以每單位時(shí)間所完成的作

7、業(yè)數(shù)目來描述的,這就叫。(3)。指從作業(yè)提交到作業(yè)完成所經(jīng)過的時(shí)間,包括作業(yè)等待,在就緒中排隊(duì),在處理機(jī)上運(yùn)行以及進(jìn)行輸入/輸出操作所花時(shí)間的總和。(4)等待時(shí)間。處理機(jī)實(shí)際上并不影響作業(yè)執(zhí)行或輸入/輸出操作的時(shí)間,只影響作業(yè)在就緒中等待所花的時(shí)間。因此,衡量一個(gè)優(yōu)劣常常簡(jiǎn)單的考察等待時(shí)間。(5)響應(yīng)時(shí)間。指從作業(yè)提交到系統(tǒng)作出響應(yīng)所經(jīng)過的時(shí)間。在交互式系統(tǒng)中,作業(yè)的并不一定是最好的衡量準(zhǔn)則,因此,常常使用另一種度量準(zhǔn)則,即響應(yīng)時(shí)間。從用戶觀點(diǎn)看,響應(yīng)時(shí)間應(yīng)該快一點(diǎn)好,但這常常要犧牲系統(tǒng)資源利用率為代價(jià)。第2章 系統(tǒng)需求分析 FCFS比較有利于長(zhǎng)作業(yè)SJF比較有利于短作業(yè)和優(yōu)先級(jí)調(diào)度算法僅對(duì)某

8、一類作業(yè)有利,相比之下,它能全面滿足不同類型作業(yè)的需求,較好實(shí)現(xiàn)公平性與資源利用率之間的平衡。對(duì)交互型作業(yè),由于通常較短,這些作業(yè)在第一隊(duì)列規(guī)定的時(shí)間片內(nèi)完成,可使用戶感到滿意;對(duì)短批作業(yè),開始時(shí)在第一隊(duì)列中執(zhí)行一個(gè)時(shí)間片就可完成,便可與交互型作業(yè)一樣獲得快速晌應(yīng),否則通常也僅需在第二、第三隊(duì)列中各執(zhí)行一個(gè)時(shí)間片即可完成,其周轉(zhuǎn)時(shí)間仍較短;對(duì)長(zhǎng)批作業(yè),它們依次在第一至第n個(gè)隊(duì)列中輪番執(zhí)行,不必?fù)?dān)心長(zhǎng)時(shí)間得不到處理。2.1 時(shí)間片輪轉(zhuǎn)調(diào)度算法(RR)的基本思想是:對(duì)就緒隊(duì)列中的每一進(jìn)程分配一個(gè)時(shí)間片,時(shí)間片的長(zhǎng)度q一般從10ms-1100ms不等。把就緒隊(duì)列看成是一個(gè)環(huán)狀結(jié)構(gòu),調(diào)度程序按長(zhǎng)度q輪

9、流調(diào)度就緒隊(duì)列中的每一進(jìn)程,使每一進(jìn)程都有機(jī)會(huì)獲得相同長(zhǎng)度的時(shí)間占用處理機(jī)運(yùn)行。在中,是一種既簡(jiǎn)單又有效的調(diào)度策略。一個(gè)有許多。終端用戶在各自的上同時(shí)使用計(jì)算機(jī)。如果某個(gè)終端用戶的程序長(zhǎng)時(shí)間地占用處理機(jī),那么其他終端用戶的請(qǐng)求就不能得到即時(shí)相應(yīng)。一般說來,終端用戶提出請(qǐng)求后,能在幾秒鐘內(nèi)得到響應(yīng)也就感到滿意了。采用算法,可以使系統(tǒng)即時(shí)地相應(yīng)各終端用戶的請(qǐng)求。的性能極大的依賴于時(shí)間片長(zhǎng)度q的取值,如果時(shí)間片過大。則RR算法就退化為FIFO算法了;反之,如果過小,那么,處理機(jī)在各進(jìn)程之間頻繁轉(zhuǎn)接,處理機(jī)時(shí)間開銷變得很大,而提供給的時(shí)間將大大減少。2.2 短作業(yè)優(yōu)先調(diào)度算法(SJF)根據(jù)估計(jì)運(yùn)行時(shí)間

10、的長(zhǎng)短將各個(gè)進(jìn)程排成一個(gè)隊(duì)列(估計(jì)運(yùn)行時(shí)間最短的進(jìn)程放在對(duì)首)每次運(yùn)行將對(duì)首進(jìn)程投入運(yùn)行,直道運(yùn)行結(jié)束,將此進(jìn)程連接到完成隊(duì)列的隊(duì)尾。然后,再將下一個(gè)對(duì)首投入運(yùn)行,直到所有的進(jìn)程都運(yùn)行完畢。2.3 動(dòng)態(tài)優(yōu)先級(jí)調(diào)度算法進(jìn)程的動(dòng)態(tài)優(yōu)先級(jí)一般根據(jù)以下原則確定:根據(jù)進(jìn)程占用有CPU時(shí)間的長(zhǎng)短來決定。根據(jù)就緒進(jìn)程等待CPU的時(shí)間長(zhǎng)短來決定。第3章 系統(tǒng)總體設(shè)計(jì)3.1 系統(tǒng)功能設(shè)計(jì) 本系統(tǒng)實(shí)現(xiàn)了處理機(jī)調(diào)度??傮w分為3個(gè)模塊:時(shí)間片輪轉(zhuǎn)法、短作業(yè)優(yōu)先算法、動(dòng)態(tài)優(yōu)先級(jí)算法。如圖3-1所示。處理機(jī)調(diào)度程序時(shí)間片輪轉(zhuǎn)法短作業(yè)優(yōu)先算法動(dòng)態(tài)優(yōu)先級(jí)算法圖3-1 系統(tǒng)功能模塊圖3.2 時(shí)間片輪轉(zhuǎn)法設(shè)計(jì)將所有進(jìn)程按照先來先

11、服務(wù)的規(guī)則排成一個(gè)隊(duì)列,把CPU分配給就緒隊(duì)列地對(duì)首進(jìn)程并規(guī)定它的執(zhí)行時(shí)間(稱次時(shí)間為時(shí)間片)當(dāng)時(shí)間片用完但并未執(zhí)行時(shí),剝奪該進(jìn)程的執(zhí)行將其連接到完成隊(duì)列地對(duì)尾。然后在將下一個(gè)進(jìn)程投入運(yùn)行,直到所有的運(yùn)行完畢。時(shí)間片輪轉(zhuǎn)調(diào)度算法如圖3-2所示。3.3 短作業(yè)優(yōu)先算法設(shè)計(jì)短作業(yè)優(yōu)先(SJF, Shortest Job First)又稱為“短進(jìn)程優(yōu)先”(Shortest Process Next);這是對(duì)FCFS算法的改進(jìn),其目標(biāo)是減少平均周轉(zhuǎn)時(shí)間。根據(jù)估計(jì)運(yùn)行時(shí)間的長(zhǎng)短將各個(gè)進(jìn)程排成一個(gè)隊(duì)列(估計(jì)運(yùn)行時(shí)間最短的進(jìn)程放在對(duì)首)每次運(yùn)行將對(duì)首進(jìn)程投入運(yùn)行,直道運(yùn)行結(jié)束,將此進(jìn)程連接到完成隊(duì)列的隊(duì)尾。

12、然后,再將下一個(gè)對(duì)首投入運(yùn)行,直到所有的進(jìn)程都運(yùn)行完畢。3.4 動(dòng)態(tài)優(yōu)先級(jí)算法設(shè)計(jì)動(dòng)態(tài)優(yōu)先級(jí)在時(shí)間片輪轉(zhuǎn)法基礎(chǔ)上完成。將所有進(jìn)程按照先來先服務(wù)的規(guī)則排成一個(gè)隊(duì)列,把CPU分配給就緒隊(duì)列地對(duì)首進(jìn)程并規(guī)定它的執(zhí)行時(shí)間(稱次時(shí)間為時(shí)間片)當(dāng)時(shí)間片用完但并未執(zhí)行時(shí),剝奪該進(jìn)程的執(zhí)行將其連接到完成隊(duì)列地對(duì)尾。然后在將下一個(gè)進(jìn)程投入運(yùn)行,直到所有的運(yùn)行完畢。每個(gè)進(jìn)程的優(yōu)先級(jí)為50-服務(wù)時(shí)間。數(shù)字越小優(yōu)先級(jí)越高,數(shù)字越大優(yōu)先級(jí)則越低。優(yōu)先級(jí)隨著等待時(shí)間的增長(zhǎng)而增高(數(shù)字減?。?。YN開始結(jié)束初始化PCB輸入進(jìn)程插到隊(duì)列中隊(duì)列為空分配時(shí)間片運(yùn)行進(jìn)程把進(jìn)程插入隊(duì)尾運(yùn)行時(shí)間已達(dá)到所需的運(yùn)行時(shí)間完成圖3-2 時(shí)間片輪

13、轉(zhuǎn)法第4章 系統(tǒng)實(shí)現(xiàn)4.1 時(shí)間片輪轉(zhuǎn)法實(shí)現(xiàn)將系統(tǒng)中所有的就緒進(jìn)程按照FCFS原則,排成一個(gè)。然后輪流執(zhí)行進(jìn)程。執(zhí)行過程如圖4-1所示。圖4-1 時(shí)間片輪轉(zhuǎn)法時(shí)間片輪轉(zhuǎn)法代碼如下:typedef struct node char name20; /*進(jìn)程的名字*/ int prio; /*進(jìn)程的優(yōu)先級(jí)*/ int round; /*分配CPU的時(shí)間片*/ int cputime; /*CPU執(zhí)行時(shí)間*/ int needtime; /*進(jìn)程執(zhí)行所需要的時(shí)間*/ char state; /*進(jìn)程的狀態(tài),W就緒態(tài),R執(zhí)行態(tài),F(xiàn)完成態(tài)*/ int count; /*記錄執(zhí)行的次數(shù)*/ struct

14、node *next; /*鏈表指針*/ PCB; PCB *ready=NULL,*run=NULL,*finish=NULL; void Clear()ready=NULL;run=NULL;finish=NULL;void GetFirst() /*取得第一個(gè)就緒隊(duì)列節(jié)點(diǎn)*/ run = ready;if(ready!=NULL) run -state = R;ready = ready -next; run -next = NULL; void Output() /*輸出隊(duì)列信息*/ PCB *p;p = ready;printf(進(jìn)程名t優(yōu)先級(jí)t輪數(shù)tcpu時(shí)間t需要時(shí)間t進(jìn)程狀態(tài)t

15、計(jì)數(shù)器n); while(p!=NULL) printf(%st%dt%dt%dt%dtt%ctt%dn,p-name,p-prio,p-round,p-cputime,p-needtime,p-state,p-count); p = p-next; p = finish; while(p!=NULL) printf(%st%dt%dt%dt%dtt%ctt%dn,p-name,p-prio,p-round,p-cputime,p-needtime,p-state,p-count); p = p-next; p = run; while(p!=NULL) printf(%st%dt%dt%dt

16、%dtt%ctt%dn,p-name,p-prio,p-round,p-cputime,p-needtime,p-state,p-count); p = p-next; void InsertPrio(PCB *in) /*創(chuàng)建優(yōu)先級(jí)隊(duì)列,規(guī)定優(yōu)先數(shù)越小,優(yōu)先級(jí)越低*/ PCB *fst,*nxt;fst = nxt = ready; if(ready = NULL)in-next = ready;ready = in; else if(in -prio = fst -prio)in-next = ready; ready = in; elsewhile(fst-next != NULL) n

17、xt = fst;fst = fst-next; if(fst -next = NULL) in -next = fst -next;fst -next = in; else nxt = in; in -next = fst; void InsertTime(PCB *in) /*將進(jìn)程插入到就緒隊(duì)列尾部*/ PCB *fst;fst = ready; if(ready = NULL)in-next = ready;ready = in; elsewhile(fst-next != NULL) fst = fst-next;in -next = fst -next;fst -next = in

18、; void InsertFinish(PCB *in) /*將進(jìn)程插入到完成隊(duì)列尾部*/ PCB *fst;fst = finish;if(finish = NULL)in-next = finish;finish = in; elsewhile(fst-next != NULL)fst = fst-next; in -next = fst -next;fst -next = in; void TimeCreate(int num) /*時(shí)間片輸入函數(shù)*/ PCB *tmp;int i;printf(輸入進(jìn)程名字和進(jìn)程時(shí)間片所需時(shí)間:n); for(i = 0;i name); getcha

19、r(); scanf(%d,&(tmp-needtime); tmp -cputime = 0; tmp -state =W; tmp -prio = 0; tmp -round = 2; tmp -count = 0; InsertTime(tmp); void RoundRun() /*時(shí)間片輪轉(zhuǎn)調(diào)度算法*/ int flag = 1;GetFirst(); while(run != NULL)Output(); while(flag)run-count+; run-cputime+; run-needtime-; if(run-needtime = 0) run -state = F;

20、InsertFinish(run); flag = 0; else if(run-count = run-round) run-state = W; run-count = 0; InsertTime(run); flag = 0; flag = 1; GetFirst(); 4.2 短作業(yè)優(yōu)先算法實(shí)現(xiàn)短作業(yè)優(yōu)先算法是對(duì)FCFS算法的改進(jìn),其目標(biāo)是減少平均周轉(zhuǎn)時(shí)間。該算法對(duì)預(yù)計(jì)執(zhí)行時(shí)間短的作業(yè)(進(jìn)程)優(yōu)先分派。通常后來的短作業(yè)不搶先正在執(zhí)行的作業(yè)。執(zhí)行過程如圖4-2所示。圖4-2 短作業(yè)優(yōu)先短作業(yè)優(yōu)先算法代碼如下:struct sjfint jobnumber;float submittime

21、;float runtime;float starttime;float finishtime;float waittime;float turnaroundtime;temp;static struct sjf stM;void input(struct sjf *p,int N)int i;printf(請(qǐng)輸入進(jìn)程名、到達(dá)時(shí)間、服務(wù)時(shí)間:n(例如:1 2 3)n);for(i=0;iN;i+)scanf(%d%f%f,&pi.jobnumber,&pi.submittime,&pi.runtime);void print(struct sjf *p,int N)int k;float h=

22、0,g;printf(run order:);printf(%d,p0.jobnumber); for(k=1;k%d,pk.jobnumber); printf(nThe processs information:n); printf(njobnumtsubmittruntstarttfinaltwaittturnaroundn); for(k=0;kN;k+) h+=pk.turnaroundtime; printf(%dt%-.1ft%-.1ft%-.1ft%-.1ft%-.1ft%-.1ftn,pk.jobnumber,pk.submittime,pk.runtime,pk.start

23、time,pk.finishtime,pk.waittime,pk.turnaroundtime); g=h/N; printf(nThe average turnaround time is %-.2fn,g);/按提交時(shí)間從小到大排序void sort1(struct sjf *p,int N)int i,j;for(i=0;iN;i+)for(j=0;j=i;j+)if(pi.submittimepj.submittime)temp=pi;pi=pj;pj=temp;/運(yùn)行void deal(struct sjf *p,int N)int k;for(k=0;kpk-1.finishti

24、me)pk.starttime=pk.submittime;pk.finishtime=pk.submittime+pk.runtime;elsepk.starttime=pk-1.finishtime;pk.finishtime=pk-1.finishtime+pk.runtime;for(k=0;kN;k+)pk.turnaroundtime=pk.finishtime-pk.submittime; pk.waittime=pk.starttime-pk.submittime; void sort2(struct sjf *p,int N)int next,m,n,k,i;float mi

25、n;sort1(p,N);for(m=0;mpm-1.finishtime)pm.finishtime=pm.submittime+pm.runtime;elsepm.finishtime=pm-1.finishtime+pm.runtime; for(n=m+1;nN;n+) if(pn.submittime=pm.finishtime) i+; min=pm+1.runtime; next=m+1; for(k=m+1;km+i;k+) if(pk+1.runtimemin)min=pk+1.runtime;next=k+1; temp=pm+1; pm+1=pnext; pnext=te

26、mp;deal(p,N);print(p,N); 4.3 動(dòng)態(tài)優(yōu)先級(jí)算法實(shí)現(xiàn)動(dòng)態(tài)優(yōu)先級(jí)算法中優(yōu)先級(jí)根據(jù)進(jìn)程占用有CPU時(shí)間的長(zhǎng)短來決定,占用時(shí)間越長(zhǎng),優(yōu)先級(jí)越低。優(yōu)先級(jí)隨等待時(shí)間增加而增長(zhǎng)。執(zhí)行過程如圖4-3所示。圖4-3 動(dòng)態(tài)優(yōu)先級(jí)動(dòng)態(tài)優(yōu)先級(jí)算法代碼如下:void PrioCreate(int num) /*優(yōu)先級(jí)調(diào)度輸入函數(shù)*/ PCB *tmp; int i;printf(輸入進(jìn)程名字和進(jìn)程所需時(shí)間:n); for(i = 0;i name); getchar(); scanf(%d,&(tmp-needtime); tmp -cputime = 0; tmp -state =W; tm

27、p -prio = 50 - tmp-needtime; tmp -round = 0; tmp -count = 0; InsertPrio(tmp); void Priority() /*按照優(yōu)先級(jí)調(diào)度,每次執(zhí)行一個(gè)時(shí)間片*/ int flag = 1;GetFirst();while(run != NULL) Output(); while(flag) run-prio -= 3; run-cputime+; run-needtime-; if(run-needtime = 0) run -state = F; run-count+; InsertFinish(run); flag = 0; else run-state = W; run-count+; InsertTime(run); flag = 0; flag = 1; GetFirst(); 第5章 系統(tǒng)使用說明本系統(tǒng)初步模擬了處理機(jī)調(diào)度的幾種基本算法:時(shí)間片輪轉(zhuǎn)法、短作業(yè)優(yōu)先、動(dòng)態(tài)優(yōu)先級(jí)。時(shí)間片輪轉(zhuǎn)法將系統(tǒng)中所有的就緒進(jìn)程按照FCFS原則,排成一個(gè)。每次調(diào)度時(shí)將CPU分派給隊(duì)首進(jìn)程,讓其執(zhí)行一個(gè)時(shí)間片。時(shí)間片的長(zhǎng)度從幾

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論