操作系统实验报告1

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

操作系统实验报告

学院:华东交通大学理工学院

专业:09级电子商务

班级:1班

姓名:邓镇强

学号:20090210460128

提交日期:2011年5月23日

指导老师:徐涢基老师

一、实验题目:计算机操作系统中对设备管理的应用

二、实验目的:

1.对理论课学习的设备管理中的概念做进一步的理解;

2.明白设备管理的主要任务;

3.了解设备管理任务的主要实现方法;

4.通过编程,学会独占设备的分配、回收等主要算法的原理。

三、实验内容:

1.编写程序,由必要的数据结构、主函数、设备分配函数及设备回收函数构成,实现对独占设备的分配与回收的模拟。

2.模拟实验的程序包括建立设备类表的程序段,分配设备和回收设备的函数。分配设备要求输入作业名、设备类名和相对号;回收设备要求输入作业名和设备类名。

四、实验指导:

程序参考代码:

#define false 0

#define true 1

#define n 3

#define m 5

struct{

char type[10];

int count;

int remain;

int address;

}equip_type[n];

struct{

int number;

int status;

int remain;

char jobname[10];

int lnumber;

}equipment[m];

allocate(char * job,char * type,int mm){

int i,t,j;

i=0;

while(i

i++;

if(i>=n){

printf("无该类设备,设备分配请求失败");

return(false);

}

if(equip_type[i].remain<1){

printf("该类设备数量不足,设备分配请求失败");

return(false);

}

t=equip_type[i].address;

while(!(equipment[t].status==1&&equipment[t].remain==0))

t++;

equip_type[i].remain--;

equipment[t].remain=1;

strcpy(equipment[t].jobname,job);

equipment[t].lnumber=mm;

}

reclaim(char * job,char * type){

int i,t,j,k,nn;

i=0;

while(i

i++;

if(i>=n){

printf("无该类设备,设备回收失败");

return(false);

}

t=equip_type[i].address;

j=equip_type[i].count;

k=0;

nn=t+j;

for(;t

if(strcmp(equipment[t].jobname,job)==0&&equipment[t].remain==1){ equipment[t].remain=0;

k++;

}

equip_type[i].remain=equip_type[i].remain+k;

if(k==0)

printf("作业没有使用该类设备");

}

main(){

char job[10];

int i,mm,a;

char type[10];

strcpy(equip_type[0].type,"input");

equip_type[0].count=2;

equip_type[0].remain=2;

equip_type[0].address=0;

strcpy(equip_type[1].type,"printer");

equip_type[1].count=3;

equip_type[1].remain=3;

equip_type[1].address=2;

strcpy(equip_type[2].type,"disk");

equip_type[2].count=4;

equip_type[2].remain=4;

equip_type[2].address=5;

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请选择功能项:");

scanf("%d",&a);

switch(a){

case 0:

exit(0);

case 1:

printf("请输入作业名。作业所需设备类和设备相对号");

scanf("%s%s%d",job,type,&mm);

allocate(job,type,mm);

break;

case 2:

printf("请输入作业名和作业要归还的设备类型");

scanf("%s%s",job,type);

reclaim(job,type);

break;

case 3:

printf("\n输出设备类表:\n");

printf("设备类型设备数量空闲设备数量\n");

for(i=0;i

printf("%8s%9d%8d\n",equip_type[i].type,equip_type[i].count, equip_type[i].remain);

printf("-----------\n");

printf("输出设备表:\n");

printf("绝对号好/坏已/未分配占用作业名相对号\n");

for(i=0;i

printf("%3d%7d%8d%10s%7d\n",equipment[i].number,equipment[i].status,

equipment[i].remain,equipment[i].jobname,equipment[i].lnumber);

}

}

相关文档
最新文档