3.10 练习

  1. 分析RISC-V的设备树以找到计算机拥有的物理内存量。
  2. 编写一个用户程序,通过调用sbrk(1)为其地址空间增加一个字节。运行该程序并研究调用sbrk之前和调用sbrk之后该程序的页表。内核分配了多少空间?新内存的PTE包含什么?
  3. 修改xv6来为内核使用超级页面。
  4. 修改xv6,这样当用户程序解引用空指针时会收到一个异常。也就是说,修改xv6使得虚拟地址0不被用户程序映射。
  5. 传统上,exec的Unix实现包括对shell脚本的特殊处理。如果要执行的文件以文本#!开头, 那么第一行将被视为解释此文件的程序来运行。例如,如果调用exec来运行myprog arg1,而myprog的第一行是#!/interp,那么exec将使用命令行/interp myprog arg1运行 /interp。在xv6中实现对该约定的支持。
  6. 为内核实现地址空间随机化