深入解析Linux内存管理.pptx

《深入解析Linux内存管理》 季丹目录预备知识页表管理内核页表物理内存高端内存地址映射虚拟内存地址空间高速缓存页框回收交换机制缺页异常共享内存文件映射程序执行预备知识微机原理内存芯片ATT汇编保护模式脚本链接内核架构页表管理1.逻辑地址转线性地址2.线性地址转物理地址逻辑地址转线性地址机器语言指令中出现的内存地址,都是逻辑地址,需要转换成线性地址,再经过MMU(CPU中的内存管理单元)转换成物理地址才能够被访问到。我们写个最简单的hello world程序,用gccs编译,再反编译后会看到以下指令:mov 0x80495b0, %eax这里的内存地址0x80495b0 就是一个逻辑地址,必须加上隐含的DS 数据段的基地址,才能构成线性地址。也就是说 0x80495b0 是当前任务的DS数据段内的偏移。在x86保护模式下,段的信息(段基线性地址、长度、权限等)即段描述符占8个字节,段信息无法直接存放在段寄存器中(段寄存器只有2字节)。Intel的设计是段描述符集中存放在GDT或LDT中,而段寄存器存放的是段描述符在GDT或LDT内的索引值(index)。Linux中逻辑地址等于线性地址。为什么这么说呢?因为/tag/linux/Linux所有的段(用户代码段、用户数据段、内核代码段、内核数据段)的线性地址都是从 0开始,长度4G,这样 线性地址=逻辑地址+ 0x

文档评论(0)

1亿VIP精品文档

相关文档