假定题44给出的计算机M采用二级分页虚拟存储管理方式,虚拟地址格式如下:
页目录号(位)页表索引(位)页内偏移量(位)页目录号(10位)页表索引(10位)页内偏移量(12位)
请针对题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中的机器指令代码,
int f1(unsigned n)
1 00401020 55 push ebp
... ... ...
for (unsigned i = 0; i <= n-1; i++)
... ... ...
20 0040105E 39 4D F4 cmp dword ptr [ebp-0Ch],ecx
... ... ...
{ power *= 2;
... ... ...
23 00401066 D1 E2 shl edx,1
... ... ...
return sum;
... ... ...
35 0040107F C3 ret
回答下列问题。
(1) 函数f1的机器指令代码占多少页?
(2) 取第1条指令(push ebp)时,若在进行地址变换的过程中需要访问内存中的页目录和页表,则会分别访问它们各自的第几个表项(编号从0开始)?
(3) M的I/O采用中断控制方式。若进程P在调用f1之前通过 scanf() 获取n的值,则在执行 scanf() 的过程中,进程P的状态会如何变化?CPU是否会进入内核态?