2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩36頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  操作系統(tǒng)課程設(shè)計(jì)</b></p><p>  實(shí)驗(yàn)名稱 </p><p>  CPU進(jìn)程調(diào)度和內(nèi)存分配 </p><p>  實(shí)驗(yàn)內(nèi)容 </p><p>  一、選擇一個(gè)調(diào)度算法,實(shí)現(xiàn)處理機(jī)調(diào)度</p><p>  二、處理機(jī)調(diào)度過(guò)程中,主存儲(chǔ)器空

2、間的分配和回收</p><p><b>  實(shí)驗(yàn)?zāi)康?lt;/b></p><p>  加深對(duì)CPU進(jìn)程調(diào)度和內(nèi)存分配的了解,進(jìn)一步了解操作系統(tǒng)中各功能的實(shí)現(xiàn), 了解在不同的存儲(chǔ)管理方式下,應(yīng)怎樣實(shí)現(xiàn)主存空間的分配和回收。</p><p><b>  實(shí)驗(yàn)內(nèi)容</b></p><p>  一、(1)設(shè)計(jì)一

3、個(gè)按照優(yōu)先權(quán)調(diào)度算法實(shí)現(xiàn)處理機(jī)調(diào)度的程序</p><p> ?。?)設(shè)計(jì)按時(shí)間片輪轉(zhuǎn)實(shí)現(xiàn)處理機(jī)調(diào)度的程序</p><p>  二、在可變分區(qū)管理方式下,采用最先適應(yīng)算法實(shí)現(xiàn)主存空間的分配和回收;</p><p><b>  實(shí)驗(yàn)過(guò)程及分析</b></p><p><b>  1.原理知識(shí):</b>&

4、lt;/p><p>  (1)作業(yè)進(jìn)入內(nèi)存中,由CPU分配產(chǎn)生PCB屬性,并通過(guò)PCB記錄進(jìn)程狀態(tài),實(shí)驗(yàn)即以PCB代表進(jìn)程模擬調(diào)度過(guò)程;</p><p> ?。?)在多道系統(tǒng)中,當(dāng)就緒進(jìn)程數(shù)大于處理機(jī)數(shù)時(shí),須按照某種策略決定哪些進(jìn)程優(yōu)先占用處理機(jī),本設(shè)計(jì)采用優(yōu)先級(jí);</p><p> ?。?)進(jìn)程調(diào)度時(shí),規(guī)定若就緒隊(duì)列進(jìn)程數(shù)少于6個(gè),則自動(dòng)從后備隊(duì)列調(diào)入一個(gè)作業(yè);<

5、;/p><p> ?。?)系統(tǒng)會(huì)將占有較多資源、預(yù)期結(jié)果不符合要求的進(jìn)程自動(dòng)掛起,并回收所占資源,而本實(shí)驗(yàn)設(shè)置為手動(dòng)掛起;</p><p> ?。?)在適宜條件下,系統(tǒng)會(huì)將掛起的進(jìn)程自動(dòng)解掛,而且只解掛到就緒隊(duì)列;本設(shè)計(jì)為簡(jiǎn)化操作,設(shè)置為手動(dòng)解掛,若解掛條件合適(即CPU各種資源可用),則解掛到就緒隊(duì)列,并分配內(nèi)存;若解掛條件不適宜,則解掛至后備隊(duì)列,但不分配內(nèi)存;</p>&l

6、t;p><b>  2、實(shí)驗(yàn)程序設(shè)計(jì):</b></p><p> ?。?)本實(shí)驗(yàn)采用java語(yǔ)言編程,并實(shí)現(xiàn)界面顯示。</p><p>  (2)為體現(xiàn)java語(yǔ)言面對(duì)對(duì)象程序設(shè)計(jì)的特點(diǎn),實(shí)驗(yàn)設(shè)計(jì)為ProcessPCB、MemoryItem類封裝PCB和所分配的內(nèi)存各自的屬性與方法;用ProcessRecords、MemoryRecords類封裝數(shù)組方法;用Si

7、ngleCPUScheduling實(shí)現(xiàn)GUI界面顯示;</p><p>  (3)ProcessPCB類中,定義PCB的進(jìn)程名、要求運(yùn)行時(shí)間、優(yōu)先級(jí)、狀態(tài)、主存起始位置、所需內(nèi)存大小這6個(gè)屬性,并定義各屬性的get和set方法,定義equals方法用于對(duì)比類的屬性,定義toString方法得到類屬性的字符串,定義run方法封裝優(yōu)先權(quán)-1/ 要求運(yùn)行時(shí)間-1的過(guò)程;MemoryItem類中,定義可分分區(qū)表每一可分記

8、錄的主存起始位置、內(nèi)存大小及其get和set方法,定義toString方法得到可在界面顯示的字符串;</p><p> ?。?)ProcessRecords封裝PCB數(shù)組的添加元素addItem和刪除元素removeItem方法,并構(gòu)造函數(shù)getItem通過(guò)參數(shù)ProcessPCB和String查找數(shù)組元素,定義getNumberOfItems取數(shù)組大小,定義getItemsPriorities方法取所有數(shù)組元素

9、的toString方法用于界面顯示,定義iterator方法取得數(shù)組的迭代器;</p><p> ?。?)MemoryRecords用同樣的設(shè)計(jì)思想封裝以MemoryItem為數(shù)組元素的各屬性和方法;</p><p>  (6)SingleCPUScheduling類繼承JFrame類,實(shí)現(xiàn)界面化顯示;與上面相對(duì)應(yīng),實(shí)例化ProcessRecords(3次)和MemoryRecords(1

10、次)作為私有變量,分別作為后備隊(duì)列、就緒隊(duì)列、掛起隊(duì)列和內(nèi)存可分分區(qū)表;在界面設(shè)計(jì)中,設(shè)計(jì)后備隊(duì)列、掛起隊(duì)列(附帶解掛umount按鈕)、就緒隊(duì)列(附帶掛起suspend按鈕)可分分區(qū)表列表顯示框,設(shè)置PCB添加框,附帶添加至后備隊(duì)列(addToBackup)、添加至就緒隊(duì)列(addToReady)按鈕,以及CPU當(dāng)前執(zhí)行狀態(tài)顯示框、系統(tǒng)日志顯示框,和開(kāi)始調(diào)度(systemStart)按鈕,優(yōu)先級(jí)和時(shí)間片單選按鈕,以及時(shí)間片顯示標(biāo)簽和文

11、本編輯框;</p><p> ?。?)界面設(shè)計(jì)詳解;后備隊(duì)列顯示框用于顯示已添加至后備隊(duì)列的ProcessRecords屬性信息,其中主存起始位置默認(rèn)為-1,表示未分配;掛起隊(duì)列顯示框用于顯示從就緒隊(duì)列掛起的PCB,其中屬性“主存起始位置”(MemoryBase)將由非負(fù)數(shù)變?yōu)?1,表示掛起后收回內(nèi)存;就緒隊(duì)列顯示框中顯示就緒隊(duì)列屬性,其中“主存起始位置”均為非負(fù),表示一分配內(nèi)存;PCB信息添加框分列PCB6個(gè)屬

12、性顯示標(biāo)簽和可編輯文本框,和添加按鈕,用于添加PCB;系統(tǒng)日志顯示框附屬時(shí)間片顯示標(biāo)簽和可編輯文本編輯框,可由用戶決定時(shí)間片大小; </p><p> ?。?)附屬功能添加完善;最重要的是為程序添加線程,是程序能以停頓一段時(shí)間的頻率自動(dòng)運(yùn)行;后備隊(duì)列、掛起隊(duì)列添加total顯示標(biāo)簽和不可編輯文本顯示框,用于顯示各自數(shù)組中元素?cái)?shù)目,掛起隊(duì)列附屬刪除(remove)按鈕,可刪除掛起隊(duì)列中的元素;后備、掛起、就緒隊(duì)列

13、均添加監(jiān)聽(tīng)器,用于響應(yīng)用戶單擊操作,可以在PCB信息添加框顯示用戶單擊的那一條PCB的信息;PCB信息添加框附屬reset按鈕,用于一鍵清空信息框中信息,方便輸入;系統(tǒng)日志面板附屬系統(tǒng)暫停(systemPause)和系統(tǒng)重置(systemReset)按鈕,分別用于暫停運(yùn)行(方便用戶觀察當(dāng)前運(yùn)行結(jié)果)和重置系統(tǒng)(方便用戶重復(fù)使用程序,免去關(guān)閉后重啟本程序的麻煩);</p><p><b>  最終界面如圖

14、:</b></p><p><b>  設(shè)計(jì)結(jié)果報(bào)告和分析</b></p><p>  本程序還存在一些技術(shù)上的問(wèn)題,使得程序不能盡善盡美;如,PCB信息添加框沒(méi)有“隨機(jī)置入就緒隊(duì)列”功能,添加PCB信息仍顯得繁瑣;就緒隊(duì)列的掛起功能在程序自動(dòng)運(yùn)行時(shí),存在反應(yīng)異常(反應(yīng)延遲或直接無(wú)反映);可分分區(qū)表只顯示了當(dāng)前可分的內(nèi)存,沒(méi)有顯示已分的PCB及其對(duì)應(yīng)內(nèi)存使

15、用情況,且沒(méi)有利用圖形和豐富的顏色來(lái)更好的展示;時(shí)間片設(shè)計(jì)還需要改進(jìn),使用效率不高;系統(tǒng)重置功能存在響應(yīng)延遲的問(wèn)題;另外,界面不夠美觀;還需要不斷改進(jìn)。</p><p><b>  設(shè)計(jì)感想</b></p><p>  通過(guò)這次實(shí)驗(yàn),我們對(duì)操作系統(tǒng)的進(jìn)程調(diào)度和內(nèi)存分配管理有了更加深入的了解,對(duì)操作系統(tǒng)內(nèi)部的工作原理有了進(jìn)一步的認(rèn)識(shí)。</p><p&

16、gt;  通過(guò)編程,也鞏固了我們的程序設(shè)計(jì)和代碼編寫(xiě)的能力,實(shí)驗(yàn)過(guò)程中遇到的各種問(wèn)題以及解決問(wèn)題的過(guò)程與方法,都是我們獲益匪淺。</p><p>  同時(shí),程序的不完善,也將促使我們?cè)谡n程之后,繼續(xù)學(xué)習(xí)、理解課程內(nèi)容,并盡一切努力不斷完善程序,做到盡善盡美。</p><p><b>  程序代碼:</b></p><p>  package s

17、rc;</p><p>  public class MemoryItem {</p><p>  private int memoryBase=0;</p><p>  private int memoryLimit=0;</p><p>  private int availableStatus=0;</p><p&g

18、t;  public MemoryItem(int initMemoryBase, int initMemoryLimit) {</p><p>  this.memoryBase = initMemoryBase;</p><p>  this.memoryLimit = initMemoryLimit;</p><p><b>  }</b>

19、;</p><p>  public int getMemoryBase() {</p><p>  return this.memoryBase;</p><p><b>  }</b></p><p>  public int getMemoryLimit() {</p><p>  retu

20、rn this.memoryLimit;</p><p><b>  }</b></p><p>  public int getStatus() {</p><p>  return this.availableStatus;</p><p><b>  }</b></p><

21、p>  public String toString() {</p><p>  return this.getMemoryBase() + "_" + this.getMemoryLimit() + "\n";</p><p><b>  }</b></p><p><b>  }<

22、;/b></p><p>  package src;</p><p>  public class ProcessPCB {</p><p>  //backupBAK 后備 ready 就緒 suspend 掛起 memory內(nèi)存</p><p>  private String PID;</p><p&g

23、t;  private int RequiredTime;</p><p>  private int Priority;</p><p>  private String Status;</p><p>  private int MwmoryBase = 0000;</p><p>  private int MemoryLimit;&l

24、t;/p><p>  //private String PCBPointer;</p><p>  public ProcessPCB(String initpID, int initRTime, int initpriority, </p><p>  String status, int initBase, int initLimit) {</p>

25、<p>  this.PID = initpID;</p><p>  this.RequiredTime = initRTime;</p><p>  this.Priority = initpriority;</p><p>  this.Status = status;</p><p>  this.MwmoryBase =

26、initBase;</p><p>  this.MemoryLimit = initLimit;</p><p><b>  }</b></p><p>  public String getPID() {</p><p>  if(this.PID == null)</p><p>  ret

27、urn " ";</p><p><b>  else</b></p><p>  return this.PID;</p><p><b>  }</b></p><p>  public int getRequiredTime() {</p><p>

28、  return this.RequiredTime;</p><p><b>  }</b></p><p>  public int getPriority() {</p><p>  return this.Priority;</p><p><b>  }</b></p>&l

29、t;p>  public String getStatus() {</p><p>  if(this.Status == null)</p><p>  return " ";</p><p><b>  else</b></p><p>  return this.Status;</p

30、><p><b>  }</b></p><p>  public int getMemoryBase() {</p><p>  return this.MwmoryBase;</p><p><b>  }</b></p><p>  public int getMemory

31、Limit() {</p><p>  return this.MemoryLimit;</p><p><b>  }</b></p><p>  public boolean equals(ProcessPCB pcb) {</p><p>  if(pcb.getPID() == this.getPID())

32、{</p><p>  return true;</p><p><b>  }</b></p><p>  else return false;</p><p><b>  }</b></p><p>  public String toString() {</p&g

33、t;<p>  return this.getPID() + "_" + this.getRequiredTime() + "_" + this.getPriority() + "_" </p><p>  + this.getStatus() + "_" + this.getMemoryBase() + "_

34、" + this.getMemoryLimit() + "\n";</p><p><b>  }</b></p><p>  public void run() {</p><p>  this.RequiredTime = this.RequiredTime-1;</p><p>  t

35、his.Priority = this.Priority-1;</p><p><b>  }</b></p><p><b>  }</b></p><p>  package src;</p><p>  import java.util.ArrayList;</p><p&

36、gt;  import java.util.Iterator;</p><p>  public class PCBRecords implements Iterable<ProcessPCB> {</p><p>  private ArrayList<ProcessPCB> PCBItems;</p><p>  public Array

37、List<ProcessPCB> getPCBItems() {</p><p>  return this.PCBItems;</p><p><b>  }</b></p><p>  public PCBRecords() {</p><p>  this.PCBItems = new ArrayLi

38、st<ProcessPCB>();</p><p><b>  }</b></p><p>  public void addItem(ProcessPCB PcbItem) {</p><p>  this.PCBItems.add(PcbItem);</p><p><b>  }</b&

39、gt;</p><p>  public void removeItem(ProcessPCB PCbItem) {</p><p>  this.PCBItems.remove(PCbItem);</p><p><b>  }</b></p><p>  public ProcessPCB getItem(Proc

40、essPCB processPCB) {</p><p>  for (ProcessPCB pCbItem : this.PCBItems) {</p><p>  if (pCbItem.equals(processPCB)) { </p><p>  return pCbItem;</p><p><b>

41、;  }</b></p><p><b>  }</b></p><p>  return null;</p><p><b>  }</b></p><p>  public ProcessPCB getItem(String pid) {</p><p&

42、gt;  for (ProcessPCB pcBItem : this.PCBItems) {</p><p>  if (pcBItem.getPID().equals(pid)) { </p><p>  return pcBItem;</p><p><b>  }</b></p><p>&l

43、t;b>  }</b></p><p>  return null;</p><p><b>  }</b></p><p>  public int getNumberOfItems() {</p><p>  return this.PCBItems.size();</p>

44、<p><b>  }</b></p><p>  public String[] getItemsProperties() {</p><p>  String itemsProperties[] = new String[getNumberOfItems()];</p><p>  int i = 0;</p>&

45、lt;p>  for(Iterator iterator1 = PCBItems.iterator(); iterator1.hasNext();)</p><p><b>  {</b></p><p>  ProcessPCB stu_Item = (ProcessPCB)iterator1.next();</p><p>  ite

46、msProperties[i++] = stu_Item.toString();</p><p><b>  }</b></p><p>  return itemsProperties;</p><p><b>  }</b></p><p>  public Iterator<Proces

47、sPCB> iterator() {</p><p>  return this.PCBItems.iterator();</p><p><b>  }</b></p><p><b>  }</b></p><p>  package src;</p><p>  

48、import java.util.ArrayList;</p><p>  import java.util.Iterator;</p><p>  public class MemoryRecords implements Iterable<MemoryItem> {</p><p>  private ArrayList<MemoryItem&

49、gt; memoryItems;</p><p>  public Iterator<MemoryItem> iterator() {</p><p>  // TODO Auto-generated method stub</p><p>  return this.memoryItems.iterator();</p><p>

50、;<b>  }</b></p><p>  public ArrayList<MemoryItem> getMemoryItems() {</p><p>  return this.memoryItems;</p><p><b>  }</b></p><p>  public M

51、emoryRecords() {</p><p>  this.memoryItems = new ArrayList<MemoryItem>();</p><p><b>  }</b></p><p>  public void addItem(MemoryItem newMemoryItem) {</p><

52、;p>  this.memoryItems.add(newMemoryItem);</p><p><b>  }</b></p><p>  public void removeItem(MemoryItem momoryItem) {</p><p>  this.memoryItems.remove(momoryItem);<

53、/p><p><b>  }</b></p><p>  public MemoryItem getMomoryItem(MemoryItem item) {</p><p>  for(MemoryItem mItem : this.memoryItems) {</p><p>  if(mItem.equals(item

54、)) {</p><p>  return mItem;</p><p><b>  }</b></p><p><b>  }</b></p><p>  return null;</p><p><b>  }</b></p><

55、p>  public MemoryItem getMemoryItem(int base) {</p><p>  for(MemoryItem mItem : this.memoryItems) {</p><p>  if(mItem.getMemoryBase() == base) {</p><p>  return mItem;</p>

56、<p><b>  }</b></p><p><b>  }</b></p><p>  return null;</p><p><b>  }</b></p><p>  public int getNumberOfItems() {</p>

57、<p>  return this.memoryItems.size();</p><p><b>  }</b></p><p>  public String[] getItemsProperties() {</p><p>  String itemsProperties[] = new String[getNumberOfI

58、tems()];</p><p><b>  int i=0;</b></p><p>  for(Iterator iterator1 = this.memoryItems.iterator(); iterator1.hasNext(); ) {</p><p>  MemoryItem mmItem = (MemoryItem) itera

59、tor1.next();</p><p>  itemsProperties[i++] = mmItem.toString();</p><p><b>  }</b></p><p>  if(itemsProperties == null) {</p><p>  itemsProperties[0] = "

60、; ";</p><p><b>  }</b></p><p>  return itemsProperties;</p><p><b>  }</b></p><p><b>  }</b></p><p>  package

61、src;</p><p>  import java.util.*;</p><p>  import java.awt.*;</p><p>  import java.awt.event.*;</p><p>  import javax.swing.*;</p><p>  import javax.swing.

62、event.*;</p><p>  import src.SingleCPUSchedulingGUI03.AddToBAKListener;</p><p>  import src.SingleCPUSchedulingGUI03.AddToReadyListener;</p><p>  import src.SingleCPUSchedulingGUI03

63、.DisplayBackupProcessListener;</p><p>  import src.SingleCPUSchedulingGUI03.DisplaySuspendedProcessListener;</p><p>  import src.SingleCPUSchedulingGUI03.DisplayreadyProcessListener;</p>

64、<p>  import src.SingleCPUSchedulingGUI03.RemoveListener;</p><p>  import src.SingleCPUSchedulingGUI03.ResetListener;</p><p>  import src.SingleCPUSchedulingGUI03.ResetSystemListener;</p

65、><p>  import src.SingleCPUSchedulingGUI03.StartSystemListener;</p><p>  import src.SingleCPUSchedulingGUI03.SuspendListener;</p><p>  import src.SingleCPUSchedulingGUI03.UmountListene

66、r;</p><p>  //import src.myframe.MyWindowMonitor;</p><p>  import java.io.*;</p><p>  import java.text.*;</p><p>  public class SingleCPUSchedulingGUI03 extends JFrame

67、{</p><p>  /* Standar error stream */</p><p>  static private PrintWriter stdErr = new PrintWriter(System.err, true);</p><p>  static private int WIDTH = 800, HEIGHT = 750;

68、 // the size of the Frame 主面板 </p><p>  /* 各列表對(duì)應(yīng)的面板規(guī)格*/</p><p>  /*對(duì)應(yīng)各名詞釋義 backupBAK 后備 ready 就緒 suspend 掛起 memory內(nèi)存 */</p><p>  sta

69、tic private int BackupBAK_CELL_SIZE = 250, BackupBAK_LIST_ROWS = 10;//后備隊(duì)列</p><p>  static private int Suspend_CELL_SIZE = 250, Suspend_LIST_ROWS = 10; //掛起隊(duì)列</p><p>  static private int Re

70、ady_CELL_SIZE = 200, Ready_LIST_ROWS = 6; //就緒隊(duì)列</p><p>  static private int Memory_CELL_SIZE = 200, Memory_LIST_ROWS = 10; //內(nèi)存隊(duì)列</p><p>  static private int CPU_ROWS = 12, CPU_CO

71、LS = 22; //CPU面板</p><p>  static private int STATUS_ROWS = 8, STATUS_COLS = 30; //系統(tǒng)狀態(tài)面板</p><p>  private int timeslice = 1;

72、 //設(shè)置時(shí)間片大小</p><p>  private int systemStatus=0; //設(shè)置系統(tǒng)狀態(tài) 0——系統(tǒng)預(yù)備狀態(tài),等待開(kāi)始,1——系統(tǒng)運(yùn)行狀態(tài),2——系統(tǒng)暫停狀態(tài)</p><p>  static private int TOTAL__TEXTFIELD_SIZE = 10; // Size total text field 記錄各隊(duì)列元素個(gè)數(shù)

73、</p><p>  private JList backupList, suspendList, readyList, memoryList; //各隊(duì)列相對(duì)應(yīng)的數(shù)組列表 </p><p>  private JButton addToBAKButton, addToReadyButton, resetButton; //進(jìn)程添加框中的"添加至后備隊(duì)列",&quo

74、t;添加至就緒隊(duì)列","重置"Button</p><p>  private JButton suspendButton, umountButton, removeButton; //就緒隊(duì)列框中的"掛起",掛起隊(duì)列框中的"解掛","刪除"Button</p><p>  private JBut

75、ton startButton, pauseButton, resetSyatemButton; //Status面板中的"啟動(dòng)系統(tǒng)","重置系統(tǒng)"Button </p><p>  //優(yōu)先級(jí)和時(shí)間片單選鈕及時(shí)間片顯示框</p><p>  private JRadioButton priorityJRB, timesliceJRB;<

76、/p><p>  private JLabel timesliceSizeLabel; </p><p>  private JTextField timesliceJtf;</p><p>  private JPanel backupBAKPanel, PCBItemPanel, suspendedPanel, memoryPanel;//后備面板、進(jìn)程添加面

77、板、掛起面板、內(nèi)存面板</p><p>  private JLabel backupTotalLabel, suspendTotalLabel;//后備隊(duì)列、掛起隊(duì)列元素總數(shù)標(biāo)簽</p><p>  private JLabel PIDLabel, requiredTimeLabel, priorityLabel, statuesLabel, baseLabel, limitLabel;

78、</p><p>  //進(jìn)程信息標(biāo)簽 進(jìn)程編號(hào)PID,所需運(yùn)行時(shí)間requiredTime,優(yōu)先級(jí)priority,當(dāng)前狀態(tài)statues,內(nèi)存中的基址base,所需內(nèi)存大小limit </p><p>  private JTextField backupTotalTextField, suspendTotalTextField;</p><p>  

79、//后備隊(duì)列、掛起隊(duì)列元素總數(shù)文本框(不可編輯)</p><p>  private JTextField PIDTextField, requiredTimeTextField, priorityTextField, statusTextField, baseTextField, limitTextField;</p><p>  //CPU狀態(tài)顯示文本域(不可編輯),status信息

80、文本域(用于現(xiàn)實(shí)程序每一步的操作和影響,不可編輯)</p><p>  private JTextArea CPUTextArea, statuesTextArea;</p><p>  //后備隊(duì)列PCB數(shù)組,就緒、掛起,——內(nèi)存(可分分區(qū)表)</p><p>  PCBRecords backupPCB, readyPCB, suspendedPCB;</

81、p><p>  private MemoryRecords memoryItems;</p><p>  private boolean flag = false;</p><p><b>  //main函數(shù)</b></p><p>  public static void main(String[] args) thro

82、ws IOException {</p><p>  new SingleCPUSchedulingGUI03().initFrame();</p><p><b>  }</b></p><p>  //初始化Frame</p><p>  public void initFrame() {</p>&l

83、t;p>  backupList = new JList();</p><p>  backupList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);</p><p>  backupList.setVisibleRowCount(BackupBAK_LIST_ROWS);</p><p>  b

84、ackupList.setFixedCellWidth(BackupBAK_CELL_SIZE);</p><p>  suspendList = new JList();</p><p>  suspendList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);</p><p>  suspendL

85、ist.setVisibleRowCount(Suspend_LIST_ROWS);</p><p>  suspendList.setFixedCellWidth(Suspend_CELL_SIZE);</p><p>  readyList = new JList();</p><p>  readyList.setSelectionMode(ListSel

86、ectionModel.SINGLE_SELECTION);</p><p>  readyList.setVisibleRowCount(Ready_LIST_ROWS);</p><p>  readyList.setFixedCellWidth(Ready_CELL_SIZE);</p><p>  memoryList = new JList();<

87、/p><p>  memoryList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);</p><p>  memoryList.setVisibleRowCount(Memory_LIST_ROWS);</p><p>  memoryList.setFixedCellWidth(Memory_CELL_S

88、IZE);</p><p>  suspendButton = new JButton("掛起");</p><p>  addToBAKButton = new JButton("添加至后備隊(duì)列");</p><p>  addToReadyButton = new JButton("添加至就緒隊(duì)列");

89、</p><p>  resetButton = new JButton("重置");</p><p>  umountButton = new JButton("解掛");</p><p>  removeButton = new JButton("刪除");</p><p>  

90、startButton = new JButton("開(kāi)始調(diào)度");</p><p>  pauseButton = new JButton("暫停");</p><p>  resetSyatemButton = new JButton("重啟系統(tǒng)");</p><p>  priorityJRB = n

91、ew JRadioButton("優(yōu)先權(quán)", true);</p><p>  timesliceJRB = new JRadioButton("時(shí)間片");</p><p>  backupTotalLabel = new JLabel("總計(jì):");</p><p>  backupTotalTextF

92、ield = new JTextField("0", TOTAL__TEXTFIELD_SIZE);</p><p>  backupTotalTextField.setEditable(false);</p><p>  suspendTotalLabel = new JLabel("總計(jì):");</p><p>  sus

93、pendTotalTextField = new JTextField("0", TOTAL__TEXTFIELD_SIZE);</p><p>  suspendTotalTextField.setEditable(false);</p><p>  timesliceSizeLabel = new JLabel("時(shí)間片");</p>

94、<p>  timesliceJtf = new JTextField("3", 5);</p><p>  timesliceJtf.setEditable(true);</p><p>  CPUTextArea = new JTextArea(CPU_ROWS, CPU_COLS);</p><p>  CPUTextArea

95、.setEditable(false);</p><p>  statuesTextArea = new JTextArea(STATUS_ROWS, STATUS_COLS);</p><p>  statuesTextArea.setEditable(false);</p><p>  /* north panel*/</p><p> 

96、 JPanel northPanel = new JPanel(new GridLayout(1, 3));</p><p>  // ProcessPCB item information Panel </p><p>  PCBItemPanel = new JPanel(new BorderLayout());</p><p>  PCBItemPanel.

97、setBorder(</p><p>  BorderFactory.createTitledBorder("PCB信息"));</p><p>  JPanel PCBItemButtonJPanel = new JPanel(new GridLayout(3, 1));</p><p>  PCBItemButtonJPanel.add(ad

98、dToBAKButton);</p><p>  PCBItemButtonJPanel.add(addToReadyButton);</p><p>  PCBItemButtonJPanel.add(resetButton);</p><p>  PCBItemPanel.add(this.initPCBItemPanel(), BorderLayout.CEN

99、TER);</p><p>  PCBItemPanel.add(PCBItemButtonJPanel, BorderLayout.SOUTH);</p><p>  //backupBAKList Panel </p><p>  backupBAKPanel = new JPanel(new BorderLayout());</p><p&

100、gt;  backupBAKPanel.setBorder(BorderFactory.createTitledBorder("后備列表"));</p><p>  JPanel backupTotalPAnel = new JPanel();</p><p>  backupTotalPAnel.add(backupTotalLabel);</p>&l

101、t;p>  backupTotalPAnel.add(backupTotalTextField);</p><p>  backupBAKPanel.add (</p><p>  new JScrollPane(backupList,</p><p>  JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,</p>

102、<p>  JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED), BorderLayout.CENTER);</p><p>  backupBAKPanel.add(backupTotalPAnel, BorderLayout.SOUTH);</p><p>  // SuspendList Panel </p>&

103、lt;p>  suspendedPanel = new JPanel(new BorderLayout());</p><p>  suspendedPanel.setBorder(BorderFactory.createTitledBorder("掛起列表"));</p><p>  JPanel suspendedTotalPAnel = new JPanel

104、();</p><p>  suspendedTotalPAnel.add(suspendTotalLabel);</p><p>  suspendedTotalPAnel.add(suspendTotalTextField);</p><p>  JPanel suspendComponentPanel = new JPanel(new GridLayout(1

105、, 2));</p><p>  suspendComponentPanel.add(umountButton);</p><p>  suspendComponentPanel.add(removeButton);</p><p>  suspendedPanel.add (suspendedTotalPAnel, BorderLayout.NORTH);<

106、/p><p>  suspendedPanel.add (</p><p>  new JScrollPane(suspendList,</p><p>  JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,</p><p>  JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED)

107、, BorderLayout.CENTER);</p><p>  suspendedPanel.add(suspendComponentPanel, BorderLayout.SOUTH);</p><p>  northPanel.add(backupBAKPanel);</p><p>  northPanel.add(PCBItemPanel);</p

108、><p>  northPanel.add(suspendedPanel);</p><p>  /* center Panel*/ </p><p>  JPanel centrelPanel = new JPanel(new GridLayout(1, 3));</p><p>  // readyList panel</p>

109、<p>  JPanel readyListPanel = new JPanel(new BorderLayout());</p><p>  readyListPanel.setBorder(BorderFactory.createTitledBorder("就緒列表"));</p><p>  readyListPanel.add (</p>

110、<p>  new JScrollPane(readyList,</p><p>  JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,</p><p>  JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED));</p><p>  readyListPanel.add (suspen

111、dButton, BorderLayout.SOUTH);</p><p>  // CPU panel</p><p>  JPanel CPUPanel = new JPanel();</p><p>  CPUPanel.setBorder(BorderFactory.createTitledBorder("CPU"));</p>

112、;<p>  CPUPanel.add (new JScrollPane(CPUTextArea,</p><p>  JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,</p><p>  JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED)); </p><p>  memoryPa

113、nel = new JPanel(new BorderLayout());</p><p>  memoryPanel.setBorder(BorderFactory.createTitledBorder("內(nèi)存列表"));</p><p>  memoryPanel.add (</p><p>  new JScrollPane(memoryL

114、ist,</p><p>  JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,</p><p>  JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED));</p><p>  centrelPanel.add(readyListPanel);</p><p>  centr

115、elPanel.add(CPUPanel);</p><p>  centrelPanel.add(memoryPanel); </p><p>  /*statues panel*/</p><p>  JPanel southPanel = new JPanel(new BorderLayout());</p><p>  JPan

116、el statuesPanel = new JPanel();</p><p>  statuesPanel.setBorder(BorderFactory.createTitledBorder("狀態(tài)"));</p><p>  statuesPanel.add (new JScrollPane(statuesTextArea,</p><p>

117、;  JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,</p><p>  JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED));</p><p>  JPanel systemContralButtonPanel = new JPanel(new GridLayout(6, 1));</p><p&

118、gt;  systemContralButtonPanel.setBorder(BorderFactory.createTitledBorder("系統(tǒng)控制"));</p><p>  ButtonGroup group = new ButtonGroup();</p><p>  group.add(priorityJRB);</p><p>

119、  group.add(timesliceJRB);</p><p>  JPanel porityPanel = new JPanel(new GridLayout(1, 2));</p><p>  porityPanel.add(timesliceSizeLabel);</p><p>  porityPanel.add(timesliceJtf);</

120、p><p>  systemContralButtonPanel.add(priorityJRB);</p><p>  systemContralButtonPanel.add(timesliceJRB);</p><p>  systemContralButtonPanel.add(porityPanel);</p><p>  system

121、ContralButtonPanel.add(startButton);</p><p>  systemContralButtonPanel.add(pauseButton);</p><p>  systemContralButtonPanel.add(resetSyatemButton);</p><p>  southPanel.add(statuesPan

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論