文章

62

粉丝

0

获赞

0

访问

10.0k

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

semaphore mutex = 0, w = 0, rw = 0;
int count = 0;

thread1
{
  P(w);
  P(mutex);
  if(count == 0)
    P(rw);
  count++;
  V(mutex);
  V(w);
  cnum w;
  w=add(x, y);
  ...
  P(mutex);
  count--;
  if(count == 0)
    V(rw);
  V(mutex);
}

thread2
{
  P(w);
  P(mutex);
  if(count == 0)
    P(rw);
  count++;
  V(mutex);
  V(w);
  cnum w;
  w=add(y, z);
  ...
  P(mutex);
  count--;
  if(count == 0)
    V(rw);
  V(mutex);
}

thread3
{
  P(w);
  P(rw);
  cnum w;
  w.a = 1;
  w.b = 1;
  z = add(z, w);
  y = add(y, w);
  ...
  V(rw);
  V(w);
}


评分及理由

(1)信号量设计得分及理由(满分3分)

学生使用了mutex、w、rw三个信号量和count计数器,这是读者-写者问题的解决方案。但题目要求的是对特定共享变量(y、z)的互斥访问,而不是通用的读写控制。学生的信号量设计没有针对具体共享资源进行精确控制,与题目要求的"确保线程互斥访问临界资源"不完全匹配。得1分。

(2)互斥实现得分及理由(满分5...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发