免费智能真题库 > 历年试卷 > 程序员 > 2010年上半年 程序员 上午试卷 综合知识
  第26题      
  知识点:   死锁   进程
  关键词:   并发进程   单处理器   计算机系统   死锁   并发   处理器   进程        章/节:   软件基础知识       

 
若一个单处理器的计算机系统中同时存在3个并发进程,则同一时刻允许占用处理器的进程(26);如果这3个进程都要求使用2个互斥资源R,那么系统不产生死锁的最少的R资源数为(27) 个。
 
 
  A.  至少为1个
 
  B.  至少为3个
 
  C.  最多为1个
 
  D.  最多为3个
 
 
 

 
  第26题    2013年下半年  
   31%
假设系统有6个进程共享一个互斥段,如果最多允许3个进程同时进入互斥段,则信号量s的初值为(26),信号量S的变化范围是(27)。
  第27题    2014年下半年  
   30%
假设系统有n个进程共享资源R,且资源R的可用数为2,那么该资源相应的信号量S的初值应设为(27)。
  第24题    2017年上半年  
-->
   48%
操作系统中进程的三态模型如下图所示,图中a、b和c处应分别填写( )

 

   知识点讲解    
   · 死锁    · 进程
 
       死锁
               死锁的基本概念
               当若干进程竞争使用资源时,可能每个进程要求的资源都已被另一进程占用,于是也就没有一个进程能继续运行,这种情况称为死锁。例如,P1进程占有资源R1, P2进程占有资源R2,这时,P1又需要资源R2, P2也需要资源R1,它们在等待对方占有的资源时,又不会释放自己占有的资源,因而使双方都进入了无限等待状态。死锁是系统的一种出错状态,不仅浪费大量的系统资源,甚至会导致整个系统的崩溃,所以死锁是应该尽量预防和避免的。
               系统发生死锁时,死锁进程的个数至少为两个;所有死锁进程都有等待资源,其中至少有两个进程已占有资源。产生死锁的情况主要有:进程推进顺序不当;同类资源分配不当;PV操作使用不当。
               产生死锁的4个必要条件
               产生死锁的原因:一是系统提供的资源数量有限,不能满足每个进程的使用;二是多道程序运行时,进程推进顺序不合理。发生死锁必须同时具备下述4个条件。
               .互斥:进程互斥使用资源,任意时刻一个资源只为一个进程所独占,其他进程若请求一个已被占用的资源,只能等待占用者释放后才能使用。
               .不可剥夺(不可抢占):进程所获得的资源在未使用完毕之前,不能被其他进程强行剥夺,而只能由获得该资源的进程自己释放。
               .请求保持:进程每次申请它所需要的一部分资源,在申请新的资源的同时,继续占用已分配到的资源。零星地请求资源,即已获得部分资源后再次请求资源时被阻塞。
               .循环等待:在进程资源有向图中存在一个进程环路,环路中每一个进程已获得的资源同时被下一个进程所请求。
               进程资源有向图由方框、圆圈和有向边3个部分组成。其中,方框表示资源,圆圈表示进程。请求资源:〇→□,箭头由进程指向资源;分配资源:〇←□,箭头由资源指向进程。
               解决死锁的方法
               解决死锁的方法如下。
               .死锁的预防:根据产生死锁的4个必要条件,只要使其中之一不能成立,死锁就不会出现。
               .死锁的避免:最著名的死锁避免算法是Dijkstra提出的银行家算法。
               .死锁的检测:采用合理的死锁检测算法确定死锁的存在,并识别出与死锁有关的进程和资源,以供系统采用适当的解除死锁的措施。
               .死锁的解除:检测到死锁发生后,常采用资源剥夺法和撤销进程法解除死锁。
 
       进程
        简单而言,一个进程就是一个正在运行的程序。一般来说,一个进程至少应该包括以下几个方面的内容。
        .相应的程序:进程既然是一个正在运行的程序,当然需要有相应程序的代码和数据。
        .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中,即可运行。这样就实现了各个进程的轮流运行。
   题号导航      2010年上半年 程序员 上午试卷 综合知识   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
 
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
 
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
 
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
 
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
 
第26题    在手机中做本题