計算機操作系統(tǒng)處理機調(diào)度實驗報告_第1頁
計算機操作系統(tǒng)處理機調(diào)度實驗報告_第2頁
計算機操作系統(tǒng)處理機調(diào)度實驗報告_第3頁
計算機操作系統(tǒng)處理機調(diào)度實驗報告_第4頁
計算機操作系統(tǒng)處理機調(diào)度實驗報告_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、計算機操作系統(tǒng)-處理機調(diào)度實驗報告中南大學(xué)實驗名稱:處理機調(diào)度課程名稱:計算機操作系統(tǒng)學(xué)生姓名盛希玲學(xué)號Q0903060215Q學(xué)院信息科學(xué)與工程學(xué)院專業(yè)班級電子信息工程0602口完成時間口2008年10月12日目錄實驗內(nèi)容口(2)二實驗?zāi)康腝(2)三實驗題目(2)四基本思想(2)五算法分析(2)六流程圖(3)七算法描述(4)八運行輸出結(jié)果口(9)實驗內(nèi)容選擇個調(diào)度算法,實現(xiàn)處理機調(diào)度。二實驗?zāi)康亩嗟老到y(tǒng)中,當(dāng)就緒進(jìn)程數(shù)大于處理機數(shù)時,須按照某種策略決定哪些進(jìn)程優(yōu)先占用處理機。本實驗?zāi)M實現(xiàn)處理機調(diào)度,以加深了解處理機調(diào)度的工作。三實驗題目設(shè)計一個按優(yōu)先權(quán)調(diào)度和時間片輪轉(zhuǎn)算法實現(xiàn)處理機調(diào)度的程

2、序。四基本思想先選擇時間片的個數(shù)和每個時間片需要的時間,正在運行的進(jìn)程每運行一秒其優(yōu)先權(quán)數(shù)目加一,即其優(yōu)先權(quán)減小。每個時間片運行結(jié)束后,選擇進(jìn)入時間片進(jìn)程優(yōu)先權(quán)數(shù)目最小的進(jìn)程,開始下一個時間片的運行。如果有進(jìn)程運行結(jié)束,則離開,再在就緒隊列中選擇優(yōu)先權(quán)數(shù)目最小的進(jìn)程進(jìn)入。在運行期間,如果有新的進(jìn)程來到,按優(yōu)先權(quán)大小放入就緒隊列中。五算法分析定義一個結(jié)構(gòu)體,此包含了PCB的信息:structPCBcharPID5;/*進(jìn)程名*/intneedtime;/*要求運行的時間*/intcputime;/*已運行時間*/int叩riority叩/*優(yōu)先權(quán)(越小越高)*/intstarttime;/*進(jìn)入

3、就緒隊列的時間*/intovertime;/*運行完成的時間*/intstate;/*狀態(tài):1就緒2運行3完成*/structPCB*next;子函數(shù)structPCB*create(intnum,intn用來建立一個按優(yōu)先級大小排列的就緒進(jìn)程鏈表和一個按時間先后循序排列的將進(jìn)入就緒進(jìn)程的鏈表。幵始是否丿T始運行結(jié)束攣否所有詵程區(qū)毎結(jié)束是否有新進(jìn)程進(jìn)入就緒臥列時佃卄黠束,是否就緒進(jìn)稈馭列不為零main()函數(shù)中用-while循環(huán)輸出進(jìn)入時間片的進(jìn)程狀態(tài)。六流程圖#defineLENsizeof(structPCB)七算法描述#defineNULL0訓(xùn)用紋Ml)増數(shù)*初始化進(jìn)產(chǎn)PCB,齊進(jìn)程按優(yōu)

4、先級丼序按優(yōu)先級選擇緒隊兄中it程散入時間片運轉(zhuǎn)運行,毎運行一秒為先權(quán)和已運冇時間眈-將進(jìn)入就緒隊列的進(jìn)程#includestdio.h#includestdlib.hstructPCBcharPID5;/*進(jìn)程名*/intneedtime;/*要求運行的時間*/intcputime;/*已運行時間*/intpriority;/*優(yōu)先權(quán)(越小越高)*/intstarttime;/進(jìn)入就緒隊列的時間*/intovertime;/*運行完成的時間*/intstate;/*狀態(tài):1就緒2運行3完成*/structPCB*next;structPCB*create(intnum,intn)/*創(chuàng)建進(jìn)程

5、,并將進(jìn)程按優(yōu)先級順序插入隊列中*/structPCB*head,*p,*p1,*p2;inti;head=NULL;/*頭指針指零*/for(i=1;iPID);printf(要求運行的時間;/*輸入要運行的時間*/scanf(%d,&p-needtime);p-cputime=O;/*占用處理機的時間賦為零*/printf(優(yōu)先權(quán):”);/*輸入優(yōu)先權(quán)*/scanf(%d,&p-priority);if(n=1)p-starttime=O;/*進(jìn)入就緒隊列的時間賦為零*/elseprintf(”進(jìn)入就緒隊列時間:”);/*輸入進(jìn)入就緒隊列的時間*/scanf(%d,&p-starttime

6、);p-overtime=-1;/*運行沒有結(jié)束所以運行完成的時間賦為-1*/p-state=1;/*狀態(tài)賦為就緒狀態(tài)*/p1=head;/*p1指針指向頭指針*/if(head=NULL)/*如果頭指針為零將頭指針指向新建立的進(jìn)程*/head=p;head-next=NULL;else/*頭指針不為零的情況*/if(n=1)while(p1!=NULL&p-priorityp1-priority)/*查找插入點*/p2=p1;p1=p1-next;elsewhile(p1!=NULL&p-starttimep1-starttime)/*查找插入點*/p2=p1;p1=p1-next;if(h

7、ead=p1)/*優(yōu)先權(quán)的值最小作為表頭*/p-next=head;p2=head=p;else/*否則的話插入*/p2-next=p;p-next=p1;return(head);voidmain()charnow5;intcho,num,num1,timepiece,time,i,j,k,flag,choo,clock=0;structPCB*head,*head1,*over,*later,*l,*l1,*l2,*p,*p0,*p1,*p2,*q,*q1,*q2,*q3;over=NULL;printf(”初始化進(jìn)程.n);printf(輸入總的就緒進(jìn)程數(shù):);scanf(%d,&num

8、);head=create(num,1);/*建立就緒進(jìn)程的鏈表*/printf(輸入將會就緒的進(jìn)程數(shù):”);scanf(%d,&num1);/*建立將會進(jìn)入就緒進(jìn)程的鏈表*/later=create(num1,2);printf(cpu是否開始運行:1是2不是-);scanf(%d,&cho);if(cho=1)/*處理機開始進(jìn)行調(diào)度*/printf(現(xiàn)在的時間是:”);scanf(%s,now);printf(顯示所有就緒的進(jìn)程:n);p2=head;printf(進(jìn)程名t要求運行時間t已運行時間t優(yōu)先權(quán)t狀態(tài)(1就緒2運行3結(jié)束)n);while(p2!=NULL)printf(%st%

9、dtt%dtt%dt%dn,p2-PID,p2-needtime,p2-cputime,p2-priority,p2-state);p2=p2-next;printf(請輸入時間片總數(shù):”);scanf(%d,&timepiece);printf(”請輸入時間片的時間:”);scanf(%d,&time);printf(”運行正式開始!n);head1=head;printf(tt進(jìn)程名t要求運行時間t已運行時間t優(yōu)先權(quán)t狀態(tài)n);for(i=1;inext;elsebreak;p-next=NULL;while(head1!=NULL)/*就緒進(jìn)程頭指針不為零就循環(huán)*/head1-state

10、=2;/*狀態(tài):1就緒2運行3完成*/for(j=1;jstarttime)/*如果將進(jìn)入就緒隊列的進(jìn)程時間到達(dá)加入就緒隊列*/l=later;l1=head;later=later-next;if(head=NULL)head=l;head-next=NULL;elsewhile(l1!=NULL&l1-prioritypriority)l2=l1;l1=l1-next;if(l1=head)l-next=head;head=l;elsel2-next=l;l-next=l1;flag=0;printf(n%3d秒時間片第小秒”,clock,j);q=head1;if(head1-needt

11、imehead1-cputime)/*以運行時間和優(yōu)先權(quán)都加1*/head1-cputime+;head1-priority+;while(q)/*運行隊列不為零輸出其信息*/if(q=head1)printf(%st%dtt%dtt%dt%dn,q-PID,q-needtime,q-cputime,q-priority,q-state);elseprintf(tt%st%dtt%dtt%dt%dn,q-PID,q-needtime,q-cputime,q-priority,q-state);q=q-next;if(head1-needtime=head1-cputime)/*運行完成將其放入

12、over為頭指針的鏈表中*/head1-state=3;head1-overtime=clock;if(over=NULL)over=head1;head1=head1-next;over-next=NULL;elseif(over!=NULL&head1!=NULL)p1=head1-next;p0=over;over=head1;over-next=p0;head1=p1;flag=1;if(flag=1)break;if(flag=1)/*有進(jìn)程結(jié)束的情況*/if(head!=NULL)/僦緒隊列不為零將優(yōu)先權(quán)最高的放入運行鏈表中7q1=head;head=head-next;q2=he

13、ad1;while(q2!=NULL&q2-prioritypriority)q3=q2;q2=q2-next;if(q2=head1)q1-next=head1;head1=q1;elseq3-next=q1;q1-next=q2;else/*無進(jìn)程結(jié)束的情況,尋找優(yōu)先權(quán)最高的運行*/head1-state=1;q1=head1;head1=head1-next;q2=head1;while(q2!=NULL&q2-prioritypriority)q3=q2;q2=q2-next;if(q2=head1)q1-next=head1;head1=q1;elseq3-next=q1;q1-ne

14、xt=q2;printf(cpu纟吉束運行!n);printf(是否輸出所有結(jié)束的進(jìn)程:1是2不是-);scanf(%d,&choo);if(choo=1)/*輸出所有完成運行的進(jìn)程*/printf(開始時間sn,now);printf(進(jìn)程名t要求運行時間t進(jìn)入就緒隊列的時間t運行完成的時間n);while(over!=NULL)printf(%st%dtt%dttt%dn,over-PID,over-needtime,over-starttime,over-overtime);over=over-next;八運行輸出結(jié)果初始化進(jìn)程如右圖-npq:3rrrr;c5;r?t4松一他狗24酷=6

15、=顯示現(xiàn)在的時間和所有就緒的進(jìn)程輸入時間片的總數(shù)和每個時間片的時間g操件系統(tǒng)Debngchiilij迅ezer優(yōu)先權(quán)1215已運行曲何E0心任旳時冋是:9:00巫匝有就統(tǒng)的逬程:要求運行時間卡土E心3狀態(tài)就礬運仁結(jié)和1101610171時時Ld運行時顯示的信息已運行時間c:抿作至統(tǒng)Debugchulijidiaodu.exe43444544533434535553G0000o40n0404422423222222222211224?76?7785656556666666556i1867111優(yōu)庭行正式開始?進(jìn)程名丄秒時間片篥秒卡巴QQ酷狗2秒時間片第2秒卡巳QQ酷狗3秒時間片第1秒卡巴QQ輛可4秒時閭片笫2秒卡巴QQ酷狗石秒時間片第i秒QQG秒?yún)糏間片第2秒QQ酷狗卡巴7秒時間片第丄秒匏QQ8秒時閭片第2秒電狗卡巴QQ9秒時間片篥秒卡巴QQ酷狗訶秒E寸間片第1秒詞霸QQ酷狗2b*E:作系統(tǒng)Debugchulijidiaodu.exe過秒?yún)紎可片第2秒詞朝QQ酷狗

溫馨提示

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

評論

0/150

提交評論