版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 四川省綿陽市北川羌族自治縣2024-2025學(xué)年九年級上學(xué)期1月期末考試歷史試卷(含答案)
- 湖南省永州市道縣2024-2025學(xué)年八年級上學(xué)期期末考試物理試卷(含答案)
- 廣東省茂名市高州市2024-2025學(xué)年九年級上學(xué)期期末質(zhì)量監(jiān)測道德與法治試題(含答案)
- 2025年度倉儲租賃及倉儲信息化系統(tǒng)建設(shè)協(xié)議3篇
- 2024前臺工作計劃范本(30篇)
- 音頻通信知識培訓(xùn)課件
- 2025年度年度財務(wù)審計與合規(guī)審查合同3篇
- 2025年度廠房改造裝修與節(jié)能照明系統(tǒng)合同3篇
- 2024藥房員工特殊工種勞動保護及職業(yè)健康合同3篇
- 2024物業(yè)管理承包經(jīng)營合同書
- 2025福建中閩海上風(fēng)電限公司招聘14人高頻重點提升(共500題)附帶答案詳解
- 智能網(wǎng)聯(lián)汽車技術(shù)應(yīng)用專業(yè)國家技能人才培養(yǎng)工學(xué)一體化課程標(biāo)準(zhǔn)
- 政治-北京市朝陽區(qū)2024-2025學(xué)年高三第一學(xué)期期末質(zhì)量檢測考試試題和答案
- 物業(yè)公司績效考核與激勵機制
- 術(shù)后甲狀旁腺功能減退癥管理專家共識
- 【7道期末】安徽省安慶市區(qū)2023-2024學(xué)年七年級上學(xué)期期末道德與法治試題(含解析)
- 漢字文化解密學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 水利工程安全生產(chǎn)組織機構(gòu)
- 廣東省佛山市南海區(qū)人民法院
- 我縣教育發(fā)展面臨的問題及對策建議
- 口腔修復(fù)學(xué)專業(yè)英語詞匯整理
評論
0/150
提交評論