操作系统
2017-45
假定题 44 给出的计算机 M 采用二级分页虚拟存储管理方式,虚拟地址格式如下:
[页目录号(10 位) | 页表索引(10 位) | 页内偏移量(12 位)]
请针对题43的函数f1和题44中的机器指令代码,回答下列问题。
题43中的函数 f1:
int f1(unsigned n){
int sum=1, power=1;
for(unsigned i=0; i<=n-1; i++){
power *= 2;
sum += power;
}
return sum;
}题44中的机器指令代码:

(1)函数f1的机器指令代码占多少页?
(2)取第1条指令(push ebp)时,若在进行地址转换的过程中需要访问内存中的页目录和页表,则会分别访问它们各自的第几个表项(编号从0开始)?
(3)M的I/O采用中断控制方式。若进程P在调用f1之前通过scanf()获取n的值,则在执行scanf()的过程中,进程P的状态会如何变化?CPU是否会进入内核态?
答案
(1) 仅占用1页。
(2) 会分别访问页目录的第1个表项和页表的第1个表项。
(3) 进程P的状态变化为:执行态→阻塞态→就绪态→运行态;CPU会从用户态进入内核态。