文章

61

粉丝

0

获赞

0

访问

4.3k

头像
2009年计算机学科专业基础综合试题 - 第45题回答
操作系统
发布于2025年8月31日 21:22
阅读数 5

semaphore mutex=1,empty=N,full=0,oddnum=0, evennum=0;

int num=0;

p1{

    while(true){

     p(empty);

     p(mutex);

    num= produce();

    if(num%2==0){

    put(num);

     v(evennum);

}else{

put(num);

  v(oddnum);

}

v(mutex);

}

}

p2{

  while(true){

   p(oddnum);

  p(mutex);

  getodd();

   countodd();

   v(mutex);

}

p3{

  while(true){

   p(evennum);

  p(mutex);

  geteven();

   counteven();

   v(mutex);

}


评分及理由

(1)信号量定义(满分1.5分)

得分:1分

理由:学生定义了mutex(互斥)、empty(空缓冲区计数)、oddnum(奇数同步)和evennum(偶数同步)信号量,基本正确。但缺少了full信号量(或类似机制)来正确控制消费者对缓冲区的访问,因为标准答案中P2和P3需要等待特定信号(odd或even)才能执行,而学生的oddnum和evennum相当于标准答案的odd和even,但full信号量定义多余(实际未在同步逻辑中正确使用),这里扣0.5分。

(2)P1进程实现(满分2分)

得分:1.5分

理由:P1中使用了P(empty)和P(mutex)来保证缓冲区和互斥访问,正确;生成数后...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发