步骤 3 / 9
按页查页表
硬件以页为单位,按当前进程的页表把虚拟页换成物理页。
内存被切成固定大小的页(x86-64 上通常 4KB),只记录“哪个虚拟页对应哪个物理页”,页内位置不变。 每个进程有自己的页表,由内核建立,程序自己改不了;切换进程时就换一套页表。 页表还记着权限,违反就会触发异常。
操作系统
每个程序都以为自己独占一大片内存,其实背后有一层翻译。
以 Linux 上一个程序读取自己内存中的一个变量为例,只讲概念。
步骤 3 / 9
硬件以页为单位,按当前进程的页表把虚拟页换成物理页。
内存被切成固定大小的页(x86-64 上通常 4KB),只记录“哪个虚拟页对应哪个物理页”,页内位置不变。 每个进程有自己的页表,由内核建立,程序自己改不了;切换进程时就换一套页表。 页表还记着权限,违反就会触发异常。
| 当前状态 | 发生了什么 |
|---|---|
| 用户态 | 程序想读取一个变量 |
| 用户态 | 地址落在“堆”区域 |
| 用户态 | 查页表,得到物理地址 |