欢迎来到天天文库
浏览记录
ID:38628768
大小:110.00 KB
页数:15页
时间:2019-06-16
《操作系统设备管理代码》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验报告课程名称操作系统实验项目设备管理专业计算机科学与技术班级计科4班姓名秦宇学号10030409指导教师于桂玲实验成绩2012年6月13日第15页共15页实验5设备管理一、实验目的理解设备管理的概念和任务,掌握独占设备的分配、回收等主要算法的原理并编程实现。二、实验内容编写程序实现对独占设备的分配与回收的模拟。三、实验要求1、实现设备分配、回收、显示系统中设备信息的功能。2、通过设备类表和设备表记录系统中设备信息、以便进行设备分配。3、设备类表记录系统中全部设备的情况,每个设备类占一个表目,设备类表的数据结构如表1所示。设备类拥有设备数量可分配设备数量设备
2、起始地址图1设备类表4、为每一个设备配置一张设备控制表,用于记录本设备的情况。设备控制表的数据结构如图2所示。绝对号设备状态(好/坏)是否分配(是/否)占有作业名相对号图2设备控制表4、程序中建立分配设备和回收设备函数。5、设系统有3类设备,每类设备的设备数分别为2、3、4。6、要求键盘输入作业名、作业所需设备类和设备相对号。程序代码:第15页共15页#include"iostream"#include"string"#include"vector"usingnamespacestd;typedefstructnode{stringID;//进程名string
3、equipment;//申请的设备名structnode*next;}PCB;typedefstruct{stringchannelID;//通道标识符boolstate;//通道状态PCB*use;//正在使用该通道的进程PCB*blockqueue;//阻塞队首}CHCT;typedefstruct{stringcontrollerID;//控制器标示boolstate;//控制器状态CHCT*front;//通道表指针PCB*use;//正在使用该控制器的进程PCB*blockqueue;//阻塞队首}COCT;typedefstruct{chartyp
4、e;//设备类型stringequipmentID;//设备名boolstate;//设备状态COCT*front;//控制器指针PCB*use;//正在使用该设备的进程PCB*blockqueue;//阻塞队首}DCT;typedefstruct{chartype;//设备类型stringequipmentID;//设备名DCT*dct;//设备的DCT}SDT;DCT*k=newDCT;//键盘的DCTDCT*m=newDCT;DCT*p=newDCT;DCT*t=newDCT;COCT*c1=new第15页共15页COCT;COCT*c2=newCOCT
5、;COCT*c3=newCOCT;CHCT*h1=newCHCT;CHCT*h2=newCHCT;CHCT*h3=newCHCT;intcheck(charcmd){switch(cmd){case'c'://申请return1;case'C':return1;case'd'://删除return2;case'D':return2;case'a'://添加return3;case'A':return3;case'f'://释放return4;case'F':return4;case'q':return-1;case'Q':return-1;case'p':re
6、turn5;case'P':return5;default:return0;}}voidinit(vector&SDT_table){SDT_table[0].equipmentID="M";SDT_table[0].type='2';//鼠标是第二类设备SDT_table[0].dct=m;//设备的DCT表位置SDT_table[1].equipmentID="K";SDT_table[1].type='1';SDT_table[1].dct=k;第15页共15页SDT_table[2].equipmentID="P";SDT_table[2].
7、type='3';SDT_table[2].dct=p;SDT_table[3].equipmentID="T";SDT_table[3].type='4';SDT_table[3].dct=t;h1->blockqueue=NULL;h1->channelID="通道1";h1->state=true;h1->use=NULL;h2->blockqueue=NULL;h2->channelID="通道2";h2->state=true;h2->use=NULL;c1->blockqueue=NULL;c1->controllerID="控制器1";c1->s
8、tate=true;c1->front
此文档下载收益归作者所有