資源描述:
《基于優(yōu)先數(shù)的時(shí)間片輪轉(zhuǎn)調(diào)度算法調(diào)度處理器》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、專業(yè)資料題目4基于優(yōu)先數(shù)的時(shí)間片輪轉(zhuǎn)調(diào)度算法調(diào)度處理器一、實(shí)驗(yàn)?zāi)康脑诓捎枚嗟莱绦蛟O(shè)計(jì)的系統(tǒng)中,同時(shí)處于就緒態(tài)的進(jìn)程往往有多個(gè),當(dāng)就緒態(tài)的進(jìn)程數(shù)大于處理器的個(gè)數(shù)時(shí),就需按照某種策略進(jìn)行分配處理器。本次設(shè)計(jì)模擬在單處理器情況下采用基于優(yōu)先數(shù)的時(shí)間片輪轉(zhuǎn)調(diào)度算法進(jìn)行處理器調(diào)度,加深了解處理器調(diào)度工作過程。二、實(shí)驗(yàn)內(nèi)容及要求1、設(shè)計(jì)一個(gè)程序?qū)崿F(xiàn)基于優(yōu)先數(shù)的時(shí)間片輪轉(zhuǎn)調(diào)度算法調(diào)度處理器。2、假定系統(tǒng)有5個(gè)進(jìn)程,每個(gè)進(jìn)程用一個(gè)進(jìn)程控制塊PCB開代表,進(jìn)程控制塊的結(jié)構(gòu)如下圖1.2所示:進(jìn)程名指針到達(dá)時(shí)間要求運(yùn)行時(shí)間已運(yùn)行時(shí)間優(yōu)先數(shù)進(jìn)程狀態(tài)圖1
2、其中:進(jìn)程名:作為進(jìn)程的標(biāo)識(shí)。指針:進(jìn)程按順序排成循環(huán)鏈表,用指針指出下一個(gè)進(jìn)程的進(jìn)程控制塊首地址,最后一個(gè)進(jìn)程中的指針指出第一個(gè)進(jìn)程的進(jìn)程控制塊首地址。要求運(yùn)行時(shí)間:假設(shè)進(jìn)程需要運(yùn)行的單位時(shí)間數(shù)。已運(yùn)行時(shí)間:假設(shè)進(jìn)程已經(jīng)運(yùn)行的單位時(shí)間數(shù),初值為0。狀態(tài):可假設(shè)有兩種狀態(tài),就緒狀態(tài)和結(jié)束狀態(tài)。進(jìn)程的初始狀態(tài)都為就緒狀態(tài)。3、每次運(yùn)行所設(shè)計(jì)的處理器調(diào)度程序調(diào)度進(jìn)程之前,為每個(gè)進(jìn)程任意確定它的要求運(yùn)行時(shí)間。4、此程序是模擬處理器調(diào)度,因此,被選中的進(jìn)程并不實(shí)際啟動(dòng)運(yùn)行,而是執(zhí)行已運(yùn)行時(shí)間+1word完美格式專業(yè)資料來模擬進(jìn)程的一次運(yùn)
3、行,表示進(jìn)程已經(jīng)運(yùn)行過一個(gè)單位時(shí)間。.5、在所設(shè)計(jì)的程序中應(yīng)有顯示或打印語句,能顯示或打印每次被選中的進(jìn)程名以及運(yùn)行一次后進(jìn)程隊(duì)列的變化。6、為進(jìn)程任意確定要求運(yùn)行時(shí)間,運(yùn)行所設(shè)計(jì)的處理器調(diào)度程序,顯示或打印逐次被選中進(jìn)程的進(jìn)程名以及進(jìn)程控制塊的動(dòng)態(tài)變化過程。7、設(shè)有一個(gè)就緒隊(duì)列,就緒進(jìn)程按優(yōu)先數(shù)(優(yōu)先數(shù)范圍0-100)由小到大排列(優(yōu)先數(shù)越小,級別越高)。當(dāng)某一進(jìn)程運(yùn)行完一個(gè)時(shí)間片后,其優(yōu)先級應(yīng)下調(diào)(如優(yōu)先數(shù)加2或3)。8、例如一組進(jìn)程如下表:進(jìn)程名ABCDEFGHJKLM到達(dá)時(shí)間012368121212182525服務(wù)時(shí)間6
4、41051251043158三、實(shí)驗(yàn)報(bào)告1、程序中使用的數(shù)據(jù)結(jié)構(gòu)及符號說明。2、給出主要算法的流程圖3、給出程序清單并附上注釋4、打印程序運(yùn)行時(shí)的初值和運(yùn)行結(jié)果。(運(yùn)行一個(gè)進(jìn)程輸出一次結(jié)果)三、實(shí)驗(yàn)代碼#include#include#include#definegetpch(type)(type*)malloc(sizeof(type))//為進(jìn)程創(chuàng)建一個(gè)空間structworktime{floatTb;//作業(yè)運(yùn)行時(shí)刻floatTc;//作業(yè)完成時(shí)刻floatTi;//
5、周轉(zhuǎn)時(shí)間floatWi;//帶權(quán)周轉(zhuǎn)時(shí)間};structjcb{charname[10];//作業(yè)名floatsubtime;//作業(yè)到達(dá)時(shí)間floatruntime;//作業(yè)所需的運(yùn)行時(shí)間charresource;//所需資源floatRp;//后備作業(yè)響應(yīng)比charstate;//作業(yè)狀態(tài)word完美格式專業(yè)資料intworked_time;//已運(yùn)行時(shí)間structworktimewt;intneed_time;//要求運(yùn)行時(shí)間intflag;//進(jìn)程結(jié)束標(biāo)志structjcb*link;//鏈指針}*ready=NULL
6、,*p;typedefstructjcbJCB;floatT=0;intN;JCB*front,*rear;//時(shí)間輪轉(zhuǎn)法變量voidsort(){JCB*first,*second;intinsert=0;//插入數(shù)if((ready==NULL)
7、
8、((p->subtime)<(ready->subtime))){p->link=ready;ready=p;T=p->subtime;p->Rp=1;}else{first=ready;second=first->link;while(second!=NULL){if((p->
9、subtime)<(second->subtime)){p->link=second;first->link=p;second=NULL;insert=1;}else{first=first->link;second=second->link;}}if(insert==0)first->link=p;}}voidSJFget()word完美格式專業(yè)資料{JCB*front,*mintime,*rear;intipmove=0;mintime=ready;rear=mintime->link;while(rear!=NULL){i
10、f((rear!=NULL)&&(T>=rear->subtime)&&(mintime->runtime)>(rear->runtime)){front=mintime;mintime=rear;rear=rear->link;ipmove=1;}elsere