文章

408

粉丝

0

获赞

0

访问

106.4k

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

1):是,临界区是访问临界资源的代码,P1,P2需要互斥执行C1。

2):

semaphore empty=1,full=0;//empty用来指示缓冲区空的个数,full用来指示缓冲区中数据的个数;

p1{

    wait(empty);   // 等待缓冲区为空
    执行C1(写入数据到B);
    signal(full);  // 标记缓冲区有数据

}

p2{

wait(full);    // 等待缓冲区有数据
执行C2(从B中读出数据);
signal(empty); // 标记缓冲区为空

}

3):

semaphore mutex=1,full=1;//mutex用来表述互斥进入缓冲区,full用来指示缓冲区中数据的个数;

p1{

wait(full);    // 等待缓冲区有数据
wait(mutex);   // 互斥访问缓冲区
执行C3(修改B中的数据);
signal(mutex); // 释放缓冲区访问权
signal(full);  // 保持缓冲区有数据状态(C3不改变B的非空性)

}

p2{

wait(full);    // 等待缓冲区有数据
wait(mutex);   // 互斥访问缓冲区
执行C3(修改B中的数据);
signal(mutex); // 释放缓冲区访问权
signal(full);  // 保持缓冲区有数据状态

}


评分及理由

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

学生回答正确,指出C1是临界区,因为P1和P2需要互斥执行C1。理由充分且与标准答案一致。得2分。

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

学生使用了两个信号量empty和full,思路正确,但缺少互斥信号量。在P1执行C1和P2执行C2的过程中,虽然empty和full能够实现同步,但缺少对缓冲区的互斥保护。如果多个进程同时访问缓冲区,可能导致数据不一致。因此扣1分。得2分。

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

学生使用了mutex和full两个信号量,但...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发