欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    操作系统实验六_设备管理(16页).doc

    • 资源ID:36340967       资源大小:230KB        全文页数:15页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    操作系统实验六_设备管理(16页).doc

    -操作系统课程报告实验六 设备管理学号 姓名 班级 教师 华侨大学电子工程系实验目的 1、 理解设备管理的概念和任务。2、 掌握独占设备的分配、回收等主要算法的原理并编程实现。 实验内容与基本要求 1、 在Windows系统中,编写程序实现对独占设备的分配和回收的模拟,该程序中包括:建立设备类表和设备表、分配设备和回收设备的函数。实验报告内容 1、 独占设备的分配、回收等主要算法的原理。为了提高操作系统的可适应性和可扩展性,现代操作系统中都毫无例外地实现了设备独立性,又叫做设备无关性。设备独立性的含义是:应用程序独立于具体使用的物理设备。 为了实现独占设备的分配,系统设置数据表格的方式也不相同,在实验中只要设计合理即可。这里仅仅是一种方案,采用设备类表和设备表。(1) 数据结构操作系统设置“设备分配表”,用来记录计算机系统所配置的独占设备类型、台数以及分配情况。设备分配表可由“设备类表”和“设备表”两部分组成,如下图:(2) 设备分配 当进程申请某类设备时,系统先查“设备类表”如果该类设备的现存台数可以满足申请要求,则从该类设备的“设备表”始址开始依次查该类设备在设备表中的登记项,找出“未分配”的设备分配给进程。分配后要修改设备类表中的现存台数,把分配给进程的设备标志改为“已分配”且填上占用设备的进程名。然后,把设备的绝对号与相对号的对应关系通知用户,以便用户在分配到的设备上装上存储介质。(3) 设备回收当进程执行结束撤离时应归还所占设备,系统根据进程名查设备表,找出进程占用设备的登记栏,把标志修改为“未分配”,清除进程名。同时把回收的设备台数加到设备类表中的现存台数中。2、 程序流程图。主程序流程图:设备分配:设备回收:3、 程序及注释。#include<stdio.h>#include<string.h>#include<stdlib.h>#define false 0#define true 1#define n 4/*宏定义,用于修改设备类型数目*/#define m 10/*宏定义,用于修改设备数目*/struct/*该结构体用于定义设备类表各信息*/char type10; /*设备类型名*/int count; /*拥有的设备总台数*/int remain; /*现存的可用设备台数*/int address; /*该类设备在设备表中的起始地址*/equiptypen;/*系统设备类型为n*/ struct/*该结构体用于定义设备表各信息*/int number; /*设备绝对编号*/int lnumber; /*设备相对编号*/int status; /*设备好坏状态*/int remain; /*设备是否已被分配*/char jobname4; /*占有设备的作业名*/equipmentm; /*系统设备数为m*/*子函数:作业设备分配*/ allocate(char *J,char *type,int cc)int i,t,j; i=0;while(i<n&&strcmp(equiptypei.type,type)!=0) /*查找欲申请分配的设备类型,strcmp函数用于比较equiptypei.type与type的大小,若相等则返回0*/i+;if(i>=n) /*若没有找到欲申请设备*/ printf("没有找到欲分配的设备,分配失败!"); return(false); if(equiptypei.remain<1) /*欲申请设备现存可用台数不足*/ printf("该类设备数量不足,分配失败!"); return(false); t=equiptypei.address; /* 取出该类设备在设备表中的起始地址赋给t*/while(!(equipmentt.status=1 && equipmentt.remain=0)t+; /*该设备类型起始地址加一*/equiptypei.remain-;/*剩余设备数减一*/equipmentt.remain=1;/*状态改为已分配*/strcpy(equipmentt.jobname,J);/*strcpy为字符串拷贝函数,把J中的字符串拷贝到equipmentt.jobname中*/equipmentt.lnumber=cc;/*设备相对号写入cc*/ /*子函数:作业设备回收*/ reclaim(char *J,char *type)int i,t,j,k,nn;i=0;while(i<n&&strcmp(equiptypei.type,type)!=0)/*查找欲申请归还的设备类型,strcmp函数用于比较equiptypei.type与type的大小,若相等则返回0*/i+;if(i>=n) /*若没有找到该类设备*/ printf("无该类设备,设备回收失败!");return(false); t=equiptypei.address; /*取出该类设备在设备表中的起始地址赋给t*/j=equiptypei.count; /*取出该类设备的数量赋给j*/k=0;nn=t+j;for(;t<nn;t+)if(strcmp(equipmentt.jobname,J)=0&&equipmentt.remain=1)/*若占用某个设备的作业与欲回收的作业相同且状态为已分配*/equipmentt.remain=0;/*则将其状态改为未分配*/k+;/*回收设备计数*/equiptypei.remain= equiptypei.remain+k;/*该类设备剩余设备数加k*/if(k=0)/*若回收设备计数值k为0,*/printf("本作业没有占用这类资源!/n"); /*主函数*/ void main( )char J4;int i,mm,a;char type10;printf("设备类初始化n ");for(i=0;i<4;i+) /*输入设备类表初始信息*/printf("请输入相应设备名称:"); scanf("%s",&equiptypei.type); printf("请输入相应设备的数量:"); scanf("%d",&equiptypei.count); printf("请输入当前空闲设备数量:"); scanf("%d",&equiptypei.remain); printf("请输入设备表起始地址:"); scanf("%d",&equiptypei.address);for(i=0;i<10;i+) /*初始化设备表*/equipmenti.number=i;equipmenti.status=1;equipmenti.remain=0;while(1)printf("n0-退出,1-分配,2-回收,3-显示");/*功能选择界面*/ printf("n请选择功能(0-3):"); scanf("%d",&a); switch(a) case 0 : /*a=0程序结束*/ exit(0); case 1 : /*a=1分配设备*/ printf("请输入作业名、作业所需设备类型和设备相对号n"); scanf("%s%s%d",J,type,&mm); allocate(J,type,mm); /*分配设备*/ break; case 2: /*a=2回收设备*/ printf("请输入作业名和作业归还的设备类n"); scanf("%s%s",J,type); /*输入要回收的作业名及对应的设备类*/ reclaim(J,type); /*回收设备*/ break; case 3: /*a=3 输出设备类表和设备表的内容*/ printf("输出设备类表!n"); /*输出设备类表内容*/ printf(" 设备类型 设备总量 空闲好设备 起始地址n"); for(i=0;i<n;i+)printf("%9s%16d%22d%14dn",equiptypei.type,equiptypei.count,equiptypei.remain,equiptypei.address); printf("输出设备表:n"); /*输出设备表内容*/ printf("绝对号 好/坏 已/未分配 占用作业名 相对号n"); for(i=0;i<m;i+)printf("%3d%11d%15d%15s%9dn",equipmenti.number,equipmenti.status,equipmenti.remain,equipmenti.jobname,equipmenti.lnumber); 4、 运行结果以及结论。初始化输入:设备分配:设备回收:可见在设备b回收j1后,设备b的已/未分配变为了0.-第 15 页-

    注意事项

    本文(操作系统实验六_设备管理(16页).doc)为本站会员(1595****071)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开