文章

286

粉丝

0

获赞

2

访问

122.9k

头像
2024年(408)计算机学科专业基础综合试题 - 第46题回答
操作系统
发布于2025年12月16日 15:51
阅读数 127

1)是临界区 如果p1 p2同时执行C1向B中写入数据分组可能会导致数据不一致 ,所以要求任何时刻只能有一个进程访问B所以实现C1的代码是临界区

2)

semaphore mutex=1;//互斥执行 
semaphore full=0;//初始空
P1(){
  while(TRue){
    p(mutex);//互斥
    C1/执行C1向B写入数据
    V(mutex);
    V(full);//与p2同步
  }
}
P2(){
  while(TRue){
    P(full);//有数据时才能访问
    p(mutex);//互斥
    C2/执行C2从B取出数据
    V(mutex);
  }
}

3)

semaphore mutex=1;//互斥访问
p1(){
    p(mutex);//互斥访问B
    C2//执行C2
    V(mutex);//释放互斥锁
}
p2(){
    p(mutex);//互斥访问B
    C2//执行C2
    V(mutex);//释放互斥锁
}

 


评分及理由

(1)得分及理由(满分2分)

学生正确指出C1的实现代码是临界区,并给出了合理的解释:多个进程同时执行C1可能导致数据不一致,因此需要互斥访问。答案与标准答案核心思想一致。得2分。

(2)得分及理由(满分3分)

学生定义了正确的两个信号量(mutex和full)并给出了正确的初值(1和0),作用描述基本正确。同步逻辑正确:P1先互斥写入,然后V(full)通知;P2先P(full)等待数据,再互斥读取。代码中存在两处笔误/不规范:1. 信号量操作写成了p/V而非wait/signal,但含义明确;2. P1和P2的代码中包含了`while(True)`循环,题目只要求各执行一次,此循环虽不影响单次执行的正确性,但略显多余,并非逻辑错误。整体思路和实现正确。扣1分,因为题目明确要求用`wait()`和`signal()`操作描述,学生使用了`p()`和`V()`,属于未完全按照题目要求作答。得2分。

(3)得分及理由(满分3分)

学生定义了一个互斥信号量mutex,初值为1,用于保护对缓冲区B的访问。P1...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发