進程調(diào)度算法磁盤調(diào)度算法銀行家算法操作系統(tǒng)課程設(shè)_第1頁
進程調(diào)度算法磁盤調(diào)度算法銀行家算法操作系統(tǒng)課程設(shè)_第2頁
進程調(diào)度算法磁盤調(diào)度算法銀行家算法操作系統(tǒng)課程設(shè)_第3頁
免費預(yù)覽已結(jié)束,剩余14頁可下載查看

下載本文檔

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

文檔簡介

1、操作系統(tǒng)課程設(shè)計說明書學(xué)院名稱:專業(yè)班級:姓 名:學(xué) 號:2013年1月1日評分標準優(yōu)秀:有完整的符合標準的文檔,文檔有條理、文筆通順,格式正確,程序完 全實現(xiàn)設(shè)計要求,獨立完成;良好:有完整的符合標準的文檔,文檔有條理、文筆通順,格式正確;程序完 全實現(xiàn)設(shè)計要求,獨立完成,但存在少量錯誤;中等:有完整的符合標準的文檔,有基本實現(xiàn)設(shè)計方案的軟件,設(shè)計方案正確;及格:有完整的符合標準的文檔,有基本實現(xiàn)設(shè)計方案的軟件,設(shè)計方案基本 正確;不及格:沒有完整的符合標準的文檔,軟件沒有基本實現(xiàn)設(shè)計方案,設(shè)計方案 不正確。沒有獨立完成,抄襲或雷同。成績評定為:。指導(dǎo)教師:年 月 日目錄一進程調(diào)度算法4-2

2、3 頁二銀行家算法24-34 頁三磁盤調(diào)度算法35-46 頁進程調(diào)度算法1設(shè)計目的在多道程序設(shè)計中,經(jīng)常是若干個進程同時處于就緒狀態(tài),必須依照某種策 略決定哪個進程優(yōu)先占有處理機,因而必須解決進程調(diào)度的問題,進程調(diào)度 算法就是要解決進程調(diào)度的問題。2. 任務(wù)及要求2.1 設(shè)計任務(wù)設(shè)計程序來模擬進程的四種調(diào)度算法,模擬實現(xiàn)調(diào)度的基本功能。2.2 設(shè)計要求產(chǎn)生的各種隨機數(shù)要加以限制,如 alltime 限制在 40 以內(nèi)的整數(shù)。 進程的數(shù)量 n 不能取值過大。3. 算法及數(shù)據(jù)結(jié)構(gòu)3.1 算法的總體思想(流程)每個用來標識進程的進程控制塊 PCB 用結(jié)構(gòu)來描述,包括以下字段:(1) 進程優(yōu)先數(shù)ID,

3、其中0為閑逛進程,用戶進程的標識數(shù)為1,2, 3'(2) 進程優(yōu)先級Priority,閑逛進程(idle)的優(yōu)先級為0,用戶進程的優(yōu)先級大于 0,且隨機產(chǎn)生,優(yōu)先數(shù)越大,優(yōu)先級越高。(3) 進程占用的CPU時間CPUtime,進程每運行一次,累計值等于 4。( 4)進程總共需要運行時間 Alltime ,利用隨機函數(shù)產(chǎn)生。( 5)進程狀態(tài), 0:就緒態(tài); 1 :運行態(tài); 2:阻塞態(tài)。利用鏈表將數(shù)據(jù)連接起來,實現(xiàn)數(shù)據(jù)的存儲。3.2 鏈表模塊3.2.1 功能 實現(xiàn)鏈表的存儲功能,以及實現(xiàn)存儲的查找功能。3.2.2 數(shù)據(jù)結(jié)構(gòu)度。構(gòu)造鏈表這個數(shù)據(jù)結(jié)構(gòu),以及鏈表的初始化,鏈表的插入,鏈表的長3.

4、2.3 算法typedef structElemType *elem;intlength;intlistsize;SqList;Status InitList(SqList &l)l.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType);if(!l.elem) exit(OVERFLOW);l.length=0;l.listsize=LIST_INIT_SIZE;return OK;int ListLength(SqList l)return(l.length);Status ListInsert_Sq(SqList &L

5、,int i, ElemType e)/ 在順序表 L 的第 i 個位置前插入元素 e,i 的合法值為 1.L.length+1if(i<1|i>L.length+1)return ERROR;if(L.length>=L.listsize)ElemType*newbase=(ElemType *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType);if(!newbase) exit(OVERFLOW);L.elem=newbase;L.listsize+=LISTINCREMENT;ElemType *q=&

6、amp;L.elemi-1, *p=&L.elemL.length-1;while(p>=q)*(p+1)=*p; -p; / 插入位置后的元素右移*q=e;+L.length;return OK;Status GetElem(SqList L,int i,ElemType &e)if(i<=0|i>L.length)return ERROR;elsee=*(L.elem+i-1);return OK;void Outputlist(SqList &L)if(0=L.length)printf(" 空集 !");elsefor(in

7、t i=0;i<L.length;+i) printf("%c",*(L.elem+i);3.3 主函數(shù)模塊3.3.1 功能 實現(xiàn)進程調(diào)度的四種算法,以及人機交互的菜單。3.3.2 數(shù)據(jù)結(jié)構(gòu) 主要包括五個部分,分別是四種算法,和進程的輸入和菜單部分,功 能分別實現(xiàn)。3.3.3 算法void main() for(1;) int number;PCB pcb100 ; srand(time(0); int max;int ppp100;int time=0;int time1;int m;int a100;a0=0;printf("n*進程調(diào)度算法的模擬*n&

8、quot;);printf("*1.先到先服務(wù)調(diào)度2.最短作業(yè)優(yōu)先調(diào)度*n");printf("*3.優(yōu)先權(quán)調(diào)度4.輪轉(zhuǎn)發(fā)調(diào)度*n");printf("f*");printf("n 請選擇調(diào)度的方法 : ");scanf("%d",&m);if(m!=1&&m!=2&&m!=3&&m!=4)printf(" 輸入錯誤 ! 重新輸入 : ");scanf("%d",&m);if(m!=1&

9、;&m!=2&&m!=3&&m!=4)printf(" 輸入錯誤 ! 重新輸入 : ");scanf("%d",&m);if(m!=1&&m!=2&&m!=3&&m!=4)printf("輸入錯誤!重新輸入:");scanf("%d",&m);if(m!=1&&m!=2&&m!=3&&m!=4)printf(" 輸入錯誤 ! 重新輸入 : ");

10、scanf("%d",&m);printf(" 請輸入進程的個數(shù) :");scanf("%d",&number);printf("n 開始時用戶進程均為就緒狀態(tài) ,運行時間隨機產(chǎn)生 nn");SqList sq;InitList(sq);for(int r=0;r<number;r+)pcbr.CPUtime=0;pcbi.Priority=rand()%50;while(1)if(pcbi.Priority<20)pcbi.Priority=rand()%50;elsebreak;pc

11、bi.Alltime=rand()%40;while(1)if(pcbi.Alltime<10)pcbi.Alltime=rand()%40;elsebreak;for(int j=0;j<number;j+)ListLength(sq);ListInsert_Sq(sq,ListLength(sq),pcbi );if(m=1)*n");printf("n*int coun=0; int wait100; wait0=0; int Allwait=0;程序演示開始/計數(shù)變量/等待時間數(shù)組for(int i1=0;i1<number;i1+) printf

12、(" 下面開始調(diào)用第 %d 個進程; n",i1);printf(" 開 始 時 間 為 %d 執(zhí) 行 時 間為 dn",co un ,pcbi1.AIItime);coun+=pcbi1.Alltime;if(i1!=0)waiti1=pcbi1-1.AIItime+waiti1-1;Allwait=waiti2+Allwait;printf(" 平均等待時間為 :%dn",Allwait/number);if(m=2)int min=pcb0.Alltime;int wait1100;wait10=0;int in=0;int c

13、oun1=0;*printf("*n");f*最短作業(yè)優(yōu)先調(diào)cout<<" 進程所需時間分別是 :"<<endl;for(i=0;i<number;i+)cout<<pcbi.Alltime<<endl;printf(" 進程調(diào)度的順序為 : ");for(i=0;i<number;i+)min=50;for(j=0;j<number;j+)if(pcbj.Alltime<min)min=pcbj.Alltime;in=j;printf("%d &quo

14、t;,in+1);pcbin.Alltime+=50;if(m=3)printf("ID 優(yōu)先級 運行總時間 進程狀態(tài) n");for(int k=0; k<number; k+)%d就緒printf("%d %dn",k+1, pcbk.Priority, pcbk.Alltime);*printf("n*程序調(diào)度演示開始*n");int count=0,count1=0;for(int i=0;i<number;i+)pppi=pcbi.Priority;if(pcbi.Alltime!=0)count1+;count1-;time=time+count1*4; max=Max(ppp,number);if(pcbmax.Alltime=0)pppmax=-1;pcbmax.Priority=-1; max=Max(ppp,number);pcbmax.Priority-=4; pcbmax.Alltime-=4; pcbmax.CPUtime+=4; if(pcbmax.Alltime<=0)pcbmax.Alltime=0;for(int w=0;w<number;w+)if(pcbw.Alltime=0)pppw=-1;pcbw.Priority=-1;

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論