版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验九 独占设备的分配和回收模拟(综合性编程实验4学时)(本次作业要交,交作业时间:第15周上机课前)一.目的要求通过模拟独占设备的分配和回收,了解操作系统对设备资源组织管理和分 配、回收过程,掌握设备管理的思想。二.实验任务编程模拟满足设备独立性的独占设备的分配和回收。三.实验环境、设备硬件:586以上的PC系列机,主频大于166M,内存大于16MB,硬盘空闲空 间大于500MBo软件:选择一个自己熟悉的计算机操作系统(如DOS、Windows98 / 2000 / XP、UNIX、linux等,根据各学校的条件与环境而定)和程序设计语言(如Turbo C、C语言、PASCAL语言等)。编程
2、语言由各位同学自己选择确定,不做统一规定。四.实验指导(一)数据结构及算法操作系统设置“设备分配表“,用来记录计算机系统所配置的独占设备类型、 台数以及分配情况等。为了实现设备分配的独立性,一般设备分配表可以由'设 备类表”和“设备表”两部分组成。设备类表记录系统中的各类设备,每类设备占用一个登记栏,登记该类设备 的总台数、当前有几台设备空闲以及该类设备在设备表中的起始地址。每一台设 备在“设备表”中占用一个登记项,同类的若干台设备连续登记在设备表中。设备 表中登记每一台设备的绝对号、设备的好坏情况、设备是否分配、设备被哪一个 作业占用和设备相对号。设备类表设备类拥有设备台数现存好的设
3、备设备表相对地址输入机220打印机332磁盘445磁带机II9设备表绝对号好/坏已/未分配占月作业名相对号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; /*该类设备在设备表中的起始地址*/equiptypen/*设备
4、类表定义,假定系统有n个设备类型*/设备表的数据结构定义如下:#define m 10structInt number; /*设备绝对号*/int status; /*设备好环状态,表示设备坏;用“ 1”表示设备好*/int remain; /*设备是否已分配,用“ 1”介表示已分配,用“。”表示末分配 */char jobname 4; /*占有设备的作业名*/int inumber; /*设备相对号*/equipment m /*设备表定义,假定系统有m个设备*/当作业申请某类设备时,系统先查“设备类表”,如果该设备的现存台数可以 满足申请要求,则从“设各类表”中得到该类设备的设备表起始地
5、址,然后找到“设 备表”中该类设备的起始地址,依次查询该类设备的每一个登记项,找出“好的且 末分配”的设备分配给该作业.分配后要修改设备类表中的现存台数,把分配给该 作业的设备状态改为“已分配”,且填.上占用该设备的作业的作业名和程序中定义 的相对号,最后,把设备的绝对号与相对号的对应关系通知用户.当作业运行完回收设备时,首先要查设备表,比较每一项,找到占用作业名 与运行完作业的作业名的一栏,将这一栏的“已/未分配”置为“未分配”.然后将设备表中对应设备类的“现存台数”增L实验中,首先要建立“设备类表''和“设备表”,假设系统的模拟设备如下表:设备类表设备类拥有设备台数现存好的
6、设备设备表相对地址输入机220打印机332磁盘445磁带机119设备表绝对号好/坏已/未分配占用作业名相对号0好未分配1好未分配2好未分配3好未分配4好未分配5好未分配6好未分配7好未分配8好未分配9好未分配分配设备要求输入作业名、设备类名和相对号,回收设备要求输入作业名和 设备类名。(3)测试(运行时屏幕显示,红色字表示从键盘输入)0一退出,1 一分配,2一回收,3显示选择功能项(03): 3输出设备类表:设备类型 设备总量空闲好设备input22printer33disk44tape11输出设备表:占用作业名相对号绝对号好/坏 已/未分配01021003100410051006100710
7、081009100一退出,1 一分配,2一回收,3一显示选择功能项(0-3): 10输人作业名、作业所需设备类和设备相对号JIddd 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一显示选择功能项(03): 1输入作业名、作业所需设备类和设备相对号JI Printer 2 分配成功0一退出,1 一分配,2一回收,3显示选择功能项(0-3): 1输入作业名、作业所需设备类和设备相对号J4 disk 1 分配成功0一退出,1 一分配,2一回收,3一显示选择功能项(03): 3输出设备类表:设备类型设备总量空闲好设备input20printer31disk43tape11输出设备表:绝对号好/坏已/未分配占用作业名相对号011J11111J
9、23211J11311J124100511J4161007100810091000一退出,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输人作业名和作业归还的设备类M disk 回收成功0一退出,1 一分配,2一回收,3一显示选择功能项(0-3): 3输出设备类表:设备类型设备总量空闲好设备input21printer32disk44tape11输出设备表:绝对号 好/坏已/未分配占用作业名相对号010J111 11J23210J11311J124100510J41610071000一退出,1 一分配,2一回收,3一显示选择功能项S3): 0五.实验源代码#include<stdio.h>#include<string.h>#include<stdlib.h&
11、gt;#define false 0#define true 1#define n 4#define m 10struct/*设备类名7拥有设备台/*现存的可用/*该类设备在 char type10;int count;数7int remain;设备台数*/int address;设备表中的起始地址*/) equiptypen;/*设备绝对号*/*设备好坏状态/*设备是否已/*占有设备的/*设备相对号7设备表定义,/设备类表定义,假定系统有n个设备类型/struct(int number;int status;*/int remain;分配*/char jobname4;作业名7int Inu
12、mber;)equipmentm;假定系统有m个设备/allocate(char *J,char *type,int cc)int/*查询该类设备7i=0;while(i<n&&strcmp(equiptypei.type,type)!=O)i+;if(i>=n)/* 没有找到该类设备7(printf("无该类设备,设备分配失败巧;return(false);)if(equiptypei.remain<1)/*所需设备现存可用台数不足7(printf("该类设备不足,分配失败!”);return(false);)t=equiptypei.a
13、ddress;/*取出该类设备在设备表中的起始地址,/while(!(equipmentt.status=1 && equipmentt.remain=O)t+;/*填写作业名、相对号,状态改为已分配/equiptypei.remain-;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&&strcmp(equiptypei.ty
14、pe,type)!=O)i+;if(i>=n)没有找到该类设备7(printf("无该类设备,设备回收失败!)retum(false);/取出该类t=equiptypei.address;设备在设备表中的起始地址/j=equiptypei.count;/* 取出该类设备的数量*/k=0;nn=t+j;for(;t<nn;t+)if(strcmp(equipmentt jobname, J)=0&&equipmentt.remain=1)(equipmentt.remain=O;k+;)equiptypei.remain= equiptypei.remain
15、+k;if(k=O)printf(nThe jop havenft use this kind of equitmenttype!/nH);)/*设备回收函数结束*/void main()char J4;char type10;printf("设备类初始化:(请输入相应设备的数量,当前空闲设备数量,设备表起始地址八n ”);for(i=0;i<4;i+)设备类表初始化:*/printf("请输入相应设备名称:”);scanf("%s",&equiptypei.type);printf(”请输入相应设备的数量:");scanf(&q
16、uot;%d",&equiptypei.count);printf(”请输入当前空闲设备数量:scanf("%d",&equiptypei.remain);printf("请输入设备表起始地址:");scanf("%d",&equiptypei.address);for(i=0;i<10;i+)/* 设备表初始化:*/(equipment。.number二i;equipmenti.status=1;equipmenti.remain=O;while(1)printf”nO 退出,1 分配2回收,
17、3 显示”);printf("n 选择功能项。3):");scanf(',%d',&a);switch(a)(case 0 :/*a=0程序结束7exit(O);case 1 :/*a=1分配设备”/printf("输入作业名、作业所需设备类和设备相对号n”);scanf("%s%s%d"JJ,type,&mm);allocated,type,mm);/* 分配设备/break;case 2/*a=2回收设备7printf("输入作业名和作业归还的设备类n");scanf("%s%sM,J,type);输入要回收的作业名及对应的设备类*/设备/reclaim(J,type);/回收break;3:case/七二3输出设备类表和设备表的内容7printf(“输出设备类表!n");/输出设备类表内)phntf(n设备类型设备总量空闲好设备n“);for(i=0;i<n;i+)printf(,%9s%16d%22d%14dn,t,equipty
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 现代办公事务处理任务十一拟写洽谈接待计划
- 一背肌二胸肌三膈四腹肌五盆部肌第三节躯干
- 土壤三普分析培训
- 《咨询行业研究》课件
- 团队凝聚力培训
- MBA领导力培训课程
- 《女子体育卫生》课件
- 《电工基本知识》课件
- 《光电发射器件》课件
- 妊娠糖尿病护理知识
- 可随意编辑【封面+简历+自荐信】淡雅欧美花纹古典求职个人简历
- 部编版四年级上册语文第二十六课《西门豹治邺》课文原文及练习题
- 卫生院紫外线消毒登记表
- 2023江苏“小高考”(化学)(2023江苏省普通高中学业水平测试-化学)
- 混凝土结构设计原理课程设计报告报告
- 财经应用文写作教案
- 发动机的构造知识课件
- 干细胞治疗讲稿
- 孤独症精品课件
- DB13T 1349-2010 超贫磁铁矿勘查技术规范
- 新教材教科版六年级上册科学全册单元测试卷(含期中期末试卷)
评论
0/150
提交评论