




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 . . . 操作系統(tǒng)課程設(shè)計(jì)題 目:處理機(jī)管理 學(xué)生:XXX學(xué) 院:信息工程學(xué)院系 別:計(jì)算機(jī)系 專 業(yè):軟件工程 班 級(jí):軟件09-1指導(dǎo)教師:XXX 教授XXX 教授2011年12月30日XXX大學(xué)課程設(shè)計(jì)任務(wù)書學(xué)院(系):課程名稱:操作系統(tǒng)課程設(shè)計(jì) 指導(dǎo)教師(簽名):專業(yè)班級(jí): 軟件工程 091 學(xué)生: XXX 學(xué)號(hào): XXXXXXXXX 一、課程設(shè)計(jì)題目處理機(jī)管理二、課程設(shè)計(jì)的目的學(xué)生通過設(shè)計(jì)一個(gè)模擬單處理機(jī)調(diào)度的算法,以鞏固和加深處理機(jī)調(diào)度的概念。使學(xué)生初步具有研究、設(shè)計(jì)、編制和調(diào)試操作系統(tǒng)模塊的能力。三、課程設(shè)計(jì)的主要容和要求(包括原始數(shù)據(jù)、技術(shù)參數(shù)、設(shè)計(jì)要求、工作量要求等) 原
2、始數(shù)據(jù):進(jìn)程控制塊PCB結(jié)構(gòu)體。 技術(shù)參數(shù):Windows XP系統(tǒng),VC+6.0開發(fā)工具。設(shè)計(jì)要求:1 設(shè)計(jì)基于時(shí)間片輪轉(zhuǎn)法的處理機(jī)調(diào)度算法;2 或設(shè)計(jì)基于先來先服務(wù)或基于優(yōu)先權(quán)的處理機(jī)調(diào)度算法;3 畫出以上算法流程圖;4 編程實(shí)現(xiàn)算法功能;5編寫課程設(shè)計(jì)說明書。工作量要求:完成以上設(shè)計(jì)要求中的所有算法功能。四、工作進(jìn)度安排周一:布置、講解題目,收集資料;周二:系統(tǒng)分析,算法設(shè)計(jì);周三:編制、調(diào)試程序;周四:測試系統(tǒng),形成設(shè)計(jì)結(jié)論,編寫課設(shè)報(bào)告;周五:系統(tǒng)與材料驗(yàn)收,課設(shè)答辯。五、主要參考文獻(xiàn)1堯?qū)W編計(jì)算機(jī)操作系統(tǒng)教程(第三版)習(xí)題解答與實(shí)驗(yàn)指導(dǎo):清華大學(xué),20062 湯子瀛主編計(jì)算機(jī)操作系
3、統(tǒng)(第三版):電子科技大學(xué),2001 3坤等編操作系統(tǒng)實(shí)驗(yàn)教程:清華大學(xué),2008審核批準(zhǔn)意見系(教研室)主任(簽字)17 / 21目錄第一章系統(tǒng)概述11.1 功能簡介11.2 設(shè)計(jì)思路1第二章系統(tǒng)功能分析和設(shè)計(jì)22.1 系統(tǒng)主要結(jié)構(gòu)模塊22.2 創(chuàng)建進(jìn)程隊(duì)列功能22.3 對(duì)進(jìn)程排序32.4 輸出所創(chuàng)建的信息5第三章調(diào)試與運(yùn)行結(jié)果63.1 輸入界面63.2 輸出界面63.3 運(yùn)行結(jié)果63.4 各種情況的運(yùn)行結(jié)果7第四章總結(jié)94.1 遇到的問題以與解決方法94.2 收獲和體會(huì)9參考文獻(xiàn):10附錄程序源代碼11第一章 系統(tǒng)概述1.1 功能簡介處理機(jī)調(diào)度是操作系統(tǒng)中非常重要的部分。在多道程序設(shè)計(jì)系統(tǒng)
4、中,存中有多道程序運(yùn)行,他們相互爭奪處理機(jī)這一重要的資源。處理機(jī)調(diào)度就是從就緒隊(duì)列中,按照一定的算法選擇一個(gè)進(jìn)程并將處理機(jī)分配給它運(yùn)行,以實(shí)現(xiàn)進(jìn)程并發(fā)地執(zhí)行。本系統(tǒng)就是設(shè)計(jì)了一個(gè)模擬單處理機(jī)調(diào)度的算法,以模擬實(shí)現(xiàn)處理機(jī)調(diào)度的基本功能。本系統(tǒng)是采用時(shí)間片輪轉(zhuǎn)算法模擬單處理機(jī)調(diào)度。1.2 設(shè)計(jì)思路系統(tǒng)將所有的就緒進(jìn)程按先來先服務(wù)的原則排成一個(gè)隊(duì)列,每次調(diào)度時(shí),把CPU分配給隊(duì)首進(jìn)程,并令其執(zhí)行一個(gè)時(shí)間片。時(shí)間片的大小由輸入確定。當(dāng)執(zhí)行的時(shí)間片用完時(shí),由一個(gè)計(jì)時(shí)器發(fā)出時(shí)鐘中斷請(qǐng)求,調(diào)度程序便據(jù)此信號(hào)來停止該進(jìn)程的執(zhí)行,并將它送往就緒隊(duì)列的末尾;然后,再把處理機(jī)分配給就緒隊(duì)列中的隊(duì)首進(jìn)程,同時(shí)也讓它執(zhí)
5、行一個(gè)時(shí)間片。這樣就可以保證就緒隊(duì)列中的所有進(jìn)程在一給定的時(shí)間獲得一時(shí)間片的處理機(jī)執(zhí)行時(shí)間。換言之,系統(tǒng)能在給定的時(shí)間響應(yīng)所有用戶的請(qǐng)求。每個(gè)進(jìn)程用一個(gè)進(jìn)程控制塊PCB來代表。PCB的格式如圖1-1所示。進(jìn)程名指針到達(dá)時(shí)間估計(jì)運(yùn)行時(shí)間進(jìn)程狀態(tài) 圖1-1 進(jìn)程控制塊其中,進(jìn)程名即進(jìn)程標(biāo)識(shí)。第二章 系統(tǒng)功能分析和設(shè)計(jì)在本章中,主要是介紹各個(gè)功能函數(shù)的設(shè)計(jì)思路和實(shí)現(xiàn)方法。2.1 系統(tǒng)主要結(jié)構(gòu)模塊本系統(tǒng)主要分為:主函數(shù),創(chuàng)建進(jìn)程隊(duì)列函數(shù),對(duì)進(jìn)程隊(duì)列按到達(dá)時(shí)間進(jìn)行排序,輸出所創(chuàng)建的進(jìn)程信息,執(zhí)行時(shí)間片調(diào)度算法。在程序執(zhí)行過程過主函數(shù)調(diào)用各個(gè)子函數(shù)來一次實(shí)現(xiàn)系統(tǒng)的各個(gè)功能。系統(tǒng)主要結(jié)構(gòu)模塊如圖2-1:圖2
6、-1 程序結(jié)構(gòu)模塊2.2 創(chuàng)建進(jìn)程隊(duì)列功能在此函數(shù)中輸入所要?jiǎng)?chuàng)建進(jìn)程的總個(gè)數(shù)n,然后再通過for循環(huán)語句來控制,依次輸入各個(gè)進(jìn)程的屬性值,再把剛創(chuàng)建的進(jìn)程加入進(jìn)程就緒隊(duì)列的隊(duì)尾,循環(huán)上述操作n次。其中,在創(chuàng)建進(jìn)程的過程中,進(jìn)程的狀態(tài)默認(rèn)為就緒狀態(tài)s,指向下一進(jìn)程的指針默認(rèn)為空NULL。程序流程圖如圖2-2所示:圖2-2 創(chuàng)建進(jìn)程隊(duì)列2.3 對(duì)進(jìn)程排序此函數(shù)的主要功能就是:按照進(jìn)程的到達(dá)時(shí)間進(jìn)行升序排序,在該函數(shù)中采用的排序方法是冒泡排序法。程序流程圖如圖2-3所示:2.4 輸出所創(chuàng)建的信息此函數(shù)所實(shí)現(xiàn)的主要功能就是:按照進(jìn)程的到達(dá)時(shí)間依次輸出各個(gè)進(jìn)程的詳細(xì)信息。再此函數(shù)中,首先定義一個(gè)進(jìn)程控制
7、塊指針,指向進(jìn)程隊(duì)列中的第一個(gè)節(jié)點(diǎn),通過while語句(當(dāng)p!=NULL時(shí))來控制p=p-next循環(huán),依次輸出進(jìn)程就緒隊(duì)列中的各進(jìn)程的詳細(xì)信息。流程圖如圖2-4所示:圖2-4 輸出所創(chuàng)建的進(jìn)程信息第三章 調(diào)試與運(yùn)行結(jié)果3.1 輸入界面在此,先輸入要?jiǎng)?chuàng)捷的進(jìn)程總數(shù),然后依次輸入各進(jìn)程的進(jìn)程名、到達(dá)時(shí)間、估計(jì)運(yùn)行時(shí)間,如圖3-1所示:圖3-1 輸入界面3.2 輸出界面此界面是,輸出經(jīng)過排序后的進(jìn)程隊(duì)列,如圖3-2所示:圖3-2 輸出界面3.3 運(yùn)行結(jié)果輸出經(jīng)過時(shí)間片輪轉(zhuǎn)算法后的運(yùn)行結(jié)果,如圖3-3所示:圖3-3運(yùn)行結(jié)果3.4 各種情況的運(yùn)行結(jié)果下圖是各種不同情況的運(yùn)行結(jié)果,如圖3-4,圖3-5,
8、圖3-6:圖3-4 運(yùn)行結(jié)果圖3-5 運(yùn)行結(jié)果圖3-6 運(yùn)行結(jié)果第四章 總結(jié)4.1 遇到的問題以與解決方法首先,是對(duì)時(shí)間片算法以與處理機(jī)的具體調(diào)度過程不夠熟練,通過看書和搜集一些資料解決了這個(gè)問題;其次,是在對(duì)單鏈表按到達(dá)時(shí)間進(jìn)行排序時(shí)遇到了一些麻煩,后來經(jīng)過認(rèn)真思考與分析,成功地對(duì)單鏈表進(jìn)行了排序;最后,是在編寫程序的過程中出現(xiàn)了一些語法錯(cuò)誤,后通過調(diào)試逐一解決。4.2 收獲和體會(huì)此次操作系統(tǒng)課程設(shè)計(jì),在指導(dǎo)教師的精心教導(dǎo)下,以與同學(xué)們的積極討論中,對(duì)處理機(jī)的調(diào)度問題有了深刻的理解和認(rèn)識(shí),同時(shí)對(duì)其它的幾個(gè)題目也有了一定的了解。首先要對(duì)程序的設(shè)計(jì)要求有一個(gè)比較明確的認(rèn)識(shí),然后系統(tǒng)分析與系統(tǒng)設(shè)計(jì)
9、,最后是代碼設(shè)計(jì)與調(diào)試。根據(jù)操作系統(tǒng)課程所學(xué)的概念、理論和方法,按照程序設(shè)計(jì)的基本步驟,設(shè)計(jì)出一個(gè)適當(dāng)規(guī)模的程序;進(jìn)一步加深了對(duì)處理機(jī)調(diào)度問題的理解和掌握。理論聯(lián)系實(shí)際,加深和鞏固所學(xué)的理論知識(shí),提高實(shí)踐能力和計(jì)算機(jī)的綜合運(yùn)用能力。我們編寫程序的過程是辛苦與快樂的,程序的編寫原則很重要,只要我們?cè)诰幊蹋捅仨毑粩喔倪M(jìn),才能更好提高實(shí)踐編程能力。參考文獻(xiàn):1 堯?qū)W主編計(jì)算機(jī)操作系統(tǒng)教程(第三版):清華大學(xué),20062 堯?qū)W編計(jì)算機(jī)操作系統(tǒng)教程(第三版)習(xí)題解答與實(shí)驗(yàn)指導(dǎo):清華大學(xué),20063 湯子瀛主編計(jì)算機(jī)操作系統(tǒng)(第三版):電子科技大學(xué),2001 4 坤等編操作系統(tǒng)實(shí)驗(yàn)教程:清華大學(xué),200
10、85 麗芬等編操作系統(tǒng)實(shí)驗(yàn)教程:清華大學(xué),20066 屠祁等編.操作系統(tǒng)基礎(chǔ)(第三版):清華大學(xué),20007 耀霖等編.操作系統(tǒng).:電子科技大學(xué),20018 左萬歷計(jì)算機(jī)操作系統(tǒng)教程(第二版):高等教育,2004附錄 程序源代碼#include#include#include/定義進(jìn)程控制塊/typedef struct pcbchar pname20; /進(jìn)程名int arrivetime; /到達(dá)時(shí)間int runtime; /運(yùn)行時(shí)間char state; /運(yùn)行后的狀態(tài)struct pcb *next;PCB;/封裝頭結(jié)點(diǎn),指針分別指向隊(duì)頭和隊(duì)尾/typedef struct PCB
11、*front,*rear;queue;/進(jìn)程隊(duì)列置空/queue *init()queue *head;head=(queue*)malloc(sizeof(queue);head-front=NULL;head-rear=NULL;return head;/檢驗(yàn)進(jìn)程隊(duì)列是否為空/int empty(queue *head)return(head-front ? 0:1);/進(jìn)程隊(duì)列入隊(duì),往后插入/queue *append(queue *head,char c20,int a,int r,char s)PCB *p;p=(PCB*)malloc(sizeof(PCB);strcpy(p-pn
12、ame,c);p-arrivetime=a;p-runtime=r;p-state=s;p-next=NULL;if(empty(head)head-front=head-rear=p;elsehead-rear-next=p;head-rear=p;return head;/創(chuàng)建進(jìn)程隊(duì)列/queue *creat(queue *head)char c20;char s=R;int a,r,i,n;printf(請(qǐng)輸入共有幾個(gè)進(jìn)程:n);scanf(%d,&n);for(i=1;ifront,*max=head-front;int flag;h=(PCB*)malloc(sizeof(PCB)
13、;h-next = head-front ;while (1) flag=0; for (p=h;p-next-next!=NULL;p=p-next)r1=p-next;r2=p-next-next; if (r1-arrivetime r2-arrivetime)if(r2-arrivetime arrivetime) min=r2; if(r1-arrivetime max-arrivetime) max=r1;flag=1;p-next=r2;r1-next=r2-next;r2-next=r1; if (flag=0) break; head-front=min; head-rear
14、=max;h-next=head-front;return head;/輸出創(chuàng)建的進(jìn)程隊(duì)列/void print(queue *head)PCB *p;p=head-front;if(!p)printf(時(shí)間片輪轉(zhuǎn)調(diào)度隊(duì)列為空!n);while(p)printf(pname=%s arrivetime=%d runtime=%d state= %c,p-pname,p-arrivetime,p-runtime,p-state);printf(n);p=p-next;/時(shí)間片輪轉(zhuǎn)調(diào)度算法的實(shí)現(xiàn)/void RR(queue *head,int q)int t=head-front-arriveti
15、me,lt=head-rear-arrivetime;if(head-front-runtimefront-runtime;elset=t+q;/進(jìn)程隊(duì)列不為空才可調(diào)度/while(!empty(head)PCB *p1,*p2;/* 第一種情況:當(dāng)前運(yùn)行的時(shí)間小于最后一個(gè)進(jìn)程到達(dá)的時(shí)間做以下操作*/while(tfront;printf(運(yùn)行的時(shí)刻為%dt運(yùn)行的進(jìn)程為%st,t,p1-pname);p1-runtime=p1-runtime-q;/ 1. 運(yùn)行時(shí)間小于0,刪除隊(duì)首 /if(p1-runtimestate=C;printf(運(yùn)行后的狀態(tài)為%cn,p1-state);head-f
16、ront=p1-next;free(p1);/ 2. 運(yùn)行時(shí)間大于0,向后找位置插入 /elseprintf(運(yùn)行后的狀態(tài)為%cn,p1-state);p2=p1-next;while(p2-next&p2-arrivetime!=t)p2=p2-next;/*此時(shí)無新進(jìn)入隊(duì)列的進(jìn)程時(shí),有兩種情況:1.不用找位置往后插入,隊(duì)首不變,不做操作 2.找位置往后插入*/if(p2-arrivetime!=t) PCB *p3=p1,*p4;while(p3-next&p3-arrivetimenext;if(p3-arrivetimet)if(p4!=p1)/p1插在p4后,頭為p1-nexthea
17、d-front=p1-next;p1-next=p4-next;p4-next=p1;else/不做操作/p4=p3=p2=NULL;elsep4=p3=p2=NULL;/此時(shí)有新進(jìn)入隊(duì)列的進(jìn)程時(shí):p1插在新進(jìn)入隊(duì)列的進(jìn)程p2后,隊(duì)首為p1-next/ elsehead-front=p1-next;p1-next=p2-next;p2-next=p1;/*時(shí)刻變化*/if(head-front-runtimefront-runtime;elset=t+q;/第一種情況結(jié)束/* 第二種情況:當(dāng)前運(yùn)行的時(shí)間大于最后一個(gè)進(jìn)程到達(dá)的時(shí)間做以下操作*/while(t=lt)p1=head-front;p
18、rintf(運(yùn)行的時(shí)刻為%dt運(yùn)行的進(jìn)程為%st,t,p1-pname);p1-runtime=p1-runtime-q;/ 1. 運(yùn)行時(shí)間小于0,刪除隊(duì)首 /if(p1-runtimestate=C;printf(運(yùn)行后的狀態(tài)為%cn,p1-state);head-front=p1-next;free(p1);/ 2. 運(yùn)行時(shí)間大于0,直接插在隊(duì)尾 /elseprintf(運(yùn)行后的狀態(tài)為%cn,p1-state);/若原隊(duì)列只有一個(gè)進(jìn)程,不必往隊(duì)尾插/if(!p1-next) head-front=p1;/若原隊(duì)列有多個(gè)進(jìn)程/elsehead-front=p1-next;head-rear-next=p1;head
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)消防培訓(xùn)合同范例
- “家國情懷”培養(yǎng)視域下人教版和統(tǒng)編版高中歷史教材變化研究
- 共享公寓轉(zhuǎn)讓合同范例
- 加工類技術(shù)合同范本
- 個(gè)人項(xiàng)目合作合同范例
- 保姆用人合同范例
- 借款消費(fèi)合同范例
- 東鵬控股合同范例
- 中介拆遷合同范例
- 企業(yè)花藝服務(wù)合同范例
- 《認(rèn)知行為療法》課件
- 無人機(jī)駕駛培訓(xùn)
- 2024年中煤電力有限公司所屬企業(yè)招聘29人筆試參考題庫附帶答案詳解
- DeepSeek介紹及其典型使用案例
- 2025年貴陽市貴安新區(qū)產(chǎn)業(yè)發(fā)展控股集團(tuán)有限公司招聘筆試參考題庫附帶答案詳解
- 積極心理學(xué)視角下高職院校學(xué)生心理健康教育路徑研究
- 2025年內(nèi)蒙古建筑職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年??及鎱⒖碱}庫含答案解析
- 人教版五年級(jí)數(shù)學(xué)下冊(cè)全套試卷附完整答案
- 2025年春新人教版數(shù)學(xué)一年級(jí)下冊(cè)課件 第一單元 2.拼一拼
- 《煤礦職業(yè)病危害防治》培訓(xùn)課件2025
- 2024年網(wǎng)絡(luò)建設(shè)與運(yùn)維選擇題理論試題題庫
評(píng)論
0/150
提交評(píng)論