文章

63

粉丝

0

获赞

0

访问

13.1k

头像
2017年计算机学科专业基础综合试题 - 第46题回答
操作系统
发布于2025年10月16日 09:46
阅读数 166

semaphore mutex_y_13 = 1; // 实现thread1与thread3对y的互斥访问
semaphore mutex_z_23 = 1; // 实现thread2与thread3对z的互斥访问

CoBegin
  thread1{
    cnum w;
    P(mutex_y_13); // (互斥) 防止thread3读写y
    w = add(x, y); // 涉及对互斥资源y的读取
    V(mutex_y_13); // (互斥) 允许thread3读写y
    ...
  }

  thread2{
    cnum w;
    P(mutex_y_23); // (互斥) 防止thread3读写y
    P(mutex_z);    // (互斥) 防止thread3读写z
    w = add(y, z); // 涉及对互斥资源y和z的读取
    V(mutex_z);    // (互斥) 允许thread3读写z
    V(mutex_y_23); // (互斥) 允许thread3读写y
    ...
  }

  thread3{
    cnum w;
    w.a = 1;
    w.d = 1;
    P(mutex_z);    // (互斥) 防止读写z时thread2读z
    z = add(z, w); // 涉及对互斥资源z的读写
    V(mutex_z);    // (互斥) 读写完毕, 允许thread2读z
    P(mutex_y_13); // (互斥) 防止读写y时thread1读y
    P(mutex_z_23); // (互斥) 防止读写y时thread2读y
    y = add(y, w); // 涉及对互斥资源y的读写
    V(mutex_y_13); // (互斥) 读写完毕, 允许thread1读y
    V(mutex_y_23); // (互斥) 读写完毕, 允许thread2读y
    ...
  }
CoEnd

 


评分及理由

(1)信号量定义得分及理由(满分3分)

学生定义了2个信号量:mutex_y_13(用...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发