免费智能真题库 > 历年试卷 > 嵌入式系统设计师 > 2012年下半年 嵌入式系统设计师 上午试卷 综合知识
  第21题      
  知识点:   进程   死锁
  关键词:   并发进程   死锁   并发   进程        章/节:   嵌入式操作系统基础知识       

 
某系统中仅有5个并发进程竞争某类资源,且都需要该类资源3个,那么该类资源至少有(21)个,才能保证系统不会发生死锁
 
 
  A.  9
 
  B.  10
 
  C.  11
 
  D.  15
 
 
 

 
  第64题    2015年下半年  
   43%
下列进程状态变化中,(64)是不可能发生的。
  第35题    2011年下半年  
   69%
对于两个并发进程,设互斥信号量为mutex,若mutex=1,则(35)。
  第49题    2012年下半年  
   57%
下列进程调度算法中,综合考虑进程等待时间和执行时间的是(49)。
 
  第23题    2019年下半年  
   61%
进程P1、P2、P3、P4和P5的前趋图如下所示。

PV
  第35题    2011年下半年  
   69%
对于两个并发进程,设互斥信号量为mutex,若mutex=1,则(35)。
  第54题    2017年下半年  
   46%
某个应用任务TaskA正在等待信号量到来从而执行,此时TaskA所处的状态名称为(54)。
   知识点讲解    
   · 进程    · 死锁
 
       进程
        简单而言,一个进程就是一个正在运行的程序。一般来说,一个进程至少应该包括以下几个方面的内容。
        .相应的程序:进程既然是一个正在运行的程序,当然需要有相应程序的代码和数据。
        .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中,即可运行。这样就实现了各个进程的轮流运行。
 
       死锁
        在一组任务当中,每个任务都占用着若干个资源,同时又在等待其他任务所占用的资源,从而造成所有任务都无法进展下去的现象,这种现象称为死锁,这一组相关的任务称为死锁任务。在死锁状态下,每个任务都动弹不得,既无法运行,也无法释放所占用的资源,它们互为因果、相互等待。
        死锁的产生有四个必要条件,只有当这四个条件同时成立时,才会出现死锁。
        .互斥条件:在任何时刻,每一个资源最多只能被一个任务所使用;
        .请求和保持条件:任务在占用若干个资源的同时又可以请求新的资源;
        .不可抢占条件:任务已经占用的资源不会被强制性拿走,而必须由该任务主动释放;
        .环路等待条件:存在一条由两个或多个任务所组成的环路链,其中每一个任务都在等待环路链中下一个任务所占用的资源。
        除了资源的竞争之外,PV操作使用不当也会引起死锁,下图是一个例子。
        
        PV操作引发的死锁示例
        在系统中,定义了两个信号量S和Q,它们的初始值都是1。两个任务T1和T2,假设T1先被调度执行,它顺利地通过了P(S)操作,并使S的值变为0。假设这时发生了一次时钟中断,任务T2被调度执行。它顺利地通过了P(Q)操作,并将Q的值变为0。接着在执行P(S)操作时,由于S的值已经是0,因此T2在这里被阻塞起来,并让出CPU。然后任务T1重新开始运行,但是当它执行到P(Q)时,由于Q的值已经为0,因此T1也被阻塞起来。这样一来,任务T1和T2都处于阻塞状态,都在等待对方释放信号量,这就是一种死锁的状态。
   题号导航      2012年下半年 嵌入式系统设计师 上午试卷 综合知识   本试卷我的完整做题情况  
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 /
 
第21题    在手机中做本题