Skip to content

pa3-2

题目

1.NEMU在什么时候进入了保护模式?
  • 在完成系统gdt表以及段寄存器的初始化后cr0的pe位会被置1,这也叫就意味着系统进入了保护模式,开始使用段机制

  • ``` # Enable protection movl %cr0, %eax # %CR0 |= PROTECT_ENABLE_BIT orl $0x1, %eax movl %eax, %cr0

    ```

2.在GDTR中保存的段表首地址是虚拟地址、线性地址、还是物理地址?为什么?
  • 线性地址,GDTR是由lgdt进行装载的,lgdt指令会将从文件中获取的gdt地址保存到GDTR中。因为GDT表的作用是实现把48位逻辑地址映射为32位线性地址,因此不可能是逻辑地址,否则就会陷入死循环;而又因为使用的是段页式存储,因此在GDTR中存储的是线性地址而不是物理地址。

总结

  • 这部分需要完成的内容较多,比较零碎的分布在不同文件,需要按照手册逐步去完成。
  • 这部分主要的难点还是区分段选择符和段描述符,在段寄存器的理解上有一定的难度。