> For the complete documentation index, see [llms.txt](https://lvxixiao.gitbook.io/blog/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://lvxixiao.gitbook.io/blog/os/store/paged-memory.md).

# 页式存储管理的基本原理

#### 基本原理

**分页存储器**将主存划分成多个大小相等的页架。受页架尺寸限制，程序的逻辑地址也分成**页**。不同的**页**可以放在不同的**页架**中，不需要连续。**页表**用于维系进程的主存完整性。

#### 页式存储管理中的地址

**逻辑地址**

页式存储管理的逻辑地址由两部分组成，**页号和单元号**，逻辑地址形式：

| 页号 | 单元号 |
| -- | --- |

**物理地址**

页式存储管理的物理地址也有两部分组成，**页架号和单元号**，物理地址形式：

| 页架号 | 单元号 |
| --- | --- |

#### 地址转换

逻辑地址与物理地址的地址转换可以通过查页表完成。

![](https://3355579712-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LGG21ze3mQ3ha0y5kNn%2F-LJ22vRL3JyK339thO6q%2F-LJ24MksbohK5pIoyIw0%2F%E9%A1%B5%E5%BC%8F%E5%AD%98%E5%82%A8%E7%AE%A1%E7%90%86%E5%9C%B0%E5%9D%80%E8%BD%AC%E6%8D%A2.png?alt=media\&token=334356c5-cb6d-4aee-ba2f-61210f22f320)

**转换代价**

页表放在主存，每次地址转换必须访问两次主存。

1. 按页号读出页表中的相应页架号
2. 按计算出来的绝对地址进行读写

因此，可以利用Cache存放部分页表，这一部分被称为快表。快表包含**页号和页架号**。

**基于快表的地址转换流程**

1. 按逻辑地址中的页号查快表&#x20;
2. 若该页已在快表中，则由页架号和单元号形成绝对地址
3. 若该页不在快表中，则再查主存页表形成绝对地址，同时将该页登记到快表中。
4. 当快表填满后，又要登记新页时，则需在快表中按一定策略淘汰一个旧登记项

![](https://3355579712-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LGG21ze3mQ3ha0y5kNn%2F-LJ22vRL3JyK339thO6q%2F-LJ24RlFtEcXTQiROp2-%2F%E9%A1%B5%E5%BC%8F%E5%AD%98%E5%82%A8%E7%AE%A1%E7%90%86%E5%9C%B0%E5%9D%80%E8%BD%AC%E6%8D%A2\(%E5%9F%BA%E4%BA%8E%E5%BF%AB%E8%A1%A8\).png?alt=media\&token=2bacb9ad-37b6-4f1a-b59a-bd40339b1adc)

#### 页式存储管理的内存分配/去配

可用一张位式图来记录主存分配情况。
