文章

203

粉丝

40

获赞

1

访问

11.5k

头像
2024年计算机学科专业基础综合试题 - 第46题回答
操作系统
发布于2025年9月11日 17:33
阅读数 28

(1)对C1的代码不是临界区,因为不同进程对缓冲区B访问需要互斥,同一时刻只有一个进程可以进入缓冲区B,所以C1代码对于进入缓冲区B的进程来说是独享的

(2)

cobegin{

semaphore mutex = 1;//互斥访问缓冲区B

semaphore empty = 1;//缓存B中还可以放入的数据量

semaphore buffer_B = 0;//B中可用数据

p_1(){

while(1){

wait(mutex);

wait(empty);

执行C1,往缓冲区中放入数据;

sighal(buffer_B);

signal(mutex);

}

}

p_2(){

wait(mutex);

wait(buffer_B);

执行C2,从B从读取一个数据;

signal(empty;)

signal(mutex);

}

}coend;

 

(3)

cobegin{

semaphore empty = 1;//B中可用数学

semaphore mutex = 1;//对缓冲区B上锁

p_1(){

while(1){

p(mutex);

p(empty);

执行C3,修改数据;

v(empty);

v(mutex);

}

}

 

p_2(){

while(1){

p(mutex);

p(empty);

执行C3,修改数据;

v(empty);

v(mutex);

}

}

 

}coend;


评分及理由

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

学生得0分。理由:学生认为C1代码不是临界区,但标准答案明确指出C1是临界区,因为多个进程(P1和P2)都需要执行C1(写入操作),而缓冲区B是共享资源,必须互斥访问以防止数据不一致。学生的回答错误地认为C1是“独享”的,但实际需要同步机制保证互斥。

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

学生得1分。理由:学生定义了三个信号量(mutex、empty、buffer_B),但题目要求“尽可能少的信号量”,标准答案...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发