版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、操作系統(tǒng)實(shí)驗(yàn)第一期項(xiàng)目開發(fā)實(shí)現(xiàn)實(shí)驗(yàn)名稱EXP .1 CPU SchedulingExp .2 Allocation & Reclaim實(shí)驗(yàn)內(nèi)容一,選擇一個(gè)調(diào)度算法,實(shí)現(xiàn)處理機(jī)調(diào)度;二,處理機(jī)調(diào)度過程中,主存儲(chǔ)器空間的分配和回收;實(shí)驗(yàn)?zāi)康囊?多道系統(tǒng)中,當(dāng)就緒進(jìn)程數(shù)大于處理機(jī)數(shù)時(shí),須按照某種策略決定哪些進(jìn)程優(yōu)先占用處 理機(jī)。本實(shí)驗(yàn)?zāi)M實(shí)現(xiàn)處理機(jī)調(diào)度,以加深了解處理機(jī)調(diào)度的工作;二,幫助了解在不同的存儲(chǔ)管理方式下,應(yīng)怎樣實(shí)現(xiàn)主存空間的分配和回收;實(shí)驗(yàn)題目一,( 1)設(shè)計(jì)一個(gè)按照優(yōu)先權(quán)調(diào)度算法實(shí)現(xiàn)處理機(jī)調(diào)度的程序;(2)設(shè)計(jì)按時(shí)間片輪轉(zhuǎn)實(shí)現(xiàn)處理機(jī)調(diào)度的程序;二,在可變分區(qū)管理方式下,采用最先適應(yīng)算法
2、實(shí)現(xiàn)主存空間的分配和回收;實(shí)驗(yàn)要求一,( a),PCB內(nèi)容:進(jìn)程名/PID ;要求運(yùn)行時(shí)間(單位時(shí)間);優(yōu)先權(quán);狀態(tài);PCB 指針;一一(因課程內(nèi)容原因,這個(gè)指針在設(shè)計(jì)中沒用)1, 可隨機(jī)輸入若干進(jìn)程,并按優(yōu)先權(quán)排序;2, 從就緒隊(duì)列首選進(jìn)程運(yùn)行:優(yōu)先權(quán)-1/要求運(yùn)行時(shí)間-1;要求運(yùn)行時(shí)間=0時(shí), 撤銷該進(jìn)程;3, 重新排序,進(jìn)行下一輪調(diào)度;(b),最好采用圖形界面;(c) ,可隨時(shí)增加進(jìn)程;(d) ,規(guī)定道數(shù),設(shè)置后備隊(duì)列和掛起狀態(tài)。若內(nèi)存中進(jìn)程數(shù)少于規(guī)定道數(shù),可自動(dòng) 從后備隊(duì)列調(diào)度一作業(yè)進(jìn)入。被掛起進(jìn)程如=入掛起隊(duì)列,設(shè)置解掛功能用于將指定掛起進(jìn)程解 掛入就緒隊(duì)列;(e) ,每次調(diào)度后,顯
3、示各進(jìn)程狀態(tài);二, (a),自行假設(shè)主存空間大小,預(yù)設(shè)操作系統(tǒng)所占大小并構(gòu)造未分分區(qū)表;表目?jī)?nèi)容:起址、長(zhǎng)度、狀態(tài)(未分/空表目)(b),結(jié)合實(shí)驗(yàn)一,PCB增加為: PID,要求運(yùn)行時(shí)間,優(yōu)先權(quán),狀態(tài),所需內(nèi)存大 小,主存起始位置,PCB指針(失效);(C) 采用最先適應(yīng)算法分配主存空間;(D) ,進(jìn)程完成后,回收主存,并與相鄰空閑分區(qū)合并;實(shí)驗(yàn)過程及分析1,初步設(shè)計(jì):ProtessPCE-a-riu.Diirinyi5t:lnrString-所需主存大旳Irtt*ge1PHP0 SIMng *昶1?1出91耐9 gsld):PCSR&cflrdsdHfiim(PraCflssPCB pcb)
4、_ *r-Mio*eHsin(proces5PCB pcb) lHemPrD( E-EsPCB p):Proces5PCB iiltemfSIririo pufl ProcsssFCG Num4erOffiBmsO:irrtbSitkunPCBSHPilOrihrt)諭1吐柚曲乩甌!sOSInn勺“藺$訊血*闌向直黑O.int 宿岀MwicirB輻即nt mb).*Q*lMinaryLimtlO 創(chuàng) *selMeiniYLlifld(ifil mi)Objet&:bcioleiBrfiHoSlmaCi:G!inini3打urn。kEmordrerr- gelMemDy&EieQlri*1oG1
5、n ngQQilngsseltilemoiySas-Bfliit 如; hselMemolyLimiKifti I)readyPCBSitficleCPUScneduhngGLil+rieralDir0:lteraiorProces-&PC*111flijanpndpriPCR11hMemorvRecords+ atfiUe iHijMemoMtem mi+ removelle rHi:MemorYltem m):QEiMoniorynem eitamlcMemDMtenn* c EiMemmynernijnc uase?:p.iemDrinem* ner3lQ2,詳細(xì)設(shè)計(jì):(a),操作系統(tǒng)知
6、識(shí)回顧:(1) 作業(yè)進(jìn)入內(nèi)存中,由CPU分配產(chǎn)生PCB屬性,并通過PCB記錄進(jìn)程狀態(tài), 實(shí)驗(yàn)即以PCB代表進(jìn)程模擬調(diào)度過程;(2) 在多道系統(tǒng)中,多道系統(tǒng)中,當(dāng)就緒進(jìn)程數(shù)大于處理機(jī)數(shù)時(shí),須按照某種策略決定哪些進(jìn)程優(yōu)先占用處理機(jī),本實(shí)驗(yàn)采用優(yōu)先級(jí);(3) ,進(jìn)程調(diào)度時(shí),規(guī)定若就緒隊(duì)列進(jìn)程數(shù)少于6個(gè),則自動(dòng)從后備隊(duì)列調(diào)入一個(gè)作業(yè);(4),系統(tǒng)會(huì)將占有較多資源、預(yù)期結(jié)果不符合要求的進(jìn)程自動(dòng)掛起,并回收所 占資源,而本實(shí)驗(yàn)設(shè)置為手動(dòng)掛起;(5),在適宜條件下,系統(tǒng)會(huì)將掛起的進(jìn)程自動(dòng)解掛,而且只解掛到就緒隊(duì)列;本實(shí)驗(yàn)為簡(jiǎn)化操作,設(shè)置為手動(dòng)解掛,若解掛條件合適(即CPU各種資源可用),則解掛到就緒隊(duì)列,并
7、分配內(nèi)存;若解掛條件不適宜,則解掛至后備隊(duì)列,但不分配內(nèi)存(實(shí)際上這是不對(duì)的,因?yàn)樽鳂I(yè)進(jìn)入內(nèi)存,由CPU標(biāo)記PCB后,不能撤銷PCB再返回內(nèi)存,除非該進(jìn)程執(zhí)行結(jié)束,但本程序?yàn)轶w現(xiàn)解掛的意思,還是錯(cuò)誤地設(shè)計(jì)為可以解掛到后備隊(duì)列,讀者需注意,這個(gè)功能可以在代碼中注銷,另外也希望有高手可 以改進(jìn));(b),實(shí)驗(yàn)程序設(shè)計(jì):(1),本實(shí)驗(yàn)采用java語言編程,并實(shí)現(xiàn)GUI界面顯示;(2) ,為體現(xiàn)java語言面對(duì)對(duì)象程序設(shè)計(jì)的特點(diǎn),實(shí)驗(yàn)設(shè)計(jì)為ProcessPCBMemoryitem 類圭寸裝 PCB和所分配的內(nèi)存各自的屬性與方法;用ProcessRecord、MemoryRecords類圭寸裝數(shù)組方法;
8、用 SingleCPUScheduling實(shí)現(xiàn)GUI界面顯示;(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的過程;Memoryitem類中,定義可分分區(qū)表每一可分記錄的主存起始位置、內(nèi)存大小及其get和set方法,定義toString方法得到可在界面顯示的字 符串;(4), ProcessRecord封裝PCB數(shù)組的添加元素 additem和刪除元素
9、removeitem方法,并構(gòu)造函數(shù)getitem通過參數(shù) ProcessPCB和String查找數(shù)組元素,定義getNumberOfitems取數(shù)組大小,定義getitemsPriorities方法取所有數(shù)組元素的 toString 方法用于界面顯示,定義iterator方法取得數(shù)組的迭代器;(5), MemoryRecords用同樣的設(shè)計(jì)思想圭寸裝以 Memoryitem 為數(shù)組元素的各屬 性和方法;(6)SingleCPUScheduling類繼承JFrame類,實(shí)現(xiàn)界面化顯示;與上面相對(duì)應(yīng), 實(shí)例化ProcessRecord( 3次)和 MemoryRecords (1次)作為私有變量
10、,分別作為后備隊(duì)列、就緒隊(duì)列、掛起隊(duì)列和內(nèi)存可分分區(qū)表;在界面設(shè)計(jì)中,設(shè)計(jì)后備隊(duì)列、掛起 隊(duì)列(附帶解掛umount按鈕)、就緒隊(duì)列(附帶掛起suspenc按鈕)可分分區(qū)表列表顯 示框,設(shè)置 PCB添加框,附帶添加至后備隊(duì)列(addToBackup)、添加至就緒隊(duì)列(addToReady)按鈕,以及CPU當(dāng)前執(zhí)行狀態(tài)顯示框、系統(tǒng)日志顯示框,和開始調(diào)度(systemStart按鈕,優(yōu)先級(jí)和時(shí)間片單選按鈕,以及時(shí)間片顯示標(biāo)簽和文本編輯框;(7)界面設(shè)計(jì)詳解;后備隊(duì)列顯示框用于顯示已添加至后備隊(duì)列的ProcessRecords屬性信息,其中主存起始位置默認(rèn)為-1,表示未分配;掛起隊(duì)列顯示框用于顯示從
11、就緒 隊(duì)列掛起的PCB,其中屬性“主存起始位置” (MemoryBase)將由非負(fù)數(shù)變?yōu)?1,表示 掛起后收回內(nèi)存;就緒隊(duì)列顯示框中顯示就緒隊(duì)列屬性,其中“主存起始位置”均為非 負(fù),表示一分配內(nèi)存;PCB信息添加框分列PCB6個(gè)屬性顯示標(biāo)簽和可編輯文本框,和 添加按鈕,用于添加PCB;系統(tǒng)日志顯示框附屬時(shí)間片顯示標(biāo)簽和可編輯文本編輯框,對(duì)于實(shí)驗(yàn)一,界面如下:以上由可由用戶 決定時(shí)間 片大小;SingleCPUScheduling001.java(另需 ProcessPCB.java和 PCBRdecords.java)(8)附屬功能添加完善;最重要的是為程序添加線程,是程序能以停頓一段時(shí)間的頻
12、率自 動(dòng)運(yùn)行;后備隊(duì)列、掛起隊(duì)列添加total顯示標(biāo)簽和不可編輯文本顯示框, 用于顯示各自 數(shù)組中元素?cái)?shù)目,掛起隊(duì)列附屬刪除(remove)按鈕,可刪除掛起隊(duì)列中的元素;后備、 掛起、就緒隊(duì)列均添加監(jiān)聽器,用于響應(yīng)用戶單擊操作,可以在PCB信息添加框顯示用 戶單擊的那一條PCB的信息;PCB信息添加框附屬reset按鈕,用于一鍵清空信息框中 信息,方便輸入;系統(tǒng)日志面板附屬系統(tǒng)暫停(systemPaus)和系統(tǒng)重置(systemReset 按鈕,分別用于暫停運(yùn)行(方便用戶觀察當(dāng)前運(yùn)行結(jié)果)和重置系統(tǒng)(方便用戶重復(fù)使 用程序,免去關(guān)閉后重啟本程序的麻煩);最終界面如圖:實(shí)驗(yàn)結(jié)果報(bào)告級(jí)分析1, 程
13、序完成了實(shí)驗(yàn)所有的基本要求;2, 本程序還存在一些技術(shù)上的問題,使得程序不能盡善盡美;如,PCB信息添加框沒有“隨機(jī)置入就緒隊(duì)列”功能,添加 PCB信息仍顯得繁瑣;就緒隊(duì)列的掛起功 能在程序自動(dòng)運(yùn)行時(shí),存在反應(yīng)異常(反應(yīng)延遲或直接無反映);可分分區(qū)表只顯示了當(dāng)前可分的內(nèi)存,沒有顯示已分的 PCB及其對(duì)應(yīng)內(nèi)存使用情況,且沒有利用 圖形和豐富的顏色來更好的展示;時(shí)間片設(shè)計(jì)還需要改進(jìn),使用效率不高;系統(tǒng)重置功能存在響應(yīng)延遲的問題;另外,界面不夠美觀;還需要不斷改進(jìn);實(shí)驗(yàn)感想通過這次實(shí)驗(yàn),我對(duì)操作系統(tǒng)的進(jìn)程調(diào)度和內(nèi)存分配管理有了更加深入的了解,對(duì)操作系 統(tǒng)內(nèi)部的工作原理有了進(jìn)一步的認(rèn)識(shí);通過編程,也鞏
14、固了我的程序設(shè)計(jì)和代碼編寫的能力,實(shí)驗(yàn)過程中遇到的各種問題以及解 決問題的過程與方法,都是我獲益匪淺;同時(shí),程序的不完善,也將促使我在課程之后,繼續(xù)學(xué)習(xí)、理解課程內(nèi)容,并盡一切努力 不斷完善程序,做到盡善盡美;程序代碼完整版(初學(xué)java,菜鳥級(jí)別,當(dāng)然是 將所學(xué)的全部照辦照抄,實(shí)為臃腫,可為初學(xué)者引以為戒,注意代碼 質(zhì)量!)這里謹(jǐn)貼出十分臃腫的代碼,僅供初學(xué)者交流經(jīng)驗(yàn),重在開發(fā)的思想,了解開發(fā)的流程,而01版(精簡(jiǎn)版)代碼在后面;ProcessPCB.javapackage src;public class ProcessPCB /backupBAK 后備 ready就緒 suspe nd掛
15、起memory 內(nèi)存privateStringPID ;privateint RequiredTime;/private String Priority;privateint Priority;privateStringStatus ;privateint MwmoryBase = 0000;privateint MemoryLimit ;/private Stri ng PCBPoi nter;publicProcessPCB(Stri ng in itpID,intin itRTime,intin itpriority,String status,intin itBase,intin it
16、Limit) this.PID = initpID;this.RequiredTime= initRTime;this.Priority= initpriority;this.Status = status;this.MwmoryBase = initBase;this.MemoryLimit= initLimit;public Stri ng getPID() if (this .PID = null ) return ;elsereturn this .PID;public void setPID(Stri ng pid) if (pid =null)this .PID = ”;elset
17、his .PID = pid; public int getRequiredTime() return this . RequiredTime int time) public void setRequiredTime(this . RequiredTime = time;publicint getPriority() returnthis . Prioritypublic void setPriority(int priority) this . Priority = priority;public Stri ng getStatus() if (this . Status = null )
18、return;elsereturnthis . Status ;public void setStatues(Stri ng statues) if (statues = null ) this . Status =;elsethis . Status = statues;publicint getMemoryBase() return this . MwmoryBasepublic void setMemoryBase( int base) this . MwmoryBase = base;public int getMemoryLimit() return this . MemoryLim
19、itpublic void setMemoryLimit( int limit) this . MemoryLimit = limit;public boolea n equals(ProcessPCB pcb) publicStri ng toStri ng() return this .getPID()+ this . getRequiredTime()+ ” +this .getPriority()if (pcb.getPID()=this .getPID() returntrue ;else returnfalse5_ + this .getMemoryBase() +IIthis .
20、getStatus() + this .getMemoryLimit() +n;public void run() this . RequiredTime = this . RequiredTime -1;this . Priority = this . Priority -1; Memoryltem.javapackage src;public class MemoryItem private int memoryBase =0;privateprivatepublicMemoryItem(int in itMemoryBase,this.memoryBase=in itMemoryBase
21、;this.memoryLimit=in itMemoryLimit;int in itMemoryLimit) publicint getMemoryBase() returnthis . memoryBaseint memoryLimit =0;int availableStatus =0;public void setMemoryBase( int base) this . memoryBase = base;public int getMemoryLimit() return this . memoryLimit ;public void setMemoryLimit( int lim
22、it) this . memoryLimit = limit;public int getStatus() returnthis . availableStatus ;public void setStatus( int status) this . memoryBase = status;publicStri ng toStri ng() retur nthis .getMemoryBase() + this .getMemoryLimit() +nPCBRecords.java package src;import java.util.ArrayList;import java.util.
23、lterator;public class PCBRecords implements Iterable private ArrayListvProcessPCB PCBItems;public ArrayListvProcessPCB getPCBItems() return this.PCBItems; public PCBRecords() this.PCBItems = new ArrayListvProcessPCB(); public void addItem(ProcessPCB PcbItem) this.PCBItems.add(PcbItem);public void re
24、moveltem(ProcessPCB PCbltem) this.PCBItems.remove(PCbltem);public ProcessPCB getItem(ProcessPCB processPCB) for (ProcessPCB pCbltem : this.PCBItems) if (pCbItem.equals(processPCB) return pCbItem; return null;public ProcessPCB getItem(String pid) for (ProcessPCB pcBItem : this.PCBItems) if (pcBItem.g
25、etPID().equals(pid) return pcBItem; return null;public int getNumberOfItems() return this.PCBItems.size();public String getItemsProperties() String itemsProperties = new StringgetNumberOfItems();int i = 0; for(Iterator iterator1 = PCBItems.iterator(); iterator1.hasNext();) ProcessPCB stutem = (Proce
26、ssPCB)iterator1.next(); itemsPropertiesi+ = stutem.toString(); return itemsProperties;public Iterator iterator() return this.PCBItems.iterator();MemoryRecords.java package src;import java.util.ArrayList; import java.util.Iterator; public class MemoryRecords implements Iterable private ArrayList memo
27、ryItems;public Iterator iterator() / TODO Auto-generated method stub return this.memoryItems.iterator();public ArrayList getMemoryItems() return this.memoryItems;public MemoryRecords() this.memoryItems = new ArrayList();public void addItem(MemoryItem newMemoryItem) this.memoryItems.add(newMemoryItem
28、);public void removeltem(Memoryltem momoryltem) this.memoryltems.remove(momoryltem);public Memoryltem getMomoryltem(Memoryltem item) for(Memoryltem mltem : this.memoryltems) if(mltem.equals(item) return mltem; return null; public Memoryltem getMemoryItem(int base) for(MemoryItem mltem : this.memoryl
29、tems) if(mItem.getMemoryBase() = base) return mltem; return null;public int getNumberOfItems() return this.memoryltems.size();public String getItemsProperties() String itemsProperties = new StringgetNumberOfItems(); int i=0;for(lterator iterator1 = this.memoryltems.iterator(); iterator1.hasNext(); )
30、 Memoryltem mmltem = (Memoryltem) iterator1.next(); itemsPropertiesi+ = mmItem.toString();? System.out.println(itemsProperties + n); if(itemsProperties = null) itemsProperties0=;return itemsProperties;SingleCPUSchedulingGUI001 .Javaimport java.util.*;import java.awt.*;import java.awt.event.*;import
31、javax.swing.*;import javax.swing.event.*;import src.SingleCPUSchedulingGUI001.AddToBAKListener;import src.SingleCPUSchedulingGUI001.AddToReadyListener; import src.SingleCPUSchedulingGUI001.RemoveListener;import src.SingleCPUSchedulingGUI001.ResetListener; import src.SingleCPUSchedulingGUI001.ResetSy
32、stemListener; import src.SingleCPUSchedulingGUI001.StartSystemListener;import src.SingleCPUSchedulingGUI001.SuspendListener; import src.SingleCPUSchedulingGUI001.SystemPauseListener;import src.SingleCPUSchedulingGUI001.UmountListener; import src.SingleCPUSchedulingGUI001.priotiryListener; import src
33、.SingleCPUSchedulingGUI001.timeslicListener;import java.io.*;import java.text.*; public class SingleCPUSchedulingGUI001 extends JFrame private int systemStatues; /注意 static 屬性/*define O-system prepare status-system reset and re-prepare 1-system start 2-system pause 3-system stop*/* Standar error str
34、eam */static private PrintWriter stdErr = new PrintWriter(System.err, true);static private int WIDTH = 600, HEIGHT = 700;/ the size of the Frame 主面板/*各列表對(duì)應(yīng)的面板規(guī)格 */*對(duì)應(yīng)各名詞釋義backupBAK后備 ready就緒 suspend掛起 memory內(nèi)存 */static private int BackupBAK_CELL_SIZE = 250, BackupBAK_LIST_ROWS = 10; 后備隊(duì)列static priva
35、te int Suspend_CELL_SIZE = 250, Suspend_LIST_ROWS = 10;/ 掛起隊(duì)列static private int Ready_CELL_SIZE = 200, Ready_LIST_ROWS = 6;II 就緒隊(duì)列static private int CPU_ROWS = 10, CPU_COLS = 22;IICPU 面板static private int STATUS_ROWS = 8, STATUS_COLS = 30;II 系統(tǒng)狀態(tài)面板private int timeslice = 1;II 設(shè)置時(shí)間片大小private int syst
36、emStatus=0;II設(shè)置系統(tǒng)狀態(tài) 0系統(tǒng)預(yù)備狀態(tài),等待開始,1系統(tǒng)運(yùn)行狀態(tài),2系統(tǒng)暫停狀態(tài)static private int TOTAL_TEXTFIELD_SIZE = 10;II Size total text field 記錄各隊(duì)列元素個(gè)數(shù)private JList backupList, suspendList, readyList;II 各隊(duì)列相對(duì)應(yīng)的數(shù)組列表II進(jìn)程添加框中的”添加至后備隊(duì)列”,”添加至就緒隊(duì)列”,”重置Buttonprivate JButton addToBAKButton, addToReadyButton, resetButton;就緒隊(duì)列框中的”掛起
37、”,掛起隊(duì)列框中的”解掛”,”刪除Buttonprivate JButton suspendButton, umountButton, removeButton; IIStatus面板中的啟動(dòng)系統(tǒng)”,”重置系統(tǒng)Button private JButton startButton, pauseButton, resetSyatemButton;優(yōu)先級(jí)和時(shí)間片單選鈕及時(shí)間片顯示框private JRadioButton priorityJRB, timesliceJRB;private JLabel timesliceSizeLabel;private JTextField timesliceJt
38、f;后備面板、進(jìn)程添加面板、掛起面板、內(nèi)存面板private JPanel backupBAKPanel, PCBItemPanel, suspendedPanel;II后備隊(duì)列、掛起隊(duì)列元素總數(shù)標(biāo)簽private JLabel backupTotalLabel, suspendTotalLabel;II進(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)存大小limitprivate JLabel PIDLabel, requiredTimeLabel, priorityLabel, statuesLabe
39、l;后備隊(duì)列、掛起隊(duì)列元素總數(shù)文本框(不可編輯)private JTextField backupTotalTextField, suspendTotalTextField;II進(jìn)程信息文本框 PID(可編輯),requiredTime(可編輯),priority(可編輯),status(不可編輯),base(不可編 輯),limit(可編輯)private JTextField PIDTextField, requiredTimeTextField, priorityTextField, statusTextField;IICPU狀態(tài)顯示文本域(不可編輯),status信息文本域(用于現(xiàn)實(shí)程
40、序每一步的操作和影響,不可 編輯)private JTextArea CPUTextArea, statuesTextArea;II后備隊(duì)列PCB數(shù)組,就緒、掛起,內(nèi)存(可分分區(qū)表)PCBRecords backupPCB, readyPCB, suspendedPCB;public static void main(String args) throws IOException II TODO Auto-generated method stubnew SingleCPUSchedulingGUI001().initFrame();public void initFrame() backup
41、List = new JList(); backupList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); backupList.setVisibleRowCount(BackupBAK_LIST_ROWS);backupList.setFixedCellWidth (B ackupBAK_CELL_SIZE); suspendList = new JList(); suspendList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); suspendList.setV
42、isibleRowCount(Suspend_LIST_ROWS); suspendList.setFixedCellWidth(Suspend_CELL_SIZE); readyList = new JList(); readyList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); readyList.setVisibleRowCount(Ready_LIST_ROWS); readyList.setFixedCellWidth(Ready_CELL_SIZE);suspendButton = new JButton(Suspe
43、nd); addToBAKButton = new JButton(AddToBAK); addToReadyButton = new JButton(AddToReady); resetButton = new JButton(Reset);umountButton = new JButton(Umount); removeButton = new JButton(Remove); startButton = new JButton(StartSchuliding); pauseButton = new JButton(Pause); resetSyatemButton = new JBut
44、ton(ResetSystem); priorityJRB = new JRadioButton(Priority, true); timesliceJRB = new JRadioButton(Timeslice);backupTotalLabel = new JLabel(Total:); backupTotalTextField = new JTextField(0, TOTAL_TEXTFIELD_SIZE); backupTotalTextField.setEditable(false);suspendTotalLabel = new JLabel(Total:); suspendT
45、otalTextField = new JTextField(0, TOTAL_TEXTFIELD_SIZE); suspendTotalTextField.setEditable(false);timesliceSizeLabel = new JLabel(Timeslice); timesliceJtf = new JTextField(3, 5); timesliceJtf.setEditable(true);CPUTextArea = new JTextArea(CPU_ROWS, CPU_COLS); CPUTextArea.setEditable(false);statuesTex
46、tArea = new JTextArea(STATUS_ROWS, STATUS_COLS); statuesTextArea.setEditable(false);/* north panel*/ JPanel northPanel = new JPanel(new BorderLayout();JPanel northPanel = new JPanel(new GridLayout(1, 3);/JPanel north = new JPanel(new BorderLayout();/ ProcessPCB item information PanelPCBItemPanel = n
47、ew JPanel(new BorderLayout(); PCBItemPanel.setBorder(BorderFactory.createTitledBorder(PCBItem Information);JPanel PCBItemButtonJPanel = new JPanel(new GridLayout(3, 1); PCBItemButtonJPanel.add(addToBAKButton); PCBItemButtonJPanel.add(addToReadyButton); PCBItemButtonJPanel.add(resetButton);PCBItemPan
48、el.add(this.initPCBItemPanel(), BorderLayout.CENTER); PCBItemPanel.add(PCBItemButtonJPanel, BorderLayout.SOUTH);/backupBAKList Panel backupBAKPanel = new JPanel(new BorderLayout(); backupBAKPanel.setBorder(BorderFactory.createTitledBorder(BackupList);JPanel backupTotalPAnel = new JPanel(); backupTot
49、alPAnel.add(backupTotalLabel); backupTotalPAnel.add(backupTotalTextField);backupBAKPanel.add (new JScrollPane(backupList, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED), BorderLayout.CENTER);backupBAKPanel.add(backupTotalPAnel, BorderLayout.SOUTH);/north.add(ba
50、ckupBAKPanel, BorderLayout.WEST);/north.add(PCBItemPanel, BorderLayout.CENTER);/ SuspendList Panel suspendedPanel = new JPanel(new BorderLayout(); suspendedPanel.setBorder(BorderFactory.createTitledBorder(SuspendList); JPanel suspendedTotalPAnel = new JPanel(); suspendedTotalPAnel.add(suspendTotalLa
51、bel); suspendedTotalPAnel.add(suspendTotalTextField);JPanel suspendComponentPanel = new JPanel(new GridLayout(1, 2); suspendComponentPanel.add(umountButton); suspendComponentPanel.add(removeButton);suspendedPanel.add (suspendedTotalPAnel, BorderLayout.NORTH); suspendedPanel.add (new JScrollPane(susp
52、endList, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED), BorderLayout.CENTER);suspendedPanel.add(suspendComponentPanel, BorderLayout.SOUTH);/northPanel.add(north, BorderLayout.CENTER);/northPanel.add(suspendedPanel, BorderLayout.EAST);northPanel.add(backupBAKPa
53、nel);northPanel.add(PCBItemPanel); northPanel.add(suspendedPanel);/* center Panel*/JPanel centrelPanel = new JPanel(new BorderLayout();/JPanel centrelPanel = new JPanel(new GridLayout(1, 3);/ readyList panelJPanel readyListPanel = new JPanel(new BorderLayout(); readyListPanel.setBorder(BorderFactory.createTitledBorder(ReadyList); readyListPanel.add (new JScrollPane(readyList, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONT
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年攝影器材配件銷售合同
- 2024年新品研發(fā)模具制造合同
- DB4117T 276-2020 甜瓜嫁接育苗技術(shù)規(guī)程
- DB4116T 044-2023 高淀粉玉米生產(chǎn)技術(shù)規(guī)程
- 2024年房地產(chǎn)買賣合同標(biāo)的及價(jià)格
- 2024年度數(shù)據(jù)中心安全防護(hù)工程合同
- 2024年攜手共贏:工業(yè)園商鋪經(jīng)營(yíng)承包合同
- 2024年快速物流銷售合同
- 2024年技術(shù)服務(wù)合同協(xié)議模板
- 2024年影視作品版權(quán)轉(zhuǎn)讓與授權(quán)許可合同
- 醫(yī)科大學(xué)2024年12月精神科護(hù)理學(xué)作業(yè)考核試題答卷
- 論青少年合理懷疑精神的培育
- 2024-2025學(xué)年浙教版八年級(jí)上冊(cè)科學(xué)期中模擬卷
- (正式版)HGT 6313-2024 化工園區(qū)智慧化評(píng)價(jià)導(dǎo)則
- 智能制造工程生涯發(fā)展報(bào)告
- 二級(jí)公立醫(yī)院績(jī)效考核三級(jí)手術(shù)目錄(2020版)
- 品牌授權(quán)工廠生產(chǎn)授權(quán)書合同
- 6人小品《沒有學(xué)習(xí)的人不傷心》臺(tái)詞完整版
- 銷售配合與帶動(dòng)-培訓(xùn)PPT課件
- MATLAB語言課程論文 基于MATLAB的電磁場(chǎng)數(shù)值圖像分析
- 暗挖隧道帷幕注漿專項(xiàng)方案[優(yōu)秀工程方案]
評(píng)論
0/150
提交評(píng)論