五一假期前落下了几节操作系统的课,现在艰难的恶补中。。

以下是分页存储管理相关的一些知识点梳理。

 

首先我们应该知道的概念:

逻辑地址:是程序编译后,生成的目标模块进行编址时都是从0号开始编址,称之为目标模块的相对地址,即逻辑地址。

虚拟地址:计算机处理器的地址有32位和64位的两种,对应的虚拟地址的空间大小分别是2^32字节和2^64字节,字节用B表示。

页:分页存储管理将进程的逻辑地址空间划分为若干页(面),并且对其编号,号数从0开始,每个页(面)的大小称为页面大小,且大小应为2的幂。

物理块:将内存的物理地址空间划分为若干块,称为物理块,物理块与页(面)一一对应。

页表:又称页面映像表,存储在内存中,通过页表建立页(面)与物理块的索引。

下面通过举例子梳理一下:

假设我们已经知道了逻辑地址是32位,页面大小是4KB=2^12B,页表项是4B(32位)。

1.因为逻辑地址我们假设为32位,可知虚拟地址的空间大小是2^32B。

逻辑地址:在分页地址中划为两部分,一个是页号P(页面数目),另一个是位移量W(物理块号)。

2.由已知条件求得页面数目P=2^32B/2^12B=2^20页,同时得出页号地址是20位。

A表示逻辑地址空间中的地址,L表示页面大小。

3.页表项:在页表中,一个页号与其对应的物理块号称之为一个页表项(由已知条件知道大小是32位)。故页表项的数目就等于页(面)数目即为2^20个,全部页表项(页表中从上往下数)所需的地址也就是20位。

红框即为一个页表项,以此类推。

4.物理块号的地址=逻辑地址-页号地址=32-20=12位,因为并不是进程的每一个页面都要调入内存,所以只有部分页面有对应内存的物理块号,所以物理块号的大小(2^12)会小于页号大小(2^20)。

以上是我个人的理解,欢迎交流指正。

最近闲来无事云开发了个Java刷题的小程序,有兴趣的可以看看哈。——2019.09.20

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐