下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、操作系統(tǒng)實驗報告2012年 12 月 19 日一、實驗內(nèi)容1、自定義進程相關(guān)的數(shù)據(jù)結(jié)構(gòu);2、利用MFC類庫中的棧(queue),鏈表(list),向量(vector)等模板模擬進程控制塊隊列、進 程控制塊優(yōu)先級隊列、統(tǒng)計信息鏈表及其指令集合;3、利用 MSDN 和 MFC API 編程實現(xiàn)常見的進程控制和調(diào)度策略(先來先服務(wù)算法、時間 片輪轉(zhuǎn)算法、最高優(yōu)先權(quán)優(yōu)先調(diào)度算法、最短進程優(yōu)先調(diào)度算法) ;4、 測試以上進程調(diào)度策略的周轉(zhuǎn)時間、帶權(quán)周轉(zhuǎn)時間、 平均周轉(zhuǎn)時間和平均帶權(quán)周轉(zhuǎn)時間, 并定性評價它們的性能。二、實驗要求用高級語言編寫和調(diào)試進程調(diào)度的模擬程序,以加深對進程調(diào)度算法的理解。三、實驗步
2、驟typedef struct PCBNodeint ID;int Priority;int CPUtime;int Alltime;int Arrivetime;int state;int counter;struct PCBNode *next;PCB;定義數(shù)據(jù)結(jié)構(gòu)PCB *run;PCB *ready;PCB *over;PCB *head;/定義狀態(tài)量int Min(PCB *head)挑選出隊列中的擁有最小 alltime值的塊,返回塊號,用于sjf算法PCB *p;/q 用來記錄這個塊的地址int min, id;/記錄最小值和塊號p=head->next;if(p)min=
3、p->Alltime;id=p->ID;while(p->next)if(min>p->next->Alltime) min=p->next->Alltime; id=p->next->ID; p=p->next;elsep=p->next;return id;prioint Max(PCB *head)/ 挑選出隊列中的擁有最大優(yōu)先級的塊,返回塊號, 算法PCB *p;/q 用來記錄這個塊的地址int max,id;/ 記錄最大和塊號 p=head->next;if(p) max=p->Priority; i
4、d=p->ID;while(p->next) if(max<=p->next->Priority) max=p->next->Priority; id=p->next->ID; p=p->next;elsep=p->next;return id;PCB *CreatPCB(int n)int i;PCB *p,*q; head=(PCB*)malloc(sizeof(PCB); head->next=NULL;p=head;for(i=1;i<=n;i+) q=(PCB*)malloc(sizeof(PCB); q-
5、>ID=i;q->CPUtime=0; q->Alltime=rand()%200; q->Priority=rand()%10;q->state=Ready; q->Arrivetime=0; p->next=q;p=q; q->next=NULL;head->next->Priority=0;return head;/創(chuàng)建pcb塊void Display(PCB *head)statePCB *p; p=head->next;printf("ID Arrivetime CPUtime(已占用)Alltime Pri
6、ority n");while(p)printf("%d",p->ID);printf("%d",p->Arrivetime);printf("%d",p->CPUtime);printf("%d",p->Alltime);printf("%d",p->Priority);printf("%dn",p->state);p=p->next;/顯示PCB塊void FCFS(PCB *head,PCB *over)PCB *p,
7、*q;int j=0;int n=0,s=0;double m;ready=head; p=ready->next; q=over;while(p) p->state=Running; ready->next=p->next; n=p->Alltime+n; p->CPUtime=p->Alltime; p->Alltime=0; s=s+n; p->next=NULL; q->next=p; p->state=Over; q=q->next; q->next=NULL; p=head->next; j+;pr
8、intf("第%d次執(zhí)行算法后的就緒隊列:n",j);Display(head);m=(double)s/j;printf("完成順尋為:n");Display(over);printf("n");printf("每個進程等待的平均時間為:%lfn",m);printf(" 所有進程等待的總時間為: %d",s);void SJF(PCB *head,PCB *over)/sjf 算法PCB *p,*q,*b,*o;/b 用來記錄該塊的地址 int s ; /記錄塊號 int m,n,h=0,d
9、=0,j=0;double f; p=head->next;q=over; o=head; printf("完成順尋為:n");m=p->ID;n=p->Alltime; s=Min(head);b=p->next;printf("%d: n",s); while(head->next) while(s!=p->ID) o=p; p=p->next; d=p->Alltime+d; p->CPUtime=p->Alltime; p->Alltime=0; h=d+h; b=p; q->
10、;next=b; o->next=p->next; p=head->next; b->next=NULL; o=head;q=q->next; s=Min(head); j+;printf("第%d次執(zhí)行算法后的就緒隊列:n",j); Display(head);f=(double)h/j;printf("完成順尋為:n");Display(over);printf(" 每個進程等待的平均時間為: %lfn",f); printf(" 所有進程等待的總時間為: %d",h);void
11、Prio(PCB *head,PCB *over)PCB *p,*q,*b,*o;/b 用來記錄該塊的地址int s;記錄塊號int m,n,h=0,d=0,j=0;double f; p=head->next;o=head;q=over;printf("當前擁有最大優(yōu)先級的塊號為:n"); m=p->ID; n=p->Alltime; s=Max(head); b=p->next;printf("%d: n",s);while(head->next) while(s!=p->ID) o=p; p=p->next
12、; d=p->Alltime+d; p->CPUtime=p->Alltime;p->Alltime=0;h=d+h;b=p;q->next=b; o->next=p->next; p=head->next; b->next=NULL;o=head;q=q->next; s=Max(head);j+;printf("第%d次執(zhí)行算法后的就緒隊列:n",j); Display(head);f=(double)h/j;printf("完成順尋為:n");Display(over);printf(&q
13、uot; 每個進程等待的平均時間為 %lfn",f); printf(" 所有進程等待的總時間為: %d",h);void RR(PCB *head,PCB *over,i nt t,i nt k) 時間片輪轉(zhuǎn)法/k 用來記錄剩余要執(zhí)行的進程數(shù)目PCB *p,*q,*r,*o,*tail;/o 用來記錄當前塊的地址 int n=0,s=0,f;double h;f=k;p=head->next;while(p->next)tail=p; p=p->next;printf(" 執(zhí)行順序為: n"); tail=p;o=p;前驅(qū)t
14、ail->n ext=head->n ext; p=head->n ext;q=over;while(k>0)r=head->n ext; if(p->Alltime>t)該進程還未執(zhí)行完成 p->Alltime=p->Alltime-t;n=n+t;s=s+n;o=p;printf("執(zhí)行進程 %d",p->ID);printf("該進程的 Alltime 變?yōu)閐n",p->Alltime); p=p->n ext;else/該進程可以完成了prin tf("完成進程:%dn",p->ID);n=n+p->Alltime;s=s+n;p->Alltime=0;o->n ext=p->n ext;q->n ext=p;q=q->n e
溫馨提示
- 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度排水設(shè)施保險合同4篇
- 二零二五版飯店蔬菜肉類產(chǎn)地直供合作合同2篇
- 二零二五年度全新科技項目居間合作費合同模板下載2篇
- 二零二五年度內(nèi)蒙古肉牛產(chǎn)業(yè)鏈人才培養(yǎng)與引進合同
- 2025年度汽車銷售促銷活動執(zhí)行合同模板
- 二零二五年度學(xué)校室內(nèi)外體育設(shè)施一體化采購合同范本3篇
- 2025年度民間借貸合同監(jiān)督與委托管理服務(wù)合同4篇
- 2025年度面粉加工企業(yè)二零二五年度綠色有機面粉采購合同4篇
- 2025年度新能源汽車抵押擔(dān)保服務(wù)合同
- 二零二五年度公共綠地養(yǎng)護管理合同范本3篇
- 廣東省茂名市電白區(qū)2024-2025學(xué)年七年級上學(xué)期期末質(zhì)量監(jiān)測生物學(xué)試卷(含答案)
- 2024版?zhèn)€人私有房屋購買合同
- 2024爆炸物運輸安全保障協(xié)議版B版
- 2025年度軍人軍事秘密保護保密協(xié)議與信息安全風(fēng)險評估合同3篇
- 《食品與食品》課件
- 讀書分享會《白夜行》
- 光伏工程施工組織設(shè)計
- DB4101-T 121-2024 類家庭社會工作服務(wù)規(guī)范
- 化學(xué)纖維的鑒別與測試方法考核試卷
- 2024-2025學(xué)年全國中學(xué)生天文知識競賽考試題庫(含答案)
- 自動駕駛汽車道路交通安全性探討研究論文
評論
0/150
提交評論