至此linux首次进入保护模式所需的准备工作已经基本完成,段描述符表准备好了,而且GDTR也设置完毕了。
那么接下来看一下go_to_protected_mode()最后的调用:
protected_mode_jump(boot_params.hdr.code32_start,
(u32)&boot_pa[……]
至此linux首次进入保护模式所需的准备工作已经基本完成,段描述符表准备好了,而且GDTR也设置完毕了。
那么接下来看一下go_to_protected_mode()最后的调用:
protected_mode_jump(boot_params.hdr.code32_start,
(u32)&boot_pa[……]
接下来,看看linux首次进入的保护模式的内存映射方式,然后再看一下linux是如何实现保护模式的进入,进入前做了什么准备和设置。
还是借用Intel文档中的图来说明这个保护模式的保护功能:
根据不同的段寄存器内容查找到对应的段描述符,描述符指明了此时的环境的可以通过[……]
既然都说是分析x86环境的linux系统内存管理,如果不分析一下x86那绕来绕去的内存映射机制,个人感觉等于什么都没分析。其实x86的内存映射机制,说复杂也不复杂,说简单也不简单,简单点说x86内存映射莫过于就两个映射:段式映射和页式映射。其中页式映射是基于段式映射的基础上而形成的,那就意味着可以是:纯段式映射和段页式映射。这些都是简单的[……]