版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、操作系統(tǒng)實驗實驗六 設(shè)備管理學號 1115102002 姓名 蔡鳳武 班級 電子A班 華僑大學電子工程系實驗目的 1、 理解設(shè)備管理的概念和任務(wù)。2、 掌握獨占設(shè)備的分配、回收等主要算法的原理并編程實現(xiàn)。 實驗內(nèi)容與基本要求 在Windows系統(tǒng)中,編寫程序?qū)崿F(xiàn)對獨占設(shè)備的分配和回收的模擬,該程序中包括:建立設(shè)備類表和設(shè)備表、分配設(shè)備和回收設(shè)備的函數(shù)。實驗報告內(nèi)容 1、 獨占設(shè)備的分配、回收等主要算法的原理。2、 程序流程圖。3、 程序及注釋。4、 運行結(jié)果以及結(jié)論。獨占設(shè)備的主要算法的原理為了提高操作系統(tǒng)的可適應性和擴展性,現(xiàn)代操作系統(tǒng)中都毫無例外地實現(xiàn)了設(shè)備獨立性,又叫做設(shè)備無關(guān)性。設(shè)備獨
2、立性的含義是:應用程序獨立于具體使用的物理設(shè)備。設(shè)備分配:1)當進程申請某類設(shè)備時,系統(tǒng)先查“設(shè)備類表”。2) 如果該類設(shè)備的現(xiàn)存臺數(shù)可以滿足申請要求,則從該類設(shè)備的“設(shè)備表”始址開始依次查該類設(shè)備在設(shè)備表中的登記項,找出“未分配”的設(shè)備分配給進程。3)分配后要修改設(shè)備類表中的現(xiàn)存臺數(shù),把分配給進程的設(shè)備標志改為“已分配”且填上占用設(shè)備的進程名。4)然后,把設(shè)備的絕對號與相對號的對應關(guān)系通知用戶,以便用戶在分配到的設(shè)備上裝上存儲介質(zhì)。設(shè)備回收:作業(yè)運行完成,釋放設(shè)備時,系統(tǒng)首先要查看設(shè)備表,比較每一項,找到占用作業(yè)名與運行完作業(yè)的作業(yè)名相同的欄目,將這一欄的“已/未分配”設(shè)置為“未分配”,然后
3、將設(shè)備表中對應設(shè)備類的可使用數(shù)量增加1.初始化設(shè)備類表設(shè)備類設(shè)備數(shù)量當前空閑設(shè)備數(shù)設(shè)備起始位置Input330printer223disk445tape119開始流程圖初始化設(shè)備口和需要用到的變量功能號表 0-33210退出分別輸出所有端口的情況,設(shè)備類型、設(shè)備總量、空閑設(shè)備、設(shè)備起始位置輸入作業(yè)名和作業(yè)歸還的設(shè)備類請輸入作業(yè)名、作業(yè)所需設(shè)備類和設(shè)備相對號設(shè)備空閑量、被占用和是否損壞等情況被顯示結(jié)束源程序#include<stdio.h>#include<string.h>#include<stdlib.h>#define false 0 #define t
4、rue 1 #define n 4 #define m 10 struct char type10; /*設(shè)備類名*/ int count; /*擁有設(shè)備臺數(shù)*/ int remain; /*現(xiàn)存的可用設(shè)備臺數(shù)*/ int address; /*該類設(shè)備在設(shè)備表中的起始地址*/ equiptypen; /*設(shè)備類表定義,假定系統(tǒng)有n個設(shè)備類型*/ struct int number; /*設(shè)備絕對號*/ int status; /*設(shè)備好壞狀態(tài)*/ int remain; /*設(shè)備是否已分配*/ char jobname4;/*占有設(shè)備的作業(yè)名*/ int lnumber; /*設(shè)備相對號*/
5、 equipmentm; /*設(shè)備表定義,假定系統(tǒng)有m個設(shè)備*/ /allocate(J,type,mm) /char *J,*type; /int mm; int allocate(char *J,char *type,int mm) int i,t,j; /*查詢該類設(shè)備*/ i=0; while(i<n&&strcmp(equiptypei.type,type)!=0) i+; if(i>=n)/*沒有找到該類設(shè)備*/ printf("無該類設(shè)備,設(shè)備分配失敗"); return(false); if(equiptypei.remain&l
6、t;1)/*所需設(shè)備現(xiàn)存可用臺數(shù)不足*/ printf("該類設(shè)備不足,分配失敗"); return(false); t=equiptypei.address;/* 取出該類設(shè)備在設(shè)備表中的起始地址*/ while(!(equipmentt.status=1 && equipmentt.remain=0) /!(equipmentt.status=1) | !(equipmentt.remain=0)表示設(shè)備不是好的或者已分配t+; /*填寫作業(yè)名、相對號,狀態(tài)改為已分配*/ equiptypei.remain-; equipmentt.remain=1;
7、strcpy(equipmentt.jobname,J); equipmentt.lnumber=mm; return(true);/*設(shè)備分配函數(shù)結(jié)束*/ /reclaim (J,type) /char J,type; int reclaim (char *J,char *type) int i,t,j,k,nn; i=0; while(i<n && strcmp(equiptypei.type,type)!=0) i+; if(i>=n)/*沒有找到該類設(shè)備*/ printf("無該類設(shè)備,設(shè)備回收失敗"); return(false); t
8、=equiptypei.address; /*取出該類設(shè)備在設(shè)備表中的起始地址*/ j=equiptypei.count; /*取出該類設(shè)備的數(shù)量*/ k=0; nn=t+j; for(;t<nn;t+) if(strcmp(equipmentt.jobname,J)=0&&equipmentt.remain=1) equipmentt.remain=0; k+; equiptypei.remain= equiptypei.remain+k; if(k=0) printf("該作業(yè)沒有使用該類設(shè)備n"); return (true);/*設(shè)備回收函數(shù)結(jié)
9、束*/ void main( ) char J4; int i,mm,a; char type10; /*設(shè)備類表初始化:*/ strcpy(equiptype0.type,"input");/*輸入機*/ equiptype0.count=2; equiptype0.remain=2; equiptype0.address=0; strcpy(equiptype1.type,"printer");/*打印機 */ equiptype1.count=3; equiptype1.remain=3; equiptype1.address=2; strcpy(
10、equiptype2.type,"disk");/*磁盤機*/ equiptype2.count=4; equiptype2.remain=4; equiptype2.address=5; strcpy(equiptype3.type,"tape");/*磁帶機*/ equiptype3.count=1; equiptype3.remain=1; equiptype3.address=9; /*設(shè)備表初始化:*/ for(i=0;i<10;i+) equipmenti.number=i; equipmenti.status=1; equipment
11、i.remain=0; while(1) printf("n0退出,1分配,2回收,3顯示"); printf("n選擇功能項(03):"); scanf("%d",&a); switch(a) case 0 : /*a=0程序結(jié)束*/ exit(0); case 1 : /*a=1分配設(shè)備*/ printf("輸入作業(yè)名、作業(yè)所需設(shè)備類和設(shè)備相對號"); scanf("%s%s%d",J,type,&mm); allocate(J,type,mm);/*分配設(shè)備*/ break
12、; case 2: /*a=2回收設(shè)備*/ printf("輸入作業(yè)名和作業(yè)歸還的設(shè)備類"); scanf("%s%s",J,type); reclaim(J,type);/*回收設(shè)備*/ break; case 3: /*a=3 輸出設(shè)備類表和設(shè)備表的內(nèi)容*/ printf("n輸出設(shè)備類表n"); printf(" 設(shè)備類型 設(shè)備總量 空閑好設(shè)備n"); for(i=0;i<n;i+) printf("%9s%8d%9dn",equiptypei.type,equiptypei.count, equiptypei.remain); printf("輸出設(shè)備表:n"); printf("絕對號 好/壞 已/未分配 占用作業(yè)名 相對號n"); for(i=0;i<m;i+) printf("%3d%8d%9d%12s%8dn",equipmenti.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024物業(yè)管理服務(wù)協(xié)議:智能住宅小區(qū)安全監(jiān)控合同3篇
- 2024年標準社區(qū)安保協(xié)議終止書版B版
- 2024年知識產(chǎn)權(quán)許可合同:專利權(quán)人與被許可人之間的專利使用
- 2024年隱名股東權(quán)益分配合同版B版
- 2024食用油包裝設(shè)計及印刷服務(wù)合同3篇
- 2024建筑工程施工管理與質(zhì)量安全保障合同
- 2025年度電影劇本創(chuàng)作編劇助理及現(xiàn)場工作合同3篇
- 2024年鐘點工雇傭合同3篇
- 2024年重點交通樞紐土方運輸工程承包合同書范本3篇
- 2024年智能消防系統(tǒng)研發(fā)與實施合同3篇
- 《皮膚病中成藥導引》課件
- Chinese Tea Culture.中國茶文化(課堂PPT)
- 排洪溝工程設(shè)計說明
- (整理版高中英語)杭高第一學期期末考試高一英語試卷
- 學校食堂生鮮肉(豬肉、牛肉、羊肉、雞鴨鵝肉)配送服務(wù)方案
- SMT工資方案(原創(chuàng))
- 關(guān)于礦棉裝飾吸聲板檢驗報告加圖標版
- 大紅色節(jié)word感謝信信紙背景模板
- 安全檢查匯報材料
- 2005年海南高考理科綜合真題及答案
- 機房巡檢記錄表.doc
評論
0/150
提交評論