计算机操作系统实验5设备管理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验5 设备管理(2学时)
一、实验目的
理解设备管理的概念和任务,掌握独占设备的分配、回收等主要算法的原理并编程实现。
二、实验内容
编写程序实现对独占设备的分配与回收的模拟。
三、实验要求
1、实现设备分配、回收、显示系统中设备信息的功能。
2、通过设备类表和设备表记录系统中设备信息、以便进行设备分配。
3、设备类表记录系统中全部设备的情况,每个设备类占一个表目,设备类表的数据结构如表1所示。
设备类
拥有设备数量
可分配设备数量
设备起始地址
图1 设备类表
4、为每一个设备配置一张设备控制表,用于记录本设备的情况。设备控制表的数据结构如图2所示。
绝对号
设备状态(好/坏)
是否分配(是/否)
占有作业名
相对号
图2 设备控制表
4、程序中建立分配设备和回收设备函数。
5、设系统有3类设备,每类设备的设备数分别为2、3、4。
6、要求键盘输入作业名、作业所需设备类和设备相对号。程序代码(java)
package wcm5;
public class Equipment {
public int finalno;
public boolean fine=true;
public boolean use=false;
public String usename;
public int no;
}
package wcm5;
import java.util.Scanner;
public class Test {
/**
* @param args
*/
Equipment[] a=new Equipment[2];
Equipment[] b=new Equipment[3];
Equipment[] c=new Equipment[4];
//EquipmentClass[] all=new EquipmentClass[3];
public Test(){
for(int i=0;i a[i]=new Equipment(); a[i].finalno=i; a[i].no=i; } for(int i=0;i b[i]=new Equipment(); b[i].finalno=a.length+i; b[i].no=i; } for(int i=0;i c[i]=new Equipment(); c[i].finalno=a.length+b.length+i; c[i].no=i; } } public static void main(String[] args) { // TODO Auto-generated method stub Test t=new Test(); t.begin(); } public void begin(){ System.out.println("请选择:1.申请设备 2.释放设备 3.退出"); Scanner sc=new Scanner(System.in); int a=sc.nextInt(); while(a!=3){ switch (a) { case 1: need();break; case 2: free();break; } System.out.println("请选择:1.申请设备 2.释放设备 3.退出"); sc=new Scanner(System.in); a=sc.nextInt(); } } public void need(){ System.out.println("请输入作业名:"); Scanner sc1=new Scanner(System.in); String sname=sc1.nextLine(); System.out.println("请输入所需设备的类型:(a,b,c)"); Scanner sc2=new Scanner(System.in); String classname=sc2.nextLine(); if(classname.equals("a")){ System.out.println(classname); System.out.println("请输入所需设备的相对号:(0-1)"); Scanner sc3=new Scanner(System.in); int no=sc3.nextInt(); if(a[no].fine==true&&a[no].use==false){ a[no].usename=sname; a[no].use=true; } else{ System.out.println("该设备已坏或正在被使用!"); } } else if(classname.equals("b")){ System.out.println("请输入所需设备的相对号:(0-2)"); Scanner sc3=new Scanner(System.in); int no=sc3.nextInt(); if(b[no].fine==true&&b[no].use==false){ b[no].usename=sname; b[no].use=true; } else{ System.out.println("该设备已坏或正在被使用!"); } } else if(classname.equals("c")){ System.out.println("请输入所需设备的相对号:(0-3)"); Scanner sc3=new Scanner(System.in); int no=sc3.nextInt(); if(c[no].fine==true&&c[no].use==false){ c[no].usename=sname; c[no].use=true; } else{ System.out.println("该设备已坏或正在被使用!"); } } print(); } public void free(){ System.out.println("请输入释放设备的绝对号:"); Scanner sc3=new Scanner(System.in); int finalno=sc3.nextInt(); if(finalno>=0&&finalno