版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、華北科技學院計算機學院綜合性實驗報告華北科技學院計算機學院綜合性實驗實 驗 報 告 課程名稱 操作系統B 實驗學期 2015 至 2016 學年 第 2 學期學生所在系部 基礎部 年級 2013 專業(yè)班級 計算B132 學生姓名 毛慧雅 學號 201309014218 任課教師 王祥仲 實驗成績 計算機學院制操作系統B 課程綜合性實驗報告開課實驗室: 基礎實驗室七 2016年 6 月20 日實驗題目一、實驗目的通過對進程調度算法的模擬,進一步理解進程的基本概念,加深對進程運行狀態(tài)和進程調度過程、調度算法的理解。二、設備與環(huán)境1. 硬件設備:PC機一臺2. 軟件環(huán)境:安裝Windows操作系統或
2、者Linux操作系統,并安裝相關的程序開發(fā)環(huán)境,如C C+Java 等編程語言環(huán)境。三、實驗內容(1)用C語言(或其它語言,如Java)編程實現對N個進程采用某種進程調度算法(如動態(tài)優(yōu)先權調度算法)調度執(zhí)行的模擬。(2)每個用來標識進程的進程控制塊PCB可用結構來描述,包括以下字段:² 進程標識數ID。² 進程優(yōu)先數PRIORITY,并規(guī)定優(yōu)先數越大的進程,其優(yōu)先權越高。² 進程已占用CPU時間CPUTIME。² 進程還需占用的CPU時間ALLTIME。當進程運行完畢時,ALLTIME變?yōu)?。² 進程的阻塞時間STARTBLOCK,表示當進程再
3、運行STARTBLOCK個時間片后,進程將進入阻塞狀態(tài)。² 進程被阻塞的時間BLOCKTIME,表示已阻塞的進程再等待BLOCKTIME個時間片后,將轉換成就緒狀態(tài)。² 進程狀態(tài)STATE。² 隊列指針NEXT,用來將PCB排成隊列。(3)優(yōu)先數改變的原則:² 進程在就緒隊列中呆一個時間片,優(yōu)先數增加1。² 進程每運行一個時間片,優(yōu)先數減3。(4)為了清楚地觀察每個進程的調度過程,程序應將每個時間片內的進程的情況顯示出來,包括正在運行的進程,處于就緒隊列中的進程和處于阻塞隊列中的進程。(5)分析程序運行的結果,談一下自己的認識。四、實驗結果及分
4、析1、關鍵代碼 (1)主函數 void main() int option; printf("n*"); printf("n* 進程調度算法 *");printf("n*");printf("n* 1、先來先服務調度 *");printf("n* 2、短作業(yè)優(yōu)先調度 *");printf("n* 3、動態(tài)優(yōu)先級調度 *");printf("n* 0、 退 出 *");printf("n*");printf("nn請選擇菜單項:
5、 "); scanf("%d",&option); switch(option) case 0: printf("n謝謝使用n"); return; case 1: printf("對進程按先來先服務調度。n"); input1(); fcfs(); output1(); break; case 2: printf("對進程進行短作業(yè)優(yōu)先調度。n"); input1(); sjf(); output1(); break; case 3: printf("對進程進行動態(tài)優(yōu)先級調度。n&qu
6、ot;); input2(); dtyxj(); output2(); break; (2)先來先服務調度int fcfs() float atime=0; int i; int szh; atime=et; for(i=0;i<counter;i+) projecti.begint=atime;/開始時間 projecti.finisht=projecti.begint+projecti.runt;/完成時間=開始時間+運行時間 projecti.run_flag=1;/調度標志 atime=projecti.finisht;/下一個進程開始時間=上一個進程完成
7、時間 szh=i;/第i個進行服務 projectszh.order=i+1; return 0; (3)短作業(yè)優(yōu)先調度int sjf() float temp_time=0; int i=0,j; int szh,temp_counter; float runt; runt=projecti.runt; j=1; while (j<counter)&&(et=et) if (projectj.runt<projecti.runt) runt=projectj.runt; i=j; j+; /*查找第一個被調度的進程*
8、/ /*對第一個被調度的進程求相應的參數*/ szh=i; projectszh.begint=et; projectszh.finisht=projectszh.begint+projectszh.runt; projectszh.run_flag=1; temp_time=projectszh.finisht; projectszh.order=1; temp_counter=1; while (temp_counter<counter) for(j=0;j<counter;j+) if(et<=temp_time)&a
9、mp;&(!projectj.run_flag) runt=projectj.runt;szh=j;break; for(j=0;j<counter;j+) if(et<=temp_time)&&(!projectj.run_flag) if(projectj.runt<runt) runt=projectj.runt; szh=j; /*查找下一個被調度的進程*/ /*對找到的下一個被調度的進程求相應的參數*/ projectszh.begint=temp_time; projectszh.finisht=projectszh
10、.begint+projectszh.runt; projectszh.run_flag=1; temp_time=projectszh.finisht; temp_counter+; projectszh.order=temp_counter; return 0; (4)優(yōu)先級調度int dtyxj() float temp_time=0;/開始時間 int i=0,j=1; int szh,temp_counter; int max_priority;/最大優(yōu)先級 max_priority=projecti.priority; int short_time=et;
11、int bc=0; while(j<counter) /printf("00"); if(et<et) short_time=et; j+; max_priority=0; for(j=0;j<counter;j+) if(short_time=et) /max_priority=0; if(projectj.priority>max_priority) max_priority=projectj.priority; bc=j; szh=bc; /此時j變
12、成了優(yōu)先級最高的一個進程 projectszh.begint=et; /begint:開始運行時間 projectszh.finisht=projectszh.begint+projectszh.runt; /finisht完成時間 runt運行時間 projectszh.run_flag=1; temp_time=projectszh.finisht; /finisht完成時間 projectszh.order=1; /order運行次序 temp_counter=1; /記錄已經完成的進程個數 while (temp_counter<counter)/查找
13、到下一個優(yōu)先級最高的進程 max_priority=0; for(j=0;j<counter;j+) if(et<=temp_time)&&(!projectj.run_flag) if (projectj.priority>max_priority) max_priority=projectj.priority; szh=j; /*對找到的下一個被調度的進程求相應的參數*/ projectszh.begint=temp_time; projectszh.finisht=projectszh.begint+projectszh.runt; projectszh.run_flag=1; temp_time=projectszh.finisht; temp_counter+; projectszh.order=temp_counter; / return 0; 2.運行結果:(1)先來先服務算法(FCFS)(2)短作業(yè)優(yōu)先算法(SJF)(3)優(yōu)先級調度算法 由運行結果可以看出,采用SJF算法后,帶權周轉時間和平均帶權周轉時間都有較明顯的改善,而尤其是對
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度文化傳媒內容制作合同
- 2024年大型活動保障車輛租賃合同
- 2024年上海房屋裝修工程分包合同
- 2024年廉潔承諾函:雙方誠信自律協議
- 教育工作者主要先進事跡(5篇)
- 中學生讀書演講稿
- 2024年度質量控制合同:MLB棒球帽正品知識分享
- 2024年工程監(jiān)測與檢測合同
- 2024室內外演唱會舞臺安全檢測合同
- 2024年國際商貿合同的科學與藝術
- 《初中英語寫作》課件
- DB37-T 5202-2021 建筑與市政工程基坑支護綠色技術標準
- 牙科手機的清洗消毒、滅菌及保養(yǎng)課件
- 人音版二年級下冊音樂《小蜜蜂》課件
- 打印版醫(yī)師執(zhí)業(yè)注冊健康體檢表(新版)
- 湘教版八年級美術上冊工作計劃
- 高滲性非酮癥糖尿病昏迷培訓課件
- 國開成本會計第15章綜合練習試題及答案
- 2022年陜西投資集團有限公司招聘筆試題庫及答案解析
- 醫(yī)院產后出血的應急演練腳本
- 基于實驗驗證并發(fā)現以太
評論
0/150
提交評論