课程设计题目独占设备的分配与回收.docx

上传人:b****6 文档编号:6527677 上传时间:2023-01-07 格式:DOCX 页数:10 大小:21.55KB
下载 相关 举报
课程设计题目独占设备的分配与回收.docx_第1页
第1页 / 共10页
课程设计题目独占设备的分配与回收.docx_第2页
第2页 / 共10页
课程设计题目独占设备的分配与回收.docx_第3页
第3页 / 共10页
课程设计题目独占设备的分配与回收.docx_第4页
第4页 / 共10页
课程设计题目独占设备的分配与回收.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

课程设计题目独占设备的分配与回收.docx

《课程设计题目独占设备的分配与回收.docx》由会员分享,可在线阅读,更多相关《课程设计题目独占设备的分配与回收.docx(10页珍藏版)》请在冰豆网上搜索。

课程设计题目独占设备的分配与回收.docx

课程设计题目独占设备的分配与回收

一、课程设计目的和任务

课程设计题目:

独占设备的分配与回收

问题描述:

为了使系统有条不紊地工作,系统在分配设备是,应考虑这样几个因素:

①设备的固有属性;②设备分配算法;③设备分配时的安全性④设备独立性;系统也要通过回收,实现设备的再分配。

要求:

设备分配在计算机系统中,设备、控制器和通道等资源是有限的,并不是每个进程随时都可以得到这些资源。

进程首先要向设备管理程序提出申请,然后由设备管理程序按照一定的分配算法给进程分配必要的资源。

如果进程的申请没有成功,就要在资源的等待队列中排队等待,直到获得所需的资源。

考虑设备的特性和安全性。

设备的特性是设备本身固有的属性,一般分为独占、共享和虚拟设备等。

二、分析与设计

1、设计任务分析:

独占设备的分配与虚拟设备独占设备每次只能分配给一个进程使用,这种使用特性隐含着死锁的必要条件,所以在考虑独占设备的分配时,一定要结合有关防止和避免死锁的安全算法。

2、设计方案论证:

为了提高OS的可适应性和可扩展性,在OS中毫无例外地实现了设备的独立性,即使应用程序独立于具体使用的物理设备。

在实现了设备独立性的功能后,可以带来两方面的好处:

(1)设备分配时的灵活性;

(2)易于实现I/O重定向。

3、详细设计

通过此系统可以实现如下功能:

分配,回收,显示,退出。

选择独占设备,通过执行功能项,输出设备表,实现设备的分配与回收。

4、源代码清单:

#definefalse0

#definetrue1

#definen4

#definem10struct

{

chartype[10];/*设备类名*/intcount;/*拥有设备台数*/

intremain;/*现存的可用设备台数*/

intaddress;/*该类设备在设备表中的起始地址*/

}equiptype[n];/*设备类表定义,假定系统有n个设备类型*/struct

{

intnumber;/*设备绝对号*/intstatus;/*设备好坏状态*/

intremain;/*设备是否已分配*/

charjobname[4];/*占有设备的作业名*/intlnumber;/*设备相对号*/

}equipment[m];/*设备表定义,假定系统有m个设备*/

 

allocate(J,type,mm)char*J,*type;

intmm;

{

inti,t,j;

/*查询该类设备*/i=0;

while(i

=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))

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;

while(i

=0)i++;

if(i>=n)/*没有找到该类设备*/

{

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

}

t=equiptype[i].address;/*取出该类设备在设备表中的起始地址*/j=equiptype[i].count;/*取出该类设备的数量*/

k=0;

nn=t+j;for(;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");

}/*设备回收函数结束*/

 

main()

{

charJ[4];inti,mm,a;

chartype[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)

{

case0:

/*a=0程序结束*/exit(0);

case1:

/*a=1分配设备*/

printf("输入作业名、作业所需设备类和设备相对号");scanf("%s%s%d",J,type,&mm);

allocate(J,type,mm);/*分配设备*/break;

case2:

/*a=2回收设备*/

printf("输入作业名和作业归还的设备类");scanf("%s%s",J,type);

reclaim(J,type);/*回收设备*/break;

case3:

/*a=3输出设备类表和设备表的内容*/printf("\n输出设备类表\n");

printf("设备类型设备总量空闲好设备\n");for(i=0;i

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

printf("输出设备表:

\n");

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

printf("%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

2

Printer

3

3

Disk

4

4

tape

1

1

注:

设备总量为10

输出设备表:

绝对号

好/坏

已/未分配

占用作业名

相对号

0

1

0

0

0

1

1

0

0

0

2

1

0

0

0

3

1

0

0

0

4

1

0

0

0

5

1

0

0

0

6

1

0

0

0

7

1

0

0

0

8

1

0

0

0

9

1

0

0

0

注:

⑴绝对号为设备的标号,根据设备类型的不同与数量,其中,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

2

(注:

设备类只能是程序所提供的四种独占设备,当输入不合法或不存在的设备类后,会提示“无该类设备,设备分配失败”。

输入时使用回车分隔,设备相对号只是一种逻辑上的划分,可以重复,前提是该类独占设备还有空闲资源)

0-退出,1-分配,2-回收,3-显示选择功能项(0~3):

3

输出设备类表:

设备类型

设备总量

空闲好设备

Input

2

2

Printer

3

3

Disk

4

0

tape

1

1

输出设备表:

绝对号

好/坏

已/未分配

占用作业名

相对号

0

1

0

0

0

1

1

0

0

0

2

1

0

0

0

3

1

0

0

0

4

1

0

0

0

5

1

1

Ccy

2

6

1

0

Tt

1

7

1

0

Hb

3

8

1

0

Jl

2

9

1

0

0

0

0-退出,1-分配,2-回收,3-显示选择功能项(0~3):

1

输入作业名,作业所需设备类和设备相对号xbDisk

2

该类设备不足,分配失败

0-退出,1-分配,2-回收,3-显示选择功能项(0~3):

2

输入作业名和作业归还的设备类jlDisk

0-退出,1-分配,2-回收,3-显示选择功能项(0~3):

3

输出设备类表:

设备类型

设备总量

空闲好设备

Input

2

2

Printer

3

3

Disk

4

1

tape

1

1

输出设备表:

绝对号

好/坏

已/未分配

占用作业名

相对号

0

1

0

0

0

1

1

0

0

0

2

1

0

0

0

3

1

0

0

0

4

1

0

0

0

5

1

1

Ccy

2

6

1

0

Tt

1

7

1

0

Hb

3

8

1

0

Jl

2

9

1

0

0

0

0-退出,1-分配,2-回收,3-显示选择功能项(0~3):

1

输入作业名,作业所需设备类和设备相对号xbDisk

2

0-退出,1-分配,2-回收,3-显示选择功能项(0~3):

3

输出设备类表:

设备类型

设备总量

空闲好设备

Input

2

2

Printer

3

3

Disk

4

0

tape

1

1

输出设备表:

绝对号

好/坏

已/未分配

占用作业名

相对号

0

1

0

0

0

1

1

0

0

0

2

1

0

0

0

3

1

0

0

0

4

1

0

0

0

5

1

1

Ccy

2

6

1

0

Tt

1

7

1

0

Hb

3

8

1

0

Xb

2

9

1

0

0

0

以上的演示实现了disk独占设备的分配,由于设备不足无法分配后,通过设备的回收,再实现设备的分配。

其余的独占设备也类似disk磁盘演示。

四、总结与体会

在本次设计中,要求重点掌握独占设备的分配与回收,这就要求掌握基本的设备分配程序,其中又包括分配设备,分配控制器,分配通道三个步骤,而且只有在设备,控制器,和通道三者都分配成功时,这次的设备分配才算成功。

同时通过对程序分配的改进,使独占设备的分配程序具有更强的灵活性,并提高分配的成功率。

在设计中也碰到多方面地问题,如何进行设备的分配回收这些关键问题都需要重点去解决。

毕竟掌握的知识有限,单凭个人很难完成,但通过小组成员的集体努力,查阅相关资料,相互讨论,所有问题最终都得到解决。

从起初的总体设计,进行可行性分析,再进行分工编程,最后进行调试,基本实现了课程设计所要求的目标。

该设计主要通过C语言进行编写,在运行过程中有些功能可能实现起来会有异常,因此需要在以后的时间更进一步熟练掌握这一语言,努力将其功能实现的更加完美。

五、参考书目

汤子瀛计算机操作系统西安电子科技大学出版社2001王鹏操作系统设计与实现北京电子工业出版社1998

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1