版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
課程設(shè)計(jì)題目進(jìn)程調(diào)度算法模擬編程學(xué)生姓名學(xué)號(hào)專業(yè)計(jì)算機(jī)科學(xué)與技術(shù)班級(jí)指導(dǎo)教師完成日期2012年12月18日進(jìn)程調(diào)度的模擬實(shí)現(xiàn)摘要:進(jìn)程管理是操作系統(tǒng)中的重要功能,用來創(chuàng)建進(jìn)程、撤消進(jìn)程、實(shí)現(xiàn)進(jìn)程狀態(tài)轉(zhuǎn)換,它提供了在可運(yùn)行的進(jìn)程之間復(fù)用CPU的方法。在進(jìn)程管理中,進(jìn)程調(diào)度是核心,因?yàn)樵诓捎枚嗟莱绦蛟O(shè)計(jì)的系統(tǒng)中,往往有若干個(gè)進(jìn)程同時(shí)處于就緒狀態(tài),當(dāng)就緒進(jìn)程個(gè)數(shù)大于處理器數(shù)目時(shí),就必須依照某種策略決定哪些進(jìn)程優(yōu)先占用處理器。本文通過兩種算法模擬實(shí)現(xiàn)了進(jìn)程之間的調(diào)度。關(guān)鍵詞:進(jìn)程創(chuàng)建,先來先服務(wù),優(yōu)先級(jí)調(diào)度。前曰在操作系統(tǒng)中,調(diào)度的實(shí)質(zhì)是一種資源分配,調(diào)度算法即指:根據(jù)系統(tǒng)的資源分配策略所規(guī)定的資源分配算法。對(duì)于不同的系統(tǒng)和系統(tǒng)目標(biāo),通常采用不同的調(diào)度算法,如在批處理系統(tǒng)中,為照顧為數(shù)眾多的短作業(yè),采用短作業(yè)有限調(diào)度算法;在分時(shí)系統(tǒng)中,為保證系統(tǒng)具有合理的響應(yīng)時(shí)間,采用輪轉(zhuǎn)法進(jìn)行調(diào)度。采用算法時(shí),則要考慮多方面因素,以便達(dá)到最佳效果。做好這個(gè)課程設(shè)計(jì),有利于加深對(duì)操作系統(tǒng)進(jìn)程調(diào)度知識(shí)的理解。系統(tǒng)總體框架設(shè)計(jì)本程序采用兩種算法(最高優(yōu)先級(jí)數(shù)優(yōu)先的調(diào)度算法和先來先服務(wù)算法)對(duì)多個(gè)進(jìn)程進(jìn)行調(diào)度,每個(gè)進(jìn)程有三個(gè)狀態(tài),初始狀態(tài)為就緒狀態(tài)。最高優(yōu)先級(jí)數(shù)優(yōu)先的調(diào)度算法中,程序的某進(jìn)程運(yùn)行時(shí)間以時(shí)間片為單位計(jì)算。各進(jìn)程的優(yōu)先數(shù)或輪轉(zhuǎn)時(shí)間數(shù)以及進(jìn)程需運(yùn)行的時(shí)間片數(shù)的初始值均由用戶給定。在優(yōu)先級(jí)數(shù)優(yōu)先的調(diào)度算法中,優(yōu)先級(jí)數(shù)的值設(shè)計(jì)為100與運(yùn)行時(shí)間的差值,即Pro_time-process->needtime。進(jìn)程每執(zhí)行一次,優(yōu)先數(shù)減3,CPU時(shí)間片數(shù)加1,進(jìn)程還需要的時(shí)間片數(shù)減1。對(duì)于遇到優(yōu)先數(shù)一致的情況,采用先來先服務(wù)策略解決。程序設(shè)計(jì)組成框圖數(shù)據(jù)項(xiàng)作用pro_name進(jìn)程名稱time_submit進(jìn)程創(chuàng)建時(shí)刻pro_id進(jìn)程號(hào),當(dāng)進(jìn)程有相同名稱時(shí),用來區(qū)分進(jìn)程time_start進(jìn)程啟動(dòng)時(shí)刻time_exe進(jìn)程要求運(yùn)行時(shí)間time_end進(jìn)程結(jié)束的時(shí)刻pro_priority進(jìn)程優(yōu)先級(jí)圖1-2進(jìn)程控制塊CpuModel類成員作用Cpurun()Cpu模擬運(yùn)行函數(shù)CreatePcb()進(jìn)程創(chuàng)建函數(shù)ShowPcb()進(jìn)程顯示函數(shù)PriModel()實(shí)現(xiàn)優(yōu)先級(jí)調(diào)度算法FcfsModel()實(shí)現(xiàn)先來先服務(wù)算法pcbnum進(jìn)程數(shù)量freetimeCpu空閑時(shí)間allturn總周轉(zhuǎn)時(shí)間allaver總帶權(quán)周轉(zhuǎn)時(shí)間PcbList[]進(jìn)程就緒隊(duì)列的實(shí)現(xiàn)圖1-3CpuModel類程序流程圖1.可強(qiáng)占優(yōu)先調(diào)度算法實(shí)現(xiàn)過程流程圖:2先來先服務(wù)調(diào)度算法實(shí)現(xiàn)過程流圖pro_name[20];time_submit;time_exe;pro_id;pro_priority;time_start;time_end;〃進(jìn)程的名字〃提交時(shí)間,從時(shí)間為1開始計(jì)時(shí)//進(jìn)程所需的運(yùn)行時(shí)間〃進(jìn)程ID(系統(tǒng)生成)〃進(jìn)程優(yōu)先級(jí)〃開始執(zhí)行的時(shí)間〃結(jié)束的時(shí)間intintintinttime_wait;pro_state;time_left;pro_name[20];time_submit;time_exe;pro_id;pro_priority;time_start;time_end;〃進(jìn)程的名字〃提交時(shí)間,從時(shí)間為1開始計(jì)時(shí)//進(jìn)程所需的運(yùn)行時(shí)間〃進(jìn)程ID(系統(tǒng)生成)〃進(jìn)程優(yōu)先級(jí)〃開始執(zhí)行的時(shí)間〃結(jié)束的時(shí)間intintintinttime_wait;pro_state;time_left;time_turn;doubletimeaver〃等待的時(shí)間〃進(jìn)程的狀態(tài)(就緒,執(zhí)行,完成)〃還需多少時(shí)間單位,初始化為所需的執(zhí)行時(shí)間〃周轉(zhuǎn)時(shí)間//帶權(quán)周轉(zhuǎn)時(shí)間ProcessPcb(){next=NULL;}charintintintintintint2.創(chuàng)建PCB類classCpuModel,定義程序中使用的各函數(shù):boolvoidboolvoidvoidvoidCpuModel(){pcbnum=0;}voidcpurun();GetPcb();ShowPcb();PriModel();FcfsModel();
//cpu模擬運(yùn)行函數(shù)//進(jìn)程輸入函數(shù)〃將輸入的進(jìn)程展示出來//可強(qiáng)占的優(yōu)先進(jìn)程調(diào)度模式//先到先服務(wù)調(diào)度模式ProcessPcbPcbList[100];//按提交時(shí)間排的未就緒進(jìn)程隊(duì)列()}測(cè)試結(jié)果及分析1.開始運(yùn)行,顯示:遇程鏘,度模擬程序?qū)I(yè)"十算機(jī)科學(xué)與技術(shù)軟件工程2010H22班KMXKMX學(xué)號(hào)曲值112241姓名,張洪指導(dǎo)老師:張莉莉創(chuàng)建進(jìn)
顯不已,主菜單—.—…—勺進(jìn)程可每占的也先糖呈調(diào)度先虱先攫會(huì)調(diào)度KMXKMX創(chuàng)建進(jìn)
顯不已,請(qǐng)選擇=2.輸入進(jìn)程數(shù),各進(jìn)程屬性:請(qǐng)選擇:1zhanghong執(zhí)行時(shí)間:3請(qǐng)依達(dá)翅人第z登進(jìn)程的信息…J-fcJ-fcJ-fcJ-fcI執(zhí)行時(shí)間:2吐旦請(qǐng)依燧卷第招湛程的信息…,一Wangfe-[
2J-fcJ-fcJ-fcJ-fcI執(zhí)行時(shí)間:3吐旦關(guān)于提交時(shí)間執(zhí)行時(shí)間等,將檢測(cè)輸入是否數(shù)字,不是數(shù)字即退出程序。3.顯示已創(chuàng)建的各進(jìn)程及其屬性:進(jìn)*
進(jìn):程進(jìn)進(jìn)進(jìn)進(jìn)的123A1ff:3;"W.扁扁扁耳斗s..s..S礙王呈呈土一呂王呈呈下如¥干zhanghong攜忘時(shí)間uangfci提蓉時(shí)間廠lilei提類時(shí)間:3:3優(yōu)先級(jí)數(shù):9?3…伉先級(jí)數(shù):972熱仃時(shí)孫執(zhí)行時(shí)間;2伉先級(jí)數(shù):98此處的優(yōu)先級(jí)數(shù),是用100減去執(zhí)行時(shí)間。對(duì)于優(yōu)先級(jí)數(shù)相同,則默認(rèn)FIFO。4.測(cè)試可強(qiáng)占的優(yōu)先進(jìn)程調(diào)度:*請(qǐng)選擇=3*Time:占的優(yōu)先進(jìn)程調(diào)度過程如下*Time:Time:Time:可運(yùn)行的進(jìn)程Time:吊%時(shí)間:贏干始時(shí)間:號(hào);號(hào);S-進(jìn)程3運(yùn)行結(jié)束―■Iime:>T*1gg■Time:■Iime:|p-善需間'3禹桐=號(hào):號(hào):進(jìn)程1運(yùn)行精束:進(jìn)卷名字:Time:b持時(shí)間:進(jìn)*呈編號(hào):開焰時(shí)間:進(jìn)程2運(yùn)行結(jié)束:進(jìn)有客尹南轉(zhuǎn)E孑間:所有進(jìn)程運(yùn)行完畢!進(jìn)程名字:zhanghang提交時(shí)間:2執(zhí)行時(shí)間::還剩前?2優(yōu)先級(jí)藪?94進(jìn)程有字:wangfei提交時(shí)間:
還剩前間:2優(yōu)先領(lǐng)珈94,進(jìn)程名]字i還剩時(shí)間:S執(zhí)行時(shí)間;2執(zhí)行時(shí)間二執(zhí)行時(shí)間:lileiedit—提交時(shí)間:3執(zhí)行時(shí)間:2轉(zhuǎn)時(shí)間:LS開始時(shí)間;3結(jié)束時(shí)間;5進(jìn)程名字以如ngkog提葵時(shí)間:2執(zhí)彳丁時(shí)間:還剩帽間:1優(yōu)先級(jí)藪??!進(jìn)程名字:wangfei提交時(shí)間:2執(zhí)行時(shí)間:3還剩耐間:1優(yōu)先翳:91迸程冬字:2hangh(bin<f提葵時(shí)間:2執(zhí)行時(shí)間:還乘狷間:0優(yōu)先級(jí)酎閥zhanghun?提交時(shí)間:2執(zhí)行時(shí)間二3?帶權(quán)周轉(zhuǎn)時(shí)間;2.333332迸程一冬字:wangfei提袞日寸間:4還弟廚間:0優(yōu)先城裁既wangfei提交時(shí)間:2執(zhí)行時(shí)間:38帶權(quán)周轉(zhuǎn)時(shí)間:2-6666?epu剝用率:88.8889X一次調(diào)度完成,將計(jì)算此次運(yùn)行中CPU的利用率。5.先到先服務(wù)調(diào)度算法運(yùn)行情況:開始時(shí)間:2結(jié)束時(shí)間:執(zhí)行時(shí)間:開始時(shí)間:4結(jié)束時(shí)間:9可運(yùn)行的進(jìn)程TimeTimeTime到先服務(wù)進(jìn)程調(diào)度過程岌嚇gMHMMM謎程名字;zhanqhonq還剜時(shí)間:2Iime進(jìn)程名字:zhanghong還剜時(shí)間:1進(jìn)程.名字:zhanghong還剩時(shí)間"提交時(shí)閭:2提菱時(shí)間:2提妾時(shí)間:2我U亍時(shí)|職3執(zhí)行時(shí)間:3執(zhí)行時(shí)即3zhanghong提惠時(shí)間:23帶權(quán)周轉(zhuǎn):1執(zhí)行時(shí)間:開始時(shí)間:2結(jié)束時(shí)間:emiT2進(jìn)程名j字;wangfei提文時(shí)間;2寸時(shí)間三2執(zhí)行時(shí)間,325■■■■號(hào)間.S4U-■HT..O王4口4匚3—l+rrT.U1=:?ti.sTlx6進(jìn)爵進(jìn)開25■■■■號(hào)間.S4U...sH進(jìn)程名子二wang£ei據(jù)綴時(shí)間:還勤廚閭二1進(jìn)程名字:wang£ei提立時(shí)間:還剩時(shí)間"2執(zhí)行時(shí)中32執(zhí)行時(shí)閭:3wangfsi提交時(shí)間=2執(zhí)行時(shí)間:3開始時(shí)間=5結(jié)束時(shí)間=?6帶權(quán)周贛23進(jìn)程務(wù)字:lilei提交時(shí)閭;3執(zhí)行時(shí)間:28還剩酎孫13進(jìn)程者字:lilei提交時(shí)閭;3執(zhí)行時(shí)間:28還剩時(shí)閭次提忘肘期3執(zhí)行時(shí)間;2開始時(shí)卸8結(jié)束時(shí)期9?市權(quán)周轉(zhuǎn):3/有進(jìn)程運(yùn)行完畢!pu利用率:88.8889Z6?選擇5,回車,退出程序。設(shè)計(jì)心得在學(xué)完操作系統(tǒng)課程之后,一直對(duì)進(jìn)程調(diào)度這一塊不是很理解,借著做課程設(shè)計(jì)的機(jī)會(huì),我就選擇了進(jìn)程調(diào)度模擬編程這個(gè)題目,打算在做課程設(shè)計(jì)的過程中好好的再學(xué)習(xí)一下這塊的知識(shí)。我在做課程設(shè)計(jì)的過程中,遇到了許多的問題,通過請(qǐng)教同學(xué),上網(wǎng)查資料等途徑解決。通過這次操作系統(tǒng)的課程設(shè)計(jì),我研究了進(jìn)程調(diào)度的相關(guān)知識(shí),加深了對(duì)進(jìn)程調(diào)度的理解。課程設(shè)計(jì)和平時(shí)的實(shí)驗(yàn)課比較起來有很大的差距,實(shí)驗(yàn)課只是將這一章的一部分內(nèi)容練習(xí)操作一遍,而課程設(shè)計(jì)需要的是他們綜合起來的東西,這要更難一些??傮w來說我認(rèn)為操作系統(tǒng)這門學(xué)科在計(jì)算機(jī)科學(xué)當(dāng)中是非常重要的,這次操作系統(tǒng)的課程設(shè)計(jì)收獲頗豐,復(fù)習(xí)了許多東西,也從新學(xué)會(huì)了許多東西,我想這也許就是課程設(shè)計(jì)的最終目的吧。參考文獻(xiàn)劉振安、劉燕君著.《C++程序設(shè)計(jì)課程設(shè)計(jì)》.北京:機(jī)械工業(yè)出版社,2004[美]AbrahamSilberschatz,PeterBaerGalvin,GregGagne著.鄭扣根譯.操作系統(tǒng)概念(第六版).北京:高等教育出版社,2004陳向群,向勇等.Windows操作系統(tǒng)原理(第二版).北京:機(jī)械工業(yè)出版社,2004.費(fèi)翔林,李敏,葉保留等.Linux操作系統(tǒng)實(shí)驗(yàn)教程.北京:高等教育出版社,2009附錄:#include<iostream.h>#include<queue>#include<string>#include<windows.h>#include<malloc.h>usingnamespacestd;〃進(jìn)程的狀態(tài)#defineUNREADY0//未就緒#defineREADY1//就緒#defineEXECUTE2//執(zhí)行#defineEND3//完成//進(jìn)程的PCB結(jié)構(gòu)類型定義和結(jié)構(gòu)變量說明structProcessPcb(ProcessPcb()(next=NULL;}charpro_name[20];inttime_submit;inttime_exe;intpro_id;intpro_priority;inttime_start;inttime_end;inttime_wait;intpro_state;inttime_left;間inttime_turn;doubletime_aver;ProcessPcb*next;};〃進(jìn)程的名字〃提交時(shí)間,從時(shí)間的1開始計(jì)時(shí)//進(jìn)程所需的運(yùn)行時(shí)間〃進(jìn)程ID(系統(tǒng)生成)〃進(jìn)程優(yōu)先級(jí)〃開始執(zhí)行的時(shí)間//結(jié)束的時(shí)間〃等待的時(shí)間〃進(jìn)程的狀態(tài)(就緒,執(zhí)行,完成)〃還需多少時(shí)間單位,初始化為所需的執(zhí)行時(shí)〃周轉(zhuǎn)時(shí)間//帶權(quán)周轉(zhuǎn)時(shí)間〃封裝CPU調(diào)度與分配程序模塊。進(jìn)程類classCpuModel(public:CpuModel()(pcbnum=0;}voidboolvoidcpurun();CreatePcb();ShowPcb();//cpu模擬運(yùn)行函數(shù)//進(jìn)程輸入函數(shù)〃將輸入的進(jìn)程展示出來voidPriModel();//可強(qiáng)占的優(yōu)先進(jìn)程調(diào)度模式voidFcfsModel();//先到先服務(wù)調(diào)度模式private:ProcessPcbprivate:ProcessPcbPcbList[100];intpcbnum;intfreetime;intallturn;floatallaver;};〃按提交時(shí)間排的未就緒進(jìn)程隊(duì)列〃進(jìn)程數(shù)量//cpu空閑時(shí)間〃總周轉(zhuǎn)時(shí)間〃總帶權(quán)周轉(zhuǎn)時(shí)間#include<algorithm>//cpu模擬運(yùn)行函數(shù)voidCpuModel::cpurun()(intchoose=0while(1)(cout<<"***主菜單***"<<endl;cout<<""<<endl;cout<<"***1:創(chuàng)建進(jìn)程***"<<endl;cout<<"***2:顯示已創(chuàng)建的進(jìn)程***"<<endl;cout<<"***3:可強(qiáng)占的優(yōu)先進(jìn)程調(diào)度***"<<endl;cout<<"***4:先到先服務(wù)調(diào)度***"<<endl;cout<<"***5:退出系統(tǒng)***"<<endl;cout<<"\n***請(qǐng)選擇:";cin>>choose;cout<<endl;switch(choose)(case1:CreatePcb();〃創(chuàng)建進(jìn)程break;case2:ShowPcb();〃顯示已創(chuàng)建的進(jìn)程break;case3:PriModel();〃可強(qiáng)占的優(yōu)先進(jìn)程方式break;case4:FcfsModel();//先到先服務(wù)調(diào)度方式break;case5:return;〃結(jié)束程序}cout<<endl;}}〃按進(jìn)程提交時(shí)間排序的比較函數(shù)boolcmp(ProcessPcba,ProcessPcbb)(if(a.time_submit<b.time_submit)
returntrue;returnfalse;}//判斷是否數(shù)字intisnumber(chara[])intlen二strlen(a);inti,num=0;if(a[0]>'0'&&a[0]<='9')num=a[0]-'0';elsereturn-1;for(i=1;i<len;i++)(if(a[i]>='0'&&a[i]<='9')num二num*10+a[i]-'0';elsereturn-1;}returnnum;}〃進(jìn)程輸入函數(shù)boolCpuModel::CreatePcb()(charnum[10];cout<<"\n***請(qǐng)輸入你想建立的進(jìn)程個(gè)數(shù):〃;cin>>num;//輸入進(jìn)程個(gè)數(shù)pcbnum二isnumber(num);if(pcbnum<=0)(cout<<"***輸入有錯(cuò)***\n";return0;}inti;for(i=0;i<pcbnum;i++)//輸入進(jìn)程信息(cout<<"***請(qǐng)依次輸入第〃<<i+1<<〃個(gè)進(jìn)程的信息***"<<endlcout<<"*******名字:";cin>>PcbList[i].pro_name;cout<<"***提交時(shí)間:〃cin>>num;PcbList[i].time_submit二isnumber(num);if(PcbList[i].time_submit<=0)(cout<<"***輸入有錯(cuò)***\n";return0;}cout<<"***執(zhí)行時(shí)間:〃;cin>>num;PcbList[i].time_exe=isnumber(num);if(PcbList[i].time_exe<=0)(cout<<"***輸入有錯(cuò)***\n";return0;}PcbList[i].time_left=PcbList[i].time_exe;//設(shè)置剩余執(zhí)行時(shí)間PcbList[i].pro_state二UNREADY;//設(shè)置狀態(tài)為未就緒PcbList[i].pro_priority=100-PcbList[i].time_exe;//設(shè)置優(yōu)先級(jí),優(yōu)先級(jí)二100-執(zhí)行時(shí)間cout<<endl;}sort(PcbList,PcbList+pcbnum,cmp);//按提交時(shí)間排序for(i=0;i<pcbnum;i++)PcbList[i].pro_id=i+1;//設(shè)置Id,根據(jù)提交時(shí)間return1;}〃展示所需執(zhí)行進(jìn)程信息voidCpuModel::ShowPcb()(inti;cout<<"\n***所需執(zhí)行的進(jìn)程信息如下***\n";for(i=0;i<pcbnum;i++)cout<<"進(jìn)程編號(hào):〃<<PcbList[i].pro_id<<〃進(jìn)程名字:<<PcbList[i].pro_name<<"提交時(shí)間:"<<PcbList[i].time_submit<<"執(zhí)行時(shí)間:"<<PcbList[i].time_exe<<"優(yōu)先級(jí)數(shù):"<<PcbList[i].pro_priority<<endl;cout<<endl;}//可強(qiáng)占的優(yōu)先進(jìn)程調(diào)度模式voidCpuModel::PriModel()cout<<"********可強(qiáng)占的優(yōu)先進(jìn)程調(diào)度過程如下********\n";freetime=0;inttime=0;intnextid=0;intpnum=0;ProcessPcb*head;〃初始化系統(tǒng)空閑時(shí)間為0//時(shí)間〃已就緒進(jìn)程數(shù)目〃就緒隊(duì)列ProcessPcb*pcb,*pcb1,*pcb2;head=(ProcessPcb*)malloc(sizeof(ProcessPcb));head->next=NULL;//head指針不用,head->next開始為就緒隊(duì)列//模擬cpu開始工作while(head->next!=NULL||pnum<pcbnum)(Sleep(1000);time++;//時(shí)間片為1cout<<"*Time:第"<<time<<"秒"<<endl;//打印//進(jìn)程就緒(查看未就緒的進(jìn)程中在該時(shí)間片是否可以進(jìn)入就緒隊(duì)列)while(pnum<pcbnum&&PcbList[pnum].time_submit<=time)(pcb=(ProcessPcb*)malloc(sizeof(ProcessPcb));*pcb二PcbList[pnum++];//進(jìn)入就緒隊(duì)列pcb->next=head->next;//插在head之后head->next=pcb;}//查找在time時(shí)間片應(yīng)該運(yùn)行的進(jìn)程if(head->next==NULL)(cout<<"沒有可運(yùn)行的進(jìn)程〃<<endl;freetime++;}else(pcb2=head;pcb=head->next;pcb1=head->next;〃查找當(dāng)前優(yōu)先級(jí)最高的就緒進(jìn)程while(pcb1->next!二NULL)(if(pcb->pro_priority<=pcb1->next->pro_priority)(pcb2=pcb1;pcb=pcb1->next;}pcb1=pcb1->next;}〃運(yùn)行優(yōu)先級(jí)最高的進(jìn)程if(pcb->time_left==pcb->time_exe)//該進(jìn)程是否已開始(pcb->time_start=time;//設(shè)置開始時(shí)間pcb->pro_state=EXECUTE;〃設(shè)置狀態(tài)為執(zhí)行pcb->pro_priority=pcb->pro_priority-3;//優(yōu)先級(jí)數(shù)減3pcb->time_left--;//剩余執(zhí)行時(shí)間減去時(shí)間片1〃打印該進(jìn)程信息cout<<"進(jìn)程編號(hào):"<<pcb->pro_id<<"進(jìn)程名字:〃<<pcb->pro_name<<"提交時(shí)間:"<<pcb->time_submit<<"執(zhí)行時(shí)間:"<<pcb->time_exe<<"\n開始時(shí)間:"<<pcb->time_start<<"還剩時(shí)間:〃<<pcb->time_left<<〃優(yōu)先級(jí)數(shù):〃<<pcb->pro_priority<<endl;//該進(jìn)程是否執(zhí)行結(jié)束if(pcb->time_left==0)(pcb2->next=pcb2->next->next;//將其在就緒隊(duì)列中出列pcb->time_end=time;//設(shè)置結(jié)束時(shí)間pcb->time_turn=pcb->time_end-pcb->time_submit+1;//計(jì)算周轉(zhuǎn)時(shí)間pcb->time_aver=pcb->time_turn/(double)pcb->time_exe;//計(jì)算帶權(quán)周轉(zhuǎn)時(shí)間pcb->pro_state二END;cout<<"\n進(jìn)程〃<<pcb->pro_id<<〃運(yùn)行結(jié)束:〃<<〃\n進(jìn)程名字:〃<<pcb->pro_name<<"提交時(shí)間:〃<<pcb->time_submit<<"執(zhí)行時(shí)間:〃<<pcb->time_exe<<"開始時(shí)間:〃<<pcb->time_start<<"結(jié)束時(shí)間:〃<<pcb->time_end<<〃\n周轉(zhuǎn)時(shí)間:〃<<pcb->time_turn<<"帶權(quán)周轉(zhuǎn)時(shí)間:〃<<pcb->time_aver<<endl;}}//模擬CPU工作結(jié)束cout<<"\n所有進(jìn)程運(yùn)行完畢!"<<endl;doublec=(time-freetime)/(double)time*100;cout<<"\ncpu利用率:〃<<c<<〃%〃<<endl;}〃可強(qiáng)占的優(yōu)先進(jìn)程調(diào)度模式結(jié)束//先到先服務(wù)調(diào)度模式voidCpuModel::FcfsModel()(cout<<"********先到先服務(wù)進(jìn)程調(diào)度過程如下********\n";freetime=0;//初始化系統(tǒng)空閑時(shí)間為0inttime=0;//時(shí)間intpnum=0;//已就緒進(jìn)程數(shù)目ProcessPcbque[100];//就緒隊(duì)列intquef=0,quee=0;//就緒隊(duì)列的頭指針和尾指針//模擬cpu開始工作while(quef<quee||pnum<pcbnum)(Sleep(1000);time++;//時(shí)間片為1cout<<"*Time:第〃<<time<<〃秒”<<endl;〃打印〃進(jìn)程就緒(查看未就緒的進(jìn)程中在該時(shí)間片是否可以進(jìn)入就緒隊(duì)列)while(pnum<pcbnum&&PcbList[pnum].time_submit<=time)que[quee++]=PcbList[pnum++];〃查找time時(shí)間片的運(yùn)行進(jìn)程if(quef==quee)(cout<<"沒有可運(yùn)行的進(jìn)程〃<<endl;freetime++;}else(〃運(yùn)行進(jìn)程if(que[quef].time_left==que[quef].time_exe)//該進(jìn)程是否已開始(que[quef].time_start二time;//設(shè)置開始時(shí)間que[quef].pro_state二EXECUTE;//設(shè)置狀態(tài)為執(zhí)行}que[quef].time_left--;//剩余執(zhí)行時(shí)間減去時(shí)間片1//打印進(jìn)程信息cout<<"進(jìn)程編號(hào):〃<<que[quef].p
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 煙機(jī)設(shè)備操作工道德模擬考核試卷含答案
- 富集工QC管理測(cè)試考核試卷含答案
- 中藥質(zhì)檢員操作規(guī)程知識(shí)考核試卷含答案
- 鉭電解電容器賦能、被膜工安全生產(chǎn)知識(shí)測(cè)試考核試卷含答案
- 石油勘探測(cè)量工QC管理水平考核試卷含答案
- 光學(xué)鏡頭制造工安全教育強(qiáng)化考核試卷含答案
- 樹脂采收工保密考核試卷含答案
- 干酪素點(diǎn)制工安全管理測(cè)試考核試卷含答案
- 煤層氣增產(chǎn)作業(yè)工安全培訓(xùn)效果競(jìng)賽考核試卷含答案
- 鐵氧體材料燒成工創(chuàng)新意識(shí)測(cè)試考核試卷含答案
- 2026云南大理州事業(yè)單位招聘48人參考題庫必考題
- 校長政治素質(zhì)自評(píng)報(bào)告
- 2026年孝昌縣供水有限公司公開招聘正式員工備考題庫及完整答案詳解1套
- 2026年黑龍江職業(yè)學(xué)院單招綜合素質(zhì)筆試備考試題附答案詳解
- 2025年紹興市諸暨市輔警考試真題附答案解析
- 陜西省渭南市臨渭區(qū)2024-2025學(xué)年四年級(jí)上學(xué)期期末考試數(shù)學(xué)題
- 2025版安全標(biāo)志大全高清
- 甲狀腺的中醫(yī)護(hù)理
- 商住樓項(xiàng)目總體規(guī)劃方案
- 2022儲(chǔ)能系統(tǒng)在電網(wǎng)中典型應(yīng)用
- IABP主動(dòng)脈球囊反搏課件
評(píng)論
0/150
提交評(píng)論