操作系統(tǒng)使用簡單輪轉(zhuǎn)法實現(xiàn)操作系統(tǒng)進程調(diào)度_第1頁
操作系統(tǒng)使用簡單輪轉(zhuǎn)法實現(xiàn)操作系統(tǒng)進程調(diào)度_第2頁
操作系統(tǒng)使用簡單輪轉(zhuǎn)法實現(xiàn)操作系統(tǒng)進程調(diào)度_第3頁
操作系統(tǒng)使用簡單輪轉(zhuǎn)法實現(xiàn)操作系統(tǒng)進程調(diào)度_第4頁
操作系統(tǒng)使用簡單輪轉(zhuǎn)法實現(xiàn)操作系統(tǒng)進程調(diào)度_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

《操作系統(tǒng)原理》課程設(shè)計報告課題名稱:使用簡單輪轉(zhuǎn)法實現(xiàn)操作系統(tǒng)進程調(diào)度姓名:班級:學(xué)號:指導(dǎo)老師:二〇一三年十二月二十日

目錄第1章課題介紹 第1章課題介紹1.1課程設(shè)計的目的進程是操作系統(tǒng)最重要的概念之一,進程調(diào)度又是操作系統(tǒng)核心的主要內(nèi)容。本次課程設(shè)計是要求學(xué)生獨立地用高級語言編寫和調(diào)試一個簡單的進程調(diào)度程序。通過本實驗可以加深理解有關(guān)進程控制塊、進程隊列的概念,并體會和了解優(yōu)先權(quán)調(diào)度算法和時間片輪轉(zhuǎn)調(diào)度算法的具體實施辦法。調(diào)度算法可任意選擇或自行設(shè)計。任務(wù)一是采用簡單輪轉(zhuǎn)法。本課題可以加深對進程調(diào)度和各種調(diào)度算法的理解,并通過課程設(shè)計,讓我們更好的掌握操作系統(tǒng)的原理以及實現(xiàn)方法,加深對操作系統(tǒng)基礎(chǔ)理論和重要算法的理解,加強我們自身的動手能力。1.2課程設(shè)計的要求1)設(shè)計一個有n個進程并發(fā)的進程調(diào)度程序。每個進程由一個進程控制塊(PCB)表示。進程控制塊一般應(yīng)該包含下述信息:進程名、進程優(yōu)先數(shù)、進程需要運行的時間、占用CPU的時間以及進程的狀態(tài)等,且可按調(diào)度算法的不同而增刪。2)調(diào)度程序應(yīng)包含1~2種不同的調(diào)度算法,運行時可任意選一種,以利于各種算法的分析比較。3)算法應(yīng)能顯示或打印各個進程的PID、狀態(tài)(運行狀態(tài)R、等待狀態(tài)W等)和參數(shù)(已運行時間等)的變化情況,便于觀察諸進程的調(diào)度過程

第2章總體設(shè)計2.1程序流程圖輪轉(zhuǎn)法進程調(diào)用先輸入進程的格式及信息,然后對進程進行輪轉(zhuǎn)法調(diào)度,按隊列中進程的順序依次運行程序,每運行完一次對其時間片相減,直到時間片用完,程序結(jié)束。輪轉(zhuǎn)法進程調(diào)用程序流程圖如圖2-1所示:圖2-1總程序流程圖建立進程控制塊函數(shù)input()的程序流程圖如圖2-2所示:圖2-2input()函數(shù)的程序流程圖2.2軟件模塊圖要實現(xiàn)輪轉(zhuǎn)法的進程調(diào)度,將其功能設(shè)計為四個界面模塊,進程控制塊模塊、進程顯示模塊、進程查看模塊、進程就緒模塊。輪轉(zhuǎn)法進程調(diào)度功能模塊圖如圖2-3所示:圖2-3輪轉(zhuǎn)法進程調(diào)度功能模塊圖2.3設(shè)計原理系統(tǒng)將所有的就緒進程按先來先服務(wù)的原則排成一個隊列,每次調(diào)度時,把CPU分配給隊首進程,并令其執(zhí)行一個時間片。時間片的大小從幾MS到幾百MS。當(dāng)執(zhí)行的時間片用完時,由一個計時器發(fā)出時鐘中斷請求,調(diào)度程序便據(jù)此信號來停止該進程的執(zhí)行,并將它送往就緒隊列的末尾;然后再把處理機分配給就緒隊列中的新的隊首進程,同時也讓他執(zhí)行一個時間片。這樣就可以保證就緒隊列中的所有進程在一給定的時間內(nèi)均能獲得一時間片的處理機執(zhí)行時間。即,系統(tǒng)能在給定時間內(nèi)相應(yīng)所有用戶的請求。2.4設(shè)計內(nèi)容本實驗主要是對時間片輪轉(zhuǎn)法調(diào)度的模擬。由用戶自己輸入進程數(shù)和時間片,將所輸入的進程按順序排成循環(huán)隊列,處理器按順序選擇進程來執(zhí)行。每個進程都是處于運行R(run)、就緒W(wait)兩種狀態(tài)之一,并假設(shè)起始狀態(tài)都是就緒狀態(tài)W。正在運行的進程則是R狀態(tài),若某個進程沒有結(jié)束則優(yōu)先級設(shè)最低,放到隊尾,下次循環(huán)再執(zhí)行;若進程結(jié)束則退出隊列,并顯示此進程已完成。

下面介紹簡單輪轉(zhuǎn)法進程調(diào)度算法:

簡單輪轉(zhuǎn)法。進程就緒鏈按各進程進入的先后次序排列,進程每次占用處理機的輪轉(zhuǎn)時間按其重要程度登入進程控制塊中的輪轉(zhuǎn)時間片數(shù)記錄項(相當(dāng)于優(yōu)先數(shù)法的優(yōu)先數(shù)記錄項位置)。每過一個時間片,運行進程占用處理機的時間片數(shù)加1,然后比較占用處理機的時間片數(shù)是否與該進程的輪轉(zhuǎn)時間片數(shù)相等,若相等說明已到達輪轉(zhuǎn)時間,應(yīng)將現(xiàn)運行進程排到就緒鏈末尾,調(diào)度鏈?zhǔn)走M程占用處理機,且改變它們的進程狀態(tài),直至所有進程完成各自的時間片。進程控制塊結(jié)構(gòu)如下:PCB進程ID進程狀態(tài)輪轉(zhuǎn)時間片數(shù)進程所需時間片數(shù)鏈指針進程控制塊鏈結(jié)構(gòu)如下:TAILTAILRUNR…HEADW…W…W…2.5主要功能本程序選用簡單輪轉(zhuǎn)法對n個進程進行調(diào)度。每個進程處于運行R(run)、就緒W(wait)兩種狀態(tài)之一,并假設(shè)起始狀態(tài)都是就緒狀態(tài)W,當(dāng)進程結(jié)束則踢出隊列。為了便于處理,程序進程的運行時間以時間片為單位計算。2.6實現(xiàn)環(huán)境本次課程設(shè)計結(jié)合算法的特點,采用Windows操作系統(tǒng)平臺。開發(fā)工具為MicrosoftVisualC++6.0。第3章詳細設(shè)計及思考題3.1詳細設(shè)計3.1.1數(shù)據(jù)結(jié)構(gòu)structpcb{/*定義進程控制塊PCB*/charname[10];/*進程的名字*/charstate;/*進程的狀態(tài)*/intntime;/*進程需要的運行時間*/intrtime;/*已執(zhí)行的時間*/intltime;/*剩余需執(zhí)行的時間*/structpcb*link;}/*下一個進程控制塊的地址*/3.1.2函數(shù)聲明main()主函數(shù)input()進程控制塊函數(shù)insert()插入要構(gòu)造的進程函數(shù)disp()顯示當(dāng)前進程函數(shù) check()進程查看函數(shù)destroy()進程撤銷函數(shù)running()進程就緒函數(shù)3.1.3函數(shù)input()input()/*建立進程控制塊函數(shù)*/{inti,num;printf("\n請輸入進程個數(shù):");scanf("%d",&num);for(i=1;i<=num;i++){p=getpch(PCB);printf("\n輸入第%d個進程名:",i);scanf("%s",p->name);printf("\n輸入第%d個進程運行時間:",i);scanf("%d",&p->ntime);printf("\n");p->rtime=0;p->state='w';p->link=NULL;insert();/*調(diào)用insert函數(shù)把輸入的進程插入到隊列后面*/}}3.2思考題(3) 如果增加進程的“等待”狀態(tài),即進程因請求輸入輸出等問題而掛起的狀態(tài),如何在程序中實現(xiàn)?答:阻塞→阻塞/掛起:OS通常將阻塞進程換出,以騰出內(nèi)存空間阻塞/掛起→就緒/掛起:當(dāng)阻塞/掛起進程等待的事件發(fā)生時,可以將其轉(zhuǎn)換為就緒/掛起。就緒/掛起→就緒:OS需要調(diào)入一個進程執(zhí)行。就緒→就緒/掛起:一般,OS掛起阻塞進程。但是有時也會掛起就緒進程,釋放足夠的內(nèi)存空間。新進程→就緒/掛起(新進程→就緒):新進程創(chuàng)建后,可以插入到就緒隊列或就緒,掛起隊列,若無足夠的內(nèi)存分配給新進程,則需要新進程→就緒/掛起。圖3-1進程的掛起和解除掛起的狀態(tài)

第4章程序測試圖4-1輸入進程信息及時間片數(shù)圖4-2進程運行圖圖4-3進程運行圖圖4-4進程完成圖

第5章總結(jié)經(jīng)過這次的課程設(shè)計,讓我學(xué)到了很多。首先是編程,C語言是大一的課程,現(xiàn)在已經(jīng)遺忘了很多,這次的課程設(shè)計讓我又溫習(xí)了一遍C語言的知識點。其次,在編程中遇到了很多問題,經(jīng)過小組同學(xué)之間討論,并查看相關(guān)資料后都一并解決了,對課本及規(guī)范又有了充分地了解,實踐是檢驗真理的唯一標(biāo)準(zhǔn)。因為這次的課程設(shè)計只有1周,所以程序做的略有粗糙,相信如果再給我們一周時間,肯定能完善該程序。小組成員各自編的程序在執(zhí)行時都有錯誤,經(jīng)過大家相互查找錯誤,終于把完整的程序編寫了出來,并順利完成報告,讓我明白了我們的工作是一個團隊的工作,團隊需要個人,個人也離不開團隊。課程設(shè)計是培養(yǎng)學(xué)生綜合運用所學(xué)知識,發(fā)現(xiàn),提出,分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對學(xué)生實際工作能力的具體訓(xùn)練和考察過程。我覺得做課程設(shè)計同時也是對課本知識的鞏固和加強,由于課本上的知識太多,平時課間的學(xué)習(xí)并不能很好的理解和運用書本上的知識內(nèi)容,而且考試內(nèi)容有限,課程設(shè)計就給了我們一個很好的實踐結(jié)合的機會。平時看課本時,有時問題老是弄不懂,做完課程設(shè)計,那些問題就迎刃而解了。這次課程設(shè)計順利完成了,期間,程序中有幾個小組成員都沒有注意到的bug,然后在老師的指導(dǎo)下,我們又修改了程序并反復(fù)測試,終于使程序完美了。同時,在老師的身上我學(xué)到了很多實用的知識,我們應(yīng)該多方面考慮,不能局限在一個小空間里,要學(xué)會找出程序不足的地方并填補它。參考文獻[1]湯小丹,梁紅兵,哲風(fēng)屏,湯子瀛.計算機操作系統(tǒng).西安:西安電子科技大學(xué)出版社,2011[2]張堯?qū)W,史美林.計算

溫馨提示

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

最新文檔

評論

0/150

提交評論