课后作业4.4:页式虚存提交

课后作业4.4:页式虚存提交
/8/28 5:04:56
第1关:可执行文件的执行
本关任务:
在 bochs 虚拟机中编译程序 01.c ,可以得到一个可执行文件 。请分析该程序的运行,回答下列问题:
1.执行该文件的系统调用刚开始执行时,当前进程的用户虚空间是什么?该空间的第一个页表项和最后一个页表项分别是什么?
2.执行该文件的系统调用执行结束时,该进程的用户虚空间是什么?该空间占据几个页目录项?第一个页目录项的地址和值分别是什么?
3.该可执行文件的代码段和数据段的长度之和是多少?
首先需要将文件复制到指定目录下:
然后用版本 0 内核启动虚拟机,并在虚拟机中用mcopy命令将该文件拷入虚拟
机,并编译 。

课后作业4.4:页式虚存提交

文章插图
可以在 bochs虚拟机中先将该文件放入 b盘,然后关闭 bochs虚拟机,并在弹出的对话框中选择 yes:
然后启动gdb调试,在处设置断点,一直c,直到最后一个:
然后在bochs虚拟机中运行之前编译好的可执行文件:
回到调试中,输入指令(进程的用户虚空间的起始地址是 ->,长度是 ->brk),本题用户的虚空间为
~
求页表项是什么实际上就是求页表项的值:
根据前面学的方法,先以线性地址的高 10 位为索引在页目录中找到对应的页目录项,然后以线性地址的中间 10 位为索引在页表中找到对应的页表项,
课后作业4.4:页式虚存提交

文章插图
然后输入指令,结束该系统调用 。
输入相应指令查看虚空间 。
输入指令x/wx 0x+64*4,即可求得相应的地址和值 。
【课后作业4.4:页式虚存提交】按quit退出调试,用 命令查看一个可执行文件的具体内容:
最终答案:
1.执行该文件的系统调用刚开始执行时,该进程的用户虚空间是什么?(~)该空间的第一个页表项和最后一个页表项分别是什么?()()
2.执行该文件的系统调用执行结束时,该进程的用户虚空间是什么?(~)该空间占据几个页目录项?(1)第一个页目录项的地址和值分别是什么?(0x100)(0x0)
3.该可执行文件的代码段和数据段的长度之和是多少?()