课程设计题目独占设备的分配与回收Word文档下载推荐.docx
- 文档编号:19541449
- 上传时间:2023-01-07
- 格式:DOCX
- 页数:10
- 大小:21.55KB
课程设计题目独占设备的分配与回收Word文档下载推荐.docx
《课程设计题目独占设备的分配与回收Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《课程设计题目独占设备的分配与回收Word文档下载推荐.docx(10页珍藏版)》请在冰豆网上搜索。
3、详细设计
通过此系统可以实现如下功能:
分配,回收,显示,退出。
选择独占设备,通过执行功能项,输出设备表,实现设备的分配与回收。
4、源代码清单:
#definefalse0
#definetrue1
#definen4
#definem10struct
{
chartype[10];
/*设备类名*/intcount;
/*拥有设备台数*/
intremain;
/*现存的可用设备台数*/
intaddress;
/*该类设备在设备表中的起始地址*/
}equiptype[n];
/*设备类表定义,假定系统有n个设备类型*/struct
intnumber;
/*设备绝对号*/intstatus;
/*设备好坏状态*/
/*设备是否已分配*/
charjobname[4];
/*占有设备的作业名*/intlnumber;
/*设备相对号*/
}equipment[m];
/*设备表定义,假定系统有m个设备*/
allocate(J,type,mm)char*J,*type;
intmm;
inti,t,j;
/*查询该类设备*/i=0;
while(i<
n&
&
strcmp(equiptype[i].type,type)!
=0)i++;
if(i>
=n)/*没有找到该类设备*/
printf("
无该类设备,设备分配失败"
);
return(false);
}
if(equiptype[i].remain<
1)/*所需设备现存可用台数不足*/
该类设备不足,分配失败"
t=equiptype[i].address;
/*取出该类设备在设备表中的起始地址*/while(!
(equipment[t].status==1&
equipment[t].remain==0))
t++;
/*填写作业名、相对号,状态改为已分配*/
equiptype[i].remain--;
equipment[t].remain=1;
strcpy(equipment[t].jobname,J);
equipment[t].lnumber=mm;
}/*设备分配函数结束*/
reclaim(J,type)charJ,type;
inti,t,j,k,nn;
i=0;
n&
无该类设备,设备回收失败"
/*取出该类设备在设备表中的起始地址*/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)
该作业没有使用该类设备\n"
}/*设备回收函数结束*/
main()
charJ[4];
inti,mm,a;
/*设备类表初始化:
*/
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)
\n0-退出,1-分配,2-回收,3-显示"
printf("
\n选择功能项(0~3):
"
scanf("
%d"
&
a);
switch(a)
case0:
/*a=0程序结束*/exit(0);
case1:
/*a=1分配设备*/
输入作业名、作业所需设备类和设备相对号"
scanf("
%s%s%d"
J,type,&
mm);
allocate(J,type,mm);
/*分配设备*/break;
case2:
/*a=2回收设备*/
输入作业名和作业归还的设备类"
scanf("
%s%s"
J,type);
reclaim(J,type);
/*回收设备*/break;
case3:
/*a=3输出设备类表和设备表的内容*/printf("
\n输出设备类表\n"
设备类型设备总量空闲好设备\n"
for(i=0;
n;
%9s%8d%9d\n"
equiptype[i].type,equiptype[i].count,equiptype[i].remain);
输出设备表:
\n"
绝对号好/坏已/未分配占用作业名相对号\n"
m;
%3d%8d%9d%12s%8d\n"
equipment[i].number,equipment[i].status,equipment[i].remain,equipment[i].jobname,
equipment[i].lnumber);
三、系统实施
运行结果:
该程序模拟独占设备的分配和回收,其中,独占设备分别为input(输入机)、printer(打印机)、disk(磁盘机)、tape(磁带机)
输出设备类表:
设备类型
设备总量
空闲好设备
Input
2
Printer
3
Disk
4
tape
1
注:
设备总量为10
输出设备表:
绝对号
好/坏
已/未分配
占用作业名
相对号
5
6
7
8
9
⑴绝对号为设备的标号,根据设备类型的不同与数量,其中,0~1为input,2~4为printer,5~8为disk,9为tape
⑵默认1为设备状态“好”0为该设备未分配
0为默认的作业名
0为设备的相对号
程序运行后可以看到如下要求:
0-退出,1-分配,2-回收,3-显示选择功能项(0~3):
此时要求输入相应的功能选项,此处我使用disk(磁盘机)分配和回收做演示:
(以下为程序调试结果页面)
0-退出,1-分配,2-回收,3-显示选择功能项(0~3):
1
输入作业名,作业所需设备类和设备相对号xyzDisk
(注:
设备类只能是程序所提供的四种独占设备,当输入不合法或不存在的设备类后,会提示“无该类设备,设备分配失败”。
输入时使用回车分隔,设备相对号只是一种逻辑上的划分,可以重复,前提是该类独占设备还有空闲资源)
3
Ccy
Tt
Hb
Jl
输入作业名,作业所需设备类和设备相对号xbDisk
该类设备不足,分配失败
2
输入作业名和作业归还的设备类jlDisk
Xb
以上的演示实现了disk独占设备的分配,由于设备不足无法分配后,通过设备的回收,再实现设备的分配。
其余的独占设备也类似disk磁盘演示。
四、总结与体会
在本次设计中,要求重点掌握独占设备的分配与回收,这就要求掌握基本的设备分配程序,其中又包括分配设备,分配控制器,分配通道三个步骤,而且只有在设备,控制器,和通道三者都分配成功时,这次的设备分配才算成功。
同时通过对程序分配的改进,使独占设备的分配程序具有更强的灵活性,并提高分配的成功率。
在设计中也碰到多方面地问题,如何进行设备的分配回收这些关键问题都需要重点去解决。
毕竟掌握的知识有限,单凭个人很难完成,但通过小组成员的集体努力,查阅相关资料,相互讨论,所有问题最终都得到解决。
从起初的总体设计,进行可行性分析,再进行分工编程,最后进行调试,基本实现了课程设计所要求的目标。
该设计主要通过C语言进行编写,在运行过程中有些功能可能实现起来会有异常,因此需要在以后的时间更进一步熟练掌握这一语言,努力将其功能实现的更加完美。
五、参考书目
汤子瀛计算机操作系统西安电子科技大学出版社2001王鹏操作系统设计与实现北京电子工业出版社1998
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 题目 独占 设备 分配 回收