計算機操作系統(tǒng)進程調(diào)度算法的實現(xiàn)_第1頁
計算機操作系統(tǒng)進程調(diào)度算法的實現(xiàn)_第2頁
計算機操作系統(tǒng)進程調(diào)度算法的實現(xiàn)_第3頁
計算機操作系統(tǒng)進程調(diào)度算法的實現(xiàn)_第4頁
計算機操作系統(tǒng)進程調(diào)度算法的實現(xiàn)_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、題目2進程調(diào)度算法的實現(xiàn)2.1題目的主要研究內(nèi)容及預期達到的目標(1)設計進程控制塊;(2)設計多個進程隊列;(3)設計多個進程(m20);(4)動態(tài)生成時間片、執(zhí)行時間和優(yōu)先級,將這些信息輸出至文件屮;(5)設計基于時間片的多優(yōu)先級調(diào)度算法;(6)動態(tài)調(diào)度,并把所冇調(diào)度信息輸出至文件中。(7)理解進程調(diào)度相關理論;(8)掌握時間片調(diào)度原理;(9)掌握高優(yōu)先級調(diào)度原理。2.2題目研究的工作基礎或?qū)嶒灄l件(1)碩件環(huán)境:裝有l(wèi)inux操作系統(tǒng)(虛擬機)的計算機一臺。(2)軟件環(huán)境:vim編輯器、visual c卄。2.3設計思想(1)優(yōu)先級優(yōu)先級體現(xiàn)了進程的重要程度或緊迫程度,在大多數(shù)現(xiàn)代操作系

2、統(tǒng)屮,都 采用了優(yōu)先級調(diào)度策略。優(yōu)先級從小到大(如0-127), 0優(yōu)先級最高,127最 低。在本實驗中,要求優(yōu)先級為0-8。(2)基于吋間片調(diào)度將所有的就緒進程按照先來先服務的原則,排成一個隊列,每次調(diào)度時, 將cpu分配給隊首進程,并令其執(zhí)行一個時間片。當時間片用完時,由一個計時 器發(fā)出時鐘中斷請求,調(diào)度程序把此進程終止,把該進程放到隊尾。(3)高優(yōu)先級調(diào)度優(yōu)先級高的進程優(yōu)先得到cpu,等該進程執(zhí)行完畢后,另外的進程才能執(zhí) 行。(4)基于時間片的高優(yōu)先級調(diào)度時間片和優(yōu)先級調(diào)度的結(jié)合,在系統(tǒng)中,每個優(yōu)先級對應一個就緒隊列,在每個就緒隊列內(nèi),采用時間片調(diào)度。當高優(yōu)先級進程隊列調(diào)度完成后,才能轉(zhuǎn)

3、 入更低優(yōu)先級的就緒隊列調(diào)度。(5)算法設計將所有的就緒進程按照先來先服務的原則,排成一個隊列,每次調(diào)度吋, 將cpu分配給隊首進程,并令其執(zhí)行一個時間片。當時間片用完時,由一個計時 器發(fā)出時鐘屮斷請求,調(diào)度程序把此進程終止,把該進程放到隊尾。優(yōu)先級高的 進程優(yōu)先得到cpu,等該進程執(zhí)行完畢后,另外的進程才能執(zhí)行。時間片和優(yōu)先 級調(diào)度的結(jié)合,在系統(tǒng)中,每個優(yōu)先級對應一個就緒隊列,在每個就緒隊列內(nèi), 采用吋間片調(diào)度。當高優(yōu)先級進程隊列調(diào)度完成后,才能轉(zhuǎn)入更低優(yōu)先級的就緒 隊列調(diào)度。2.4流程圖2.5主要程序代碼# include<iostream># include<stdli

4、b.h>/#includc<malloc.h>using namespace std;/#define null 0typcdcfstruct pcb/定義進程結(jié)構(gòu)體char name;/進程名struct pcb *next;double arrive_time;/到達時間double nccd_timc;/需求運行時間double worked_time;/ 已工作時間intpnumber;/ 優(yōu)先數(shù)char condition;/隊列標識pcb,*linklist;voidcreatpcb(linklist *a,int n)cout«,r請輸入進程名/到達時

5、間/要求運行時間/優(yōu)先數(shù)n«endl;for(int i=0;ivn;i+)cin»ai->name»ai->arrive_time»ai->need_time»ai->pnumber;/a,-iw體匹配ai->condition='d'表示還未加入就緒隊列的標志ai->worked_time=oy/worked_time 的初始值為 0 int judge(linklist *a,int n)判斷所有進程是否都結(jié)束 int flag_l=l;for(int i=0;i<n;i+)if(

6、a i ->condition!='f)1=0;break;return flag_l;void creat_process(linklist *a,int n)計算并輸出調(diào)度結(jié)果double time=0;/已運行的總時間linklistl,p,r;/ 定義對象l=(linklist)malloc(sizeof(pcb);/ 強制轉(zhuǎn)換l->next = null ;/1 的卜 一個節(jié)點為 nullint flag_l =();/標識while(flag_l !=1)for(int i=0;i<n;i+)int flag=0;if (timc>=ai->a

7、rrivc_time&&(ai->condition='d'llai->condition='x')/ 判斷 進程是否到達,是否是剛執(zhí)行過或未加入的,兩者都是執(zhí)行目的是排出等待序列p=(linklist)malloc(sizeof(pcb);p=ai;p->next=null; if(l->ncxt=null)ext=p;p->condition='w,;elser=l;while(r->next)if(r->next->pnumber)>p->pnumber) 判斷優(yōu)先級交換p

8、->next=r->next;ext=p;flag二 i;ail->condition= w1;break;elser=r->next;if(flag=0) r->next=p;aij->condition=w,;r=l->next;/lcout«n就緒隊列是:”;whiled) 輸出就緒隊列cout«r->namc«"r=r->next;cout«endl;cout«h正在運行的是r=l->ncxt;cout«r->name«endl;r->

9、pnumber=r->pnumber+8;/防止出現(xiàn)多個同一時間點的程序只有兩個程序交替進 行r->workcd_timc+;/已運行的程序工作時間+1timc+;r>condition='x'標識,用于判斷if(r->worked_tinie=r->need_time)r->condition='f;表示已經(jīng)運彳亍完的標志cout«r->name«"已經(jīng)運彳亍完成! "«endl;l->next=r->next;/f進程移到卜一個 1flag_l=judge(a,n

10、);判斷進程是否都完成iint main()int n;coutvv“請輸入進程個數(shù)n: “;cin»n;linklist *a=new linklistnj;/申請新的鏈表 aijfor(int i=0;i<n;i+)ai=(linklist)malloc(sizeof(pcb);/對 sizeof(pcb)進行強制轉(zhuǎn)換(結(jié)構(gòu)體的類型)creatpcb(a,n);/輸 入函數(shù)creat_process(a,n);/ii* 算并輸 ih 調(diào)度結(jié)果2.6運行結(jié)果及分析tang)ubuntu: -/os/jinchengdiaodutangubuntu:$ cd os/jinche

11、ngdiaodu/ tangubuntu:/os/jincrengdiaodu$ is atangubuntu:-/os/jinchengdiaodu$ ./a 請輸入進程個數(shù)n : 20a.cpp a.out h.cpp h.cpp- 無標題文檔 請輸入進程名/到達時間要求運行時間/優(yōu)先數(shù)abcd0000112223634926520 411 565358klmn0pqrst34777889945552332126863553410 4 5就緒隊列是:b a d c 正在運行的是:b就緒隊列是:e a d f c g 正在運行的是:e就緒隊列是:h i a d f j 正在運行的是:h就緒隊

12、列是:k i a d f j 正在運行的是:k就緒隊列是:i a d f j c 正在運行的是:i就緒隊列是:a d f j c l 正在運行的是:a正在運行的是:a就緒隊列是:dfjclgbhkeia正在運行的是:d就緒隊列是:ofjclngmbhkeiad正在運行的是:o就緒隊列是:fjpqclngmbhkeoiad 正在運行的是:f就緒隊列是:rsjpqclngmbhkeoiadf 正在運行的是:r就緒隊列是:sjpqtclngmbhkeoriadf正在運行的是:ss已經(jīng)運行完成!就緒隊列是:jpqtclngmbhkeoriadf 正在運行的是:j就緒隊列是:pqtclngmbhkeor

13、iadfj 正在運行的是:p就緒隊列是:qtclngmbhkeoriadfjp 正在運行的是:q就緒隊列是:tclngmbhke0r1adfjpq 正在運行的是:t就緒隊列是:clngmbhkeoriadfjpqt正在運行的是:c就緒隊列是:lngmbhkeoriadfjpqtc 正在運行的是:l就緒隊列是:ngmbhkeoriadfjpqtcl 正在運行的是:n就緒隊列是:gmbhkeoriadfjpqtcln 正在運行的是:g就緒隊列是:mbhke0r1adfjpqtclng 正在運行的是:m就緒隊列是:bhkeoriadfjpqtclngm 正在運行的是:b就緒隊列是:hkeoriadf

14、jpqtclngmb 正在運行的是:h就緒隊列是:keoriadfjpqtclngmbh 正在運行的是:k就緒隊列是:eoriadfjpqtclngmbhk 正在運行的是:e就緒隊列是:oriadfjpqtclngmbhke 正在運行的是:oo已經(jīng)運行完成!就緒隊列是:riadfjpqtclngmbhke 正在運行的是:rr已經(jīng)運行完成!就緒隊列是:iadfjpqtclngmbhke正在運行的是:i就緒隊列是:adfjpqtclngmbhkei正在運行的是:a就緒隊列是:dfjpqtclngmbhkeia正在運行的是:d就緒隊列是:fjpqtclngmbhkeiad正在運行的是:ff已經(jīng)運行完

15、成!就緒隊列是:jpqtclngmbhkeiad正在運行的是:j就緒隊列是:pqtclngmbhkeiadj正在運行的是:p就緒隊列是:qtclngmbhke1adjp正在運行的是:q就緒隊列是:tclngmbhkeiadjpq正在運行的是:t就緒隊列是:clngmbhkeiadjpqt正在運行的是:c就緒隊列是:lngmbhkeiadjpqtc正在運行的是:l就緒隊列是:ngmbhkeiadjpqtcl正在運行的是:n就緒隊列是:gmbhkeiadjpqtcln正在運行的是:g就緒隊列是:mbhkeiadjpqtclng 正在運行的是:m就緒隊列是:bhkeiadjpqtclngm正在運行的

16、是:b就緒隊列是:hkeiadjpqtclngmb正在運行的是:h就緒隊列是:keiadjpqtclngmbh正在運行的是:k就緒隊列是:eiadjpqtclngmbhk 正在運行的是:e就緒隊列是:iadjpqtclngmbhke正在運行的是:i就緒隊列是:adjpqtclngmbhkei正在運行的是:aa已經(jīng)運行完成!就緒隊列是:djpqtclngmbhkei正在運行的是:d就緒隊列是:jpqtclngmbhkeid正在運行的是:j就緒隊列是:pqtclngmbhke1dj正在運行的是:pp已經(jīng)運行完成!就緒隊列是:qtclngmbhkeid j正在運行的是:qq己經(jīng)運行完成!就緒隊列是:

17、tclngmbhkeidj正在運行的是:t就緒隊列是:clngmbhkeidjt 正在運行的是:cc已經(jīng)運行完成!就緒隊列是:lngmbhkeidjt 正在運行的是:l就緒隊列是:ngmbhkeidjtl 正在運行的是:n就緒隊列是:gmbhkeid jtln 正在運行的是:g就緒隊列是:mbhkeidjtlng 正在運行的是:m就緒隊列是:bhkeidjtlngm 正在運行的是:b就緒隊列是:hkeidjtlngmb 正在運行的是:h就緒隊列是:keid jtlngmb h 正在運行的是:kki2經(jīng)運行完成!就緒隊列是:eid jtlngmbh正在運行的是:e就緒隊列是:1djtlngmbh

18、e正在運行的是:i就緒隊列是:djtlngmbhei正在運行的是:dd己經(jīng)運行完成!就緒隊列是:jtlngmbhei 正在運行的是:j就緒隊列是:tlngmbheij正在運行的是:tt已經(jīng)運行完成!就緒隊列是:lngmb heij正在運行的是:l就緒隊列是:ngmbheijl正在運行的是:n就緒隊列是:gmbheijln正在運行的是:g就緒隊列是:mbheijlng正在運行的是:m就緒隊列是:b hei jlngm正在運行的是:b就緒隊列是:heijlngmb正在運行的是:hh已經(jīng)運行完成!就緒隊列是:eijlngmb 正在運行的是:e 就緒隊列是:ijlngmbe 正在運行的是:i 就緒隊列是:jlngmbei 正在運行的是:j 就緒隊列是:lngmbeij 正在運行的是:l lu經(jīng)運行完成! 就緒隊列是:ngmbeij 正在運行的是:n n己經(jīng)運行完成! 就緒隊列是:gmbeij 正在運行的是:g 就緒隊列是:mbeijg 正在運行的是:m m已經(jīng)運行完成! 就緒隊列是:beijg 正在運行的是:b b已經(jīng)運行完成! 就緒隊列是:e i j g 正在運行的是:e 就緒隊列是:i j g e 正在運行的是:i 就緒隊列

溫馨提示

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

評論

0/150

提交評論