版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计题目:独占设备的分配与回收问题描述:为了使系统有条不紊地工作,系统在分配设备是,应考虑这样几个因素:①设备的固有属性;②设备分配算法;③设备分配时的安全性④设备独立性;系统也要通过回收,实现设备的再分配。要求:设备分配在计算机系统中,设备、控制器和通道等资源是有限的,并不是每个进程随时都可以得到这些资源。进程首先要向设备管理程序提出申请,然后由设备管理程序按照一定的分配算法给进程分配必要的资源。如果进程的申请没有成功,就要在资源的等待队列中排队等待,直到获得所需的资源。考虑设备的特性和安全性。设备的特性是设备本身固有的属性,一般分为独占、共享和虚拟设备等。1、设计任务分析:独占设备的分配与虚拟设备独占设备每次只能分配给一个进程使用使用特性隐含着死锁的必要条件,所以在考虑独占设备的分配时,一定要结合有关防止和避免死锁的安全算法。2、设计方案论证:为了提高OS的可适应性和可扩展性OS中毫无例外地实现了设备的独立性,即使应用程序独立于具体使用的物理设备。在实现了设备独立性的功能后,可以带来两方面的好处:(1)设备分配时的灵活性;(2)易于实现I/O重定向。3、详细设计通过此系统可以实现如下功能:分配,回收,显示,退出。选择独占设备,通过执行功能项,输出设备表,实现设备的分配与回收。4、源代码清单:#definefalse0#definetrue1#definen4#definem10struct{chartype[10];/*设备类名*/intcount;/*拥有设备台数*/intremain;/*现存的可用设备台数*/intaddress;/*该类设备在设备表中的起始地址*/}equiptype[n];/*设备类表定义,假定系统有n个设备类型*/struct{intnumber;/*设备绝对号*/intstatus;/*设备好坏状态*/intremain;/*设备是否已分配*/charjobname[4]占有设备的作业名*/intlnumber;/*设备相对号*/}equipment[m];/*设备表定义,假定系统有m个设备*/allocate(J,type,mm)char*Jtype;intmm;{inti,t,j;/*查询该类设备*/i=0;while(i<n&&strcmp(equiptype[i].type,type)!=0)i++;if(i>=n)/*没有找到该类设备*/{printf("无该类设备,设备分配失败");return(false);}if(equiptype[i].remain<1)/*所需设备现存可用台数不足*/{printf("该类设备不足,分配失败");return(false);}t=equiptype[i].address;/*取出该类设备在设备表中的起始地址*/while(!(equipment[t].status==1&&equipment[t].remain==0t++;/*填写作业名、相对号,状态改为已分配*/equiptype[i].remain--;equipment[t].remain=1;strcpy(equipment[t].jobname,J);equipment[t].lnumber=mm;}/*设备分配函数结束*/reclaim,type)charJ,type;{inti,t,j,k,nn;i=0;while(i<n&&strcmp(equiptype[.type,type)!=0)i++;if(i>=n)/*没有找到该类设备*/{printf("无该类设备,设备回收失败");return(false);}t=equiptype[i].address;/*取出该类设备在设备表中的起始地址*/j=equiptype[i].count;/*取出该类设备的数量*/k=0;nn=t+j;for(;t<nn;t++)if(strcmp(equipment[t].jobname,J)==0&&equipment[t].remain==1){equipment[t].remain=0;k++;}equiptype[i].remain=equiptype[i].remain+k;if(k==0)printf("该作业没有使用该类设备\n}/*设备回收函数结束*/main(){charJ[4];inti,mm,a;chartype[10];/*设备类表初始化:*/strcpy(equiptype[0].type,"input");输入机*/equiptype[0].count=2;equiptype[0].remain=2;equiptype[0].address=0;strcpy(equiptype[1].type,"printer");/*打印机*/equiptype[1].count=3;equiptype[1].remain=3;equiptype[1].address=2;strcpy(equiptype[2].type,"disk");磁盘机*/equiptype[2].count=4;equiptype[2].remain=4;equiptype[2].address=5;strcpy(equiptype[3].type,"tape磁带机*/equiptype[3].count=1;equiptype[3].remain=1;equiptype[3].address=9;/*设备表初始化:*/for(i=0;i<10;i++){equipment[i].number=i;equipment[i].status=1;equipment[i].remain=0;}while(1){printf("\n0-退出,1-分配,2-回收,3-显示");printf("\n选择功能项(0~3):");scanf("%d",&a);switch(a){case0:/*a=0程序结束*/exit(0);case1:/*a=1分配设备*/printf("输入作业名、作业所需设备类和设备相对号");scanf("%s%s%d",J,type,&mm);allocate(J,type,mm);/*分配设备*/break;case2:/*a=2回收设备*/printf("输入作业名和作业归还的设备类");scanf("%s%s",J,type);reclaim(J,type);/*回收设备*/break;case3:/*a=3输出设备类表和设备表的内容*/printf("\n输出设备类表\nprintf("设备类型设备总量空闲好设备\n");for(i=0;i<n;i++)printf("%9s%8d%9d\n"quiptype[i].type,equiptype[i].count,equiptype[i].remain);printf("输出设备表:\n");printf("绝对号好坏已未分配占用作业名相对号;for(i=0;i<m;i++)printf("%3d%8d%9d%12s%8d\n",equipment[.number,equipment[i].statusipment[i].remaiquipment[i].jobname,equipment[i].lnumber);}}}运行结果:该程序模拟独占设备的分配和回收,其中,独占设备分别为input(输入机printer(打印机disk(磁盘机tape(磁带机)输出设备类表:23412341tape注:设备总量为10输出设备表:绝对号好坏已未分配占用作业名相对号01234567891111111111000000000000000000000000000000注:⑴绝对号为设备的标号,根据设备类型的不同与数量,其中,0~1为input,2~4为printer,5~8为disk,9为tape⑵默认1为设备状态“好”0为该设备未分配0为默认的作业名0为设备的相对号程序运行后可以看到如下要求:0-退出,1-分配,2-回收,3-显示选择功能项(0~3此时要求输入相应的功能选项,此处我使用disk(磁盘机)分配和回收做演示:(以下为程序调试结果页面)0退出,1-分配,2-回收,3-显示选择功能项(0~31输入作业名,作业所需设备类和设备相对号xyzDisk2(注:设备类只能是程序所提供的四种独占设备,当输入不合法或不存在的设备类后,会提示“无该类设备,设备分配失败输入时使用回车分隔,设备相对号只是一种逻辑上的划分,可以重复,前提是该类独占设备还有空闲资源)0退出,1-分配,2-回收,3-显示选择功能项(0~33输出设备类表:设备类型设备总量空闲好设备Input23412301Printertape输出设备表:绝对号好坏已未分配占用作业名相对号012345678911111111110000010000000000213200000CcyTtHbJl00退出,1-分配,2-回收,3-显示选择功能项(0~31输入作业名,作业所需设备类和设备相对号xbDisk2该类设备不足,分配失败0退出,1-分配,2-回收,3-显示选择功能项(0~32输入作业名和作业归还的设备类jlDisk0退出,1-分配,2-回收,3-显示选择功能项(0~33输出设备类表:设备类型设备总量空闲好设备Input23412311PrinterDisktape输出设备表:绝对号好坏已未分配占用作业名相对号012345678911111111110000010000000000213200000CcyTtHbJl00退出,1-分配,2-回收,3-显示选择功能项(0~31输入作业名,作业所需设备类和设备相对号xbDisk20退出,1-分配,2-回收,3-显示选择功能项(0~33输出设备类表:23412301Printertape输出设备表:绝对号好坏已未分配占用作业名相对号012345678911111111110000010000000000213200000CcyTtHbXb0以上的演示实现了disk独占设备的分配,由于设备不足无法分配后,通过设备的回收,再实现设备的分配。其余的独占设备也类似disk磁盘演示。在本次设计中,要求重点掌握独
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年版企业内部劳动协议管理规则版B版
- 2024全新诊所护士人才引进与培养合同3篇
- 2024年城市配送协议
- 2025婚车租赁合同(版)
- 2025劳务用工合同范本(标准版)
- 长期购销协议
- 护理专业教师招聘协议
- 2025认证咨询合同范文
- 租赁保函协议书
- 屋顶废弃物处理租赁合同
- 乐高——人形机器人搭建(图2)
- 强夯试夯报告(共12页)
- 员工上下班个人签到表
- loveyourself歌词
- 第四军医大学口腔医院进修生申请表
- Be-what-u-wanna-be-歌词
- 烧碱在不同温度下的密度不同温度下盐水的比重表
- 初中英语试卷讲评课PPT课件
- 摩托罗拉saber军刀写频简易教程.
- 梁预制安装施工方案
- 卷内目录(标准模版)
评论
0/150
提交评论