版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 操作系統(tǒng)進(jìn)程調(diào)度課程設(shè)計(jì)
- 操作系統(tǒng)進(jìn)程調(diào)度課程設(shè)計(jì)
- 進(jìn)程調(diào)度算法 操作系統(tǒng)課程設(shè)計(jì)
- 操作系統(tǒng)進(jìn)程調(diào)度課程設(shè)計(jì)報(bào)告
- 操作系統(tǒng)課程設(shè)計(jì)--進(jìn)程調(diào)度算法
- 操作系統(tǒng)課程設(shè)計(jì)-進(jìn)程調(diào)度模擬
- 操作系統(tǒng)課程設(shè)計(jì)---進(jìn)程調(diào)度算法
- 進(jìn)程調(diào)度算法操作系統(tǒng)課程設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)--進(jìn)程調(diào)度算法
- 進(jìn)程調(diào)度算法操作系統(tǒng)課程設(shè)計(jì) (2)
- 操作系統(tǒng)課程設(shè)計(jì)——進(jìn)程調(diào)度模擬算法
- 內(nèi)存管理(操作系統(tǒng))操作系統(tǒng)課程設(shè)計(jì)
- 操作系統(tǒng)_進(jìn)程調(diào)度算法課程設(shè)計(jì)報(bào)告
- 操作系統(tǒng)課程設(shè)計(jì)——進(jìn)程調(diào)度模擬算法
- 操作系統(tǒng)課程設(shè)計(jì)---進(jìn)程調(diào)度模擬設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)--進(jìn)程調(diào)度程序設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)---進(jìn)程調(diào)度子系統(tǒng)模擬實(shí)現(xiàn)
- 操作系統(tǒng)課程設(shè)計(jì)---多級(jí)反饋隊(duì)列進(jìn)程調(diào)度算法
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告---進(jìn)程調(diào)度的模擬實(shí)現(xiàn)
- 操作系統(tǒng)課程設(shè)計(jì)進(jìn)程_銀行家_頁(yè)面調(diào)度
評(píng)論
0/150
提交評(píng)論