欢迎来到天天文库
浏览记录
ID:22281699
大小:58.50 KB
页数:6页
时间:2018-10-28
《实验七设备的分配与回收》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、实验七设备管理之设备的分配与回收一.实验目的掌握设备管理屮的设备的添加和删除、设备的分配和I叫收、同时实现设备独立性。二.实验条件硬件:一台微机软件:操作系统和C语言系统或VC++编译系统。三.实验要求假定模拟系统中有键盘、鼠标、打印机和显示器四个设备,三个控制器和两个通道,采用安全分配方式。(1)设备管理子系统涉及到系统设备表(SDT)、通道控制表(CHCT)、控制器控制表(COCT)和设备控制表(DCT)来体现输入输出系统的四级结构和三级控制。我们模拟这样的数据结构来完成对外围设备的管理。•添加设备:增加对应的设备控制表和系统设备表中的表项,如果
2、需要新建对应的控制器控制表。•删除设崙:删除对灰的设备控制表和系统设备表屮的表项,如果需要删除对成的控制器控制表。(2)设备的分配和回收,进程中请设备的时候,建立起通路,即获成功;否则//阻塞//到通道、控制器或设备上面。进程回收设备的吋候,把肌塞进程唤醒。(3)设备分配必须满足设备的独立性要求。为了实现设备独立性,要求在驱动程序之上设计一层设备无关软件,主要功能可分为:•执行所冇设备的公冇操作,主要包括:(a)独心设备的分配与回收;(b)将逻辑设备名映射为物理设备(LUT),进一步可以找到相应物理设备的驱动程序。•向用P层(或文件层)软件提供统一的
3、接口。例如,对各种设备的读操作,在应用程序中都用read;一.实验设计而对各种设备的写操作,则都使川writeo#include〈iostream.h〉#include#includestructsdt//系统设备表charname;//设备名称chartype;//设备类型structsdt*ncxt;};structblock//阻塞设备{charpname;//申i吉设备进税名charename;//设备名structblock*next;};structchct//通道{charname;//通道名称in
4、tstate;//通道状态structblock*next;//通道被占用造成的阻塞队列};structcoct//投制器表{charname;//校制器名称intstate;//控制器状态structchct*chct;//设备通道structblock*next;//控制器被占用造成的阻塞队歹ij};structdct//设备校制表{intstate;//设备状态structsdt*sdt;//系统设备structcoct*coct;//设备控制器structblock*next;//设备被占用造成的阻塞队歹(J};sdt*s[20];//设备d
5、ct*d[20];//设备控制coct*co[20];//控制器chct*chl,*ch2;//通道I,通道2block*b;inte=4;//设备数,初始为4intc=3;//投制器数,初始为3voidinit()//初始化{for(inti=0;i<4;i++){s=new(sdt);d=new(dct);d->state=();d-〉sdt=s;d->next=new(block);d->next->next=NULL;}s[()l-〉name=fk’;$[l]->namc=,m,;s[2]-〉name=丫;sL3J->name=,p,;s[0
6、]->type=*i';s[l]->type=,i,;$[2]->typc=,o,;s[3]->type='o';for(i=l;i<4;i++){co=new(coct);co-〉state=0;co->next=new(block);co->next->next=NULL;}co[l]-〉name=T;co[2]->name='2r;co[3]-〉name=’3’;chl=new(chct);ch2=new(chct);chl->name-1';chl->state=();chi->ncxt=ncw(block);chi->next->next=
7、NULL;ch2->name=,2,;ch2->state=0;ch2->next=new(block);ch2->ncxt->ncxt=NULL;coLIJ->chct=chl;col2J->chct=ch2;co[31-〉chct=ch2;d[0]-〉coct=co[l];d[lJ->coct=co[lJ;dl2J-〉coct=co
8、2J;df31-〉coct=co[31;}voidadd(){chara;charb;cout«"设备名称:"«endl;cin»a;cout«"设备类型:"«endl;cin»b;for(inti=0;i9、+)if(d->sdt->name==a)cout«"设备已存在!"《endl;if(i==e){s[c]=
9、+)if(d->sdt->name==a)cout«"设备已存在!"《endl;if(i==e){s[c]=
此文档下载收益归作者所有