logo资料库

独占设备分配与回收实验报告.docx

第1页 / 共10页
第2页 / 共10页
第3页 / 共10页
第4页 / 共10页
第5页 / 共10页
第6页 / 共10页
第7页 / 共10页
第8页 / 共10页
资料共10页,剩余部分请下载后查看
实验考试 独占设备分配与回收
一、目的和要求
二、内容
三、原理与提示
1.数据结构
2.设备分配
3.设备回收
4.参考截图
实验考试 独占设备分配与回收 一、 目的和要求 加深对设备管理的理解。 了解如何分配和回收独占设备 二、 内容 设计一种独占设备分配和回收的方案,要求满足设备独立性。使用编程语言(C 或者 C++)实现这个方案并将源代码和测试截图打包成以自己学号后 2 位+姓名的压缩文件,通 过桌面的红蜘蛛提交给老师。 三、 原理与提示 为了提高操作系统的可适应性和可扩展性,现代操作系统中都毫无例外地实现了设备独 立性,又叫做设备无关性。设备的独立性的含义是:应用程序独立于具体使用的物理设备。 为了实现独占设备的分配,系统设置数据表格的方式也不相同,在本次考试中采用下面 这种方案:设备类表和设备表。初始情况如下图所示:(3 类设备,8 台设备) 1. 数据结构 设备类表 设备类 总台数 空闲台数 设备表地址 2 3 3 占用进程 相对号 输入机(input) 打印机(printer) 磁带机(tape) 2 3 3 设备表 设备物理名 是否分配 1 2 3 0 0 0
4 5 6 7 8 0 0 0 0 0 2. 设备分配 当进程申请某类设备时,系统先查找“设备类表” 如果该类设备的现存台数可以满足申请要求,则从该类设备的“设备表”始址开始依次 查该类设备在设备表中的登记项,找出“未分配”的设备分配给进程。 分配后要修改设备类表中的现存台数,把分配给进程的设备标志改为“已分配”且填上 占用设备的进程名。 然后,把设备的绝对号与相对号的对应关系通知用户,以便用户在分配到的设备上使用。 3. 设备回收 当进程执行结束撤离时应归还所占的设备,系统根据进程名查设备表,找出进程占用设 备的登记栏,把标志修改为“未分配”,清除进程名。同时把回收的设备台数加到设备类表 中的空闲台数中。 代码: #include #include #include #include using namespace std; #define n 4 #define m 10 struct{ char type[10];//设备类名 int count;//拥有设备台数 int remain;//空闲台数,现存的可用设备台数 int address;//该类设备在设备表中的起始地址 }equiptype[n];//设备类表定义,假定系统有 n 个设备类型 struct{ int number;//设备绝对号 //int status;//设备好坏状态 int remain;//设备是否已分配 char jobname[4];//占有设备的进程名 int lnumber;//设备相对号
}equipment[m];//设备表定义,假定系统有 m 个设备 bool allocate(char *J,char *type,int cc) { int i,t,nn,j; i=0; while(i=n) { } cout<<"无该类设备,设备分配失败"<
if(i>=n)//没有找到该类设备 { printf("无该类设备,设备回收失败!"); return; } t=equiptype[i].address;//取出该类设备在设备表中的起始地址 j=equiptype[i].count;//设备的数量 k=0; nn=t+j; for(;t
for(i=0;i
4. 参考截图 老师的截图:
我的截图参考:
分享到:
收藏