2022年操作系统设备管理代码 .pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《2022年操作系统设备管理代码 .pdf》由会员分享,可在线阅读,更多相关《2022年操作系统设备管理代码 .pdf(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第 1 页 共 15 页实 验 报 告课程名称操作系统实验项目设备管理专业 计算机科学与技术班级计科 4 班姓名秦宇学号10030409 指导教师于桂玲实验成绩2012年6月13日名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 15 页 - - - - - - - - - 第 2 页 共 15 页实验 5 设备管理一、实验目的理解设备管理的概念和任务,掌握独占设备的分配、回收等主要算法的原理并编程实现。二、实验内容编写程序实现对独占设备的分配与回收的模拟。三、实验要求1、
2、实现设备分配、回收、显示系统中设备信息的功能。2、通过设备类表和设备表记录系统中设备信息、以便进行设备分配。3、设备类表记录系统中全部设备的情况,每个设备类占一个表目,设备类表的数据结构如表 1 所示。设备类拥有设备数量可分配设备数量设备起始地址图 1 设备类表4、为每一个设备配置一张设备控制表,用于记录本设备的情况。设备控制表的数据结构如图 2 所示。绝对号设备状态(好 / 坏)是否分配(是 / 否)占有作业名相对号图 2 设备控制表4、程序中建立分配设备和回收设备函数。5、设系统有 3 类设备,每类设备的设备数分别为2、3、4。6、要求键盘输入作业名、作业所需设备类和设备相对号。程序代码:
3、名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 15 页 - - - - - - - - - 第 3 页 共 15 页#include iostream #include string #include vector using namespace std; typedef struct node string ID; /进程名 string equipment; /申请的设备名 struct node *next; PCB; typedef struct string
4、channelID; /通道标识符 bool state; /通道状态 PCB *use; /正在使用该通道的进程 PCB *blockqueue; /阻塞队首CHCT; typedef struct string controllerID; /控制器标示 bool state; /控制器状态 CHCT *front; /通道表指针 PCB *use; /正在使用该控制器的进程 PCB *blockqueue; /阻塞队首COCT; typedef struct char type; /设备类型 string equipmentID; /设备名 bool state; /设备状态 COCT *
5、front; /控制器指针 PCB *use; /正在使用该设备的进程 PCB *blockqueue; /阻塞队首DCT; typedef struct char type; /设备类型 string equipmentID; /设备名 DCT *dct; /设备的 DCT SDT; DCT *k=new DCT; /键盘的 DCT DCT *m=new DCT; DCT *p=new DCT; DCT *t=new DCT; COCT *c1=new COCT; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理
6、- - - - - - - 第 3 页,共 15 页 - - - - - - - - - 第 4 页 共 15 页COCT *c2=new COCT; COCT *c3=new COCT; CHCT *h1=new CHCT; CHCT *h2=new CHCT; CHCT *h3=new CHCT; int check(char cmd) switch(cmd) case c: /申请 return 1; case C: return 1; case d: /删除 return 2; case D: return 2; case a: /添加 return 3; case A: return
7、 3; case f: /释放 return 4; case F: return 4; case q: return -1; case Q: return -1; case p: return 5; case P: return 5; default: return 0; void init(vector &SDT_table) SDT_table0.equipmentID=M; SDT_table0.type=2; /鼠标是第二类设备 SDT_table0.dct=m; /设备的 DCT表位置 SDT_table1.equipmentID=K; SDT_table1.type=1; SDT_
8、table1.dct=k; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 15 页 - - - - - - - - - 第 5 页 共 15 页 SDT_table2.equipmentID=P; SDT_table2.type=3; SDT_table2.dct=p; SDT_table3.equipmentID=T; SDT_table3.type=4; SDT_table3.dct=t; h1-blockqueue=NULL; h1-channelID=通道 1;
9、 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-state=true; c1-front=h1; c1-use=NULL; c2-blockqueue=NULL; c2-controllerID=控制器 2; c2-state=true; c2-front=h1; c2-use=NULL; c3-blockqueue=NULL; c3-controllerID=控
10、制器 3; c3-state=true; c3-front=h2; c3-use=NULL; k-blockqueue=NULL; k-equipmentID=K; k-state=true; /可用 k-type=1; k-front=c1; k-use=NULL; m-blockqueue=NULL; m-equipmentID=M; m-state=true; m-type=2; m-front=c1; m-use=NULL; p-blockqueue=NULL; p-equipmentID=P; p-state=true; 名师资料总结 - - -精品资料欢迎下载 - - - - -
11、- - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 15 页 - - - - - - - - - 第 6 页 共 15 页 p-type=3; p-front=c2; p-use=NULL; t-blockqueue=NULL; t-equipmentID=T; t-state=true; t-type=4; t-front=c3; t-use=NULL; int main() char cmd; DCT *temp_dct; COCT *temp_coct; CHCT *temp_chct; int l=0; string ID; s
12、tring name; vector SDT_table(4); /设备表 vector DCT_table(4); /设备 vector COCT_table(3); /控制器表/ vector:size_type size_SDT_table; /设备表长度 init(SDT_table); /设备表的初始化 DCT u=*k; DCT_table.push_back(u); u=*m; DCT_table.push_back(u); u=*p; DCT_table.push_back(u); u=*t; DCT_table.push_back(u); COCT cu=*c1; COCT_
13、table.push_back(cu); cu=*c2; COCT_table.push_back(cu); cu=*c3; COCT_table.push_back(cu); cout目前设备: K:键盘 (1) M:鼠标 (2) P:打印机 (3) T:显示器 (4)endl; coutc 申请使用设备。endl; coutd 删除设备。 endl; coutf 释放设备。 endl; couta 添加设备。 endl; while(l!=-1) cout; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 -
14、- - - - - - 第 6 页,共 15 页 - - - - - - - - - 第 7 页 共 15 页 cincmd; l=check(cmd); if(l=0) cout指令错误重新输入。endl; continue; else if(l=1) /申请使用设备 cout想要使用的设备名:ID; cout申请设备的进程名:name; PCB *head=new PCB; /申请 PCB的创建和链接 head-equipment=name; head-ID=ID; head-next=NULL; bool find=false; vector:iterator ator0; for(at
15、or0=SDT_table.begin();ator0!=SDT_table.end();ator0+) if(ator0-equipmentID=ID) find=true; /有该设备 break; if(!find) cout没有该设备。 dct; if(!temp_dct-state) /设备忙 cout该设备目前处于忙状态, 已经把请求加入等待队列。blockqueue) /阻塞的队列为空 temp_dct-blockqueue=head; else /阻塞队列已经有内容 PCB* t=temp_dct-blockqueue; while(t) t=t-next; if(!t) 名师
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年操作系统设备管理代码 2022 操作系统 设备管理 代码
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内