内容简介:
试题1:现有的操作系统对进程状态的定义不尽相同,有的还引入了挂起(suspend)状态。试简要分析挂起状态的意义。
试题2:下述关于双进程临界区问题的算法(对编号为id的进程)是否正确:
do{
blocked[id]=true;
while(turn !=id
{
while(blocked[I-id]);
turn=id;
}
编号为id的进程的临界区
blocked[id]=false;
编号为id的进程的非临界区
}while(true);
其中,布尔型数组blocked[2]初始值为{false,false},整型turn初始值为0,id代表进程编号(0或1)。请说明它的正确性,或指出错误所在。
试题3:信号量如果只能取0或1为值,就变成了二元信号量。二元信号量更容易实现。而且,信号量可以由二元信号量替换。以下所列函数试图用二元信号量操作waitB()和singalB()替换信号量wait()、signal():
wait(semaphore s)
{
waitB(mutex);
s=s-i
if(s<0)
{
signalB(mutex);
waitB(delay);
}
else
signalB(mutex);
}
signalB(semaphore) s}
{
waitB(mutex);
s=s+1;
if(s<=0)
signalB(delay);
signalB(mutex);
}
其中,用于互斥的二元信号量mutex初始化为1,用于进程挂起的二元信号量dealy初始化为0。请指出该替换算法的错误所在。
试题4:已知某系统页面长4K字节,页表项4字节,采用多层分页策略映射64位虚拟地址空间。叵限定最高层页表占1页,问它可以采用几层分页策略。
试题5:一进程已分配到4个页帧(page frame),如下表(所有数字都为10进制数,且以0开始)。
虚拟页号 页帧 装入时间 最近访问时间 记问位 修改位
2 0 60 161 0 1
1 1 130 160 0 0
0 2 26 162 1 0
3 3 20 163 1 1