发布时间:2016-09-04 14:02:44
GDT (Global Descriptor Table)全局描述符表,保存着全局各种段描述符。它是一个数组,起始地址存放在GDTR寄存器中。LDT (Local Descriptor Table)局部描述符表,保存局部使用的段描述符。它也是一个数组,起始地址存放在LDTR寄存器中。http://blog.csdn.net/yeruby/article/details/39718119GDT的由来:.........【阅读全文】
发布时间:2016-09-04 13:13:06
前面分析了linux内核如何开启保护模式和启用段页映射模式,也都分析了段式映射和段页式映射的一个概况。不过前面的分析只是侧重地讲解了x86 32位环境4Kbytes页面大小的情况,但是实际上x86可支持的分页映射模式远不止于此。所以特地总结一下。 这里先基于保护模式下IntelIA-32架构处理器非PAE下4kbytes页面.........【阅读全文】
发布时间:2016-09-04 11:20:52
前面的初探内存保护模式里面,Linux最初进入保护模式,仅仅是一种纯段式的内存映射模式,而且也未起到很明显的保护作用,明显这不是linux内存管理的最终模式。Linux是不使用段保护的,使用的是页保护,所以它还需要开启分页管理。 分页说简单也简单,就是通过页全局目录找到页表接着通过页表找到页面,诸如.........【阅读全文】
发布时间:2016-09-03 23:59:33
近期深入学习linux内核,先从内存管理下手吧,考虑到老版本的内核分析文章已经较多,于是找了一个较新的LTS内核版本尝试自行分析,这里选择了linux 3.14版本,环境主要是x86。 Linux系统的内存管理是一个很复杂的“工程”,它不仅仅是物理内存管理,同时包括虚拟内存管理、内存交换和回收等,还有管理中的各.........【阅读全文】
发布时间:2016-09-03 23:57:09
至此linux首次进入保护模式所需的准备工作已经基本完成,段描述符表准备好了,而且GDTR也设置完毕了。 那么接下来看一下go_to_protected_mode()最后的调用:protected_mode_jump(boot_params.hdr.code32_start,(u32)&boot_params + (ds() ......【阅读全文】