信号量的初始值

来源:互联网 发布:linux内核开发流程 编辑:程序博客网 时间:2024/04/30 20:47

互斥信号量的初始值一般是1,因为两个进程之间的缓冲区通常是一个。

对于同步信号量,前一个进程的同步信号量的初始值一般是n,后一个进程的同步信号量的初始值一般是0.


怎么判断同步信号量是属于哪个进程的

同步信号量的P操作在哪一个进程前面,该信号量就是哪一个进程的。


 某企业生产流水线M共有两位生产者,生产者甲不断地将其工序上加工的半成品放入半成品箱,生产者乙从半成品箱取出继续加工。假设半成品箱可存放n件半成品,采用PV操作实现生产者甲和生产者乙的同步可以设置三个信号量S、Sl和S2,其同步模型如下图所示。


  信号量S是一个互斥信号量,初值为( );Sl、S2的初值分别为( )。
A.0       B.1       C.n       D.任意正整数
A.n、0      B.0、n      C.1、n      D.n、1


 
试题答案:B,A
试题来源:2011年下半年软件设计师考试试题

解析:甲乙之间的那个半成品箱就只有一个,所以互斥信号量的初始值是1。



企业的生产流水线上有2名工人P1和P2,1名检验员P3。P1将初步加工的半成品放入半成品箱B1; P2从半成品箱B1取出继续加工,加工好的产品放入成品箱B2;P3从成品箱B2去除产品校验。假设B1可存放n件半成品,B2可存放m件产品,并设置6 个信号量S1、S2、S3、S4、S5和S6,且S3和S6的初值都为0。采用PV操作实现P1、P2和P3的同步模型如下图所示,则信号量S1和 S5(23);S2、S4的初值分别为(24)。
     

      (23)A.分别为同步信号量和互斥信号量,初值分别为0和1
      B.都是同步信号量,其初值分别为0和0
      C.都是互斥信号量,其初值分别为1和1
      D.都是互斥信号量,其初值分别为0和1
      (24)A.n、0    B. m、0    C.m、n    D.n、m



0 0
原创粉丝点击