操作系統(tǒng)課程設(shè)計(jì)(設(shè)備管理)_第1頁
操作系統(tǒng)課程設(shè)計(jì)(設(shè)備管理)_第2頁
操作系統(tǒng)課程設(shè)計(jì)(設(shè)備管理)_第3頁
操作系統(tǒng)課程設(shè)計(jì)(設(shè)備管理)_第4頁
操作系統(tǒng)課程設(shè)計(jì)(設(shè)備管理)_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

操作系統(tǒng)課程設(shè)計(jì)(設(shè)備管理)目錄一引言 11.1課程設(shè)計(jì)題目 11.2課程設(shè)計(jì)的目的 11.3小組人數(shù) 11.4編程語言 11.5課程設(shè)計(jì)內(nèi)容 11.6界面設(shè)計(jì)如圖 1二課程設(shè)計(jì)任務(wù)及要求 22.1設(shè)計(jì)任務(wù) 22.2設(shè)計(jì)要求 2三算法及數(shù)據(jù)結(jié)構(gòu) 23.1算法的總體思想(流程) 23.2Equipment模塊 33.2.1功能 33.2.2數(shù)據(jù)結(jié)構(gòu) 33.3cpu模塊 43.3.1功能 43.3.2數(shù)據(jù)結(jié)構(gòu) 43.3.3算法 43.4form1模塊 43.4.1功能 43.4.2算法 5四程序設(shè)計(jì)與實(shí)現(xiàn) 54.1程序流程圖 54.2基本思想 64.3定義的公共變量或數(shù)據(jù)結(jié)構(gòu) 74.4實(shí)驗(yàn)部分代碼 74.5運(yùn)行截圖 124.6使用說明 15五總結(jié) 15六參考文獻(xiàn) 15一引言1.1課程設(shè)計(jì)題目實(shí)現(xiàn)一個(gè)模擬操作系統(tǒng)。1.2課程設(shè)計(jì)的目的通過模擬操作系統(tǒng)原理的實(shí)現(xiàn),加深對(duì)操作系統(tǒng)工作原理理解,進(jìn)一步了解操作系統(tǒng)的實(shí)現(xiàn)方法,并可練習(xí)合作完成系統(tǒng)的團(tuán)隊(duì)精神和提高程序設(shè)計(jì)能力。1.3小組人數(shù)建議3~4人一組共同完成模擬系統(tǒng)的實(shí)現(xiàn)。1.4編程語言建議使用VC、VB、C#、Java等Windows環(huán)境下的程序設(shè)計(jì)語言,以借助這些語言環(huán)境來模擬硬件的一些并行工作。1.5課程設(shè)計(jì)內(nèi)容模擬采用多道程序設(shè)計(jì)方法的單用戶操作系統(tǒng),該操作系統(tǒng)包括進(jìn)程管理、存儲(chǔ)管理、設(shè)備管理、文件管理和用戶接口四部分。1.6界面設(shè)計(jì)如圖圖1.1二課程設(shè)計(jì)任務(wù)及要求2.1設(shè)計(jì)任務(wù)設(shè)計(jì)一個(gè)設(shè)備管理分配程序,按先來先服務(wù)的算法,對(duì)設(shè)備進(jìn)行分配。2.2設(shè)計(jì)要求設(shè)備管理主要包括設(shè)備的分配和回收。(1)模擬系統(tǒng)中有A、B、C三種獨(dú)占型設(shè)備,A設(shè)備3個(gè),B設(shè)備2個(gè),C設(shè)備1個(gè)。(2)因?yàn)槟M系統(tǒng)比較小,因此只要設(shè)備表設(shè)計(jì)合理即可。(3)采用先來先服務(wù)分配策略,采用設(shè)備的安全分配方式。(4)屏幕顯示每個(gè)設(shè)備是否被使用,哪個(gè)進(jìn)程在使用該設(shè)備,哪些進(jìn)程在等待使用該設(shè)備。三算法及數(shù)據(jù)結(jié)構(gòu)3.1算法的總體思想(流程)設(shè)備管理的功能是按照設(shè)備的類型和系統(tǒng)采用的分配策略,為請(qǐng)求I/O進(jìn)程分配一條傳輸信息的完整通路。合理的控制I/O的控制過程,可最大限度的實(shí)現(xiàn)CPU與設(shè)備、設(shè)備與設(shè)備之間的并行工作。1.監(jiān)視所有設(shè)備。為了能對(duì)設(shè)備實(shí)施有效的分配和控制,系統(tǒng)能獲取設(shè)備的狀態(tài)。設(shè)備狀態(tài)保存在設(shè)備控制表(DeviceTable)中,并動(dòng)態(tài)的記錄狀態(tài)的變化及有關(guān)信息。2.制定分配策略。按先來先服務(wù)的算法,進(jìn)行設(shè)備分配。 3.設(shè)備的分配。把設(shè)備分配給進(jìn)程。 4.設(shè)備回收。當(dāng)進(jìn)程運(yùn)行完畢后,要釋放設(shè)備,則系統(tǒng)必須回收,一邊其他進(jìn)程使用。圖3.13.2Equipment模塊3.2.1功能記錄設(shè)備的狀態(tài)及相關(guān)信息檢查設(shè)備是否被調(diào)用對(duì)設(shè)備進(jìn)行分配進(jìn)程結(jié)束對(duì)設(shè)備進(jìn)行回收3.2.2數(shù)據(jù)結(jié)構(gòu) 一個(gè)DeviceTable類、一個(gè)DeviceTable函數(shù)。DeviceTable是設(shè)備分配表,說明設(shè)備的分配狀況,是否被占用。Device類說明了設(shè)備是如何使用的。每個(gè)設(shè)備是否被使用,哪個(gè)進(jìn)程在使用該設(shè)備,哪些進(jìn)程在等待使用該設(shè)備。3.3cpu模塊3.3.1功能進(jìn)程對(duì)設(shè)備的調(diào)用,當(dāng)進(jìn)程使用設(shè)備時(shí),檢查設(shè)備是否空閑。如果空閑,則調(diào)用該設(shè)備;如果設(shè)備正被使用,則將該進(jìn)程阻塞到該設(shè)備的阻塞隊(duì)列中,等到設(shè)備空閑時(shí),再被喚醒,調(diào)用設(shè)備。3.3.2數(shù)據(jù)結(jié)構(gòu)一個(gè)設(shè)備的枚舉類型DeviceType,一個(gè)cpu函數(shù)。Cpu函數(shù)中調(diào)用Equipment模塊中的函數(shù)對(duì)設(shè)備進(jìn)行檢測(cè)。如果設(shè)備空閑,就調(diào)用該設(shè)備;如果設(shè)備真在被使用,則該進(jìn)程被阻塞到該設(shè)備的阻塞隊(duì)列中。3.3.3算法通過調(diào)用Equipment模塊中的函數(shù)對(duì)設(shè)背進(jìn)行檢測(cè):如果設(shè)備空閑,則使用該設(shè)備;如果設(shè)備正在工作,則進(jìn)程被阻塞。3.4form1模塊3.4.1功能 界面管理圖3-2 啟動(dòng)進(jìn)程,如果要使用設(shè)備,按先來先服務(wù)的算法調(diào)用設(shè)備。此模塊中有一個(gè)設(shè)備調(diào)用函數(shù)publicintAllocate(DeviceTypetype),根據(jù)設(shè)備的物理名調(diào)用設(shè)備,并將信息顯示顯示到界面中。3.4.2算法 先來先服務(wù)(FCFS,FirstComeFirstService)分配算法:每一設(shè)備有一隊(duì)列管理,當(dāng)多個(gè)作業(yè)或任務(wù)對(duì)同一設(shè)備提出I/O請(qǐng)求時(shí),該算法把請(qǐng)求的先后次序排成一個(gè)等待該設(shè)備的隊(duì)列,設(shè)備分配程序把設(shè)備分配給隊(duì)列中的第一各作業(yè)。四程序設(shè)計(jì)與實(shí)現(xiàn)4.1程序流程圖YYNNNY執(zhí)行的進(jìn)程根據(jù)設(shè)備的物理名調(diào)用設(shè)備設(shè)備a是否空閑設(shè)備b是否空閑設(shè)備c是否空閑進(jìn)程結(jié)束,回收設(shè)備Y將該進(jìn)程放到設(shè)備a的阻塞隊(duì)列中將該進(jìn)程放到設(shè)備b的阻塞隊(duì)列中將該進(jìn)程放到設(shè)備c的阻塞隊(duì)列中圖4-14.2基本思想 進(jìn)程調(diào)用設(shè)備。先調(diào)用A類設(shè)備,A類設(shè)備一共有三個(gè),如果有空閑的設(shè)備,則進(jìn)程就可調(diào)用;否則將進(jìn)程阻塞到設(shè)備A的阻塞隊(duì)列中,等待設(shè)備,等到A類設(shè)備有空閑設(shè)備時(shí),就喚醒該進(jìn)程,在斷點(diǎn)處繼續(xù)進(jìn)行程序。再調(diào)用B類設(shè)備,B類設(shè)備一共有兩個(gè),如果有空閑的設(shè)備,則進(jìn)程就可調(diào)用;否則將進(jìn)程阻塞到設(shè)備B的阻塞隊(duì)列中,等待設(shè)備,等到B類設(shè)備有空閑設(shè)備時(shí),就喚醒該進(jìn)程,在斷點(diǎn)處繼續(xù)進(jìn)行程序。最后調(diào)用C類設(shè)備,C類設(shè)備只有一個(gè),C設(shè)備是臨界資源,如果C設(shè)備空閑,則進(jìn)程就可調(diào)用;否則將進(jìn)程阻塞到設(shè)備C的阻塞隊(duì)列中,等待設(shè)備,等到C設(shè)備空閑,就喚醒該進(jìn)程,在斷點(diǎn)處繼續(xù)進(jìn)行程序。4.3定義的公共變量或數(shù)據(jù)結(jié)構(gòu)Anum,Bnum,Cnum分別表示設(shè)備A,B,C空閑數(shù)目publicenumDeviceType枚舉型的數(shù)據(jù)類型列舉出三種設(shè)備publicstructDeviceTable定義一個(gè)設(shè)備表的結(jié)構(gòu)體publicclassDevice設(shè)備類publicboolJudgeDevice(DeviceTypetype)檢查類型為type的設(shè)備是否可用publicintAllocate(DeviceTypetype)分配設(shè)備,返回第幾個(gè)設(shè)備被占用publicvoidDeAllocate(DeviceTypetype,inta)回收設(shè)備4.4實(shí)驗(yàn)部分代碼namespaceWindowsApplication2{publicpartialclassForm1:Form{publicstaticintAnum=3,Bnum=2,Cnum=1;publicenumDeviceType{A,B,C,}publicstructDeviceTable{publicDeviceTypedeviceType;publicinttotal;publicint[]useState;//0——空閑,1——占用publicDeviceTable(DeviceTypetype,inttotal)//定義一個(gè)構(gòu)造函數(shù){this.total=total;deviceType=type;useState=newint[total];for(inti=0;i<total;i++)//初始化每個(gè)設(shè)備{useState[i]=0;}}}publicclassDevice{privateDeviceTable[]table=newDeviceTable[3];//三種設(shè)備privatestaticDevicedevice=newDevice();publicDevice(){InitDevice();//初始化設(shè)備}privatevoidInitDevice()//設(shè)備初始化,A設(shè)備3個(gè),B設(shè)備2個(gè),C設(shè)備1個(gè){table[0]=newDeviceTable(DeviceType.A,3);table[1]=newDeviceTable(DeviceType.B,2);table[2]=newDeviceTable(DeviceType.C,1);}///////////////////檢查類型為type的設(shè)備是否可用////////////////////////publicboolJudgeDevice(DeviceTypetype){boolstr=false;switch(type){caseDeviceType.A:{if(table[0].total>0){str=true;}break;}caseDeviceType.B:{if(table[1].total>0){str=true;}break;}caseDeviceType.C:{if(table[2].total>0){str=true;}break;}}returnstr;}//////////////分配設(shè)備,返回第幾個(gè)設(shè)備被占用//////////////////////////publicintAllocate(DeviceTypetype){intk=0;switch(type)//使用switch語句選擇分配設(shè)備不同函數(shù){caseDeviceType.A:{table[0].total--;for(inti=0;i<3;i++){if(table[0].useState[i]==0){table[0].useState[i]=1;k=i;break;}}break;}caseDeviceType.B:{table[1].total--;for(inti=0;i<2;i++){if(table[0].useState[i]==0){table[0].useState[i]=1;k=i;break;}}break;}caseDeviceType.C:{table[2].total--;break;}}returnk;}////////////////////////////回收設(shè)備//////////////////////////////publicvoidDeAllocate(DeviceTypetype,inta){switch(type){caseDeviceType.A:{table[0].total++;table[0].useState[a]=0;break;}caseDeviceType.B:{table[1].total++;table[1].useState[a]=0;break;}caseDeviceType.C:{table[2].total++;table[2].useState[a]=0;break;}}}}publicForm1(){InitializeComponent();}///////////////////////分配設(shè)備時(shí)的顏色變化//////////////////////privatevoidbutton7_Click(objectsender,EventArgse){Anum--;stringresult1="";Deviced1=newDevice();intm1=d1.Allocate(DeviceType.A);result1=Convert.ToString(m1);switch(Anum){case2:this.button1.BackColor=Color.Red;break;case1:this.button2.BackColor=Color.Red;break;case0:this.button3.BackColor=Color.Red;break;default:MessageBox.Show("無設(shè)備可分配");break;}}privatevoidbutton8_Click(objectsender,EventArgse){Bnum--;stringresult2="";Deviced2=newDevice();intm2=d2.Allocate(DeviceType.B);switch(Bnum){case1:this.button4.BackColor=Color.Red;break;case0:this.button5.BackColor=Color.Red;break;default:MessageBox.Show("無設(shè)備可分配");break;}result2=Convert.ToString(m2);}privatevoidbutton9_Click(objectsender,EventArgse){Cnum--;stringresult3="";Deviced1=newDevice();intm3=d1.Allocate(DeviceType.C);if(Cnum==0)

溫馨提示

  • 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)論