實(shí)驗(yàn)七設(shè)備的分配與回收_第1頁
實(shí)驗(yàn)七設(shè)備的分配與回收_第2頁
實(shí)驗(yàn)七設(shè)備的分配與回收_第3頁
實(shí)驗(yàn)七設(shè)備的分配與回收_第4頁
實(shí)驗(yàn)七設(shè)備的分配與回收_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、實(shí)驗(yàn)七 設(shè)備管理之設(shè)備的分配與回收一實(shí)驗(yàn)?zāi)康恼莆赵O(shè)備管理中的設(shè)備的添加和刪除、設(shè)備的分配和回收、同時(shí)實(shí)現(xiàn)設(shè)備獨(dú)立性。二實(shí)驗(yàn)條件硬件:一臺(tái)微機(jī)軟件:操作系統(tǒng)和C語言系統(tǒng)或VC+編譯系統(tǒng)。三實(shí)驗(yàn)要求假定模擬系統(tǒng)中有鍵盤、鼠標(biāo)、打印機(jī)和顯示器四個(gè)設(shè)備,三個(gè)控制器和兩個(gè)通道,采用安全分配方式。(1)設(shè)備管理子系統(tǒng)涉及到系統(tǒng)設(shè)備表(SDT)、通道控制表(CHCT)、控制器控制表(COCT)和設(shè)備控制表(DCT)來體現(xiàn)輸入輸出系統(tǒng)的四級(jí)結(jié)構(gòu)和三級(jí)控制。我們模擬這樣的數(shù)據(jù)結(jié)構(gòu)來完成對(duì)外圍設(shè)備的管理。l 添加設(shè)備:增加對(duì)應(yīng)的設(shè)備控制表和系統(tǒng)設(shè)備表中的表項(xiàng),如果需要新建對(duì)應(yīng)的控制器控制表。l 刪除設(shè)備:刪除對(duì)應(yīng)

2、的設(shè)備控制表和系統(tǒng)設(shè)備表中的表項(xiàng),如果需要?jiǎng)h除對(duì)應(yīng)的控制器控制表。(2)設(shè)備的分配和回收,進(jìn)程申請(qǐng)?jiān)O(shè)備的時(shí)候,建立起通路,即獲成功;否則/阻塞/到通道、控制器或設(shè)備上面。進(jìn)程回收設(shè)備的時(shí)候,把阻塞進(jìn)程喚醒。(3)設(shè)備分配必須滿足設(shè)備的獨(dú)立性要求。為了實(shí)現(xiàn)設(shè)備獨(dú)立性,要求在驅(qū)動(dòng)程序之上設(shè)計(jì)一層設(shè)備無關(guān)軟件,主要功能可分為:l 執(zhí)行所有設(shè)備的公有操作,主要包括:(a)獨(dú)占設(shè)備的分配與回收;(b)將邏輯設(shè)備名映射為物理設(shè)備(LUT),進(jìn)一步可以找到相應(yīng)物理設(shè)備的驅(qū)動(dòng)程序。l 向用戶層(或文件層)軟件提供統(tǒng)一的接口。例如,對(duì)各種設(shè)備的讀操作,在應(yīng)用程序中都用read;4 實(shí)驗(yàn)設(shè)計(jì) 而對(duì)各種設(shè)備的寫操作

3、,則都使用write。#include #include #include struct sdt/系統(tǒng)設(shè)備表 char name;/設(shè)備名稱 char type;/設(shè)備類型 struct sdt *next;struct block/阻塞設(shè)備 char pname;/申請(qǐng)?jiān)O(shè)備進(jìn)程名 char ename;/設(shè)備名 struct block *next;struct chct/通道 char name;/通道名稱 int state;/通道狀態(tài) struct block *next;/通道被占用造成的阻塞隊(duì)列;struct coct/控制器表 char name;/控制器名稱 int state

4、;/控制器狀態(tài) struct chct *chct;/設(shè)備通道 struct block *next;/控制器被占用造成的阻塞隊(duì)列;struct dct/設(shè)備控制表 int state; /設(shè)備狀態(tài) struct sdt *sdt;/系統(tǒng)設(shè)備 struct coct *coct;/設(shè)備控制器 struct block *next;/設(shè)備被占用造成的阻塞隊(duì)列;sdt *s20;/設(shè)備dct *d20;/設(shè)備控制coct *co20;/控制器chct *ch1,*ch2;/通道1,通道2 block *b;int e=4;/設(shè)備數(shù),初始為4int c=3;/控制器數(shù),初始為3void init()

5、/初始化 for(int i=0;istate=0; d-sdt=s; d-next=new(block); d-next-next=NULL; s0-name=k; s1-name=m; s2-name=t; s3-name=p; s0-type=i; s1-type=i; s2-type=o; s3-type=o; for(i=1;istate=0; co-next=new(block); co-next-next=NULL; co1-name=1; co2-name=2; co3-name=3; ch1=new (chct); ch2=new (chct); ch1-name=1; ch

6、1-state=0; ch1-next=new(block); ch1-next-next=NULL; ch2-name=2; ch2-state=0; ch2-next=new(block); ch2-next-next=NULL; co1-chct=ch1; co2-chct=ch2; co3-chct=ch2; d0-coct=co1; d1-coct=co1; d2-coct=co2; d3-coct=co3; void add() char a; char b; cout設(shè)備名稱:a; cout設(shè)備類型:b; for(int i=0;isdt-name=a) cout設(shè)備已存在!na

7、me=a; se-type=b; de-sdt=se; de-state=0; de-next=new(block); de-next-next=NULL; e+; cout是否新建控制器?(y/n)a; if(a=y) char g; int flag=0; cout請(qǐng)輸入新增控制器名稱:g; if(flag=0) for(int k=1;kname=g) flag=1; cout該控制器已存在,請(qǐng)重新輸入!g; coc+1=new(coct); coc+1-name=g; coc+1-state=0; coc+1-next=new(block); coc+1-next-next=NULL; de-1-coct=coc+1; c+; cout請(qǐng)選擇通道(1/2)f; if(f=1) coc-chct=ch1; if(f=2) coc-chct=ch2; cout設(shè)備添加成功!endl; else if(a=n) cout當(dāng)前已存在的控制器有:endl; for(int i=1;i=c;i+) coutnameendl; cout輸入選擇的控制器名稱:cz; for(int j=1;jname) cou

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論