版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、課 程 設 計 報 告課程名稱 操作系統 課題名稱 作業(yè)調度模擬 專 業(yè) 通信工程 班 級 學 號 姓 名 指導教師 羅雅博 黃哲 胡倩 2012年 6月 29 日湖南工程學院課 程 設 計 任 務 書課程名稱 操作系統 課 題 作業(yè)調度模擬 專業(yè)班級 學生姓名 學 號 指導老師 羅雅博 黃哲 胡倩 審 批 任務書下達日期 2012 年 6 月 24 日任務完成日期 2012 年 6 月 29 日2009級通信工程專業(yè)操作系統課程設計任務書一、課程設計的性質與目的 操作系統課程設計是集中實踐性環(huán)節(jié)之一,是學習完操作系統課程后進行的一次全面的綜合練習。要求學生達到熟練掌握操作系統的基本理論知識;
2、掌握不同的調度算法;能夠利用所學的基本編程知識,實現課程章節(jié)中涉及到的一些基本算法,從而加深理論知識的理解。二、 設計要求1 要求利用高級程序設計語言編程完成相關算法;2 程序具有清晰易懂的界面,有圖形界面更佳;3 程序具備要求的基本功能模塊;4 最終結果是能夠運行的完整程序;5 最后給出課程設計報告三、課程設計報告要求 1 統一封面(本任務書附帶)、設計題目、設計要求以及系統功能需求分析; 2 總體設計:包括系統總體設計框架和系統功能模塊圖; 3 詳細設計。包括主要功能模塊的算法設計思路以及對應的工作流程圖;4 主要源程序代碼,并附有注釋;5 總結。包括課程設計過程中的學習體會與收獲、對操作
3、系統和本次課程設計的認 識等內容。6 附錄(完整源程序清單):可以是手寫或打印稿(注意:不能和其他同學一樣)7 報告最后附上評分表(見任務書末頁)四、檢查要求: 1 每個人至少選作一題,學號末尾2位對5取余,余數對應的題號就是每個人必做題。必須有可運行的程序,每個人要通過答辯;2 每個人必須交操作系統課程設計報告(打印稿)五、評分 1 根據平時上機考勤,且每個人必須自己動手編寫程序,不得抄襲;2 根據程序運行結果;3 學生能熟練地解釋清楚指導老師對自己程序的提問;4 課程設計報告完成的質量和規(guī)范;六、時間、地點安排日期6.256.276.28時間8:00-12:008:00-12:008:00
4、-12:00地點E511E511E511七、課程設計題目0. 進程調度算法的設計 設計要求:A.設計進程控制塊PCB表結構,分別適用于優(yōu)先數調度算法和循環(huán)輪轉調度算法。B.建立進程就緒隊列。對兩種不同算法編制入鏈子程序。C.編制兩種進程調度算法:1)優(yōu)先數調度;2)循環(huán)輪轉調度1. 銀行家算法設計設計要求:編制銀行家算法通用程序,并檢測所給狀態(tài)的系統安全性。2題目:頁面置換算法模擬設計設計要求:計算并輸出下述各種算法在不同內存容量下的命中率。A.FIFO先進先出的算法B.LRR最近最少使用算法C.OPT最佳淘汰算法(先淘汰最不常用的頁地址)D.LFR最少訪問頁面算法E.NUR最近最不經常使用算
5、法3題目:可變內存管理模擬 設計要求:A.功能:內存初始化;分配作業(yè)內存;回收內存;顯示作業(yè)列表;顯示空閑內存。B.編制兩種內存分配算法:1)最佳適應算法;2)最壞適應算法。4題目:作業(yè)調度模擬 設計要求:A.加深對作業(yè)概念地理解。 B.掌握短作業(yè)優(yōu)先調度算法。C.深入了解批處理系統如何組織作業(yè)、管理作業(yè)和調度作業(yè)。D.了解作業(yè)控制塊的作用,以及作業(yè)控制塊的內容和組織方式。 目錄一、系統功能需求分析6二、系統總體設計71、設計的基本原理72、系統的總體框架設計73、系統功能模塊圖7三、系統詳細設計81、系統總體詳細設計82、系統各模塊詳細設計9(1)主函數模塊9(2)創(chuàng)建JCB作業(yè)控制塊11(
6、3)信息輸入模塊11(4)隨機產生作業(yè)到達時間和服務時間模塊12(5) 計算模塊12(6)對比模塊13(7) 信息輸出模塊14四、運行結果及結果分析151、運行結果152、運行結果分析17五、總結17六、附錄18七、評分表22一、系統功能需求分析 作業(yè)調度是對成批進入系統的用戶作業(yè),根據作業(yè)控制塊的信息,按一定的策略選取若干個作業(yè)使它們可以去獲得處理器運行的一項工作。而對每個用戶來說總希望自己的作業(yè)的周轉時間是最小的,短作業(yè)優(yōu)先(SJF)便是其中一種調度方法。 本設計是為了加深對作業(yè)概念的理解,掌握短作業(yè)優(yōu)先(SJF)調度算法,深入了解批處理系統如何組織作業(yè)、管理作業(yè)和調度作業(yè),了解作業(yè)控制塊
7、的作用,以及作業(yè)控制塊的內容和組織方式。為了將系統中的作業(yè)組織起來,需要為每個進入系統的作業(yè)建立檔案以記錄和作業(yè)相關的信息,例如作業(yè)名、作業(yè)所需資源、作業(yè)執(zhí)行時間、作業(yè)進入系統的時間、作業(yè)信息在存儲器中的位置、指向下一個作業(yè)控制塊的指針等信息。這個記錄作業(yè)相關信息的數據塊稱為作業(yè)控制塊(JCB),并將系統中等待作業(yè)調度的作業(yè)控制塊組織成一個隊列,這個隊列稱為后備隊列。一個作業(yè)全部信息進入系統后,就為其建立作業(yè)控制塊,并掛入后備隊列。當進行作業(yè)調度時,從后備隊列中查找選擇作業(yè)。在從后備隊列中查找選擇作業(yè)是,先根據作業(yè)控制塊中的信息,選中一個短作業(yè),也就是執(zhí)行時間最短的作業(yè),將它們調入內存運行。二
8、、系統總體設計1、設計的基本原理在多道程序環(huán)境下,將系統中的作業(yè)組織起來,為每個進入系統的作業(yè)建立檔案以記錄和作業(yè)相關的信息,建立作業(yè)控制塊(JCB)掛入后備隊列。進行作業(yè)調度時,在其后計算出各個作業(yè)的開始執(zhí)行時間、完成時間、周轉時間和平均周轉時間,根據作業(yè)控制塊中的信息,審查系統能否滿足用戶作業(yè)的資源需求,利用短作業(yè)優(yōu)先算法進行作業(yè)調度,從外存的后備隊列中選取某些作業(yè)調入內存,為它們創(chuàng)建進程、分配必要的資源并按照由小到大的順序顯示出來。短作業(yè)優(yōu)先的調度算法是從后備隊列中選擇一個或者若干個估計運行時間最短的作業(yè),將它們調入內存運行。2、系統的總體框架設計 編寫程序完成批處理系統中的作業(yè)調度,要
9、求采用短作業(yè)優(yōu)先的作業(yè)調度算法,其包括:首先確定作業(yè)控制塊的內容和組成方式,然后完成作業(yè)調度,最后編寫主函數對所作工作進程測試。具體包括以下模塊:信息輸入模塊,隨機產生作業(yè)到達時間和服務時間模塊,計算模塊,比較模塊,輸出模塊。3、系統功能模塊圖系統功能模塊圖如下所示: 作業(yè)調度模擬系統主函數模塊輸 出 模 塊 比 較 模 塊 計 算 模 塊隨機產生作業(yè)到達時間和服務時間模塊 信 息 輸 入 模 塊三、系統詳細設計1、系統總體詳細設計系統設計流程圖如下:開始定義最多能管理的作業(yè)數目,建立作業(yè)控制塊定義作業(yè)各個數據輸出提示,讓用戶輸入需要處理的作業(yè)數目,然后會隨機產生作業(yè)到達時間和服務時間。計算各
10、個作業(yè)的作業(yè)開始執(zhí)行時間,作業(yè)完成時間,作業(yè)周轉時間,作業(yè)平均周轉時間進入作業(yè)比較后備隊列是否為空作業(yè)i完成時間MAX) printf(t!輸入的作業(yè)數目太大,請輸入不大于%d的整數n,MAX); printf(按Q或者q退出程序,按其他任意鍵繼續(xù)測試.); ch = getch(); if(ch=Q|ch=q) break; else continue; input(a,N); jcb *b=a; jcbf(b,N); printf(按Q或者q退出程序,按其他任意鍵繼續(xù)測試.);ch = getch(); if(ch=Q|ch=q) break; return 0;(2)創(chuàng)建JCB作業(yè)控制塊
11、 創(chuàng)建作業(yè)控制塊JCB,定義為結構體,為進入系統的作業(yè)建立檔案,其中定義了作業(yè)名,作業(yè)到達時間,作業(yè)服務時間,作業(yè)開始執(zhí)行時間,作業(yè)完成時間,作業(yè)周轉時間,作業(yè)平均周轉時間,實現對作業(yè)的存儲和管理。結構體定義如下所示: struct jcb char name10; /作業(yè)名 float arrivetime; /作業(yè)到達時間 float servicetime;/作業(yè)服務時間 float starttime; /作業(yè)開始執(zhí)行時間 float finishtime; /作業(yè)完成時間 float cyctime; /作業(yè)周轉時間 float avecyctime; /作業(yè)平均周轉時間 ;(3)信
12、息輸入模塊定義一定范圍內可變輸入數,用戶只需輸入可變范圍內的數據即可進行作業(yè)信息的輸入,如果輸入的作業(yè)數超出其可變范圍,則需重新輸入。其流程如下: 開始 定義最大作業(yè)數MAX提示輸入作業(yè)數N否NMAX是輸入各作業(yè)的名稱 結束 (4)隨機產生作業(yè)到達時間和服務時間模塊此模塊主要是利用隨機函數srand()和rand(),以時間作為種子,隨機產生作業(yè)到達時間和作業(yè)服務時間,這樣便充分符合了短作業(yè)優(yōu)先調度算法的特點。(5) 計算模塊 此模塊是利用函數來實現對作業(yè)數據的計算,包括:計算各個作業(yè)的作業(yè)開始執(zhí)行時間,作業(yè)完成時間,作業(yè)周轉時間,作業(yè)平均周轉時間。其中作業(yè)執(zhí)行時間為上個作業(yè)的完成時間,作業(yè)完
13、成時間為作業(yè)執(zhí)行時間加上作業(yè)服務時間,作業(yè)周轉時間為作業(yè)被提交給系統開始,到作業(yè)完成為止的這段時間間隔,作業(yè)平均周轉時間為作業(yè)周轉時間除以服務時間。 其函數代碼如下所示:void deal(jcb *p, float arrivetime,float servicetime,float starttime,float finishtime,float &zztime,float &avecyctime,int N) int k; for(k=0;k=N-1;k+) if(k=0) pk.starttime=pk.arrivetime; pk.finishtime=pk.arrivetime+p
14、k.servicetime; else pk.starttime=pk-1.finishtime; pk.finishtime=pk-1.finishtime+pk.servicetime; for(k=0;k=N-1;k+) pk.cyctime=pk.finishtime-pk.arrivetime; pk.avecyctime=pk.cyctime/pk.servicetime; (6)對比模塊此模塊主要是利用函數將不同用戶在計算模塊得到的數據(完成時間)進行比較,以便由小到大輸出作業(yè)名,作業(yè)到達時間,作業(yè)服務時間,作業(yè)開始執(zhí)行時間,作業(yè)周期時間,作業(yè)平均周轉時間。其函數代碼如下所示:v
15、oid jcbf(jcb *p,int N) float arrivetime=0,servicetime=0,starttime=0,finishtime=0,cyctime=0,avecyctime=0;sort(p,N); for(int m=0;mN-1;m+) if(m=0) pm.finishtime=pm.arrivetime+pm.servicetime; else pm.finishtime=pm-1.finishtime+pm.servicetime; int i=0; for(int n=m+1;n=N-1;n+) if(pn.arrivetime=pm.finishti
16、me) i+; float min=pm+1.servicetime; int next=m+1;/m+1=n for(int k=m+1;km+i;k+) if(pk+1.servicetimemin) min=pk+1.servicetime; next=k+1; jcb temp; temp=pm+1; pm+1=pnext; pnext=temp; deal(p,arrivetime,servicetime,starttime,finishtime,cyctime,avecyctime,N); Print(p,arrivetime,servicetime,starttime,finis
17、htime,cyctime,avecyctime,N);(7) 信息輸出模塊按照調度順序依次輸出各作業(yè)的作業(yè)達到時間,作業(yè)服務時間,作業(yè)開始執(zhí)行時間,作業(yè)完成時間,作業(yè)周轉時間,作業(yè)平均周轉時間。其函數代碼如下所示:void Print(jcb *p,float arrivetime,float servicetime,float starttime,float finishtime,float cyctime,float avecyctime,int N) int k; printf(調度順序:); printf(%s,); for(k=1;k%s,); prin
18、tf(nn); printf(ttt則作業(yè)信息如下:n); printf(nnametarrivetservicetstarttfinishtcyctavecycn); for(k=0;kJOB6-JOB3-JOB4-JOB1-JOB5運行結果如表所示:Name作業(yè)名Arrive到達時間Service服務時間Start開始時間Finish完成時間Cyc周轉時間Avecyc平均周轉時間JOB29.009.009.0018.009.001.00JOB611.0011.0018.0029.0018.001.64JOB326.0026.0029.0055.0029.001.12JOB449.0049.
19、0055.00104.0055.001.12JOB179.0079.00104.00183.00104001.32JOB585.0085.00183.00268.00183.002.15分析可知:短作業(yè)優(yōu)先法先由到達時間排序,執(zhí)行作業(yè),然后對后來進入系統的作業(yè)和系統中等待執(zhí)行的作業(yè)進行計算、比較,以服務時間由小到大排序,并按此順序進行調度。五、總結操作系統課程設計是集中實踐性環(huán)節(jié)之一,是學習完操作系統課程后進行的一次全面綜合練習。在當今社會,計算機不斷普及,操作系統作為計算機軟件與硬件結合處的系統軟件起到了不可替代的作用。因此,學習和了解操作系統的原理及應用也變得十分重要。在這次操作系統的課程
20、設計中我們進一步掌握了操作系統的基本理論知識、短作業(yè)優(yōu)先調度算法,在實踐中學會了利用所學的基本編程知識,實現課程章節(jié)中涉及到的一些基本算法,從而加深理論知識的理解。 在本次課程設計中我做的是作業(yè)調度模擬系統,在課設中我不斷鞏固課堂所學的理論知識,加深了對作業(yè)概念地理解,掌握了短作業(yè)優(yōu)先調度算法,深入學習了批處理系統如何組織作業(yè)、管理作業(yè)和調度作業(yè)并了解了作業(yè)控制塊的作用以及其內容和組織方式。課設中我綜合運用了所學知識,不斷發(fā)現、提出、分析和解決實際問題,鍛煉了自己的實踐能力,這對我們培養(yǎng)實際工作能力起到了很好的訓練作用。除此之外,課設還鍛煉了我的自學能力。在開始做課設時我對操作系統如何用高級語
21、言來實現很不了解。最后不得不自己查閱相關資料,在經過了翻閱資料、網上查詢并和同學討論后我最終決定用c+來實現課設所要求的功能。但由于C語言、C+和數據結構都有很長一段時間沒有實際運用了,最后不得不邊寫邊溫習。當然由于這種生疏導致課設做的很慢,不過隨著編程意識的不斷復蘇,課設也漸漸上了軌道。另外,對于作業(yè)算法我也先溫習了一下課本,這對我的課設有著莫大的助益。通過溫習理論知識,我了解了短作業(yè)優(yōu)先調度算法的原理是從后備隊列中選擇一個或者若干估計運行時間最短的作業(yè),將它們調入內存運行。同時對該算法的優(yōu)缺點也有了更深層次的理解。短作業(yè)優(yōu)先調度算法易于實現,并且效率很高,但是短作業(yè)只考慮到短作業(yè)的利益,而
22、不顧長作業(yè),這樣就可能會使得長作業(yè)一直處于等待狀態(tài)而不能運行。所以,短作業(yè)優(yōu)先算法適用于系統中短作業(yè)較多的情況。在課設中,我們一邊自己不斷探索,一邊和同學討論,交流經驗,這也讓我們啟發(fā)我們從不同的角度去看待課設的內容,并且在相互學習中,我也學到了很多不同的知識,這對我以后的工作、學習都很有幫助。同時在課設中,同學們的不斷進取的精神也激勵了我,我相信在以后的工作中,我一定能夠很好的融入團隊,順利完成任務。通過本次課程設計,我對計算機操作系統中的作業(yè)調度模擬和短作業(yè)優(yōu)先算法有了更深層次的認識。在課設中培養(yǎng)的自學及鉆研能力在以后的工作中將幫助我很好的克服困難,順利完成工作任務。同時,我也體會到實踐來
23、源于理論而又深于理論,我們只有學好理論知識才能更加順利的完成實踐,只有通過實踐才能強化理論知識,體現理論知識的價值。在以后的學習中我一定會培養(yǎng)自己溫故而知新的習慣,不斷學習,不斷進步,希望在以后的學習中取得更好的表現。六、附錄源程序代碼如下所示:#include#include#include#include#include#define MAX 100 /最多能管理的作業(yè)數目struct jcb /作業(yè)控制塊JCB,定義為結構體 char name10; /作業(yè)名 float arrivetime; /作業(yè)到達時間 float servicetime;/作業(yè)服務時間 float startt
24、ime; /作業(yè)開始執(zhí)行時間 float finishtime; /作業(yè)完成時間 float cyctime; /作業(yè)周轉時間 float avecyctime; /作業(yè)平均周轉時間;jcb aMAX; void input(jcb *p,int N) int i; printf(請分別輸入:t作業(yè)名(如:JOB1 )nn); for(i=0;i=N-1;i+) printf(請輸入第%d個作業(yè)信息:,i+1); scanf(%s,&); srand(unsigned)time(NULL); pi.arrivetime = rand()%99+1;srand(unsigned)t
25、ime(NULL); pi.servicetime= rand()%99+1; printf(n); void Print(jcb *p,float arrivetime,float servicetime,float starttime,float finishtime,float cyctime,float avecyctime,int N) int k; printf(調度順序:); printf(%s,); for(k=1;k%s,); printf(nn); printf(ttt則作業(yè)信息如下:n); printf(nnametarrivetservice
26、tstarttfinishtcyctavecycn); for(k=0;k=N-1;k+) printf(%st%-.2ft%-.2ft%-.2ft%-.2ft%-.2ft%-.2ftn,,pk.arrivetime,pk.servicetime,pk.starttime,pk.finishtime,pk.cyctime,pk.avecyctime);void sort(jcb *p,int N) for(int i=0;i=N-1;i+) for(int j=0;j=i;j+) if(pi.arrivetimepj.arrivetime) jcb temp; temp=pi; pi=pj; pj=temp; void deal(jcb *p, float arrivetime,float servicetime,float starttime,float finishtime,float &zztime,float &avecyctime,int N) int k; for(k=0;k=N-1;k+) if(k=0) pk.starttime=pk.arrivetime; pk.finishtime=pk.arrivetime+pk.servicetime; else pk.startt
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026春招:銷售經理題目及答案
- 貨車司機安全培訓內容課件
- 皮膚科臨床診療研究匯報
- 醫(yī)療物聯網技術在醫(yī)院管理中的應用
- 醫(yī)療影像分析技術在疾病診斷中的應用
- 貨拉拉加強安全培訓課件
- 醫(yī)院耳鼻喉科職業(yè)行為準則
- 2026年廣東省外語藝術職業(yè)學院單招綜合素質考試備考試題帶答案解析
- 口腔門診服務提升總結
- 2026年安徽糧食工程職業(yè)學院單招綜合素質筆試備考題庫帶答案解析
- 洗衣液宣傳課件
- 在線網課學習課堂《人工智能(北理 )》單元測試考核答案
- 酒吧服務員手冊
- 教育部研究生、本科、高職學科分類及專業(yè)目錄
- 國開2023春計算機組網技術形考任務一參考答案
- 醫(yī)療器械公司任職文件
- 輸電線路基礎知識輸電線路組成與型式
- 南昌工程學院施工組織設計
- GA 1808-2022軍工單位反恐怖防范要求
- 《中國特色社會主義》期末試卷
- 某煤礦防治水分區(qū)管理論證報告
評論
0/150
提交評論