linux内核地址mapping

linux内核采用页式存储管理,虚拟地址空间划分成固定大小的页面,由MMU(memory manager unit)在运行时将virtual address mapping to (或者说是变化成)某个物理内存页面中的地址;同段式存储管理相比,页式存储管理有不少的优势

  page size 固定 const,便于管理;

  当要将一部分物理空间的内容换到磁盘上的时候,在段式内存存储管理中要将整个段都换出(通常的每个段都是很大的);而在page storage manager中则是按页进行;

  页式存储管理与段式存储管理所要求的硬件支撑不同,一种CPU既然支撑页式存储管理,就无需再支持段式存储管理了,当i386很特殊,需特别对待;

  由于i386系列的历史演变过程,它对页式存储管理的支持是在其段式存储管理已经存在 相当的时间才发展起来的,i386程序不管程序 怎么写,一律对程序中石油的地址先进行段式mapping,再进行page math mapping;既然CPU的硬件结构如此这般,Linux内核也只好服从Intel;这样的双重映射起始是毫无必要的,也使mapping 的过程变的更加的复杂,不易理解;

总结真实的段式内存管理仅需在i386上实现,对于M68k,powerpc根本则不存在段式映射这一层,但请注意,不管是神马操作系统UNIX也不例外,只要在i386上的实现,就必须至少在实现上要先经过段式内存的mapping;

linux objdump实用工具时很有用的,可以用来实现反汇编binary;

保护模式下段寄存器format;

TI(table Indicator,0=GDT-global describe table,1=LDT-local..)

RPL-Request Privilge level;

Intel的涉及意图是用内核用GDT,其它的进程用其各自的LDT,最低2位RPL(Request Privilge level)为所要求的特权级别;

内核在建立一个进程时都要将其段寄存器设置好;

linux内核地址mapping

上一篇:Android 不显示光标或者光标颜色为白色的解决方法


下一篇:Android中Activity启动模式详解