![設(shè)備管理實現(xiàn)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-7/1/04bdd382-f058-4858-9035-bea026ff651b/04bdd382-f058-4858-9035-bea026ff651b1.gif)
![設(shè)備管理實現(xiàn)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-7/1/04bdd382-f058-4858-9035-bea026ff651b/04bdd382-f058-4858-9035-bea026ff651b2.gif)
![設(shè)備管理實現(xiàn)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-7/1/04bdd382-f058-4858-9035-bea026ff651b/04bdd382-f058-4858-9035-bea026ff651b3.gif)
![設(shè)備管理實現(xiàn)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-7/1/04bdd382-f058-4858-9035-bea026ff651b/04bdd382-f058-4858-9035-bea026ff651b4.gif)
![設(shè)備管理實現(xiàn)_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-7/1/04bdd382-f058-4858-9035-bea026ff651b/04bdd382-f058-4858-9035-bea026ff651b5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第3部分、設(shè)備管理實現(xiàn):基本要求:在前面的實驗基礎(chǔ)上實現(xiàn)設(shè)備管理功能的模擬,主要包括通道和控制器的添加和刪除,設(shè)備的添加、刪除,設(shè)備的分配和回收。參考學(xué)時:12學(xué)時實驗提示:通道1通道2控制器1控制器2控制器3鍵盤打印機(jī)顯示器鼠標(biāo)CPU1、 假定模擬系統(tǒng)中已有鍵盤、鼠標(biāo)、打印機(jī)和顯示器四個設(shè)備,另有三個控制器和兩個通道,它們之間的控制關(guān)系如圖所示:2、 設(shè)備管理子系統(tǒng)涉及到系統(tǒng)設(shè)備表(SDT)、通道控制表(CHCT)、控制器控制表(COCT)和設(shè)備控制表(DCT)來體現(xiàn)輸入輸出系統(tǒng)的四級結(jié)構(gòu)和三級控制。應(yīng)實現(xiàn)上述數(shù)據(jù)結(jié)構(gòu)來完成對外圍設(shè)備的管理。3、 實現(xiàn)上述設(shè)備、控制器以及通道的層次關(guān)系,同時
2、能夠添加或刪除新的設(shè)備、控制器或通道。4、 通過鍵盤命令模擬進(jìn)程執(zhí)行過程中提出的設(shè)備分配或釋放請求,并為此請求分配或釋放設(shè)備。分配設(shè)備成功后可將進(jìn)程狀態(tài)調(diào)整為阻塞,釋放設(shè)備后變?yōu)榫途w狀態(tài)。5、 分配設(shè)備時應(yīng)如果該設(shè)備已被其它進(jìn)程占用,則設(shè)備分配失敗,請求進(jìn)程進(jìn)入阻塞狀態(tài),同時等待該設(shè)備的釋放。如果設(shè)備空閑,進(jìn)程占用設(shè)備的同時還應(yīng)提出申請控制器請求,直到與設(shè)備相關(guān)的通道都已申請成功為止。6、 設(shè)備、控制器或通道的釋放應(yīng)引起對應(yīng)節(jié)點的等待隊列中的第一個阻塞進(jìn)程被喚醒。如果被喚醒的進(jìn)程還未完成申請操作,應(yīng)繼續(xù)執(zhí)行上級節(jié)點的申請操作。import java.util.Vector;import jav
3、a.io.*;class ProcessPage PageTable;Vector<Page> PageQueue;private int size;private int Pagecount;private String name;double visit;double replacement;public void setPage(Page PageTable) this.PageTable=new PagePageTable.length;for(int i=0;i<PageTable.length;i+) this.PageTablei=PageTablei;publ
4、ic int getPageBlock(int PageNum) return PageTablePageNum.getBlockNum();public void setSize(int size) this.size=size; public int getSize() return size;public void setPagecount(int Pagecount) this.Pagecount=Pagecount; public int getPagecount() return Pagecount;visit=0;replacement=0;public Process() pu
5、blic Process(String name)=name;public Process(String name,int size) this(name);this.size=size;public String toString()return name;class Page int flag;int blockNum;int writed;/xiu gai weiint accessfield;/fang wen zi duanint swapsapce_blockno;/wai cun dizhiint t;blockNum=0;writed=0;accessfiel
6、d=0;t=0;public Page() flag=1;swapsapce_blockno=-1;public Page(int flag,int swapsapce_blockno) this.flag=flag;this.swapsapce_blockno=swapsapce_blockno;public int getBlockNum() return blockNum;public int getFlag() return flag;class IONode String name; IONode next; Process process; Vector<Process>
7、; waitinglist; IONode parent; public IONode() public IONode(String name) =name; public void setNext(IONode next) this.next=next; public IONode getNext() return next; public void setParent(IONode parent) this.parent=parent; public String toString() return name; class CHCT extends IONode Stri
8、ng name; CHCT next; Process process; Vector<Process> waitinglist; /CHCT parent; public CHCT() public CHCT(String name) =name; public void setNext(CHCT next) this.next=next; public CHCT getNext() return next; public void setParent(CHCT parent) this.parent=parent; public String toString
9、() return name; class COCT extends IONode String name; COCT next; Process process; Vector<Process> waitinglist; CHCT parent; public COCT() public COCT(String name) =name; public void setNext(COCT next) this.next=next; public COCT getNext() return next; public void setParent(CHCT paren
10、t) this.parent=parent; public String toString() return name; class DCT extends IONode String name; DCT next; Process process; Vector<Process> waitinglist; COCT parent; public DCT() public DCT(String name) =name; public void setNext(DCT next) this.next=next; public DCT getNext() return
11、 next; public void setParent(COCT parent) this.parent=parent; public String toString() return name; class OS3 public static Vector<Process> ready,blocked; public static Process running; public static BufferedReader br; static int a=new int88; static intd=new int1010;/置換空間 static int count=0; s
12、tatic CHCT chct=new CHCT(); static COCT coct=new COCT(); static DCT dct=new DCT(); public OS3() ready=new Vector<Process>(); blocked=new Vector<Process>();br=new BufferedReader(new InputStreamReader(System.in);for(int i=0;i<a.length;i+) for(int j=0;j<ai.length;j+) if(Math.random()&
13、lt;0.5) aij=0; else aij=1; for(int i=0;i<d.length;i+) for(int j=0;j<di.length;j+) if(Math.random()<0.5) dij=0; else dij=1; InitProcess();/初始化進(jìn)程InitRelation();/初始化關(guān)系/System.out.println("位示圖-"); /print(a); /System.out.println("置換空間-"); /print(d); public static void go() wh
14、ile(true) System.out.println("="); System.out.println("1:進(jìn)程創(chuàng)建 "); System.out.println("2:進(jìn)程到時 "); System.out.println("3:進(jìn)程阻塞 "); System.out.println("4:進(jìn)程喚醒 "); System.out.println("5:進(jìn)程結(jié)束 "); System.out.println("6:邏輯地址轉(zhuǎn)換為物理地址 "); Sy
15、stem.out.println("7:查看頁表"); System.out.println("8:顯示位示圖和置換空間"); System.out.println("9:查看置換次數(shù)和缺頁率"); System.out.println("10:添加通道"); System.out.println("11:添加控制器"); System.out.println("12:添加設(shè)備"); System.out.println("13:刪除通道"); Syste
16、m.out.println("14:刪除控制器"); System.out.println("15:刪除設(shè)備"); System.out.println("16:分配設(shè)備"); System.out.println("17:釋放設(shè)備"); System.out.println("18:顯示設(shè)備分配狀態(tài)"); System.out.println("0:退出->"); try int i=Integer.parseInt(br.readLine(); switch(i)
17、case 0: System.exit(0); case 1: createNewProcess(); break; case 2: switchCurrentProcess(); break; case 3: blockCurrentProcess(); break; case 4: wakeupBlockedProcess(); break; case 5: terminateCurrentProcess(); break; case 6: transform(); break; case 7: showPage(); break; case 8: System.out.println(&
18、quot;位示圖-"); print(a); System.out.println("置換空間-"); print(d); break; case 9: look(); break; case 10: addChannel(); break; case 11: addController(); break; case 12: addDeviced(); break; case 13: deleteChannel ();/刪除通道 break; case 14: deleteController(); break; case 15: deleteDeviced();
19、 break; case 16: allocateDeviced(); break; case 17: try System.out.println("設(shè)備名稱:"); String name=br.readLine(); recoverDeviced(name); catch(Exception e) System.out.println(e); break; case 18: showDevicedAllocate(); break; catch(Exception e) System.out.println(e); System.out.println("執(zhí)
20、行進(jìn)程:");if(running!=null) System.out.println(" "+running+"("+running.getSize()+")");else System.out.println("none"); /System.out.println("執(zhí)行進(jìn)程:"+(running=null?"none":running+"("+running.getSize()+")");System.out.prin
21、tln("就緒進(jìn)程:"); printList(ready);System.out.println("阻塞進(jìn)程:"); printList(blocked); public static void printList(Vector<Process> v) for(int i=0;i<v.size();i+) /System.out.print(v.elementAt(i)+"t"); System.out.println(" "+v.elementAt(i)+"("+(v.el
22、ementAt(i).getSize()+")"+"t"); public static CHCT findChannel(String name1) CHCT c=chct; while(c.getNext()!=null) if(c.getNext().name).equals(name1) return c.getNext(); c=c.getNext(); return null; public static COCT findController(String name1) COCT c=coct; while(c.getNext()!=nul
23、l) if(c.getNext().name).equals(name1) return c.getNext(); c=c.getNext(); return null; public static DCT findDeviced(String name1) DCT d=dct; while(d.getNext()!=null) if(d.getNext().name).equals(name1) return d.getNext(); d=d.getNext(); return null; public static void add(String name1,String name2,in
24、t type) if(type=1) CHCT tmp=new CHCT(name1); CHCT c=chct; while(c.getNext()!=null) /System.out.println("c="+c.getNext(); c=c.getNext(); /System.out.println("c=CHCT"+c); c.setNext(tmp); cess=null; tmp.waitinglist=new Vector<Process>(); tmp.parent=null; if(type=2) COCT
25、 tmp=new COCT(name1); COCT p=coct; CHCT q=findChannel(name2); while(p.getNext()!=null) /System.out.println("p="+p.getNext(); p=p.getNext(); /System.out.println("p=COCT-"+p); p.setNext(tmp); cess=null; tmp.waitinglist=new Vector<Process>(); if(q!=null) tmp.parent=q; e
26、lse System.out.println("no found"); if(type=3) DCT tmp=new DCT(name1); DCT d=dct; COCT c=findController(name2); /System.out.println("is 4 ma"); if(c=null) System.out.println("error"); return; while(d.getNext()!=null) /System.out.println(d); /System.out.println("d=&
27、quot;+d.getNext(); d=d.getNext(); /System.out.println("d=dct="+d); d.setNext(tmp); cess=null; tmp.waitinglist=new Vector<Process>(); if(c!=null) tmp.parent=c; else System.out.println("no found"); public static void addChannel() try System.out.println("輸入通道名:&quo
28、t;); String name1=br.readLine(); add(name1,"",1);catch(Exception e) System.out.println(e); public static void addController() try System.out.println("輸入控制器名:"); String name1=br.readLine(); System.out.println("輸入通道名:"); String name2=br.readLine(); add(name1,name2,2); cat
29、ch(Exception e) System.out.println(e); public static void addDeviced() try System.out.println("輸入設(shè)備名:"); String name1=br.readLine(); System.out.println("輸入控制器名:"); String name2=br.readLine(); add(name1,name2,3); catch(Exception e) System.out.println(e); public static void deleteC
30、hannel () try System.out.println("輸入通道名:"); String name=br.readLine(); CHCT c=findChannel(name); CHCT c1=chct; while(c1.getNext()!=null) if(c1.getNext().name.equals() CHCT c2=(c1.getNext().getNext(); c1.setNext(c2); c=null; return; else c1=c1.getNext(); catch(Exception e) System.out.
31、println(e); public static void deleteController() try System.out.println("輸入控制器名:"); String name=br.readLine(); COCT c=findController(name); COCT c1=coct; while(c1.getNext()!=null) if(c1.getNext().name.equals() COCT c2=(c1.getNext().getNext(); c1.setNext(c2); c=null; return; else c1=
32、c1.getNext(); catch(Exception e) System.out.println(e); public static void deleteDeviced() try System.out.println("輸入設(shè)備名:"); String name=br.readLine(); DCT t=findDeviced(name); DCT t1=dct; while(t1.getNext()!=null) if(t1.getNext().name.equals() if(t1.getNext()=null) DCT t2=(t1.getNex
33、t().getNext(); t1.setNext(t2); t=null; return; else System.out.println("The process is running"); return; else t1=t1.getNext(); catch(Exception e) System.out.println(e); public static void allocateDeviced() try if(running!=null) System.out.println("輸入設(shè)備名:"); String name=br.readLi
34、ne(); DCT d=findDeviced(name); if(cess=null) cess=running; COCT c=d.parent; if(cess=null) cess=running; CHCT t=c.parent; if(t.parent=null) cess=running; else t.waitinglist.add(running); else c.waitinglist.add(running); blockCurrentProcess(); else d.waitinglist.add(running);
35、/COCT c1=d.parent; /if(c1) blockCurrentProcess(); catch(Exception e) System.out.println(e); public static void recoverDeviced(String name) try /System.out.println("設(shè)備名稱:"); /String name=br.readLine(); DCT d=findDeviced(name); if(d=null) System.out.println("not found"); return; Pr
36、ocess p=cess; if(d.waitinglist.size()>0) /System.out.println("="); /*for(int i=0;i<d.waitinglist.size();i+) System.out.println(i+""+d.waitinglist.elementAt(i); System.out.println("-");*/ cess=(Process)(d.waitinglist.elementAt(0); d.waitinglist.removeElem
37、entAt(0); /*if(cess=null) cess=cess; if(cess=null) cess=cess; */ else cess=null; if(cess=p) if(d.parent.waitinglist.size()>0) cess=(Process)(d.parent.waitinglist.elementAt(0); d.parent.waitinglist
38、.removeElementAt(0); if(cess!=null) d.parent.waitinglist.add(cess); /*if(cess=p) if(d.parent.parent.waitinglist.size()>0) cess=cess; else System.out.println(d.parent.parent.waitinglist); d.parent.parent.waitinglist.add(cess);
39、 */ else cess=cess; else if(cess=p) if(d.parent.parent).waitinglist.size()>0) cess=(Process)(d.parent.waitinglist.elementAt(0);d.parent.parent.waitinglist.removeElementAt(0);d.parent.parent.waitinglist.add(cess);else d.parent.pare
40、cess=cess; Process p1=cess; /Process p2=cess; /Process p3=cess; COCT t=coct; DCT d1=dct; st:while(t.getNext()!=null) /System.out.println("hello"); if(t.getNext().process=p1) while(d1.getNext()!=null) /System.out.println("he=llo&quo
41、t;); /System.out.println("d1-"+d1.getNext().process); /System.out.println("p1="+p1); if(d1.getNext().process=p1) /System.out.println("="); wakeupBlockedProcess(); break st; else d1=d1.getNext(); else t=t.getNext(); catch(Exception e) System.out.println(e); public static
42、 void InitRelation() add("chn1","",1); add("chn2","",1); add("chn3","",1); add("con1","chn1",2); add("con2","chn2",2); add("con3","chn3",2); add("con6","chn2",2
43、); add("dev1","con1",3); /System.out.println("here 3-="); add("dev2","con1",3); /System.out.println("here 4-="); add("dev3","con2",3); /System.out.println("here 5-="); add("dev4","con6",3);
44、add("dev5","con3",3); add("dev6","con3",3); add("dev7","con3",3); add("dev8","con1",3); add("dev9","con1",3); add("dev10","con2",3); add("dev11","con1",3); add(
45、"dev12","con1",3); add("dev13","con2",3); public static void showParent() CHCT t=chct; while(t.getNext()!=null) System.out.println("t="+t.getNext()+"show Parent="+t.getNext().parent); t=t.getNext(); COCT c=coct; while(c.getNext()!=null) /Sy
46、stem.out.println("c="+c.getNext(); System.out.println("c="+c.getNext()+"show Parent="+c.getNext().parent); c=c.getNext(); /System.out.println("show Parent="+c.getNext().parent); DCT d=dct; while(d.getNext()!=null) System.out.println("d="+d.getNext()+"show Parent="+d.getNext().parent); d=d.getNext(); public static void showDevicedAllocate() /showParent(); CHCT c=chct; COCT o=coct; DCT d=dct; while(c.getNext()!=null) if(c.getNext().process!=null) System.o
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2學(xué)會溝通交流(說課稿)-2023-2024學(xué)年道德與法治五年級上冊統(tǒng)編版
- 2025暫估價材料公開招標(biāo)合同范本變頻水泵排污泵
- 6~9的認(rèn)識(說課稿)-2024-2025學(xué)年一年級上冊數(shù)學(xué)人教版
- 2025以買賣合同擔(dān)保
- 2024年秋九年級化學(xué)上冊 第四單元 自然界的水說課稿 (新版)新人教版
- 2023三年級英語上冊 Assessment 3說課稿1 湘少版
- 路基邊坡防滑平臺施工方案
- Unit 4 My tidy bag Lesson 1 I have a big bag (說課稿)-2024-2025學(xué)年粵人版(2024)英語三年級上冊
- 2023八年級地理上冊 第一章 中國的疆域與人口第一節(jié) 中國的疆域說課稿 (新版)湘教版
- 出租代工合同范例
- 高考英語語法填空專項訓(xùn)練(含解析)
- 42式太極劍劍譜及動作說明(吳阿敏)
- 英語完形填空練習(xí)題
- 部編版語文小學(xué)五年級下冊第一單元集體備課(教材解讀)
- GB/T 10095.1-2022圓柱齒輪ISO齒面公差分級制第1部分:齒面偏差的定義和允許值
- 仁愛英語九年級下冊單詞表(中英文)
- 危險化學(xué)品企業(yè)安全生產(chǎn)標(biāo)準(zhǔn)化課件
- 巨鹿二中骨干教師個人工作業(yè)績材料
- 《美的歷程》導(dǎo)讀課件
- 心電圖 (史上最完美)課件
- 建設(shè)工程施工合同糾紛處理課件
評論
0/150
提交評論