1、操作系统设置“设备分配表”,用来记录计算机系统所配置的独占设备类型、台数以及分配情况。设备分配表可由“设备类表”和“设备表”两部分组成,如下图:设备类总台数空闲台数设备表始址输入机21打印机设备物理名是否分配占用进程001未分配002已分配J1003设备类表 设备表(2)设备分配1)当进程申请某类设备时,系统先查“设备类表”。2)如果该类设备的现存台数可以满足申请要求,则从该类设备的“设备表”始址开始依次查该类设备在设备表中的登记项,找出“未分配”的设备分配给进程。3)分配后要修改设备类表中的现存台数,把分配给进程的设备标志改为“已分配”且填上占用设备的进程名。4)然后,把设备的绝对号与相对号
2、的对应关系通知用户,以便用户在分配到的设备上装上存储介质。(3)设备回收当进程执行结束撤离时应归还所占设备,系统根据进程名查设备表,找出进程占用设备的登记栏,把标志修改为“未分配”,清除进程名。同时把回收的设备台数加到设备类表中的现存台数中。五、参考程序:#define False 0#define true 1#define n 4#define m 10struct char type10;/设备类名 int count;/拥有设备台数 int remain;/空闲台数,现存的可用设备台数 int address;/该类设备在设备表中的起始地址equiptypen;/设备类表定义,假定系统
3、有n个设备类型int number;/设备绝对号int status;int remain;/设备是否已分配 char jobname4;/占有设备的进程名 int lnumber;/设备相对号equipmentm;/设备表定义,假定系统有m个设备allocate(J,type,mm)char *J,*type;int mm;int i,t,j; i=0;while(i=n)cout”无该类设备,设备分配失败”endl; return False;if(equiptypei.remain1) cout”该类设备不足,分配失败”t=equiptypei.address;while(!(equip
4、mentt.remain=0)t+;equiptypei.remain-;equipmentt.remain=1;strcpy(equipmentt.jobname,J);equipmentt.lnumber=mm;return 1;reclaim(J,type)char J,type;int i,t,j,k,nn; t=equiptypei.address; j=equiptypei.count; k=0; nn=t+j; for(;tnn;t+) if(strcmp(equipmentt.jobname,J)=0&equipmentt.remain=1) equipmentt.remain
5、=0; k+; equiptypei.remain=equiptypei.remain+k; if(k=0) cout”该进程没有使用该类设备” return 1;main()char J4;int i,mm,a;char type10;strcpy(equiptype0.type,”input”);equiptype0.count=2;equiptype0.remain=2;equiptype0.address=0;strcpy(equiptype1.type,”printer”);equiptype1.count=3;equiptype1.remain=3;equiptype1.addre
6、ss=2;strcpy(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;for(i=0;i10;i+) equipmenti.number=i; equipmenti.remain=0; while(1)endl”0-退出,1-分配,2-回收,3-显示”a; switch(a) case 0: e
7、xit(0); case 1: ”输入进程名、进程所需设备类和设备相对号”;Jtypemm; allocate(J,type,mm); break; case 2:”输入进程名和进程归还的设备类”;type; reclaim(J,type); case 3:”输出设备类表”设备类型 设备总量 空闲设备台数” for(i=0;n;equiptypei.typeequiptypei.countequiptypei.remain”输出设备表:”绝对号 好/坏 已/未分配 占用进程名 相对号”m;equipmenti.numberequipmenti.statusequipmenti.remain,equipmenti.jobnameequipmenti.lnumber
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2