江南大学什么是独占设备对独占设备如何分配
㈠ 独占设备采用哪种分配方式
独占设备通常采用静态分配方式。
即在一个作业执行前,将作业要使用回的这类设备分配给答作业,在作业执行期间均归该作业占用,直到作业执行结束才归还。
http://wenku..com/link?url=hg5kv7QZ-f4uf3MTnhVDuajnr1E0z9ED-87nKqAwuC-_SGubqQt2XEgB_-
㈡ 从资源分配的角度可将设备分为独占设备、共享设备和什么网络体系结构是网络功能和什么的集合
独占设备、共享设备,虚拟设备.
网络的体系结构定义:指计算机网络的各层及其协内议的集合容(architecture).或精确定义为这个计算机网络及其部件所应完成的功能.计算机网络的体系结构综合了OSI和TCP/IP的优点,本身由5层组成:应用层,运输层,网络层,物理层和数据链路层.
㈢ 什么是独占设备,对独占设备如何分配
独占设备,可共享设备只适用于前两种分配技术,即共享设备技术和独占设备技术,但考虑性能要尽量用前者,即共享设备技术来分配;独占设备只适用于后两种分配技术,即独占设备技术和虚拟设备技术,且尽可能采用后者,即虚拟设备技术。
独占设备的分配
1、基本的设备分配程序
---- 当某进程提出I/O请求后,系统的设备分配程序可按下述步骤进行设备分配:
1)分配设备
-- 首先根据I/O请求中的物理设备名,查找系统设备表(SDT),从中找出该设备的DCT(设备分配表),再根据DCT中的设备状态字段,可知
该设备是否正忙。若忙,便将请求I/O进程的PCB挂在设备队列上;否则,便按照一定的算法来计算本次设备分配的安全性。如果不会导致系统
进入不安全状态,便将设备分配给请求进程;否则,仍将其PCB插入设备等待队列。
2)分配控制器
-- 在系统把设备分配给请求I/O的进程后,再到其DCT(指向控制器表的指针)中找出与该设备连接的控制器的COCT(控制器控制表),从COCT
的状态字段中可知该控制器是否忙碌。若忙,便将请求I/O进程的PCB挂在该控制器的等待队列上;否则,便将该控制器分配给进程。
3)分配通道
-- 通过COCT中与控制器连接的通道表指针,找到与该控制器连接的通道的CHCT(通道控制表),再根据CHCT内的状态信息,可知该通道是否
忙碌。若忙,便将请求I/O的进程挂在该通道的等待队列上;否则,将该通道分配给进程。
-- 只有在设备、控制器和通道三者都分配成功时,这次的设备分配才算成功。然后,便可启动该I/O设备进行数据传送。
2、设备分配程序的改进
---- 仔细研究上述基本的设备分配程序后可以发现:
进程是以物理设备名来提出I/O请求的;采用的是单通路的I/O系统结构,容易产生“瓶颈”现象。
为此,应从以下两方面对基本的设备分配程序加以改进,以使独占设备的分配程序具有更强的灵活性,并提高分配的成功率。
1)增加设备的独立性
-- 为了获得设备的独立性,进程应使用逻辑设备名请求I/O。这样,系统首先从SDT中找出第一个该类设备的DCT。
若该设备忙,又查找第二个该类设备的DCT,仅当所有该类设备都忙时,才把进程挂在该类设备的等待队列上;
而只要有一个该类设备可用,系统便进一步计算分配该类设备的安全性。
2)考虑多通路情况
-- 为了防止在I/O系统中出现“瓶颈”现象(通道不足),通常都采用多通路的I/O系统结构。
此时对控制器和通道的分配同样要经过几次反复,即若设备(控制器)所连接的第一个控制器(通道)忙时,应查看其所连接的第二个控制器(通道),
仅当所有的控制器(通道)都忙时,此次的控制器(通道)分配才算失败,才把进程挂在控制器(通道)的等待队列上。
而只要有一个控制器(通道)可用,系统便可将它分配给进程。
㈣ 求操作系统课程设计---独占设备的分配与回收
大神们你们还有么我也想要
㈤ 求操作系统课程设计 《模拟独占设备的分配和回收 》,请发邮箱[email protected],万分感谢!!
#define false 0
#define true 1
#define n 4
#define m 10
struct
{
char type[10];
int count;
int remain;
int address;
}equiptype[n];
struct
{
int number;
int status;
int remain;
char jobname[4];
int lnumber;
}equipment[m];
allocate(J,type,mm)
char *J,*type;
int mm;
{
int i,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)
{
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)
char J,type;
{
int i,t,j,k,nn;
i=0;
while(i<n&&strcmp(equiptype[i].type,type)!=0)
i++;
if(i>=n)
{
printf("无该类设备,设备回收失败");
return(false);
}
t=equiptype[i].address;
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)
printf("该作业没有使用该类设备\n");
}
main( )
{
char J[4];
int i,mm,a;
char type[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)
{
case 0 :
exit(0);
case 1 :
printf("输入作业名、作业所需设备类和设备相对号");
scanf("%s%s%d",J,type,&mm);
allocate(J,type,mm);
break;
case 2:
printf("输入作业名和作业归还的设备类");
scanf("%s%s",J,type);
reclaim(J,type);
break;
case 3:
printf("\n输出设备类表\n");
printf(" 设备类型 设备总量 空闲好设备\n");
for(i=0;i<n;i++)
printf("%9s%8d%9d\n",equiptype[i].type,equiptype[i].count, equiptype[i].remain);
printf("输出设备表:\n");
printf("绝对号 好/坏 已/未分配 占用作业名 相对号\n");
for(i=0;i<m;i++)
printf("%3d%8d%9d%12s%8d\n",equipment[i].number, equipment[i].status,equipment[i].remain,equipment[i].jobname,
equipment[i].lnumber);
}
}
}
㈥ 18、对于系统中的独占设备,为预防出现死锁,应采用的最佳分配策略是
死锁的四个必要条件
操作系统中有若干进程并发执行,它们不断申请、使用、释放系统资源,虽然系统的进
程协调、通信机构会对它们进行控制,但也可能出现若干进程都相互等待对方释放资源才能
继续运行,否则就阻塞的情况。此时,若不借助外界因素,谁也不能释放资源,谁也不能解
地等待永远不会发生的条件,系统处于停滞状态,这就是死锁。
产生死锁的原因主要是:
(1) 因为系统资源不足。
(2) 进程运行推进的顺序不合适。
(3) 资源分配不当等。
如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则
就会因争夺有限的资源而陷入死锁。其次,进程运行推进顺序与速度不同,也可能产生死锁。
产生死锁的四个必要条件:
(1) 互斥条件:一个资源每次只能被一个进程使用。
(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之
一不满足,就不会发生死锁。
死锁的解除与预防:
理解了死锁的原因,尤其是产生死锁的四个必要条件,就可以最大可能地避免、预防和
定资源的合理分配算法,避免进程永久占据系统资源。此外,也要防止进程在处于等待状态
的情况下占用资源。因此,对资源的分配要给予合理的规划。
要防止死锁的发生可破坏其四个条件,但破坏四个条件其中的一个条件是不实际的,我想知道是哪个条件?1资源独占2保持申请3循环等待4不可剥夺。
㈦ 独占设备的分配与回收 1、设计目的:掌握独占设备的分配流程,会使用安全性算法检查设备分配是否安全
你们有吗?
㈧ 磁盘是典型的独占型设备,分配不当有可能引起进程死锁 这句话为什么错误
硬盘是共享设备啊
