Linux内存管理 - 大页 (一)

一. 内存映射和页表

我们通常说的内存容量, 指的是物理内存, 只有内核才可以直接访问物理内存。 进程并不可以

Linux内核给每个进程都提供了一个独立的虚拟地址空间, 并且这个地址空间是连续的, 这样, 进程就可以很方便的访问虚拟内存。 

虚拟地址空间的内部又被分为内核空间和用户空间两部分。 不同字长的处理器, 地址空间的范围页不同。 

 * 并不是所有的虚拟内存都会分配物理内存, 只有那些实际使用的虚拟内存才分配物理内存, 并且分配后的物理内存, 是通过内存映射来管理的。 

二. 页表

为了完成内存映射, 内核为每个进程都维护了一张页表, 记录虚拟地址和物理地址的映射关系。 

 页的大小只有4KB, 但是当物理内存很大时, 页表就变得非常大。 

三. 页表的简单工作原理

32位系统下, 页大小为4K

  • 目录表: 用于索引页表的数据结构。 存储目录项。 每个目录项指向一个页表
  • 页表: 用来存放物理地址页的起始位置 (页表项) 
  • 页表项: 每个页表项指向4K的物理内存页。 

 

posted @ 2023-07-17 11:43  球球小世界  阅读(184)  评论(0编辑  收藏  举报