免费智能真题库 > 历年试卷 > 程序员 > 2015年上半年 程序员 上午试卷 综合知识
  第26题      
  知识点:   进程间的通信
  章/节:   软件基础知识       

 
假设有5个进程共享一个互斥段X,如果最多允许2个进程同时进入互斥段X,则信号量S的变化范围是(25);若信号量S的当前值为-3,则表示系统中有(26)个正在等待该资源的进程。
 
 
  A.  0
 
  B.  1
 
  C.  2
 
  D.  3
 
 
 

 
  第26题    2016年下半年  
   25%
假设系统有n(n≥3)个进程共享资源R,且资源R的可用数3。若采用PV操作,则相应的信号量S的取值范围应为(26)。
  第26题    2016年上半年  
   53%
假设某企业有一个仓库。该企业的生产部员工不断地将生产的产品送入仓库,销售部员工不断地从仓库中取产品。假设该仓库能容纳n件产..
  第25题    2018年上半年  
   44%
假设某计算机系统中资源R的可用数为9,系统中有3个进程竞争R,且每个进程都需要i个R,则该系统可能会发生死锁的最小
   知识点讲解    
   · 进程间的通信
 
       进程间的通信
               同步与互斥
               在操作系统中,多个进程并发执行,因此进程间必然存在资源共享和相互合作的问题。
               1)进程间的同步
               一般情况下,一个进程相对于另一个进程的速度是不可预测的,也就是说,进程之间是异步运行的。为了成功地协同工作,有关进程在某些确定的点上应当保持同步:一个进程到达了这些点后,除非另一进程已经完成了某个活动,否则就停下来,等待该活动结束。
               同步是指进程之间的一种协同工作关系,使这些进程相互合作,共同完成一项任务。进程间的直接相互作用构成进程的同步。同步机制应满足的基本要求是:有描述能力、可以实现、效率高、使用方便。
               2)进程间的互斥
               在多道系统中,各进程可以共享各类资源,但有些资源一次只能供一个进程使用。这种资源称为临界资源,如打印机、公共变量、表格等。互斥是要保证临界资源在某一时刻只被一个进程访问。
               3)临界区管理的原则
               临界区是进程中对临界资源实施操作的那段程序。对互斥临界区管理的原则是:有空即进、无空则等、有限等待、让权等待。
               信号量机制
               信号量机制是一种有效的进程同步与互斥工具。目前主要有:整型信号量、记录型信号量、信号量集机制。
               1)整型信号量与P操作和V操作
               信号量是一个整型变量,根据控制对象的不同被赋予不同的值。信号量分为两类:公用信号量,实现进程间的互斥,初值为1或资源的数目;私用信号量,实现进程间的同步,初值为0或某个正整数。
               信号量S的物理意义:S≥0表示某资源的可用数,若S<0,则其绝对值表示阻塞队列中等待该资源的进程数。
               除了设置初值外,对信号量只能进行特殊的操作:P操作和V操作。P操作和V操作都是不可分割的原子动作,也称为原语,其中P操作表示申请一个资源,V操作表示释放一个资源。
               P操作和V操作都是原语。利用信号量S的取值表示共享资源的使用情况。在使用时,把信号量S放在进程运行的环境中,赋予其不同的初值,并在其上实施P操作和V操作,以实现进程间的同步与互斥。
               P操作和V操作的定义如下。
               P(S):①S=S-1;②若S<0,则该进程进入S信号量的队列中等待。
               V(S):①S=S+1; ②若S≤0,则释放S信号量队列上的一个等待进程,使之进入就绪队列。
               当S>0时,表示还有资源可以分配;当S<0时,其绝对值表示信号量等待队列中进程的数目。每执行一次P操作,意味着要求分配一个资源;每执行一次V操作,就意味着释放一个资源。
               2)利用P操作和V操作实现进程的互斥
               令信号量mutex的初值为1,进入临界区时执行P操作,退出临界区时执行V操作,于是临界区就改写成下列形式的代码段:
               
               由于mutex初值为1, P、V是原子操作,可以实现互斥。
               高级通信原语
               P操作和V操作是用来协调进程间关系的,编程较困难、效率低,而且没有信息交换,故常称为低级通信原语。交换的信息量多时要引入高级通信原语,进程高级通信的类型主要有如下几种。
               (1)共享存储系统:相互通信的进程共享某些数据结构或存储区,以实现进程之间的通信。
               (2)消息传递系统:进程间的数据交换以消息为单位,程序员直接利用系统提供的一组通信命令(原语)来实现通信,如Send(A)、Receive(A)。
               (3)管道通信:所谓管道,是指用于连接一个读进程和一个写进程,以实现它们之间通信的共享文件(pipe文件)。向管道(共享文件)提供输入的发送进程(即写进程),以字符流的形式将大量的数据送入管道;而接收进程可从管道接收大量的数据。由于通信是采用管道的方式,所以叫管道通信。
   题号导航      2015年上半年 程序员 上午试卷 综合知识   本试卷我的完整做题情况  
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题    在手机中做本题