資源描述:
《操作系統(tǒng)課程設(shè)計(jì)報(bào)告--動(dòng)態(tài)優(yōu)先級(jí)調(diào)度算法和先來先服務(wù)算法》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。
1、操作系統(tǒng)課程設(shè)計(jì)報(bào)告題目:動(dòng)態(tài)優(yōu)先級(jí)調(diào)度算法和先來先服務(wù)算法專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)班級(jí):計(jì)算機(jī)081學(xué)號(hào):200810311023姓名:陳淵上海海事大學(xué)信息工程學(xué)院2011年6月21日目錄1.課程設(shè)計(jì)任務(wù)描述與要求——進(jìn)程調(diào)度模擬程序…………P32.系統(tǒng)總體結(jié)構(gòu)描述和主要數(shù)據(jù)結(jié)構(gòu)說明……………………P43.先來先服務(wù)算法………………………………………………P64.動(dòng)態(tài)優(yōu)先級(jí)調(diào)度算法…………………………………………P85.總結(jié)……………………………………………………………P11課程設(shè)計(jì)的內(nèi)容如下:1、進(jìn)程調(diào)度模擬程序設(shè)計(jì)要求:編寫一個(gè)進(jìn)程調(diào)度程序,模擬
2、實(shí)現(xiàn)進(jìn)程的創(chuàng)建、運(yùn)行、阻塞、完成等進(jìn)程控制,允許多個(gè)進(jìn)程并行的進(jìn)程調(diào)度程序。a.系統(tǒng)能夠真實(shí)模擬多任務(wù)操作系統(tǒng)中進(jìn)程生命周期中的相關(guān)活動(dòng),主要功能涉及進(jìn)程管理和進(jìn)程調(diào)度。b.進(jìn)程狀態(tài):每個(gè)進(jìn)程的狀態(tài)可以是就緒W(Wait)、運(yùn)行R(Run)、阻塞B(Blocked)或完成F(Finish)四種狀態(tài)之一。c.每個(gè)進(jìn)程相關(guān)的數(shù)據(jù)結(jié)構(gòu)有:進(jìn)程控制塊(PCB)和進(jìn)程生命周期數(shù)據(jù)。w進(jìn)程控制塊(PCB):至少應(yīng)該包含如下信息:進(jìn)程名、優(yōu)先級(jí)、創(chuàng)建時(shí)間、需要運(yùn)行時(shí)間、已使用CPU時(shí)間、進(jìn)程狀態(tài)、進(jìn)程生命周期數(shù)據(jù)、隊(duì)列鏈表等等。w進(jìn)程生命周期數(shù)據(jù):即CPU-I/O
3、時(shí)間序列,它是進(jìn)程調(diào)度、進(jìn)入不同隊(duì)列的依據(jù)。如序列:10秒(CPU),500秒(I/O),20秒(CPU),100秒(I/O),30秒(CPU),90秒(I/O),110秒(CPU),60秒(I/O)……等,要求序列有一定長度,在進(jìn)程創(chuàng)建時(shí)隨機(jī)生成,作為進(jìn)程PCB結(jié)構(gòu)的一個(gè)數(shù)據(jù)項(xiàng)。d.系統(tǒng)管理的數(shù)據(jù)結(jié)構(gòu)w系統(tǒng)PCB結(jié)構(gòu)數(shù)組;w系統(tǒng)就緒隊(duì)列、完成隊(duì)列和阻塞隊(duì)列;w系統(tǒng)參數(shù):時(shí)鐘(可以調(diào)節(jié)速度,以利于觀看系統(tǒng)運(yùn)行)、時(shí)間片大小;e.系統(tǒng)運(yùn)行時(shí)的顯示信息時(shí)鐘以時(shí)間片為單位計(jì)數(shù),系統(tǒng)每次有進(jìn)程發(fā)生狀態(tài)改變時(shí)都給出改變進(jìn)程的顯著提示信息,系統(tǒng)在運(yùn)行完每個(gè)時(shí)間片
4、后都要顯示所有隊(duì)列和相關(guān)進(jìn)程的狀態(tài),以便掌握系統(tǒng)的運(yùn)行情況。分配到的任務(wù):采用動(dòng)態(tài)優(yōu)先級(jí)調(diào)度算法(優(yōu)先級(jí)的計(jì)算自己決定,但一個(gè)進(jìn)程的優(yōu)先級(jí)要隨時(shí)間改變,即UNIX的策略)和先來先服務(wù)算法。2.系統(tǒng)總體結(jié)構(gòu)描述和主要數(shù)據(jù)結(jié)構(gòu)說明1.整體功能需求在多道程序運(yùn)行下,進(jìn)程數(shù)目一般多于處理機(jī)數(shù)目,使進(jìn)程通過競(jìng)爭(zhēng)來使用處理機(jī)。這要求系統(tǒng)按照某種算法,動(dòng)態(tài)分配給就緒隊(duì)列中的一個(gè)進(jìn)程,使之運(yùn)行,分配的任務(wù)就是由進(jìn)程調(diào)度完成的。對(duì)于不同的系統(tǒng)和系統(tǒng)分配目標(biāo),通常采用不同的調(diào)度算法。我們要做的就是用以模擬進(jìn)程調(diào)度過程,實(shí)現(xiàn)進(jìn)程調(diào)度的算法:算法1:先來先服務(wù)如果早就緒的進(jìn)
5、程排在就緒隊(duì)列的前面,遲就緒的進(jìn)程排在就緒隊(duì)列的后面,那么先來先服務(wù)(FCFS:firstcomefirstservice)總是把當(dāng)前處于就緒隊(duì)列之首的那個(gè)進(jìn)程調(diào)度到運(yùn)行狀態(tài)。也就說,它只考慮進(jìn)程進(jìn)入就緒隊(duì)列的先后,而不考慮它的下一個(gè)CPU周期的長短及其他因素。FCFS算法簡(jiǎn)單易行,但性能卻不大好。算法2:動(dòng)態(tài)優(yōu)先級(jí)調(diào)度算法不同的進(jìn)程的重要程度和緊急程度不同的,優(yōu)先級(jí)調(diào)度算法給每個(gè)進(jìn)程賦予一個(gè)優(yōu)先級(jí),帶有最高優(yōu)先級(jí)的進(jìn)程最先執(zhí)行。動(dòng)態(tài)優(yōu)先級(jí)可以防止優(yōu)先級(jí)高的進(jìn)程不停的執(zhí)行,例如可以在每一個(gè)時(shí)鐘中斷時(shí)降低正在運(yùn)行著的進(jìn)程優(yōu)先級(jí)。這樣該進(jìn)程必然在某個(gè)時(shí)刻
6、優(yōu)先級(jí)低于其他進(jìn)程,從而被切換掉。系統(tǒng)還可以通過動(dòng)態(tài)確定優(yōu)先級(jí),以使某些特定的進(jìn)程得以優(yōu)先執(zhí)行。2.進(jìn)程調(diào)度系統(tǒng)總體模塊結(jié)構(gòu)圖:主要數(shù)據(jù)結(jié)構(gòu):publicclassPCB{publicintnameid;//進(jìn)程名publicstringnowtime;//進(jìn)程到達(dá)時(shí)間publicintneedtime;//完成進(jìn)程所需時(shí)間publicintcount=1;staticRandomrand=newRandom();publicString[]Process()//初始化進(jìn)程{nameid=count++;nowtime=DateTime.Now.To
7、String();needtime=rand.Next(5,20);string[]k={nameid.ToString(),nowtime,needtime.ToString()};returnk;}}3.課程設(shè)計(jì)報(bào)告內(nèi)容3.1先來先服務(wù)算法代碼:publicvoidfcfs()//先來先服務(wù){(diào)inti=Convert.ToInt16(run隊(duì)列[2,0].Value);//獲取進(jìn)程運(yùn)行時(shí)間if(i!=0){i--;object[]obj2={run隊(duì)列[0,0].Value,run隊(duì)列[1,0].Value,i};run隊(duì)列.Rows.Remov
8、eAt(0);DataRowdr2=d1.NewRow();dr2.ItemArray=obj2;d1.Ro