版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
課程設(shè)計(jì)題目:獨(dú)占設(shè)備的分配與回收問題描述:為了使系統(tǒng)有條不紊地工作,系統(tǒng)在分配設(shè)備是,應(yīng)考慮這樣幾個(gè)因素:①設(shè)備的固有屬性;②設(shè)備分配算法;③設(shè)備分配時(shí)的安全性④設(shè)備獨(dú)立性;系統(tǒng)也要通過回收,實(shí)現(xiàn)設(shè)備的再分配。要求:設(shè)備分配在計(jì)算機(jī)系統(tǒng)中,設(shè)備、控制器和通道等資源是有限的,并不是每個(gè)進(jìn)程隨時(shí)都可以得到這些資源。進(jìn)程首先要向設(shè)備管理程序提出申請(qǐng),然后由設(shè)備管理程序按照一定的分配算法給進(jìn)程分配必要的資源。如果進(jìn)程的申請(qǐng)沒有成功,就要在資源的等待隊(duì)列中排隊(duì)等待,直到獲得所需的資源。考慮設(shè)備的特性和安全性。設(shè)備的特性是設(shè)備本身固有的屬性,一般分為獨(dú)占、共享和虛擬設(shè)備等。1、設(shè)計(jì)任務(wù)分析:獨(dú)占設(shè)備的分配與虛擬設(shè)備獨(dú)占設(shè)備每次只能分配給一個(gè)進(jìn)程使用使用特性隱含著死鎖的必要條件,所以在考慮獨(dú)占設(shè)備的分配時(shí),一定要結(jié)合有關(guān)防止和避免死鎖的安全算法。2、設(shè)計(jì)方案論證:為了提高OS的可適應(yīng)性和可擴(kuò)展性O(shè)S中毫無例外地實(shí)現(xiàn)了設(shè)備的獨(dú)立性,即使應(yīng)用程序獨(dú)立于具體使用的物理設(shè)備。在實(shí)現(xiàn)了設(shè)備獨(dú)立性的功能后,可以帶來兩方面的好處:(1)設(shè)備分配時(shí)的靈活性;(2)易于實(shí)現(xiàn)I/O重定向。3、詳細(xì)設(shè)計(jì)通過此系統(tǒng)可以實(shí)現(xiàn)如下功能:分配,回收,顯示,退出。選擇獨(dú)占設(shè)備,通過執(zhí)行功能項(xiàng),輸出設(shè)備表,實(shí)現(xiàn)設(shè)備的分配與回收。4、源代碼清單:#definefalse0#definetrue1#definen4#definem10struct{chartype[10];/*設(shè)備類名*/intcount;/*擁有設(shè)備臺(tái)數(shù)*/intremain;/*現(xiàn)存的可用設(shè)備臺(tái)數(shù)*/intaddress;/*該類設(shè)備在設(shè)備表中的起始地址*/}equiptype[n];/*設(shè)備類表定義,假定系統(tǒng)有n個(gè)設(shè)備類型*/struct{intnumber;/*設(shè)備絕對(duì)號(hào)*/intstatus;/*設(shè)備好壞狀態(tài)*/intremain;/*設(shè)備是否已分配*/charjobname[4]占有設(shè)備的作業(yè)名*/intlnumber;/*設(shè)備相對(duì)號(hào)*/}equipment[m];/*設(shè)備表定義,假定系統(tǒng)有m個(gè)設(shè)備*/allocate(J,type,mm)char*Jtype;intmm;{inti,t,j;/*查詢?cè)擃愒O(shè)備*/i=0;while(i<n&&strcmp(equiptype[i].type,type)!=0)i++;if(i>=n)/*沒有找到該類設(shè)備*/{printf("無該類設(shè)備,設(shè)備分配失敗");return(false);}if(equiptype[i].remain<1)/*所需設(shè)備現(xiàn)存可用臺(tái)數(shù)不足*/{printf("該類設(shè)備不足,分配失敗");return(false);}t=equiptype[i].address;/*取出該類設(shè)備在設(shè)備表中的起始地址*/while(!(equipment[t].status==1&&equipment[t].remain==0t++;/*填寫作業(yè)名、相對(duì)號(hào),狀態(tài)改為已分配*/equiptype[i].remain--;equipment[t].remain=1;strcpy(equipment[t].jobname,J);equipment[t].lnumber=mm;}/*設(shè)備分配函數(shù)結(jié)束*/reclaim,type)charJ,type;{inti,t,j,k,nn;i=0;while(i<n&&strcmp(equiptype[.type,type)!=0)i++;if(i>=n)/*沒有找到該類設(shè)備*/{printf("無該類設(shè)備,設(shè)備回收失敗");return(false);}t=equiptype[i].address;/*取出該類設(shè)備在設(shè)備表中的起始地址*/j=equiptype[i].count;/*取出該類設(shè)備的數(shù)量*/k=0;nn=t+j;for(;t<nn;t++)if(strcmp(equipment[t].jobname,J)==0&&equipment[t].remain==1){equipment[t].remain=0;k++;}equiptype[i].remain=equiptype[i].remain+k;if(k==0)printf("該作業(yè)沒有使用該類設(shè)備\n}/*設(shè)備回收函數(shù)結(jié)束*/main(){charJ[4];inti,mm,a;chartype[10];/*設(shè)備類表初始化:*/strcpy(equiptype[0].type,"input");輸入機(jī)*/equiptype[0].count=2;equiptype[0].remain=2;equiptype[0].address=0;strcpy(equiptype[1].type,"printer");/*打印機(jī)*/equiptype[1].count=3;equiptype[1].remain=3;equiptype[1].address=2;strcpy(equiptype[2].type,"disk");磁盤機(jī)*/equiptype[2].count=4;equiptype[2].remain=4;equiptype[2].address=5;strcpy(equiptype[3].type,"tape磁帶機(jī)*/equiptype[3].count=1;equiptype[3].remain=1;equiptype[3].address=9;/*設(shè)備表初始化:*/for(i=0;i<10;i++){equipment[i].number=i;equipment[i].status=1;equipment[i].remain=0;}while(1){printf("\n0-退出,1-分配,2-回收,3-顯示");printf("\n選擇功能項(xiàng)(0~3):");scanf("%d",&a);switch(a){case0:/*a=0程序結(jié)束*/exit(0);case1:/*a=1分配設(shè)備*/printf("輸入作業(yè)名、作業(yè)所需設(shè)備類和設(shè)備相對(duì)號(hào)");scanf("%s%s%d",J,type,&mm);allocate(J,type,mm);/*分配設(shè)備*/break;case2:/*a=2回收設(shè)備*/printf("輸入作業(yè)名和作業(yè)歸還的設(shè)備類");scanf("%s%s",J,type);reclaim(J,type);/*回收設(shè)備*/break;case3:/*a=3輸出設(shè)備類表和設(shè)備表的內(nèi)容*/printf("\n輸出設(shè)備類表\nprintf("設(shè)備類型設(shè)備總量空閑好設(shè)備\n");for(i=0;i<n;i++)printf("%9s%8d%9d\n"quiptype[i].type,equiptype[i].count,equiptype[i].remain);printf("輸出設(shè)備表:\n");printf("絕對(duì)號(hào)好壞已未分配占用作業(yè)名相對(duì)號(hào);for(i=0;i<m;i++)printf("%3d%8d%9d%12s%8d\n",equipment[.number,equipment[i].statusipment[i].remaiquipment[i].jobname,equipment[i].lnumber);}}}運(yùn)行結(jié)果:該程序模擬獨(dú)占設(shè)備的分配和回收,其中,獨(dú)占設(shè)備分別為input(輸入機(jī)printer(打印機(jī)disk(磁盤機(jī)tape(磁帶機(jī))輸出設(shè)備類表:23412341tape注:設(shè)備總量為10輸出設(shè)備表:絕對(duì)號(hào)好壞已未分配占用作業(yè)名相對(duì)號(hào)01234567891111111111000000000000000000000000000000注:⑴絕對(duì)號(hào)為設(shè)備的標(biāo)號(hào),根據(jù)設(shè)備類型的不同與數(shù)量,其中,0~1為input,2~4為printer,5~8為disk,9為tape⑵默認(rèn)1為設(shè)備狀態(tài)“好”0為該設(shè)備未分配0為默認(rèn)的作業(yè)名0為設(shè)備的相對(duì)號(hào)程序運(yùn)行后可以看到如下要求:0-退出,1-分配,2-回收,3-顯示選擇功能項(xiàng)(0~3此時(shí)要求輸入相應(yīng)的功能選項(xiàng),此處我使用disk(磁盤機(jī))分配和回收做演示:(以下為程序調(diào)試結(jié)果頁面)0退出,1-分配,2-回收,3-顯示選擇功能項(xiàng)(0~31輸入作業(yè)名,作業(yè)所需設(shè)備類和設(shè)備相對(duì)號(hào)xyzDisk2(注:設(shè)備類只能是程序所提供的四種獨(dú)占設(shè)備,當(dāng)輸入不合法或不存在的設(shè)備類后,會(huì)提示“無該類設(shè)備,設(shè)備分配失敗輸入時(shí)使用回車分隔,設(shè)備相對(duì)號(hào)只是一種邏輯上的劃分,可以重復(fù),前提是該類獨(dú)占設(shè)備還有空閑資源)0退出,1-分配,2-回收,3-顯示選擇功能項(xiàng)(0~33輸出設(shè)備類表:設(shè)備類型設(shè)備總量空閑好設(shè)備Input23412301Printertape輸出設(shè)備表:絕對(duì)號(hào)好壞已未分配占用作業(yè)名相對(duì)號(hào)012345678911111111110000010000000000213200000CcyTtHbJl00退出,1-分配,2-回收,3-顯示選擇功能項(xiàng)(0~31輸入作業(yè)名,作業(yè)所需設(shè)備類和設(shè)備相對(duì)號(hào)xbDisk2該類設(shè)備不足,分配失敗0退出,1-分配,2-回收,3-顯示選擇功能項(xiàng)(0~32輸入作業(yè)名和作業(yè)歸還的設(shè)備類jlDisk0退出,1-分配,2-回收,3-顯示選擇功能項(xiàng)(0~33輸出設(shè)備類表:設(shè)備類型設(shè)備總量空閑好設(shè)備Input23412311PrinterDisktape輸出設(shè)備表:絕對(duì)號(hào)好壞已未分配占用作業(yè)名相對(duì)號(hào)012345678911111111110000010000000000213200000CcyTtHbJl00退出,1-分配,2-回收,3-顯示選擇功能項(xiàng)(0~31輸入作業(yè)名,作業(yè)所需設(shè)備類和設(shè)備相對(duì)號(hào)xbDisk20退出,1-分配,2-回收,3-顯示選擇功能項(xiàng)(0~33輸出設(shè)備類表:23412301Printertape輸出設(shè)備表:絕對(duì)號(hào)好壞已未分配占用作業(yè)名相對(duì)號(hào)012345678911111111110000010000000000213200000CcyTtHbXb0以上的演示實(shí)現(xiàn)了disk獨(dú)占設(shè)備的分配,由于設(shè)備不足無法分配后,通過設(shè)備的回收,再實(shí)現(xiàn)設(shè)備的分配。其余的獨(dú)占設(shè)備也類似disk磁盤演示。在本次設(shè)計(jì)中,要求重點(diǎn)掌握獨(dú)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版辦公家具定制與售后支持協(xié)議3篇
- 二零二五年度跨境離婚協(xié)議書及財(cái)產(chǎn)轉(zhuǎn)移范本3篇
- 二零二五年度海洋資源開發(fā)項(xiàng)目技術(shù)人員聘任協(xié)議3篇
- 二零二五年度KTV加盟店運(yùn)營管理及培訓(xùn)合同范本3篇
- 二零二五版公積金個(gè)人提前還款合同3篇
- 西安航空學(xué)院《材料科學(xué)基礎(chǔ)I》2023-2024學(xué)年第一學(xué)期期末試卷
- 二零二五年度柑橘產(chǎn)品溯源與食品安全合同3篇
- 烏海職業(yè)技術(shù)學(xué)院《視覺藝術(shù)賞析與表達(dá)》2023-2024學(xué)年第一學(xué)期期末試卷
- 個(gè)性化桶裝水供應(yīng)服務(wù)協(xié)議2024版版B版
- 2024年環(huán)保設(shè)備生產(chǎn)與銷售合作合同
- 2024年關(guān)愛留守兒童工作總結(jié)
- GB/T 45092-2024電解水制氫用電極性能測(cè)試與評(píng)價(jià)
- 《算術(shù)平方根》課件
- DB32T 4880-2024民用建筑碳排放計(jì)算標(biāo)準(zhǔn)
- 2024-2024年上海市高考英語試題及答案
- 注射泵管理規(guī)范及工作原理
- 山東省濟(jì)南市2023-2024學(xué)年高二上學(xué)期期末考試化學(xué)試題 附答案
- 大唐電廠采購合同范例
- GB/T 18724-2024印刷技術(shù)印刷品與印刷油墨耐各種試劑性的測(cè)定
- IEC 62368-1標(biāo)準(zhǔn)解讀-中文
- 15J403-1-樓梯欄桿欄板(一)
評(píng)論
0/150
提交評(píng)論