




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、鄭州輕工業學院實 驗 報 告 實驗名稱 動態優先權進程調度算法模擬 課程名稱 計算機操作系統 專業班級: 學生姓名: 學 號: 成 績:指導教師: 實驗日期: 0 1鄭州輕工業學院 實 驗 報 告一實驗目的:通過動態優先權算法的模擬加深對進程概念和進程調度過程的理解。二實驗內容:(1)用C語言(或其它語言,如Java)實現對N個進程采用某種進程調度算法(如動態優先權調度)的調度。(2)每個用來標識進程的進程控制塊PCB可用結構來描述,包括以下字段:² 進程標識數ID。² 進程優先數PRIORITY,并規定優先數越大的進程,其優先權越高。² 進程已占用CPU時間CP
2、UTIME。² 進程還需占用的CPU時間ALLTIME。當進程運行完畢時,ALLTIME變為0。² 進程的阻塞時間STARTBLOCK,表示當進程再運行STARTBLOCK個時間片后,進程將進入阻塞狀態。² 進程被阻塞的時間BLOCKTIME,表示已阻塞的進程再等待BLOCKTIME個時間片后,將轉換成就緒狀態。² 進程狀態STATE。² 隊列指針NEXT,用來將PCB排成隊列。(3)優先數改變的原則:² 進程在就緒隊列中呆一個時間片,優先數增加1。² 進程每運行一個時間片,優先數減3。(4)為了清楚地觀察每個進程的調度過程
3、,程序應將每個時間片內的進程的情況顯示出來,包括正在運行的進程,處于就緒隊列中的進程和處于阻塞隊列中的進程。(5)分析程序運行的結果,談一下自己的認識。三、設計思路和方法通過VC+程序模擬動態優先權程序調度算法,主要思路和方法就是,通過結構體模擬計算機的控制模組,構造一個PCB結構體即進程控制塊結構體,用來記錄當前進程的的相關狀態信息,包括進程標識符、處理機狀態、進程調度信息、進程控制信息。并通過C+語言模擬計算機的相關調度算法,對構建的PCB進程進行模擬調度和運行,從而實現用計算機對進程的調度過程進行過程仿真。四、數據結構和算法數據結構:1. 包含PCB信息的結構體2. 包含進程信息的順序表
4、結構算法: 優先權=(等待時間+要求服務時間)/要求服務時間 Rp=(等待時間+要求服務時間)/要求服務時間=相應時間/要求服務時間系統將所有就緒隊列按優先級高低排成一個隊列,每次調度時,將CPU分配給優先級最高的進程,并令其執行一個時間片,而后中斷,尋找并運行下一個優先級最高的進程。而所有進程的優先權在隨進程的推進或隨其等待時間的增加而增加,而被調度之后的程序則降低一定的優先級,從而使所有進程都有運行的機會,從而保證系統能在給定的時間內響應所有用戶的請求。五程序代碼和輸出1 程序代碼如下#include "iostream.h"#include "windows
5、.h"/#define N 3typedef structint ID;int PRIORITY;int CPUTIME;int ALLTIME;int STARTBLOCK;int BLOCKTIME;int STATE;/0-運行 1-阻塞 2-就緒 3-結束 4-未到達int REACH;int TIME;PROCESS;void textcolor (int color) SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), color );void main()int i,time,max,l,l1,time1
6、,flag=0,total=0,N,server10,sum=0;PROCESS pro10;textcolor(13);cout<<"注意:本程序中狀態代表如下"<<endl<<"0-運行 1-阻塞 2-就緒 3-結束 4-未到達"<<endl<<endl;textcolor(15);cout<<"請輸入進程數:"cin>>N;cout<<"請設置時間片長度:"cin>>time;cout<<&
7、quot;請輸入各進程初始狀態:"<<endl;cout<<"ID PRIORITY REACH ALLTIME STARTBLOCK BLOCKTIME"<<endl;for(i=0;i<N;i+)proi.CPUTIME=0;proi.TIME=0;cin>>proi.ID>>proi.PRIORITY>>proi.REACH;cin>>proi.ALLTIME>>proi.STARTBLOCK>>proi.BLOCKTIME;serveri=pr
8、oi.ALLTIME;if(proi.REACH=0) proi.STATE=0;else proi.STATE=4;docout<<endl<<"當前時刻為:"<<total;textcolor(12);cout<<endl<<"=各進程狀態為="<<endl;textcolor(15);cout<<"ID PRIORITY CPUTIME ALLTIME STARTBLOCK BLOCKTIME STATE"<<endl;for(i=0
9、;i<N;i+)cout<<proi.ID<<" "<<proi.PRIORITY<<" "<<proi.CPUTIME<<" "cout<<proi.ALLTIME<<" "<<proi.STARTBLOCK<<" "<<proi.BLOCKTIME<<" "<<proi.STATE;cout<<end
10、l;total+=time;for(i=0;i<N;i+)if(proi.STATE=4&&proi.REACH<total)proi.STATE=1;for(i=0;i<N;i+)time1=proi.ALLTIME;if(proi.STATE=0)if(proi.ALLTIME<=time)/proi.CPUTIME+=time1;proi.ALLTIME=0;proi.STATE=3;proi.TIME=total-time+time1;else/proi.CPUTIME+=time;proi.ALLTIME-=time;proi.STARTBLO
11、CK-;if(proi.STARTBLOCK=0)proi.STATE=1;proi.BLOCKTIME=time1;proi.STARTBLOCK=time1;proi.PRIORITY-=3;proi.TIME=total;if(proi.STATE=1)proi.BLOCKTIME-;if(proi.BLOCKTIME=0) proi.STATE=2;proi.TIME=total;if(proi.STATE=2)/proi.CPUTIME+=time;proi.PRIORITY+;proi.TIME=total;max=-100;l1=-1;l=-1;for(i=0;i<N;i+
12、)if(proi.PRIORITY>max&&(proi.STATE=0|proi.STATE=2)l=i;max=proi.PRIORITY;if(proi.STATE=0) l1=i;if(l!=-1&&l!=l1) prol.STATE=0;if(l1!=-1) prol1.STATE=2;flag=0;for(i=0;i<N;i+)if(proi.STATE!=3)flag=1;break;if(flag=0) break;while(1);cout<<endl<<"當前時刻:"<<to
13、tal;textcolor(12);cout<<endl<<"=各進程狀態為="<<endl;textcolor(15);cout<<"ID PRIORITY CPUTIME ALLTIME STARTBLOCK BLOCKTIME STATE"<<endl;for(i=0;i<N;i+)cout<<proi.ID<<" "<<proi.PRIORITY<<" "<<proi.CPUTIME
14、<<" "cout<<proi.ALLTIME<<" "<<proi.STARTBLOCK<<" "<<proi.BLOCKTIME<<" "<<proi.STATE;cout<<endl;cout<<endl<<"各進程運行結束!"<<endl;cout<<"進程號 到達時間 結束時間 周轉時間 帶權周轉時間"<&
15、lt;endl;textcolor(10);for(i=0;i<N;i+)cout<<" "<<proi.ID<<" "<<proi.REACH<<" "<<proi.TIME<<" "<<proi.TIME-proi.REACH<<" "<<(float)(proi.TIME-proi.REACH)/serveri<<endl;sum+=proi.TIME-
16、proi.REACH;cout<<"平均周轉時間為:"<<(float)sum/N<<endl;textcolor(15);2輸入注意:本程序中狀態代表如下0-運行 1-阻塞 2-就緒 3-結束 4-未到達請輸入進程數:5請設置時間片長度:4請輸入各進程初始狀態:ID PRIORITY REACH ALLTIME STARTBLOCK BLOCKTIME1 2 3 0 1 42 6 4 0 3 12 0 3 4 5 22 1 2 4 3 41 5 2 4 5 33輸出結果當前時刻為:0=各進程狀態為=ID PRIORITY CPUTIME
17、 ALLTIME STARTBLOCK BLOCKTIME STATE1 2 0 0 1 4 42 6 0 0 3 1 42 0 0 4 5 2 42 1 0 4 3 4 41 5 0 4 5 3 4當前時刻為:4=各進程狀態為=ID PRIORITY CPUTIME ALLTIME STARTBLOCK BLOCKTIME STATE1 2 0 0 1 3 12 6 0 0 3 1 42 0 0 4 5 1 12 1 0 4 3 3 11 5 0 4 5 2 1當前時刻為:8=各進程狀態為=ID PRIORITY CPUTIME ALLTIME STARTBLOCK BLOCKTIME ST
18、ATE1 2 0 0 1 2 12 7 0 0 3 0 02 1 0 4 5 0 22 1 0 4 3 2 11 5 0 4 5 1 1當前時刻為:12=各進程狀態為=ID PRIORITY CPUTIME ALLTIME STARTBLOCK BLOCKTIME STATE1 2 0 0 1 1 12 7 0 0 3 0 32 2 0 4 5 0 22 1 0 4 3 1 11 6 0 4 5 0 0當前時刻為:16=各進程狀態為=ID PRIORITY CPUTIME ALLTIME STARTBLOCK BLOCKTIME STATE1 3 0 0 1 0 02 7 0 0 3 0 32
19、 3 0 4 5 0 22 2 0 4 3 0 21 6 0 0 5 0 3當前時刻為:20=各進程狀態為=ID PRIORITY CPUTIME ALLTIME STARTBLOCK BLOCKTIME STATE1 3 0 0 1 0 32 7 0 0 3 0 32 4 0 4 5 0 02 3 0 4 3 0 21 6 0 0 5 0 3當前時刻為:24=各進程狀態為=ID PRIORITY CPUTIME ALLTIME STARTBLOCK BLOCKTIME STATE1 3 0 0 1 0 32 7 0 0 3 0 32 4 0 0 5 0 32 4 0 4 3 0 01 6 0 0 5 0 3當前時刻:28=各
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學語文閱讀策略教學與課外閱讀資源開發研究論文
- 高中物理實驗教學中的學生自主探究與創新能力培養論文
- 高中化學概念理解與形成性評價體系構建論文
- 中國醫用海藻酸鹽傷口敷料行業市場前景預測及投資價值評估分析報告
- 艾梅乙質控管理制度
- 苗圃栽培及管理制度
- 茶籽油生產管理制度
- 觸電事故應急救援演練方案
- 課程學習心得(20篇)
- 行政案例分析第七章 行政運行案例分析
- 2025年河北省萬唯中考定心卷生物(一)
- 《中國近現代史綱要(2023版)》課后習題答案合集匯編
- 電磁場與電磁波智慧樹知到課后章節答案2023年下同濟大學
- 岳母大人追悼詞
- 部編版一年級下冊語文全冊總復習課件(超全)
- JJF 1033-2016 《計量標準考核規范》宣貫資料
- 企業通訊員新聞寫作培訓
- 《W公司銷售員工培訓問題與對策研究(論文)》
- 最新2022年監理工程旁站及平行檢驗項目列表
- 第五單元 曲苑尋珍 丑末寅初 課件(共16張PPT)
- T_CSMPTE 11-2021 電視節目圖像質量主觀評價方法
評論
0/150
提交評論