進(jìn)程調(diào)度試驗(yàn)報(bào)告_第1頁
進(jìn)程調(diào)度試驗(yàn)報(bào)告_第2頁
進(jìn)程調(diào)度試驗(yàn)報(bào)告_第3頁
進(jìn)程調(diào)度試驗(yàn)報(bào)告_第4頁
進(jìn)程調(diào)度試驗(yàn)報(bào)告_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、信息工程學(xué)院實(shí)驗(yàn)報(bào)告課程名稱:操作系統(tǒng)人I 二L、成績:實(shí)驗(yàn)項(xiàng)目名稱:進(jìn)程調(diào)度 指導(dǎo)老師(簽名): 一、實(shí)驗(yàn)?zāi)康模河酶呒?jí)語言編寫和調(diào)試一個(gè)有 N個(gè)進(jìn)程并發(fā)的進(jìn)程調(diào)度程序,以加深對進(jìn)程的概念及進(jìn)程調(diào)度算法的理解。 二、實(shí)驗(yàn)設(shè)備與器件PC機(jī)、windows2000 操作系統(tǒng)、VC+6.0三、實(shí)驗(yàn)內(nèi)容與步驟設(shè)計(jì)一個(gè)有N個(gè)進(jìn)程并發(fā)的進(jìn)程調(diào)度程序。進(jìn)程調(diào)度算法:采用最高優(yōu)先數(shù)優(yōu)先的調(diào)度算法(即把處理機(jī)分配給優(yōu)先數(shù)最高的進(jìn)程) 和先來先服務(wù)算法。具體描述如下:每個(gè)進(jìn)程有一個(gè)進(jìn)程控制塊(PCB)表示。進(jìn)程控制塊可以包含如下信息:進(jìn)程名、優(yōu) 先數(shù)、到達(dá)時(shí)間、需要運(yùn)行時(shí)間、已用 CPUW問、進(jìn)程狀態(tài)等等。分析:

2、進(jìn)程的優(yōu)先數(shù)及需要的運(yùn)行時(shí)間可以事先人為地指定(也可以由隨機(jī)數(shù)產(chǎn)生)。進(jìn)程的到達(dá)時(shí)間為進(jìn)程輸入的時(shí)間。進(jìn)程的運(yùn)行時(shí)間以時(shí)間片為單位進(jìn)行計(jì)算。每個(gè)進(jìn)程的狀態(tài)可以是就緒 W (Wait)、運(yùn)行R (Run)、或完成F (Finish )三種狀態(tài)之就緒進(jìn)程獲得CPU后都只能運(yùn)行一個(gè)時(shí)間片。用已占用 CPLM間加1來表示。如果運(yùn)行一個(gè)時(shí)間片后,進(jìn)程的已占用 CPU時(shí)間已達(dá)到所需要的運(yùn)行時(shí)間,則撤消該進(jìn) 程,如果運(yùn)行一個(gè)時(shí)間片后進(jìn)程的已占用 CPU時(shí)間還未達(dá)所需要的運(yùn)行時(shí)間,也就是進(jìn)程還 需要繼續(xù)運(yùn)行,此時(shí)應(yīng)將進(jìn)程的優(yōu)先數(shù)減 1 (即降低一級(jí)),然后按照優(yōu)先數(shù)的大小把它插入 就緒隊(duì)列等待CPU每進(jìn)行一次

3、調(diào)度程序都打印一次運(yùn)行進(jìn)程、就緒隊(duì)列、以及各個(gè)進(jìn)程的PCB,以便進(jìn)行檢查。重復(fù)以上過程,直到所要進(jìn)程都完成為止。調(diào)度算法的參考流程圖如下:第1頁共8頁實(shí)驗(yàn)步驟.編寫一個(gè)有N個(gè)進(jìn)程并發(fā)的進(jìn)程調(diào)度程序。.在上機(jī)環(huán)境中輸入程序,調(diào)試,編譯。.設(shè)計(jì)輸入數(shù)據(jù),寫出程序的執(zhí)行結(jié)果。.根據(jù)具體實(shí)驗(yàn)要求,填寫好實(shí)驗(yàn)報(bào)告。四、實(shí)驗(yàn)結(jié)果及分析1、兩個(gè)進(jìn)程并發(fā)執(zhí)行第2頁共8頁pls input process nunber=process id No.0:input process name:niinput process pro:2input process runtime:1process id No.1:in

4、put process name:nseiinput process pro:2input process runtime =3process id No.2 =input process name:ndiinput process pro5input process runtime-2進(jìn)程執(zhí)行:第3頁共8頁The execute number: 1* runnins( process is:ndiqname state superndtimerun t intendiR52a* readi/ line :qname state supei4ndtimeruntinen iu210qname

5、state supei4ndtimeruntinenselu230press anykey to contiue2The execute number: 2* runninsr process is:ndiqname state superndtimepunt intendiR421* re及Uy line:qname state superndtImerun t ineniu21qname state supern dt imerunt imenseiu230urocess 【ndi f in isbed.進(jìn)程輪轉(zhuǎn)Liress anykey to contiue2Che execute nu

6、iiiber :3* running process is:n iqname state superndt imerun tuneniR210read line :yname state superndt ineruntimenseiw230process nil finished.直至全部進(jìn)程都執(zhí)行完五、實(shí) 驗(yàn) 總 結(jié)(實(shí)驗(yàn)過程中遇到的問題及解決的方法,做為本實(shí)驗(yàn)的心得體會(huì))通過老師老師的幫助,進(jìn)行試驗(yàn),我深刻理解操作了,對調(diào)度的原理基本把握。附錄:#include stdio.h#include 第4頁共8頁#include #define getpch(type) (type*)mall

7、oc(sizeof(type)struct pcb /* 定義進(jìn)程控制塊 PCB */char name10;char state;int super;int ntime;int rtime;struct pcb* link;*ready=NULL,*p;typedef struct pcb PCB;sort() /*建立對進(jìn)程進(jìn)行優(yōu)先級(jí)排列函數(shù)*/PCB *first, *second;int insert=0;if(ready=NULL)|(p-super)(ready-super) /* 優(yōu)先級(jí)最大者,插入隊(duì)首 */ p-link=ready;ready=p;else /*進(jìn)程比較優(yōu)先級(jí)

8、,插入適當(dāng)?shù)奈恢弥?/first=ready;second=first-link;while(second!=NULL)if(p-super)(second-super) /*若插入進(jìn)程比當(dāng)前進(jìn)程優(yōu)先數(shù)大,*/*插入到當(dāng)前進(jìn)程前面*/p-link=second;first-link=p;second=NULL;insert=1;else /*插入進(jìn)程優(yōu)先數(shù)最低,則插入到隊(duì)尾*/first=first-link;second=second-link;if(insert=0) first-link=p;第5頁共8頁input() /*建立進(jìn)程控制塊函數(shù)*/(int i,num;printf(n p

9、ls input process number: );scanf(%d,&num);for(i=0;iname);printf(n input process pro:);scanf(%d,&p-super);printf(n input process runtime:);scanf(%d,&p-ntime);printf(n);p-rtime=0;p-state=w;p-link=NULL;sort();/*每創(chuàng)建一個(gè)進(jìn)程,調(diào)用 sort函數(shù)一次*/)disp(PCB * pr) /*建立進(jìn)程顯示函數(shù),用于顯示當(dāng)前進(jìn)程*/(printf(n qname t state t super t

10、ndtime t runtime n);printf(%st,pr-name);printf(%ct,pr-state);printf(%dt,pr-super);printf(%dt,pr-ntime);printf(%5dt,pr-rtime);printf(n);)check() /*建立進(jìn)程查看函數(shù)*/(PCB* pr;printf(n * running process is: %s,p-name); /* 顯示當(dāng)前運(yùn)行進(jìn)程 */disp(p);pr=ready;printf(n * ready line: n); /* 顯示就緒隊(duì)列狀態(tài) */第6頁共8頁 while(pr!=NUL

11、L) ( disp(pr);pr=pr-link;) )destroy() /*建立進(jìn)程撤消函數(shù)(進(jìn)程運(yùn)彳f結(jié)束,撤消進(jìn)程)*/ (printf(n process %s finished.n,p-name); free(p);)running() /*建立進(jìn)程就緒函數(shù)(進(jìn)程運(yùn)行時(shí)間到,置就緒狀態(tài)*/ (p-rtime)+;/* 運(yùn)行時(shí)間加 1*/if(p-rtime=p-ntime)destroy(); /* 調(diào)用 destroy 函數(shù)*/ else(p-super)-;/* 優(yōu)先數(shù)減 1*/p-state=w;/* 置就緒 */sort(); /* 調(diào)用 sort 函數(shù) */ ) )main() /* 主函數(shù) */ ( int h=0;char ch;input(); /*建立進(jìn)程控制塊函數(shù)*/ while(ready!=NULL)( ch=getchar();h+;printf(n The execute number: %d n,h);p=ready;ready=p-link;p-link=NULL;p-state=R;/* P指向第一個(gè)進(jìn)程,ready指向第二個(gè)進(jìn)程,置P所指

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論