![實驗一進程調(diào)度算法模擬_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/31/a50b5247-e05d-421b-b9f6-7856b8c88ab0/a50b5247-e05d-421b-b9f6-7856b8c88ab01.gif)
![實驗一進程調(diào)度算法模擬_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/31/a50b5247-e05d-421b-b9f6-7856b8c88ab0/a50b5247-e05d-421b-b9f6-7856b8c88ab02.gif)
![實驗一進程調(diào)度算法模擬_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/31/a50b5247-e05d-421b-b9f6-7856b8c88ab0/a50b5247-e05d-421b-b9f6-7856b8c88ab03.gif)
![實驗一進程調(diào)度算法模擬_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/31/a50b5247-e05d-421b-b9f6-7856b8c88ab0/a50b5247-e05d-421b-b9f6-7856b8c88ab04.gif)
![實驗一進程調(diào)度算法模擬_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/31/a50b5247-e05d-421b-b9f6-7856b8c88ab0/a50b5247-e05d-421b-b9f6-7856b8c88ab05.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、操作系統(tǒng)實驗報告(一)班級:計1001 姓名:車琛 學號:201007010113 實驗一 進程調(diào)度算法模擬1內(nèi)容:設計一個簡單的進程調(diào)度算法,模擬os中的進程調(diào)度過程;2要求: 進程數(shù)不少于5個; 進程調(diào)度算法任選; 可以用動態(tài)優(yōu)先數(shù)加時間片輪轉法實現(xiàn)進程調(diào)度,每運行一個時間片優(yōu)先數(shù)減3; 用c語言編程; 程序運行時顯示進程調(diào)度過程。3步驟: 設計pcb及其數(shù)據(jù)結構: 進程標識數(shù):id 進程優(yōu)先數(shù):priority(優(yōu)先數(shù)越大,優(yōu)先級越高) 進程已占用時間片:cputime,每得到一次調(diào)度,值加1; 進程還需占用時間片:alltime,每得到一次調(diào)度,該值減1,一旦運行完畢,alltime為
2、0) 進程隊列指針:next,用來將pcb排成隊列 進程狀態(tài):state(一般為就緒,可以不用) 設計進程就緒隊列及數(shù)據(jù)結構; 設計進程調(diào)度算法,并畫出程序流程圖; 設計輸入數(shù)據(jù)和輸出格式; 結構格式:當前正運行的進程:0 當前就緒隊列:2,1,3,4 編程上機,驗證結果。4提示:假設調(diào)度前,系統(tǒng)中有5個進程,其初始狀態(tài)如下:id01234priority93830290可否考慮用數(shù)組或鏈表去實現(xiàn)cputime00000alltime32634statereadyreadyreadyreadyready 以時間片為單位調(diào)度運行; 每次調(diào)度alltime不為0,且priority最大的進程運行一
3、個時間片; 上述進程運行后其優(yōu)先數(shù)減3,再修改其cputime和alltime,重復, 直到所有進程的alltime均變?yōu)?。5書寫實驗報告 實驗題目; 程序中所用數(shù)據(jù)結構及說明; 清單程序及描述; 執(zhí)行結果。代碼清單#include<iostream.h>#include<stdlib.h>#include<malloc.h>#include<windows.h>#include<stdio.h>#define minsize 5typedef enum stateready,running,stop,state;typedef s
4、truct pcbint pid;int priority;/ 進程優(yōu)先級int cputime;int alltime;state state; struct pcb *prev;struct pcb *next;pcb;typedef pcb node;void init_process(node *&head) head= (pcb *)malloc(sizeof(pcb);head->next = head;head->prev = head;void push(node *head,node *pnode)if(head = null|pnode = null)r
5、eturn;node * p = head->next;while(p!=head && pnode->priority < p->priority) p= p->next;pnode->next=p->prev->next; pnode->prev=p->prev;p->prev->next=pnode;p->prev = pnode;void show_process(node *head)if(head=null)return;node *p = head->next;cout<&l
6、t;"當前的就緒隊列有:"<<endl;cout<<"*進程調(diào)度表*"<<endl;while(p != head)cout<<endl;cout<<"進程號為 "<<p->pid<<" "cout<<"優(yōu)先級為 "<<p->priority<<" "cout<<"剩余alltime為 "<<p->
7、;alltime<<" "cout<<"運行時間cputime為 "<<p->cputime<<" "cout<<endl;cout<<endl;p = p->next;cout<<"*"<<endl;node * pop_front(node *head)if(head=null|head->next = head)return null;node * p = head->next;p->
8、prev->next = p->next;p->next->prev = p->prev;return p;pcb * create_process(int id,int priority,int cputime,int alltime,state state) pcb *p = (pcb *)malloc(sizeof(pcb);p->pid = id;p->cputime = cputime;p->alltime = alltime;p->priority = priority;p->state = state;p->nex
9、t = null;p->prev = null;return p;void destroy_head(node *head)if(head=null)return;free(head);void destroy(node *pnode)if(pnode = null)return; node *p = pnode;p->prev->next=p->next;p->next->prev=p->prev;cout<<"進程"<<p->pid<<"已經(jīng)銷毀!"<<e
10、ndl;free(p);void process_running(node *head)if(head = null|head->next = head)return;node *p = null;while(head->next!=head)p = head->next;p = pop_front(head);p->cputime += 1;p->alltime -= 1;p->priority -= 3;p->state = running;cout<<endl;cout<<"當前正在執(zhí)行的進程為:"&l
11、t;<p->pid<<endl;if(p->priority<=0)p->priority =0;cout<<endl; cout<<"進程號為 "<<p->pid<<" "cout<<"優(yōu)先級為 "<<p->priority<<" "cout<<"剩余alltime為 "<<p->alltime<<" &q
12、uot;cout<<"運行時間cputime為 "<<p->cputime<<" "cout<<endl;cout<<endl;cout<<endl;cout<<endl;if(p->alltime<=0)p->state = stop;destroy(p);p = null;if(p!=null)p->state = ready;push(head,p);show_process(head);char c = getchar();destr
13、oy_head(head);int main()pcb * head=null; init_process(head);pcb *p =null; int priority = 1;int cputime = 0;int alltime = 0;state state = ready;int count = 0; int num = 0;cout<<"請輸入當前運行的進程數(shù),至少5個"<<endl;cin>>num;for(int i = 0;i<num;+i)count+=1;cout<<"請輸入第 "<<count<<"個進程的優(yōu)先級和總運行時間alltime"<<endl;cin>>priority>>alltime;p=create_process(count,priority,cputime,alltime,state);push(head,p);show_process(head);process_running(hea
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年檔節(jié)柜項目可行性研究報告
- 2025年方條磁鋼項目可行性研究報告
- 2025至2031年中國太陽能交通燈行業(yè)投資前景及策略咨詢研究報告
- 2025年吸塵器滾輪地刷項目可行性研究報告
- 2025年包裝熱收縮膜項目可行性研究報告
- 2025年五色石子項目可行性研究報告
- 2025至2030年鱈魚保鮮劑項目投資價值分析報告
- 2025至2030年中國送布輪數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年草藝品手把項目投資價值分析報告
- 2025至2030年電動伺服閥項目投資價值分析報告
- 綠色工廠評價指標及評分標準
- 高一必修二英語測試題
- 甲型流感患者的護理查房
- 裝飾施工圖設計深度
- 100以內(nèi)的加減法練習1000題(可直接打印)
- 技術人員能力評價表
- 我是家務小能手(課堂PPT)
- 英語學術論文寫作引言
- 汽車檢具知識培訓講義
- 小學音樂課程與教學論(小學教育專業(yè))PPT完整全套教學課件
- 駕考三力測試模擬題含答案
評論
0/150
提交評論