计算机操作系统实验5设备管理

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档