操作系统实验指导九(独占设备的分配和回收模拟)

上传人:re****.1 文档编号:505809872 上传时间:2024-01-19 格式:DOCX 页数:20 大小:27.91KB
返回 下载 相关 举报
操作系统实验指导九(独占设备的分配和回收模拟)_第1页
第1页 / 共20页
操作系统实验指导九(独占设备的分配和回收模拟)_第2页
第2页 / 共20页
操作系统实验指导九(独占设备的分配和回收模拟)_第3页
第3页 / 共20页
操作系统实验指导九(独占设备的分配和回收模拟)_第4页
第4页 / 共20页
操作系统实验指导九(独占设备的分配和回收模拟)_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《操作系统实验指导九(独占设备的分配和回收模拟)》由会员分享,可在线阅读,更多相关《操作系统实验指导九(独占设备的分配和回收模拟)(20页珍藏版)》请在金锄头文库上搜索。

1、实验九 独占设备的分配和回收模拟(综合性编程实验 4 学时)(本次作业要交,交作业时间:第15 周上机课前)一. 目的要求 通过模拟独占设备的分配和回收,了解操作系统对设备资源组织管理和分 配、回收过程,掌握设备管理的思想。二实验任务 编程模拟满足设备独立性的独占设备的分配和回收。 三实验环境、设备硬件:586以上的PC系列机,主频大于166M,内存大于16MB,硬盘空闲空 间大于 500MB。软件:选择一个自己熟悉的计算机操作系统(如 DOS、 Windows982000XP、UNIX、linux 等,根据各学校的条件与环境而定)和程序设计语言(如 TurboC、C语言、PASCAL语言等)

2、。编程语言由各位同学自己选择确定,不做统一规定。四.实验指导(一)数据结构及算法操作系统设置“设备分配表”,用来记录计算机系统所配置的独占设备类型、 台数以及分配情况等。为了实现设备分配的独立性,一般设备分配表可以由“设 备类表”和“设备表”两部分组成。设备类表记录系统中的各类设备,每类设备占用一个登记栏,登记该类设备 的总台数、当前有几台设备空闲以及该类设备在设备表中的起始地址。每一台设 备在“设备表”中占用一个登记项,同类的若干台设备连续登记在设备表中。设备 表中登记每一台设备的绝对号、设备的好坏情况、设备是否分配、设备被哪一个 作业占用和设备相对号。设备类表设备类拥有设备台数现存好的设备

3、设备表相对地址输入机220打印机332磁盘445磁带机119设备表绝对号好/坏已/未分配占用作业名相对号1好未分配2好未分配3好未分配4好未分配5好未分配6好未分配7好未分配8好未分配9好未分配10好未分配在设备表中,用“1”表示设备好,用“0”表示设备坏;用“1”表示设备已分配, 用“0”表示设备末分配。设备类表的数据结构定义如下:#define n 4structchar type 4 ; /* 设备类名 */int count ; /* 拥有设备台数 */int remain ; /* 某类设备现存可用的台数 */int address ; /* 该类设备在设备表中的起始地址 */equ

4、iptypen/* 设备类表定义,假定系统有 n 个设备类型 * 设备表的数据结构定义如下:#define m 10structInt number ; /* 设备绝对号 */int stat us; /*设备好环状态,“o”表示设备坏;用“ l”表示设备好*/int remain; /*设备是否已分配,用“ 1”介表示已分配,用“o”表示末分配 */char jobname4; /*占有设备的作业名*/int inumber; /*设备相对号*/equipment m /*设备表定义,假定系统有m个设备*/当作业申请某类设备时,系统先查“设备类表”,如果该设备的现存台数可以 满足申请要求,则

5、从“设各类表”中得到该类设备的设备表起始地址,然后找到“设 备表”中该类设备的起始地址,依次查询该类设备的每一个登记项,找出“好的且 末分配”的设备分配给该作业.分配后要修改设备类表中的现存台数,把分配给该 作业的设备状态改为“已分配”,且填上占用该设备的作业的作业名和程序中定义 的相对号,最后,把设备的绝对号与相对号的对应关系通知用户.当作业运行完回收设备时,首先要查设备表,比较每一项,找到占用作业名 与运行完作业的作业名的一栏,将这一栏的“已未分配”置为“未分配”.然后将设备表中对应设备类的“现存台数”增1.实验中,首先要建立“设备类表”和“设备表”,假设系统的模拟设备如下表设备类表设备类

6、拥有设备台数现存好的设备设备表相对地址输入机220打印机332磁盘445磁带机119设备表绝对号好/坏已/未分配占用作业名相对号0好未分配1好未分配2好未分配3好未分配4好未分配5好未分配6好未分配7好未分配8好未分配9好未分配分配设备要求输入作业名、设备类名和相对号,回收设备要求输入作业名和 设备类名。(3)测试(运行时屏幕显示,红色字表示从键盘输入)0退出,1 一分配,2回收,3显示 选择功能项(0一3):3设备总量23空闲好设备23输出设备类表: 设备类型 input printerdisk44tape11输出设备表 绝对号0好坏1已未分配0占用作业名 相对号000退出,1 一分配,2回

7、收,3显示选择功能项(0-3): 1输人作业名、作业所需设备类和设备相对号JI ddd 2 无该类设备,设备分配失败0一退出, 1一分配, 2一回收, 3一显示 选择功能项(0-3): 1输人作业名、作业所需设各类和设备相对号JI input 1 分配成功 0-退出, 1一分配, 2一回收, 3一显示 选择功能项(0-3): 1输入作业名、作业所需设备类和设备相对号J2 input 3 分配成功0一退出, 1一分配, 2一回收, 3一显示 选择功能项(0-3): 1输人作业名、作业所需设各类和设备相对号JI input 2 该类设备不足,分配失败0一退出, 1一分配, 2一回收, 3一显示 选

8、择功能项(0-3): 1输入作业名、作业所需设备类和设备相对号JI Printer 1 分配成功0一退出, 1一分配, 2一回收, 3一显示 选择功能项(0一3): 1输入作业名、作业所需设备类和设备相对号JI Printer 2 分配成功0退出,1 一分配,2回收,3显示 选择功能项(0-3):1输入作业名、作业所需设备类和设备相对号J4 disk 1 分配成功0一退出,1一分配,2一回收,3一显示选择功能项(0一3):3输出设备类表:设备类型设备总量空闲好设备input20printer31disk43tape11输出设备表:绝对号好坏已未分配占用作业名相对号011J11111J23211

9、J11311J124100511J4161007100810091000一退出, 1一分配, 2一回收, 3一显示选择功能项(0一3):2输入作业名和作业归还的设备类JI disk该作业没有使用该类设备 0一退出, 1一分配, 2一回收, 3一显示选择功能项(0一3):2输入作业名和作业归还的设备类JI ddf无该类设备,设备回收失败0退出,1 一分配,2回收,3显示选择功能项(0-3):2输人作业名和作业归还的设备类JI printer 回收成功0一退出, 1一分配, 2一回收, 3一显示选择功能项(0-3):2输人作业名和作业归还的设备类JI input 回收成功0一退出,回一分配, 2一

10、回收, 3一显示选择功能项(0-3):2输人作业名和作业归还的设备类J4 disk 回收成功0一退出, 1一分配, 2一回收, 3一显示选择功能项(0-3):3输出设备类表:设备类型设备总量 空闲好设备input21printer32disk44tape11输出设备表绝对号 好坏已未分配占用作业名相对号010J11111J23210J11311J124100510J41610071000一退出,1一分配,2一回收,3一显示选择功能项(0一3):0五实验源代码#include#include#include#define false 0#define true 1#define n 4#defi

11、ne m 10struct/*设备类名*/*拥有设备台/*现存的可用/*该类设备在 char type10;int count;数*/int remain;设备台数*/int address;设备表中的起始地址*/equiptypen;/*设备绝对号*/*设备好坏状态/*设备是否已/*占有设备的/*设备相对号*/*设备表定义,/*查询该类设/*设备类表定义,假定系统有 n 个设备类型*/structint number;int status;*/int remain;分配*/char jobname4;作业名*/int lnumber;equipmentm;假定系统有 m 个设备*/alloc

12、ate(char *J,char *type,int cc)int i,t,j;备*/i=0;i+;if(i=n)/*没有找到该类设备*/printf(无该类设备,设备分配失败!);return(false);if(equiptypei.remain1)/*所需设备现存可用台数不足*/printf(该类设备不足,分配失败!);return(false);t=equiptypei.address;/* 取出该类设备在设备表中的起始地址*/while(!(equipmentt.status=1 & equipmentt.remain=0)t+;/*填写作业名、相对号,状态改为已分配*/equipmentt.remain=1; strcpy(equipmentt.jobname,J); equipmentt.lnumber=cc;/*设备分配函数结束*/ reclaim(char *J,char *type)int i,t,j,k,nn;i=0;while(i=n)/*没有找到该类设备*/prinf(无该类设备,设备回收失败!);return(false);/*取出该

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号