操作系統(tǒng)課程設(shè)計-時間片輪轉(zhuǎn)算法java實現(xiàn)_第1頁
已閱讀1頁,還剩21頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  課程設(shè)計</b></p><p>  題 目:處理機管理模擬系統(tǒng)的設(shè)計與實現(xiàn) </p><p><b>  學(xué)生姓名: </b></p><p>  學(xué) 院:信息工程學(xué)院</p><p>  系 別:軟件工程系 </p><p

2、>  專 業(yè):軟件工程 </p><p><b>  班 級: </b></p><p><b>  指導(dǎo)教師:副教授</b></p><p><b>  講師</b></p><p><b>  2013年1月8日</b></p>

3、;<p>  課程設(shè)計任務(wù)書(四)</p><p>  學(xué)院(系):信息學(xué)院軟件工程系 課程名稱:操作系統(tǒng)課程設(shè)計 指導(dǎo)教師(簽名): </p><p>  專業(yè)班級: 學(xué)生姓名: 學(xué)號: </p><p><b>  摘要<

4、;/b></p><p>  操作系統(tǒng)是計算機系統(tǒng)的關(guān)鍵組成部分,負責(zé)管理與配置內(nèi)存、決定系統(tǒng)資源供需的優(yōu)先次序、控制輸入與輸出設(shè)備、操作網(wǎng)絡(luò)與管理文件系統(tǒng)等基本任務(wù)。對于不同的系統(tǒng)和系統(tǒng)目標,通常采用不同的調(diào)度算法,如在批處理系統(tǒng)中,為照顧為數(shù)眾多的短作業(yè),采用短作業(yè)優(yōu)先調(diào)度算法;在分時系統(tǒng)中,為保證系統(tǒng)具有合理的響應(yīng)時間,采用時間片輪轉(zhuǎn)法進行調(diào)度。采用算法時,則要考慮多方面因素,以便達到最佳效果。本次課

5、程設(shè)計采用時間片輪轉(zhuǎn)調(diào)度算法來實現(xiàn)模擬進程調(diào)度任務(wù)的執(zhí)行過程。</p><p>  用Java模擬進程調(diào)度過程,可以方便地將運行結(jié)果直觀地表示出來。Java語言獨有的多線程操作,可以實現(xiàn)許多其他語言不能實現(xiàn)的功能,極大地方便了程序開發(fā)人員對程序的開發(fā)。此外,利用JavaGUI編程,可以使系統(tǒng)提供的界面更加友好。實驗中,應(yīng)用文件I/O操作、線程、AWT、Swing、內(nèi)部類、接口、異常處理等技術(shù),開發(fā)此系統(tǒng)。<

6、/p><p>  關(guān)鍵字:時間片輪轉(zhuǎn); Java編程; GUI圖形用戶界面; 文件操作;</p><p><b>  Abstract</b></p><p>  The operating system is a key component of the computer system, responsible for the managemen

7、t and configuration memory, decided to system resources supply and demand priority, control input and output equipment, operation and management of network file system, and other basic tasks.For different systems and sys

8、tem target, computers usually use different scheduling algorithm, such as in a Batch Processing System, in order to take care of a lot of short operation, using Short Job First algorithm;</p><p>  With Java

9、simulation process scheduling process, which can be conveniently will run results intuitively said out.In addition, the use of JavaGUI programming, can make the system to provide the interface more friendly.Experiments,

10、application file I/O operation, threads, AWT, Swing, internal class, interface, abnormal processing technology, the development of this system.</p><p>  Keywords: time slice Round Robin; Java Programming; Gr

11、aphical User Interface; </p><p>  File Operation;</p><p><b>  目錄</b></p><p>  第一章 問題分析1</p><p><b>  1.1設(shè)計目的1</b></p><p><b>

12、  1.2設(shè)計目標1</b></p><p>  1.2.1問題描述1</p><p>  1.2.2基本要求1</p><p>  1.3設(shè)計思想和運行環(huán)境1</p><p>  第二章 概要設(shè)計3</p><p><b>  2.1系統(tǒng)結(jié)構(gòu)3</b></p>

13、<p>  2.1.1系統(tǒng)結(jié)構(gòu)層次圖3</p><p>  2.1.2系統(tǒng)功能說明3</p><p><b>  2.2算法描述4</b></p><p>  第三章 詳細設(shè)計5</p><p>  3.1系統(tǒng)程序流程圖5</p><p>  3.2內(nèi)部接口設(shè)計7<

14、/p><p>  3.2.1系統(tǒng)框架接口run()7</p><p>  3.2.3創(chuàng)建進程接口createFrame()8</p><p>  3.2.4運行程序接口runFrame()8</p><p>  3.2.5顯示結(jié)果接口resultFrame()9</p><p><b>  3.3用戶接口

15、9</b></p><p>  第四章 系統(tǒng)實現(xiàn)11</p><p>  4.1編碼實現(xiàn)11</p><p>  4.2單元測試11</p><p>  4.2.1創(chuàng)建進程模塊11</p><p>  4.2.2運行程序模塊13</p><p>  4.2.3結(jié)果顯示模塊

16、14</p><p>  4.3遇到的問題15</p><p>  第五章 自我評價與總結(jié)16</p><p><b>  參考文獻17</b></p><p><b>  問題分析</b></p><p><b>  1.1設(shè)計目的</b>&l

17、t;/p><p>  在多道程序或多任務(wù)系統(tǒng)中,系統(tǒng)同時處于就緒態(tài)的進程有若干個。也就是說能運行的進程數(shù)遠遠大于處理機個數(shù)。為了使系統(tǒng)中的各進程能有條不紊地運行,必須選擇某種調(diào)度策略,以選擇一進程占有處理機。要求設(shè)計一個模擬單處理機調(diào)度的算法,以鞏固和加深處理機調(diào)度的概念。</p><p><b>  1.2設(shè)計目標</b></p><p><

18、;b>  1.2.1問題描述</b></p><p>  處理機管理是操作系統(tǒng)中非常重要的部分。為深入理解處理機調(diào)度部分的功能,設(shè)計一個按時間片輪轉(zhuǎn)調(diào)度CPU的算法,模擬實現(xiàn)處理機的調(diào)度。</p><p><b>  1.2.2基本要求</b></p><p>  時間片輪轉(zhuǎn)調(diào)度CPU的算法是分時系統(tǒng)采用的典型算法,把CPU的

19、執(zhí)行時間分成若干個一定大小的時間片輪流的分配給就緒隊列的各個進程,讓各就緒進程按指定的順序分別占用CPU的一個時間片輪流執(zhí)行下去,直至完成。要求定義進程控制塊PCB的結(jié)構(gòu),并為每個進程任意確定一個要求運行時間和到達時間,按照進程到達的先后順序排成一個循環(huán)隊列。設(shè)計按時間片輪轉(zhuǎn)的進程調(diào)度算法。</p><p>  1.3設(shè)計思想和運行環(huán)境</p><p><b>  設(shè)計思想<

20、;/b></p><p>  (1) 假設(shè)系統(tǒng)有5個進程,每個進程用一個進程控制塊Process來代表。Process的結(jié)構(gòu)如圖1-1所示。對PCB控制塊進行包裝,形成循環(huán)鏈表結(jié)點ProcessNode,鏈表結(jié)點ProcessNode如圖1-2所示。</p><p>  (2) 為每個進程從模擬的系統(tǒng)中指定一個要求運行時間和到達時間。</p><p>  (3

21、) 按照進程到達的先后順序排成一個循環(huán)隊列,再設(shè)一個隊首指針head指向第一個到達進程的首址。</p><p>  (4) 執(zhí)行處理機調(diào)度時,從隊列的第一個進程開始,用pntmp指針順序選擇可執(zhí)行的進程執(zhí)行。</p><p>  (5) 由于本實踐是模擬算法,所以對被選中進程并不實際啟動運行,而只是執(zhí)行:運行時間加100和輸出當(dāng)前運行進程的相關(guān)信息。用這兩個操作來模擬進程的一次運行。<

22、;/p><p><b>  運行環(huán)境</b></p><p>  編程語言:Java語言</p><p>  工具:JDK1.6.0_26、Windows 7系統(tǒng)以及MyEclipse6.0.1等</p><p><b>  概要設(shè)計</b></p><p><b> 

23、 2.1系統(tǒng)結(jié)構(gòu)</b></p><p>  2.1.1系統(tǒng)結(jié)構(gòu)層次圖</p><p>  2.1.2系統(tǒng)功能說明</p><p><b>  創(chuàng)建進程模塊:</b></p><p>  創(chuàng)建進程模塊在輸入進程頁面輸入要創(chuàng)建的進程數(shù),輸入后逐個將進程信息錄入插入到就緒隊列中,完成進程的創(chuàng)建過程。</p&

24、gt;<p><b>  運行程序模塊:</b></p><p>  此模塊實現(xiàn)時間片輪轉(zhuǎn)調(diào)度算法,從就緒隊列中取出進程結(jié)點,并模擬運行該進程,反復(fù)循環(huán),直至進程全部運行結(jié)束。每次運行進程后,將運行信息存入到文件中,實現(xiàn)信息的持久化。方便信息的記錄,系統(tǒng)功能的分析和出錯時便于檢查錯誤。</p><p><b>  顯示結(jié)果模塊:</b&g

25、t;</p><p>  從文件中讀入進程運行的結(jié)果,在圖形界面下操作,提供友好的用戶操作方式,方便直觀的了解模擬進程的調(diào)度過程,便于數(shù)據(jù)分析和研究。</p><p><b>  2.2算法描述</b></p><p>  在創(chuàng)建進程界面將進程信息錄入,將進程控制塊進行包裝,插入到循環(huán)隊列中;</p><p>  當(dāng)運行

26、程序時,每次從就緒隊列隊首取出一個進程pntmp,判斷是pntmp進程否到達。到達則運行該進程;</p><p>  若pntmp進程為首次運行,則記錄進程開始運行時間startTime;</p><p>  運行完pntmp進程后,輸出進程運行信息,并將此結(jié)點移至隊尾;</p><p>  若循環(huán)隊列長度size>0,則返回執(zhí)行b;否則結(jié)束程序;</p

27、><p><b>  詳細設(shè)計</b></p><p>  3.1系統(tǒng)程序流程圖</p><p><b>  3.2內(nèi)部接口設(shè)計</b></p><p>  3.2.1系統(tǒng)框架接口run()</p><p>  public void run(){//創(chuàng)建系統(tǒng)主頁的框架<

28、;/p><p>  //1.創(chuàng)建框架frame</p><p>  //2.設(shè)置相關(guān)屬性</p><p><b>  }</b></p><p>  3.2.2增加面板組件接口addComponentsTpPane()</p><p>  public static void addComponent

29、sTpPane(Container pane){</p><p>  //1.設(shè)置布局方式</p><p>  //2.創(chuàng)建系統(tǒng)功能按鈕</p><p><b>  //3.注冊按鈕</b></p><p>  //4.監(jiān)聽按鈕動作,并產(chǎn)生相應(yīng)操作,執(zhí)行對應(yīng)的功能</p><p><b>

30、;  }</b></p><p>  3.2.3創(chuàng)建進程接口createFrame()</p><p>  public static void createFrame(){</p><p>  class createInputFrame extends Frame implements ActionListener{//局部內(nèi)部類實現(xiàn)創(chuàng)建進程的

31、界面</p><p>  //窗體按鈕等屬性的定義</p><p>  public createInputFrame(String str){//創(chuàng)建進程輸入窗口</p><p><b>  }</b></p><p>  void panelCreateProIndex(){//進程輸入首頁面</p&

32、gt;<p><b>  }</b></p><p>  void panelCreateProInput(){//進程信息輸入頁面</p><p><b>  }</b></p><p>  public void actionPerformed(ActionEvent e) {//監(jiān)聽器 <

33、/p><p><b>  }</b></p><p><b>  }</b></p><p>  createInputFrame cf=new createInputFrame("進程創(chuàng)建");//實例化</p><p><b>  }</b><

34、/p><p>  3.2.4運行程序接口runFrame()</p><p>  public static void runFrame(){//1.創(chuàng)建運行窗口界面</p><p>  int currenttime=0;//記錄系統(tǒng)當(dāng)前時間</p><p>  while(size!=0){</p><p>  /

35、/2.運行時間片輪轉(zhuǎn)調(diào)度算法,并記錄信息</p><p><b>  }</b></p><p>  try {//3將運行信息存入文件</p><p>  String file="D:\\Java\\Processor\\myfile.txt";</p><p>  } catch

36、 (IOException e1) {</p><p><b>  }</b></p><p><b>  }</b></p><p>  3.2.5顯示結(jié)果接口resultFrame()</p><p>  public static void resultFrame(){</p>

37、<p>  //1.創(chuàng)建顯示結(jié)果窗體</p><p>  JFrame jf=new JFrame("顯示運行結(jié)果");</p><p><b>  //2.打開文件</b></p><p>  final JTextArea jta=new JTextArea(16,50);</p><p

38、>  openbutton.addActionListener(new ActionListener(){</p><p>  public void actionPerformed(ActionEvent e) {</p><p>  //3.將文件內(nèi)容讀到文本框中</p><p><b>  }</b></p><

39、p><b>  });</b></p><p><b>  }</b></p><p><b>  3.3用戶接口</b></p><p>  用戶啟動此處理機管理模擬系統(tǒng)后,即可方便的進行操作。以下為用戶使用此軟件時的圖形接口:</p><p>  系統(tǒng)主界面(圖3-2

40、):</p><p>  進程創(chuàng)建頁面(圖3-3):</p><p><b>  系統(tǒng)實現(xiàn)</b></p><p><b>  4.1編碼實現(xiàn)</b></p><p>  系統(tǒng)采用高級語言Java設(shè)計實現(xiàn),程序容易閱讀,易于測試,容易調(diào)試,方便維護。并且Java為當(dāng)今最流行的編程語言,有其獨到的優(yōu)點

41、;程序代碼符合基本編程規(guī)范,方法,屬性命名能體現(xiàn)程序的功能。</p><p><b>  4.2單元測試</b></p><p>  4.2.1創(chuàng)建進程模塊</p><p><b>  測試數(shù)據(jù)</b></p><p><b>  進程數(shù)num: 2</b></p>

42、<p>  進程名 進程運行時間進程到達時間</p><p>  神舟1號8000</p><p>  神舟2號300100</p><p><b>  預(yù)期輸出</b></p><p>  無輸出結(jié)果,但創(chuàng)建進程模塊將輸入數(shù)據(jù)存入內(nèi)存,并結(jié)束輸入返回主界面。

43、</p><p><b>  運行結(jié)果</b></p><p>  進程數(shù)輸入界面(圖4-1):</p><p>  進程信息輸入界面(圖4-2):</p><p>  4.2.2運行程序模塊</p><p><b>  測試數(shù)據(jù)</b></p><p&g

44、t;<b>  進程數(shù)num:2</b></p><p>  進程名 進程運行時間進程到達時間</p><p>  神舟1號8000</p><p>  神舟2號300100</p><p><b>  預(yù)期輸出</b></p><

45、p>  系統(tǒng)時間進程名剩余時間已運行次數(shù)進程狀態(tài)周轉(zhuǎn)時間</p><p>  0神舟1號7001true</p><p><b>  100</b></p><p>  200神舟1號6002true</p><p>  300神州2號2001t

46、rue</p><p>  400神舟1號5003true</p><p>  500神州2號1002true</p><p>  600神舟1號4004true</p><p>  700神州2號1003false700</p><p>  800

47、神舟1號3005true</p><p>  900神舟1號2006true</p><p>  1000神舟1號1007true</p><p>  1100神舟1號1008false1200 </p><p>  運行結(jié)果(圖4-3)</p><p>

48、  4.2.3結(jié)果顯示模塊</p><p><b>  測試數(shù)據(jù)</b></p><p><b>  無需測試數(shù)據(jù)</b></p><p><b>  預(yù)期輸出</b></p><p>  文件正常打開,在終端顯示相關(guān)控制信息及內(nèi)容;在用戶界面顯示文件內(nèi)進程運行時的信息內(nèi)容及

49、運行的結(jié)果;合法的輸出;</p><p>  運行結(jié)果(圖4-4)</p><p><b>  4.3遇到的問題</b></p><p>  布局管理器實現(xiàn)頁面布局時,不能很好的顯示在桌面上。對GridLayout,F(xiàn)lowLayout,BorderLayout,CradLyaout等布局管理器還不是很熟悉。</p><p&

50、gt;  對系統(tǒng)結(jié)構(gòu)的劃分不當(dāng),沒有實現(xiàn)界面和數(shù)據(jù)處理的分離;</p><p>  對用戶的非法操作做了處理,但并沒有完全找出處理錯誤操作的方法;</p><p>  沒有充分理解將要設(shè)計的系統(tǒng)結(jié)構(gòu),系統(tǒng)層次結(jié)構(gòu)不夠清晰;</p><p><b>  自我評價與總結(jié)</b></p><p>  通過本次課程設(shè)計,我對操作

51、系統(tǒng)中的處理機的調(diào)度算法有了進一步的理解。在對時間片輪轉(zhuǎn)算法進行設(shè)計實現(xiàn)的過程中,自己同時也自學(xué)了JavaGUI編程,對圖形用戶界面編程從理論上的認識走向了親身實踐。只有親自動手編程才能對所學(xué)到的內(nèi)容有深刻的理解,所謂“實踐出真知”。此處理機管理模擬系統(tǒng)能夠方便直觀地顯示出基于時間片輪轉(zhuǎn)調(diào)度算法的模擬調(diào)度過程,方便了該系統(tǒng)用戶的處理機調(diào)度算法的學(xué)習(xí)和研究</p><p>  實驗過程中,查閱了大量的JavaAPI

52、相關(guān)文檔和處理機調(diào)度模擬算法,最終形成自己的思路,完成了系統(tǒng)的功能定義和編碼測試。尤其是在編碼測試環(huán)節(jié),配合控制臺的顯示功能,能及時發(fā)現(xiàn)程序中的錯誤,處理異常和程序的邏輯錯誤。在整個課程設(shè)計過程中,先后學(xué)習(xí)新的知識并鞏固了已學(xué)到的進程調(diào)度,文件操作,異常處理機制,Java的高級類特性,面向?qū)ο蟪绦蛟O(shè)計,線程操作的相關(guān)技術(shù)和知識。此外,編寫處理機管理模擬系統(tǒng)相關(guān)文檔也使我對規(guī)范化編碼和書寫相關(guān)說明文檔進一步規(guī)范和熟練。在實驗過程中也遇到了

53、許多的問題,有的至今也沒有找出好的解決方案。例如,自己過早的急于編碼實現(xiàn),造成了系統(tǒng)的結(jié)構(gòu)層次不夠清晰,系統(tǒng)界面與系統(tǒng)功能的實現(xiàn)為實現(xiàn)分離,為以后設(shè)計實現(xiàn)軟件提供了很好的警示作用。</p><p>  短短一周的課程設(shè)計,我學(xué)到了用java編碼實現(xiàn)自己從未做過的一些實踐,提高了自己的動手能力,反復(fù)修改代碼的過程中提高了自己獨立思考問題的能力。在此特別感謝各位老師的指導(dǎo),有了老師們的支持,才會使我更加圓滿的完成此次

54、課題的設(shè)計。不懈的努力使自己向?qū)嵱眯腿瞬鸥~進了一步,增加自己的實力,增加了自己的競爭力。</p><p><b>  參考文獻</b></p><p>  1>java API 文檔 《JDK_API_1.6.0_CN.CHM》 ;</p><p>  2>趙俊生、馬志強著 《內(nèi)蒙古工業(yè)大學(xué)課程設(shè)計說明書書寫規(guī)范》2013年1月&

55、lt;/p><p>  3>劉中兵著 《Java高手真經(jīng)(編程基礎(chǔ)卷:Java核心編程技術(shù))》 北京:電子工業(yè)出版社2009年3月 </p><p>  4>鄭莉 王行言 馬素霞著 《Java語言程序設(shè)計》 北京:清華大學(xué)出版社 2010年7月</p><p>  5>張堯?qū)W著 《計算機操作系統(tǒng)教程(第三版)》 北京:清華大學(xué)出版社,2006年<

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論