一、虚拟内存核心概念
虚拟内存是Linux内核最基础也最关键的功能之一。它为每个进程提供统一的虚拟地址空间抽象,使得每个进程都认为自己独占整个物理内存。这种抽象隔离了应用程序基于物理地址的关心,显著提升了安全性和稳定性。
在64位x86_64架构上,进程的虚拟地址空间达到128TB(用户空间),但物理内存通常仅为GB级别。内核通过页式内存管理实现了从虚拟地址到物理地址的映射,而缺页中断(Page Fault)是这个映射过程中最必要的机制之一。
二、多级页表与地址映射机制
x86_64架构使用4级页表(新一代5级页表支持57位虚拟地址)。地址转换过程如下:
- 页全局目录(PML4/PGD):最高层,CR3寄存器指向
- 页目录元组(PUD):第2级,可直接映射1GB大页
- 页中间目录(PMD):第3级,可直接映射2MB大页
- 页表(PTE):最底层,映射4KB标准页
每一级页表都在内存中占据一个页面(4096字节),包含512个8字节的页表项。新型架构引入5级页表(PML5),将虚拟地址空间扩展至256TB。
三、缺页中断(Page Fault)处理流程
当CPU诿问一个未映射或访问

发表评论 取消回复