[30][13][单选]学校教务处在学生选课系统中编写了如下程序供选课学生在网上使用:
Semaphores mutex; //定义信号量
PROCESS P(i, j) //学生学号为i,课程号为j
{ int r; //局部变量
P(mutex); //加锁
r=search(j); //找到课程j并返回课程学生余量
if(r>=1)
{ idendify(i, j); //确认i学生选j课成功,记录
r=r-1;
modify(r, j); //将课程j的课余量修改为r
print( "恭喜您选课成功!" );
}
else print( "对不起,没有该课程或选课已满。" );
V(mutex); //解锁
}请问,该选课程序在使用时
选课学生数可能会超出课程容量
选课学生能够正常选课,选课学生数与初始相符
选课学生未选到系统可能发生死锁
选课学生选不到课,系统会报错
答案
选课学生能够正常选课,选课学生数与初始相符
解析
根据编写的程序可知,判断课程是否可选,主要取决于局部变量 r 的值。程序中设置了 mutex,该信号量只能表示对选课系统进行访问控制,当学生在选课的时候,只要选中了所选的课程,课程剩余量就会减少,不会等到学生选择成功后才修改课程剩余量的值,否则选课学生数可能会超出课程容量。故答案选择 B 选项。
转载请注明出处。
