全部科目 > 软件设计师 >
2010年上半年 上午试卷 综合知识
第 24 题
知识点 死锁   进程  
关键词 并发进程   死锁   并发   进程  
章/节 计算机软件知识  
 
 
若在系统中有若干个互斥资源R, 6个并发进程,每个进程都需要2个资源R,那么使系统不发生死锁的资源R的最少数目为(24).
 
  A.  6
 
  B.  7
 
  C.  9
 
  D.  12
 
 




 
 
相关试题     进程管理 

  第25题    2010年下半年  
进程P1、P2、P3、P4和P5的前趋图如下:
若用PV操作控制进程P1〜P5并发执行的过程,则需要设置6个信号量S1、S2、S3.S4.S5和S6,且信号量S1〜S6的初值都等于零。下图中a和b处应分..

  第25题    2015年上半年  
进程P1、P2、P3、P4和P5的前趋图如下所示:

  第27题    2016年上半年  
进程P1、P2、P3、P4和P5的前趋图如下图所示:

 
知识点讲解
· 死锁
· 进程
 
        死锁
        死锁是指两个以上的进程互相都因要求对方已经占有的资源,导致无法运行下去的现象。死锁是系统的一种出错状态,不仅浪费大量的系统资源,甚至会导致整个系统的崩溃,所以死锁是应该尽量预防和避免的。
               产生死锁的原因
               产生死锁的原因是资源竞争及进程推进顺序非法。
               产生死锁的4个必要条件
               产生死锁的4个必要条件如下。
               (1)互斥条件。进程对其要求的资源进行排他性控制,即一次只允许一个进程使用。
               (2)请求保持条件。零星地请求资源,即已获得部分资源后又请求资源被堵塞。
               (3)不可剥夺条件。进程已获得资源在未使用完之前不能被剥夺,只能在使用完时由自己释放。
               (4)环路条件。发生死锁时,在进程资源有向图中必构成环路,其中每个进程占有下一个进程申请的一个或多个资源。
               进程资源有向图
               进程资源有向图由方框、圆圈和有向边3部分组成。其中,方框表示资源,圆圈表示进程。
               请求资源:○→□,箭头由进程指向资源。
               分配资源:○←□,箭头由资源指向进程。
               死锁的处理
               下面介绍死锁的处理。
               (1)死锁的预防。根据产生死锁的4个必要条件,只要使其中之一不能成立,死锁就不会出现。为此,可以采取下列预防措施,即预先静态分配法和资源有序分配法。
               (2)死锁的避免。最著名的死锁避免算法是Dijkstra提出的银行家算法,其思想是:对于进程发出的每一个系统可以满足的资源请求命令加以检测,如果发现分配资源后,系统可能进入不安全状态,则不予分配;若分配资源后系统仍处于安全状态,则分配资源。与死锁预防策略相比提高了资源的利用率,但增加了系统的开销。
               (3)死锁的检测。这种方法对资源的分配如不加限制,即允许死锁发生。但系统定时地运行一个"死锁检测"程序,判断系统是否发生死锁,若检测到有死锁,则设法加以解除。
               (4)死锁的解除。检测到死锁发生后,常采用资源剥夺法和撤销进程法解除死锁。
 
        进程
        简单而言,一个进程就是一个正在运行的程序。一般来说,一个进程至少应该包括以下几个方面的内容。
        .相应的程序:进程既然是一个正在运行的程序,当然需要有相应程序的代码和数据。
        .CPU上下文:指程序在运行时,CPU中各种寄存器的当前值,包括:程序计数器,用于记录将要取出的指令的地址;程序状态字,用于记录处理器的运行状态信息;通用寄存器,用于存放数据或地址;段寄存器,用于存放程序中各个段的地址;栈指针寄存器,用于记录栈顶的当前位置。
        .一组系统资源:包括操作系统用来管理进程的数据结构、进程的内存地址空间、进程正在使用的文件等。
        进程有动态性、独立性和并发行三个特性。
        (1)动态性。进程是一个正在运行的程序,而程序的运行状态是在不断地变化的。例如,当一个程序在运行的时候,每执行完一条指令,PC寄存器的值就会增加,指向下一条即将执行的指令。而CPU中用来存放数据和地址的那些通用寄存器,它们的值肯定也不断地变化。另外,堆和栈的内容也在不断地变化,每当发生一次函数调用时,就会在栈中分配一块空间,用来存放此次函数调用的参数和局部变量。而当函数调用结束后,这块栈空间就会被释放掉。
        (2)独立性。一个进程是一个独立的实体,是计算机系统资源的使用单位。每个进程都有自己的运行上下文和内部状态,在它运行的时候独立于其他的进程。
        (3)并发性。从宏观上来看,在系统中同时有多个进程存在,它们相互独立地运行。
        下图表示四个进程A、B、C、D在系统中并发地运行。从中可以看出,虽然从宏观上来说,这四个进程都是在系统中运行,但从微观上来看,在任何一个特定的时刻,只有一个进程在CPU上运行。从时间上来看,开始是进程A在运行,然后是进程B在运行,然后是进程C和进程D。接下来又轮到了进程A去运行。因此,在单CPU的情形下,所谓的并发性,指的是宏观上并发运行,而微观上还是顺序运行,各个进程轮流去使用CPU资源。
        
        四个进程在并发运行
        在具体实现上,以CPU中的程序计数器PC为例,真正物理上的PC寄存器只有一个。当四个进程在轮流执行时,PC取值的运动轨迹是先在进程A内部流动,然后再到进程B的内部流动,再到进程C和D。从进程的独立性角度来说,每个进程都有“自己”独立的PC寄存器,即逻辑上的PC寄存器,它们的取值相互独立、互不影响。所谓的逻辑PC,其实就是一个内存变量。例如,在上图中,当进程A要执行的时候,就把A的逻辑PC的值拷贝到物理PC中,然后开始运行。当轮到B运行的时候,先把物理PC的当前值保存到A的逻辑PC中,然后再把B的逻辑PC的值装入到物理PC中,即可运行。这样就实现了各个进程的轮流运行。



更多复习资料
请登录电脑版软考在线 www.rkpass.cn

京B2-20210865 | 京ICP备2020040059号-5
京公网安备 11010502032051号 | 营业执照
 Copyright ©2000-2023 All Rights Reserved
软考在线版权所有