操作系統(tǒng)進程調(diào)度實驗報告(總19頁).doc
《操作系統(tǒng)進程調(diào)度實驗報告(總19頁).doc》由會員分享,可在線閱讀,更多相關(guān)《操作系統(tǒng)進程調(diào)度實驗報告(總19頁).doc(19頁珍藏版)》請在匯文網(wǎng)上搜索。
1、 計算機 學(xué)院 計算機科學(xué)與技術(shù) 專業(yè) 班姓名 學(xué)號 教師評定_實驗題目 進程調(diào)度 一、 實驗?zāi)康挠酶呒壵Z言編寫和調(diào)試一個進程調(diào)度程序,以加深對進程的概念及進程調(diào)度算法的理解。二、實驗內(nèi)容和要求設(shè)計一個有N個進程并發(fā)的進程調(diào)度程序,要采用FIFO(先進先出)、簡單時間片輪轉(zhuǎn)法、多級反饋隊列調(diào)度算法這三種算法。每個進程有一個進程控制塊( PCB)表示。進程控制塊可以包含如下信息:進程名、到達時間、需要運行時間、已運行時間、進程狀態(tài)等等。 進程的到達時間及需要的運行時間可以事先人為地指定(也可以由隨機數(shù)產(chǎn)生)。進程的運行時間以時間片為單位進行計算。 每個進程的狀態(tài)可以是就緒 W(Wait)、運行R
2、(Run)、或完成F(Finish)三種狀態(tài)之一。就緒進程獲得 CPU后都只能運行一個時間片。用已占用CPU時間加1來表示。 如果運行一個時間片后,進程的已占用 CPU時間已達到所需要的運行時間,則撤消該進程,如果運行一個時間片后進程的已占用CPU時間還未達所需要的運行時間,也就是進程還需要繼續(xù)運行,此時應(yīng)分配時間片給就緒隊列中排在該進程之后的進程,并將它插入就緒隊列隊尾。 每進行一次調(diào)度程序都打印一次運行進程、就緒隊列、以及各個進程的 PCB,以便進行檢查。重復(fù)以上過程,直到所要進程都完成為止。三、實驗原理及設(shè)計方案1、FIFO算法:其基本思想是所有進程按先進來就排在前頭,一個一個往后接下去
3、的順序排成一個隊列,總是把全部的處理機分配給先進來的進程,然后等待它運行完,釋放CPU資源,把處理機重新分配給下一個先進來的進程。直至所有的進程運行完畢。2、輪轉(zhuǎn)法:所有就緒進程按FCFS排成一個隊列,總是把處理機分配給隊首的進程,各進程占用CPU的時間片相同。如果運行進程用完它的時間片后還未完成,就把它送回到就緒隊列的隊尾,把處理機重新分配給隊首的進程。直至所有的進程運行完畢。3、多級反饋隊列調(diào)度算法。其基本思想是:當(dāng)一個新進程進入內(nèi)在后,首先將它放入第一個隊列的末尾,按FCFS原則排隊等待調(diào)度。當(dāng)輪到該進程執(zhí)行時,如能在該時間片內(nèi)完成,便可準(zhǔn)備撤離系統(tǒng);如果它在一個時間片結(jié)束時尚為完成,調(diào)
4、度程序便將該進程轉(zhuǎn)入第二隊列的末尾,再同樣地按FCFS原則等待調(diào)度執(zhí)行,以此類推。四、流程圖1.FIFO和輪轉(zhuǎn)法:開始初始化PCB,輸入進程信息各進程按到達到時間先后順序排成一個隊列就緒隊列為空?就緒隊列首進程投入運行時間片到,運行進程運行時間+1i=1 or i=2選擇算法i=1或i=2i=1FIFOs算法時間輪轉(zhuǎn)法i=2Ni=1i=2運行時間是否小于所需要時間Y執(zhí)行進程進程執(zhí)行完畢,調(diào)度下一進程運行時間是否等于所需時間YN將該進程放到就緒隊列的隊尾,再等待激發(fā)執(zhí)行下一個進程結(jié)束2、多級反饋隊列算法:開始運行時間是否到達所需時間Y進程完成,撤銷該進程Y將該進程插入到下一個就緒隊列的隊尾初始化
5、PCB,輸入進程信息各進程按到達時間先后順序排列就緒隊列i空N就緒隊列首進程投入運行當(dāng)前就緒隊列時間片到,運行時間+時間片N指向下一個就緒隊列就緒隊列i空?結(jié)束Y五、給出程序中源程序名和執(zhí)行程序名1、FIFO和時間輪轉(zhuǎn)法源程序名:FIFO lunzhuan,執(zhí)行程序名:FIFO AND LUNZHUAN.CPP2、多級反饋隊列源程序名:duoji,執(zhí)行程序名:d.cpp六、程序清單1.FIFO 和時間輪轉(zhuǎn)#include #include #include #define getpch(type) (type*)malloc(sizeof(type)/*用getpcb(type)給type類型
6、的變量申請一個空間*/struct pcb /*定義進程控制塊PCB */char name10; /*進程名*/char state; /*進程狀態(tài)*/int ntime; /*進程需要運行時間*/int rtime; /*進程已經(jīng)運行的時間*/struct pcb *link; /*定義了一個指向pcb結(jié)構(gòu)類型的指針link作為自己的成員函數(shù)*/*ready=NULL,*p; /*定義了兩個指向pcb結(jié)構(gòu)類型的指針ready和p ,ready的初值為空*/typedef struct pcb PCB; /*定義PCB為struct pcb的別名*/void sort() /*對進程進行輪轉(zhuǎn)
- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
20 積分
下載 | 加入VIP,下載共享資源 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該PPT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 操作系統(tǒng) 進程 調(diào)度 實驗 報告 19