zoukankan      html  css  js  c++  java
  • 一道关于信号量的题目

    答案:

    ----------------------------------------------------------

    a. P(S1)

    b. V(S2) V(S3)

    c.P(S2)

    d.V(S4)

    e.P(S4)

    f.V(S5)

    ----------------------------------------------------------

    信号量问题还可以理解, 但是理解不了这道题. 好好地对了对答案, 发现个问题, 题目里没有说S1是P1的信号量, S2是P2的信号量.

    题目用了大量的P1,S1, a,b,c,d , 选项又是ABCD,

    所以题目就是为了让大家出错.

    如果程序写成这样, 会被打S.

    一旦发现了S1和P1的关系, 不在数字1上这个关键点, 就好办了. 建议做题的时候, 使用进程1, 进程2来代替P1,P2... 这道题答不对, 我觉得就是乱在文字上.

    进程1 结束, 要发信号给 进程2. 题目里用了 V(S1), 也就是信号1的V操作.

    那么进程2执行之前, 应该收到信号, 去做-1操作,及P操作. 那么就是P(S1). 信号量就是进程1结束时的信号量.

    进程2结束之后, 要给进程3和进程4发型号, 那么用两个变量S2,S3, 做+1 V操作. 通知进程3和进程4,

    到底是进程3使用S2, 还是S3, 还是进程4使用S3,S2,  看下文, 进程4执行的时候,做了S3的减操作,意思是进程4收到了S3, 而S3是进程2结束后发出的, 所以进程2-->进程4 这条线用了S3

    所以进程2->进程3 使用了S2.   所以

    到了进程3开始, 就要做S2的减操作, 就是P(S2).

    进程3结束, 应该给进程4再发一个信号, 那么排下来, 就是S4咯. 所以d就是 V(S4).

    进程4执行有两个信号, P(S3)给了, 刚才进程3结束又来了一个S4, 那么 e 填P(S4)

    进程4结束后, 通知进程5, 再给一个变量S5, 通知一下, 就是V(S5).

  • 相关阅读:
    Swift 网络请求数据与解析
    第三方-Swift2.0后Alamofire的使用方法
    java异常处理机制throws
    eclipse导入不到嵌套的项目
    java异常处理机制Exception
    在eclipse中查找指定文件
    mysql查询count
    【待解决】An internal error occurred during: "Launching baiduTest1". java.lang.NullPointerException
    TestNG升级
    eclipse安装TestNG插件
  • 原文地址:https://www.cnblogs.com/tekikesyo/p/10893824.html
Copyright © 2011-2022 走看看