操作系统实验六_设备管理
操作系统第6章(设备管理习题与解答)

第6章设备管理习题与解答6.1 例题解析例6.2.1 何谓虚拟设备?请说明SPOOLing系统是如何实现虚拟设备的。
解本题的考核要点是虚拟设备的实现方法。
虚拟设备是指利用软件方法,比如SPOOLing系统,把独享设备分割为若干台逻辑上的独占的设备,使用户感受到系统有出若干独占设备在运行。
当然,系统中至少一台拥有物理设备,这是虚拟设备技术的基础。
SPOOLing系统又称“假脱机I/O系统”,其中心思想是,让共享的、高速的、大容量外存储器(比如,磁盘)来模拟若干台独占设备,使系统中的一台或少数几台独占设备变成多台可并行使用的虚拟设备。
SPOOLing系统主要管理外存上的输入井和输出井,以及内存中的输入缓冲区和输出缓冲区。
其管理进程主要有输入和输出进程,负责将输入数据装入到输入井,或者将输出井的数据送出。
它的特点是:提高了 I/O操作的速度;将独占设备改造为共享设备;实现了虚拟设备功能。
例 6.2.2 有关设备管理要领的下列叙述中,( )是不正确的。
A.通道是处理输入、输出的软件B.所有外围设备都由系统统一来管理C.来自通道的I/O中断事件由设备管理负责处理D.编制好的通道程序是存放在主存贮器中的E.由用户给出的设备编号是设备的绝对号解本题的考核要点是设备管理的基本概念。
(1) 通道是计算机上配置的一种专门用于输入输出的设备,是硬件的组成部分。
因此A是错误的。
(2) 目前常见I/O系统其外部设备的驱动和输入输出都由系统统一管理。
因此B是对的。
(3) 设备管理模块中的底层软件中配有专门处理设备中断的处理程序。
通道中断属于设备中断的一种。
因此C是对的。
(4) 通道设备自身只配有一个简单的处理装置(CPU),并不配有存储器,它所运行的通道程序全部来自内存。
因此D是对的。
(5) 系统在初启时为每台物理设备赋予一个绝对号,设备绝对号是相互独立的。
由用户给出的设备号只能是逻辑编号,由系统将逻辑号映射为绝对号。
因此E是错误的。
操作系统实验

操作系统实验操作系统实验是计算机科学与技术领域非常重要的一门实验课程。
通过操作系统实验,学生可以深入了解操作系统的基本原理和实践技巧,掌握操作系统的设计和开发方法。
本文将介绍操作系统实验的一般内容和实验室环境要求,并详细说明一些常见的操作系统实验内容。
一、实验内容1. 实验环境搭建:操作系统实验通常在实验室中进行。
为了完成实验,学生需要搭建一个操作系统实验环境。
实验环境通常由一个或多个计算机节点组成,每个计算机节点需要安装操作系统实验所需要的软件和驱动程序。
2. 操作系统整体结构分析:学生首先需要通过文献研究和课堂学习,了解操作系统的整体结构和基本原理。
在实验中,学生需要分析和理解操作系统的各个模块之间的功能和相互关系。
3. 进程管理实验:进程是操作系统中最基本的运行单位。
在这个实验中,学生可以通过编写程序并使用系统调用来实现进程的创建、销毁和调度。
学生需要熟悉进程状态转换和调度算法,理解进程间通信和同步机制。
4. 内存管理实验:内存管理是操作系统中非常重要的一个模块。
学生需要实现虚拟内存管理、页面置换算法以及内存分配和回收策略。
通过这个实验,学生可以深入了解虚拟内存管理的原理和实际应用。
5. 文件系统实验:文件系统是操作系统中负责管理文件和目录的模块。
在这个实验中,学生需要实现基本的文件系统功能,如文件的创建、读取和修改。
学生还可以实现进程间的文件共享和保护机制。
6. 设备管理实验:设备管理是操作系统中与硬件设备交互的一个重要模块。
在这个实验中,学生需要实现设备的初始化、打开和关闭功能。
学生还可以实现设备驱动程序,完成对硬件设备的控制。
二、实验室环境要求1. 计算机硬件:实验室需要配备一定数量的计算机节点。
每个计算机节点需要具备足够的计算能力和内存容量,以满足操作系统实验的要求。
2. 操作系统软件:实验室中的计算机节点需要安装操作系统软件,通常使用Linux或者Windows操作系统。
此外,还需要安装相关的开发工具和编程语言环境。
实验六设备管理

操作系统实验实验六设备管理学号 02姓名蔡凤武班级电子A班华侨大学电子工程系实验目的1、理解设备管理的概念和任务。
2、掌握独占设备的分配、回收等主要算法的原理并编程实现。
实验内容与基本要求在Windows系统中,编写程序实现对独占设备的分配和回收的模拟,该程序中包括:建立设备类表和设备表、分配设备和回收设备的函数。
实验报告内容1、独占设备的分配、回收等主要算法的原理。
2、程序流程图。
3、程序及注释。
4、运行结果以及结论。
独占设备的主要算法的原理为了提高操作系统的可适应性和扩展性,现代操作系统中都毫无例外地实现了设备独立性,又叫做设备无关性。
设备独立性的含义是:应用程序独立于具体使用的物理设备。
设备分配:1)当进程申请某类设备时,系统先查“设备类表”。
2) 如果该类设备的现存台数可以满足申请要求,则从该类设备的“设备表”始址开始依次查该类设备在设备表中的登记项,找出“未分配”的设备分配给进程。
3)分配后要修改设备类表中的现存台数,把分配给进程的设备标志改为“已分配”且填上占用设备的进程名。
4)然后,把设备的绝对号与相对号的对应关系通知用户,以便用户在分配到的设备上装上存储介质。
设备回收:作业运行完成,释放设备时,系统首先要查看设备表,比较每一项,找到占用作业名与运行完作业的作业名相同的栏目,将这一栏的“已/未分配”设置为“未分配”,然后将设备表中对应设备类的可使用数量增加1.初始化设备类表流程图源程序#include<> #include<>#include<>#define false 0#define true 1#define n 4#define m 10struct{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个设备*/ype,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==0)) tatus==1) || !(equipment[t].remain==0)表示设备不是好的或者已分配t++;/*填写作业名、相对号,状态改为已分配*/equiptype[i].remain--;equipment[t].remain=1;strcpy(equipment[t].jobname,J);equipment[t].lnumber=mm;return(true);}/*设备分配函数结束*/ype,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");return (true);}/*设备回收函数结束*/void main( ){char J[4];int i,mm,a;char type[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){case 0 : /*a=0程序结束*/exit(0);case 1 : /*a=1分配设备*/printf("输入作业名、作业所需设备类和设备相对号");scanf("%s%s%d",J,type,&mm);allocate(J,type,mm);/*分配设备*/break;case 2: /*a=2回收设备*/printf("输入作业名和作业归还的设备类");scanf("%s%s",J,type);reclaim(J,type);/*回收设备*/break;case 3: /*a=3 输出设备类表和设备表的内容*/printf("\n输出设备类表\n");printf(" 设备类型设备总量空闲好设备\n");for(i=0;i<n;i++)printf("%9s%8d%9d\n",equiptype[i].type,equiptype[i].count,equiptype[i].remain);printf("输出设备表:\n");printf("绝对号好/坏已/未分配占用作业名相对号\n");for(i=0;i<m;i++)printf("%3d%8d%9d%12s%8d\n",equipment[i].number,equipment[i].status,equipment[i].remain,equipment[i].jobname,equipment[i].lnumb er);}}}运行结果界面:选择功能1 分配选择功能3 显示选择功能2 回收结论经过这次试验,使我理解了设备管理的概念,基本掌握了独占设备的分配、回收等主要算法的编程实现,明白了独占设备的分配、回收等主要算法的原理,对操作系统有了更深的理解。
操作系统设备管理练习及答案讲解学习

操作系统设备管理练习及答案设备管理练习题(一)单项选得题1.磁盘机属于( )。
A字符设备 B.存储型设备 c.输入输出型设备 D.虚拟设备2.对存储型设备,输入输出操作的信息是以( )为单位传输的。
A.位 B.字节 C.字D.块3.对输入输出设备,输入输出操作的信息传输单位为( )。
A.位 B.字符 C字 D.块4.在用户程序中通常用( )提出使用设备的要求。
A.设备类、相对号 B.设备的绝对号c.物理设备名 D.虚拟设备名5.使用户编制的程序与实际使用的物理设备无关是由( )功能实现的。
A.设备分配 B.设备驱动 c.虚拟设备 D.设备独立性6.启动磁盘执行—次输入输出操作时,( )是硬件设计时就固定的。
A寻找时间 B.延长时间 c.传送时间 D.一次I/O操作的总时间7 ( )调度算法总是从等待访问者中挑选时间最短的那个请求先执行。
A.先来先服务B.最短寻找时间优先 c.电梯 D单向扫描8.通道是一种( )。
A. I/O设备 B.设备控制器c.I/O处理机 D.I/O控制器9.操作系统设置( ),用来记录计算机系统所配置的独占设备类型、台数和分配情况 A.设备分配表 B.设备类表 c设备表 D.设备控制表10.设备的独立性是指( )。
A.设备具有独立执行I/O功能的一种特性 B.用户程序使用的设备与实际使用哪台设备无关的一种特性 c能独立实现设备共享的一种特性 D.设备驱动程序独立于具体使用的物理设备的一种特性11.( )总是从移动臂当前位置开始沿着臂的移动方向去选择离当前移动臂最近的那个柱面的访问者,若沿臂的移动方向无请求访问时,就改变臂的移动方向再选择。
A.先来先服务调度算法 B.最短寻找时间优先调度算法 c.电梯调度算法 D.单向扫描调度算法12.( )是用来存放通道程序首地址的主存固定单元。
A.Psw(程序状态字) B.CcW(通道命令) c.CAw(通道地址字) D.CSW(通道状态字)13.中央处理器执行用户提出的“请求启动外设”的要求时,会产生一个( )。
设备管理系统分组实验报告

设备管理系统分组实验报告
实验名称:设备管理系统分组
实验目的:
1.了解设备管理系统的分组功能;
3.学习如何将设备进行分组管理。
实验步骤:
1.登录设备管理系统账号;
2.打开设备管理系统界面,找到分组管理功能;
3.点击创建新分组,输入分组名称和描述信息;
4.确认创建,系统会自动创建一个新的分组;
6.点击删除分组,系统会要求确认删除分组;
7.在分组管理界面,可以看到已创建的分组列表;
8.在分组列表中选择一个分组,点击进入该分组的设备列表;
9.在设备列表中,可以选择需要加入该分组的设备,点击确认;
10.设备成功加入分组后,可以在设备管理界面中找到该分组。
实验结果:
实验总结:
在实验过程中,我们还学习了如何将设备加入分组。
通过选择需要加入分组的设备,可以快速将设备归类管理。
这样一来,我们可以更好地掌控设备的工作状态和运行情况,提高了设备的运维管理能力。
综上所述,设备管理系统的分组功能对于设备管理十分重要。
通过分组功能,我们可以更好地对设备进行分类和管理,提高了设备管理的效率和可靠性。
在今后的实际工作中,我们将充分利用设备管理系统的分组功能,对设备进行科学、有效的管理。
操作系统实验教程

操作系统实验教程一、实验原理和环境搭建(大约200字)在开始实验之前,学生需要了解操作系统的基本原理,包括进程管理、文件管理、内存管理、设备管理等。
同时,需要搭建一个合适的实验环境,可以选择使用虚拟机软件搭建一台虚拟机,并安装一个操作系统作为实验环境。
二、实验内容和步骤(大约500字)1.进程管理实验:学生可以编写一个简单的多进程程序,用于展示进程的创建、调度和终止过程。
学生需要了解进程状态的转换和调度算法,例如FCFS、SJF、RR等。
实验的步骤包括定义进程控制块、创建进程、调度进程以及进程间的通信与同步。
2.文件管理实验:学生可以编写一个简单的文件管理系统,实现文件的创建、打开、读写和关闭等基本操作。
学生需要了解文件的组织方式、目录结构以及文件的读写权限等。
实验的步骤包括设计文件系统的结构、实现文件的创建和打开、实现文件的读写和关闭。
3.内存管理实验:学生可以编写一个简单的内存管理程序,模拟操作系统的内存分配和释放过程。
学生需要了解内存的组织方式、分页和分段机制以及虚拟内存管理等。
实验的步骤包括设计内存管理的数据结构、实现内存的分配和释放以及处理内存碎片等。
4.设备管理实验:学生可以编写一个简单的设备管理程序,模拟操作系统的设备分配和使用过程。
学生需要了解设备的组织方式、设备驱动程序以及设备中断处理等。
实验的步骤包括定义设备控制块、实现设备的分配和释放、处理设备中断以及设备的并发访问控制等。
三、实验结果和分析(大约300字)在完成实验后,学生需要对实验结果进行分析和总结。
他们可以关注实验中遇到的问题、解决问题的方法和改进的方向。
同时,还应该对实验的原理和实现进行评估和比较,以加深对操作系统的理解。
四、实验报告撰写(大约200字)每个实验都需要撰写实验报告,报告应包括实验目的、实验环境、实验内容、实验步骤、实验结果和分析等部分。
学生需要清晰地描述实验过程和思路,并附上相关的代码和截图。
报告应该具备清晰、准确和完整的特点,并体现出学生的思考和改进。
计算机系统管理操作规程与设备管理

计算机系统管理操作规程与设备管理一、引言计算机系统在现代工作环境中扮演着重要角色,其稳定和高效运行对企业的正常运作至关重要。
为了确保计算机系统的良好管理和设备的有效维护,制定一套操作规程和设备管理措施是必不可少的。
本文将详细介绍计算机系统管理操作规程以及设备管理的重要性和具体要求。
二、计算机系统管理操作规程1. 规范开机和关机程序为确保计算机系统的正常运行,开机和关机的程序应按照以下步骤进行:(1) 开机前检查电源、显示器、键盘等设备是否正常连接;(2) 按照指定顺序开启计算机系统;(3) 关机前先关闭所有运行的程序和文件,确保数据保存完整;(4) 按照规定的步骤关闭计算机系统。
2. 确保系统安全(1) 定期更新和安装系统和应用程序的安全补丁;(2) 安装安全防护软件,并定期更新病毒库;(3) 设置强密码,并定期更换密码;(4) 禁止非授权人员访问和更改系统设置。
3. 数据备份与恢复(1) 定期备份重要数据,并将备份文件储存在安全的地方;(2) 定期测试备份文件的有效性,确保能够正常恢复数据;(3) 灾难恢复计划,针对系统故障或灾难情况,建立有效的恢复计划。
4. 用户权限管理(1) 限制用户账号的权限,确保只有合适的人员可以进行特定操作;(2) 管理和审查用户账号,及时注销离职员工的账号;(3) 实施强制访问控制,只允许授权用户访问敏感信息。
三、设备管理1. 设备分类和登记(1) 将所有计算机设备进行分类,包括服务器、个人电脑、打印机等;(2) 编制设备登记册,记录设备的基本信息,包括设备型号、序列号、购买日期等;(3) 定期检查设备状态,清理设备内部灰尘,确保设备良好运行。
2. 设备维护与保养(1) 建立设备维护计划,包括定期清洁设备外壳、更换耗材、检查设备温度等;(2) 对于设备故障,及时维修或更换;(3) 提供合适的设备保养指南给用户,教育用户正确使用设备。
3. 设备报废与更新(1) 对于老旧设备,建立报废程序,包括设备清理、数据安全处理等;(2) 定期评估设备的性能和使用情况,制定合理的设备更新计划;(3) 对于设备更新,确保与系统要求兼容,同时进行测试和数据迁移。
计算机操作系统设备管理

计算机操作系统设备管理计算机操作系统是一种控制和管理计算机硬件和软件资源的系统软件。
在计算机操作系统中,设备管理是其中一个重要的部分,它负责管理计算机系统中的各种硬件设备,如磁盘、打印机、键盘、鼠标等。
设备管理的主要任务是对这些硬件设备进行有效地分配和控制,以满足用户的需求,提高系统的效率和性能。
设备管理的基本概念包括设备的抽象、设备的分配和设备的控制。
设备的抽象是指将设备的物理特性抽象成逻辑特性,使得用户和应用程序可以通过逻辑接口来访问设备,而不需要了解设备的具体硬件特性。
设备的分配是指对系统中的设备资源进行合理的分配和调度,以满足用户和应用程序的需求。
设备的控制是指对设备的操作和状态进行有效地控制和管理,以确保设备的正常工作和系统的稳定性。
在计算机操作系统中,设备管理主要包括设备的初始化、设备的分配和设备的控制三个方面。
设备的初始化是指在系统启动时对设备进行初始化和检测,以确保设备的正常工作。
设备的分配是指对系统中的设备资源进行分配和调度,以满足用户和应用程序的需求。
设备的控制是指对设备的操作和状态进行控制和管理,以确保设备的正常工作和系统的稳定性。
在设备管理中,有一些重要的技术和算法,如中断处理、设备驱动程序、设备分配算法、设备控制算法等。
中断处理是指当设备发生中断时,系统能够及时地响应和处理中断请求,以确保设备的正常工作和系统的稳定性。
设备驱动程序是指系统中的软件模块,用于控制和管理设备的操作和状态,以确保设备的正常工作。
设备分配算法是指对系统中的设备资源进行合理的分配和调度,以满足用户和应用程序的需求。
设备控制算法是指对设备的操作和状态进行控制和管理,以确保设备的正常工作和系统的稳定性。
在现代计算机操作系统中,设备管理已经成为其中一个非常重要的部分,它对系统的性能和效率有着重要的影响。
随着计算机系统的发展和硬件设备的不断更新,设备管理也面临着新的挑战和机遇。
未来,随着计算机系统和硬件设备的不断发展,设备管理将会变得更加复杂和智能化,以满足用户和应用程序对设备管理的需求。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
操作系统课程报告实验六设备管理学号姓名班级教师华侨大学电子工程系实验目的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 type[10]; /*设备类型名*/int count; /*拥有的设备总台数*/int remain; /*现存的可用设备台数*/int address; /*该类设备在设备表中的起始地址*/}equiptype[n]; /*系统设备类型为n*/struct /*该结构体用于定义设备表各信息*/{int number; /*设备绝对编号*/int lnumber; /*设备相对编号*/int status; /*设备好坏状态*/int remain; /*设备是否已被分配*/char jobname[4]; /*占有设备的作业名*/}equipment[m]; /*系统设备数为m*//**********************子函数:作业设备分配*****************************/allocate(char *J,char *type,int cc){int i,t,j;i=0;while(i<n&&strcmp(equiptype[i].type,type)!=0) /*查找欲申请分配的设备类型,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; /* 取出该类设备在设备表中的起始地址赋给t*/while(!(equipment[t].status==1 && equipment[t].remain==0))t++; /*该设备类型起始地址加一*/equiptype[i].remain--; /*剩余设备数减一*/equipment[t].remain=1; /*状态改为已分配*/strcpy(equipment[t].jobname,J); /*strcpy为字符串拷贝函数,把J中的字符串拷贝到equipment[t].jobname中*/equipment[t].lnumber=cc; /*设备相对号写入cc*/ }/**********************子函数:作业设备回收*****************************/reclaim(char *J,char *type){int i,t,j,k,nn;i=0;while(i<n&&strcmp(equiptype[i].type,type)!=0) /*查找欲申请归还的设备类型,strcmp函数用于比较equiptype[i].type与type的大小,若相等则返回0*/i++;if(i>=n)/*若没有找到该类设备*/{printf("无该类设备,设备回收失败!");return(false);}t=equiptype[i].address; /*取出该类设备在设备表中的起始地址赋给t*/j=equiptype[i].count; /*取出该类设备的数量赋给j*/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; /*该类设备剩余设备数加k*/if(k==0) /*若回收设备计数值k为0,*/printf("本作业没有占用这类资源!/n");}/**********************主函数*****************************/ void main( ){char J[4];int i,mm,a;char type[10];printf("设备类初始化\n ");for(i=0;i<4;i++) /*输入设备类表初始信息*/{printf("请输入相应设备名称:");scanf("%s",&equiptype[i].type);printf("请输入相应设备的数量:");scanf("%d",&equiptype[i].count);printf("请输入当前空闲设备数量:");scanf("%d",&equiptype[i].remain);printf("请输入设备表起始地址:");scanf("%d",&equiptype[i].address);}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){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%14d\n",equiptype[i].type,equiptype[i].count,eq uiptype[i].remain,equiptype[i].address);printf("输出设备表:\n"); /*输出设备表内容*/printf("绝对号好/坏已/未分配占用作业名相对号\n");for(i=0;i<m;i++)printf("%3d%11d%15d%15s%9d\n",equipment[i].number,equipment[i].status,equipment[i].remain,equipment[i].jobname,equipment[i].lnumber);}}}4、运行结果以及结论。
初始化输入:设备分配:设备回收:可见在设备b回收j1后,设备b的‘已/未分配’变为了0.。