美文网首页
Linux内存管理--地址映射

Linux内存管理--地址映射

作者: 羽煊 | 来源:发表于2017-12-11 15:42 被阅读0次

在Linux系统内内存是通过分页机制进行管理的。CPU的页式内存管理单元负责把一个线性地址最终翻译为一个物理地址。线性地址被分为固定长度的单位,成为页。
物理内存也被划分为固定长度的管理单位,称为物理页或页框
Linux系统采用4级分页机制,即

  • 页全局目录(PGD)
  • 页上级目录(PUD)
  • 页中间目录(PMD)
  • 页表(PT)

页全局目录包含若干页上级目录的地址
页上级目录包含若干页中级目录地址
页中级目录包含若干页表地址
每一个页表指向一个页框

对于没有启用PAE的32位系统,2级页表就已经足够了。Linux通过使“页上级目录”位和“页中级目录”位全为0,取消了页上级目录和页中级目录字段。

进程切换时,kernel把CR3控制寄存器的内容保存到当前执行的进程描述符中,把下一个进程描述符的值装入CR3。CR3保存着进程页目录的PGD基地址,不同的进程有不同的页目录地址,切换时,内核负责把页目录地址装入CR3控制寄存器。


32位地址翻译过程如下:
1 从CR3中读取PGD基地址,根据线性地址的22-31位作为页目录项索引值,由PGD基地址和页目录项索引值确定PTE基址。
2 由PTE基址找到页表,根据线性地址的12-22位作为页表项索引值,在页表中找到一个页表项
3 找到的页表项中包含着一个页面的地址,线性地址的0-11位作为页内偏移值和找到的页确定线性地址对应的物理地址。

页表的每一个表项分为2部分,第一部分记录此页表是否在物理内存上,第二部分记录物理内存的地址,进程访问某个虚拟地址去查看页表,如果对应的数据不在物理内存上,则发生缺页异常。由缺页异常处理程序分配物理页。

相关文章

  • Linux内存管理--地址映射

    在Linux系统内内存是通过分页机制进行管理的。CPU的页式内存管理单元负责把一个线性地址最终翻译为一个物理地址。...

  • linux内存映射,内存分布情况

    Linux_Memory_Address_MappingLinux内存地址映射http://ilinuxkerne...

  • 3. 内存管理

    内存管理 内存管理包含: 物理内存管理; 虚拟内存管理; 两者的映射 除了内存管理模块, 其他都使用虚拟地址(包括...

  • kernel 内存 I/O

    内存 I/O# 内存管理单元## MMU辅助操作系统进行内存管理,提供虚拟地址和物理地址的映射、内存访问权限保护和...

  • Linux内核如何管理少于1GB的物理内存

    我们在学习Linux内存管理时了解到: Linux内核将 0MB ~ 896MB 物理内存,映射为 0xC0000...

  • Binder IPC - 基础知识

    基础知识 Linux 内存模型 MMU MMU即内存管理单元,其主要作用是实现虚拟内存到物理内存的映射,其工作原理...

  • 25用户态内存映射

    mmap 将虚拟地址空间映射到物理内存 匿名映射,即虚拟内存和物理内存直接映射文件映射,将文件映射到虚拟内存ima...

  • 嵌入式面试题

    内存管理MMU的作用? 内存分配和回收 内存保护 内存扩充 地址映射 异步IO和同步IO的区别? 如果是同步IO,...

  • Linux内存知识点简单总结

    写在开头:本文为Linux内存相关知识点简单总结。 1. 虚拟地址 Linux采用虚拟内存管理技术,利用虚拟内存技...

  • 初窥linux共享内存

    共享内存的linux IPC的一个方式。最简单的解释就是同一段物理内存被映射到不同进程的地址空间。任和一个被映射的...

网友评论

      本文标题:Linux内存管理--地址映射

      本文链接:https://www.haomeiwen.com/subject/kaeiixtx.html