首页 > 试题广场 >

题目来源于王道论坛 假定题44给出的计算机M采用

[问答题]
题目来源于王道论坛

假定题44给出的计算机M采用二级分页虚拟存储管理方式,虚拟地址格式如下:

页目录号(10位)

页表索引(10位)

页内偏移量(12位)

请针对题43的函数f1和题44中的机器指令代码,回答下列问题。

1)函数f1的机器指令代码占多少页?

2)取第1条指令(push ebp)时,若在进行地址变换的过程中需要访问内存中的页目录和页表,则会分别访问它们各自的第几个表项(编号从0开始)?

3MI/O采用中断控制方式。若进程P在调用f1之前通过scanf()获取n的值,则在执行scanf()的过程中,进程P的状态会如何变化?CPU是否会进入内核态?

补充:43. 已知,计算f(n)C语言函数f1如下:


int f1(unsigned n){

int sum=1, power=1;

for(unsigned i=0;i<=n-1;i++){

power  *= 2;

sum += power;

}

return sum;

}

将f1中的int都改为float,可得到计算f(n)的另一个函数f2。假设unsigned和int型数据都占32位,float采用IEEE 754单精度标准。
44. 在按字节编址的计算机M上,题43f1的部分源程序(阴影部分)与对应的机器级代码(包括指令的虚拟地址)如下:


其中,机器级代码行包括行号、虚拟地址、机器指令和汇编指令。
推荐

解答:

1)函数f1的代码段中所有指令的虚拟地址的高20位相同,因此f1的机器指令代码在同一页中,仅占用1页。(1分)页目录号用于寻找页目录的表项,该表项包含页表的位置。页表索引用于寻找页表的表项,该表项包含页的位置。

2push ebp指令的虚拟地址的最高10位(页目录号)为00 0000 0001,中间10位(页表索引)为00 0000 0001,所以,取该指令时访问了页目录的第1个表项,(1分)在对应的页表中访问了第1个表项。(1分)

3)在执行scanf()的过程中,进程P因等待输入而从执行态变为阻塞态。(1分)输入结束时,P被中断处理程序唤醒,变为就绪态。(1分)P被调度程序调度,变为运行态。(1分)CPU状态会从用户态变为内核态。(1分)

发表于 2018-09-11 19:27:49 回复(2)
编号为1,应该是第二个表项啊
发表于 2019-11-18 17:10:41 回复(0)