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

 
若计算机系统中某时刻有5个进程,其中1个进程的状态为“运行”,2个进程的状 态为“就绪”,2个进程的状态为“阻塞”,则该系统中并发的进程数为(26);如果 系统中的5个进程都要求使用两个互斥资源R,那么该系统不产生死锁的最少资源数R 应为(27)个。
 
 
  A.  2
 
  B.  3
 
  C.  4
 
  D.  5
 
 
 

 
  第25题    2015年上半年  
   20%
假设有5个进程共享一个互斥段X,如果最多允许2个进程同时进入互斥段X,则信号量S的变化范围是(25);若信号量S的当前值为-3,则表..
  第27题    2015年下半年  
   48%
进程的三态模型如下图所示,其中的a、b和c处应分别填写(27)。
  第25题    2020年下半年  
   23%
假设有6个进程共享一个互斥段N,如果最多允许3个进程同时访问互斥段N,那么利用PV操作时,所用信号量S的变化范围为(25);若信号..
   知识点讲解    
   · 死锁    · 进程    · 进程的状态
 
       死锁
               死锁的基本概念
               当若干进程竞争使用资源时,可能每个进程要求的资源都已被另一进程占用,于是也就没有一个进程能继续运行,这种情况称为死锁。例如,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中,即可运行。这样就实现了各个进程的轮流运行。
 
       进程的状态
        进程是一个程序关于某个数据集的一次运行。进程是程序的一次运行活动,是一个动态的概念,而程序是静态的概念,是指令的集合。进程具有动态性和并发性,程序是进程运行所对应的运行代码,一个进程对应于一个程序,一个程序可以同时对应于多个进程。在操作系统中进程是进行系统资源分配、调度和管理的最小单位(注意,现代操作系统中还引入了线程(thread)这一概念,它是处理器分配资源的最小单位)。从静态的观点看,进程由程序、数据和进程控制块(Process Control Block,PCB)组成;从动态的观点看,进程是计算机状态的一个有序集合。
        PCB是进程存在的唯一标志,PCB描述了进程的基本情况。其中的内容可分成为调度信息和执行信息两大部分。调度信息供进程调度使用,包括进程当前的一些基本属性;执行信息即现场,刻画了进程的执行情况。PCB随着进程的建立而产生,随着进程的完成而撤销。
        一个进程从创建而产生至撤销而消亡的整个生命周期,可以用一组状态加以刻画,为了便于管理进程,把进程划分为几种状态,分别有三态模型和五态模型。
               三态模型
               按照进程在执行过程中的不同状况,至少可以定义三种不同的进程状态:
               (1)运行态:占有处理器正在运行。
               (2)就绪态:具备运行条件,等待系统分配处理器以便运行。
               (3)等待态(阻塞态):不具备运行条件,正在等待某个事件的完成。
               一个进程在创建后将处于就绪状态。每个进程在执行过程中,任一时刻当且仅当处于上述三种状态之一。同时,在一个进程执行过程中,它的状态将会发生改变。如下图所示为进程的状态转换。
               
               进程三态模型及其状态转换
               运行状态的进程将由于出现等待事件而进入等待状态,当等待事件结束之后等待状态的进程将进入就绪状态,而处理器的调度策略又会引起运行状态和就绪状态之间的切换。引起进程状态转换的具体原因如下:
               (1)运行态→等待态:等待使用资源,如等待外设传输;等待人工干预。
               (2)等待态→就绪态:资源得到满足,如外设传输结束;人工干预完成。
               (3)运行态→就绪态:运行时间片到;出现有更高优先权进程。
               (4)就绪态→运行态:CPU空闲时选择一个就绪进程。
               五态模型
               在三态模型中,总是假设所有的进程都在内存中。事实上,可能出现这样一些情况,例如由于进程的不断创建,系统的资源已经不能满足进程运行的要求,这个时候就必须把某些进程挂起,对换到磁盘镜像区中,使之暂时不参与进程调度,起到平滑系统操作负荷的目的。引起进程挂起的原因是多样的,主要有:
               (1)系统中的进程均处于等待状态,处理器空闲,此时需要把一些阻塞进程对换出去,以腾出足够的内存装入就绪进程运行。
               (2)进程竞争资源,导致系统资源不足,负荷过重,此时需要挂起部分进程以调整系统负荷,保证系统的实时性或让系统正常运行。
               (3)把一些定期执行的进程(如审计程序、监控程序、记账程序)对换出去,以减轻系统负荷。
               (4)用户要求挂起自己的进程,以便根据中间执行情况和中间结果进行某些调试、检查和改正。
               (5)父进程要求挂起自己的后代子进程,以进行某些检查和改正。
               (6)操作系统需要挂起某些进程,检查运行中资源使用情况,以改善系统性能;或当系统出现故障或某些功能受到破坏时,需要挂起某些进程以排除故障。
               下图给出了具有挂起进程功能的系统中的进程状态。在此类系统中,进程增加了两个新状态:静止就绪态和静止阻塞态。为了区别,而把三态模型中的等待态改名为活跃阻塞态,就绪态改名为活跃就绪态。静止就绪态表明进程具备运行条件但目前在二级存储器(外存储器、外存、辅存)中,只有当它被对换到内存才能被调度执行。静止阻塞态则表明进程正在等待某一个事件且在二级存储器中。
               
               具有挂起功能系统的进程状态及其转换
               引起进程状态转换的具体原因如下:
               (1)活跃阻塞态→静止阻塞态:如果当前不存在活跃就绪进程,那么至少有一个等待态进程将被对换出去成为静止阻塞态;操作系统根据当前资源状况和性能要求,可以决定把活跃阻塞态进程对换出去成为静止阻塞态。
               (2)静止阻塞态→静止就绪态:引起进程等待的事件发生之后,相应的静止阻塞态进程将转换为静止就绪态。
               (3)静止就绪态→活跃就绪态:当内存中没有活跃就绪态进程,或者静止就绪态进程具有比活跃就绪态进程更高的优先级,系统将把静止就绪态进程转换成活跃就绪态。
               (4)活跃就绪态→静止就绪态:操作系统根据当前资源状况和性能要求,也可以决定把活跃就绪态进程对换出去成为静止就绪态。
               (5)静止阻塞态→活跃阻塞态:当一个进程等待一个事件时,原则上不需要把它调入内存。但是,当一个进程退出后,内存已经有了一大块自由空间,而某个静止阻塞态进程具有较高的优先级并且操作系统已经得知导致它阻塞的事件即将结束,此时便发生了这一状态变化。
               不难看出:一个挂起进程等同于不在内存的进程,因此挂起的进程将不参与进程调度,直到它们被对换进内存。一个挂起进程具有如下特征:
               (1)该进程不能立即被执行。
               (2)挂起进程可能会等待一个事件,但所等待的事件是独立于挂起条件的,事件结束并不能导致进程具备执行条件。
               (3)进程进入挂起状态是由于操作系统、父进程或进程本身阻止它的运行。
               (4)结束进程挂起状态的命令只能通过操作系统或父进程发出。
               (5)阻塞态:进入阻塞态通常是因为在等待I/O完成或等待分配到所需资源。
   题号导航      2011年上半年 程序员 上午试卷 综合知识   本试卷我的完整做题情况  
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题    在手机中做本题