分页存储概念清晰梳理(页面、页表、页表项、页面大小、页内地址等概念)

当我在学习操作系统的存储器管理这一章中的分页存储时发现我总是将许多概念混为一谈,当我求助于CSDN等众多网站的资源时发现其中的概念作者写的十分清晰但篇幅较长难以理解,因此我想用自己的理解用更加简洁明了的话语帮助更多困扰于分页存储系统概念的人员。

本文相关概念如下:

(1)(逻辑)地址空间

(2)页面、页

(3)页面大小

(4)页号

(5)位移量、偏移量、页内地址

(6)页表

(7)页表项

(8)页表项大小

(9)页表长度

(10)物理块、页框

(11)页内碎片

(12)页表(基址)寄存器


下面开始分别介绍:

1.(逻辑)地址空间:简单的理解为程序进程在运行时系统为其分配的运行内存空间。

2.页面(页):将用户进程的(逻辑)地址空间划分为固定且大小相等的一个个区域。

注:页面和页是同一概念!!!划分出来的一个区域为一个页(页面)!!!

3.页面大小:页面的一个划分区域的大小。

4.页号:表明页面在划分区域过后的次序。

5.位移量、偏移量、页内地址:页内地址即位移量或称偏移量,三者大小都等同于页面大小!!!不要着急问为什么,下面进行分析:

书上有类似下面这个图

注意这是分页地址中的地址结构!!!并不是页面!!!而是系统存储方式的一种结构!!!其中的页号在上面已经提及,而其中的页内地址即页面大小(用于之后将其中的内容放在内存物理地址中),可以通过下面这图来更好理解:

最左边的一整个为一个进程(逻辑)地址空间,每一项才是一个页面!!!

6.页表:系统为每个进程建立的页面映像表,即下图或上图的中间一整块部分。

7.页表项:页表的其中一项,即下图的中间一整块部分的其中一行(如:页号为2且物理块号为6的整体为一个页表项。

8.页表项大小:下图的中间一整块部分的其中一行所占大小。

9.页表长度:指页表项的个数,即下图中间部分一共有几行,有几行页表长度就为多少。

根据这张图可以分析以上所提的概念:

在这个图当中最左边的整个叫用户程序(逻辑地址空间),通过划分区域形成若干项,其中的每一项叫做页面,大小叫做页面大小,页面通过页表(页面映像表)对应物理块号,物理块号再对应与内存中的每一个实际(物理)地址,此时才将页面的内容(即页内地址)放在该实际(物理)地址中。

10.物理块、页框:物理块即页框!!!是将内存空间划分为与先前页面的大小相等的若干块(此时才能将页面大小(页内地址)完全放入划分的内存中,在上图表示的区域为最右边内存实际(物理)地址的每一行,一个物理块或页框就是其中的一行。

11.页内碎片:再讲页内碎片的概念时可以先看下图的例子

可以看到在(逻辑)地址空间被划分为6个区域,每个区域为一个页面,前五个区域(上图红色部分)或称前五页的地址空间大小都为100且都已存满,而第六页的区域同样可以填充100空间大小的内容,但由于用户程序的大小为512,故最后一页的内容实际空间就只填充了12空间大小,即还差100-12=88的内容是空闲的,这空闲的内容就称为页内碎片。

第六页(上图红色部分)未填充(空闲)的内容为页内碎片。

12.页表(基址)寄存器:系统中只设置一个页表寄存器,进程执行时,将页表始地址和页表长度放入页表寄存器,将页表寄存器的开始地址和相应页号相加(并非简单相加,简单这样理解就足够)得到页表中映像的物理块的具体位置,然后通过该物理块对应于内存中的实际(物理)地址,将页内地址放入其中。

相关推荐
恋猫de小郭9 小时前
Flutter 3D 渲染的全新选择和应用场景
android·前端·flutter
IT_陈寒9 小时前
Java线程池踩了个坑,任务居然默默消失了
前端·人工智能·后端
程序员爱钓鱼10 小时前
配置 GoLand 与 VS Code 开发环境
前端·后端·go
程序员爱钓鱼10 小时前
Rust Vec 动态数组详解:创建、增删、遍历与排序
前端·后端·rust
LaughingZhu10 小时前
Product Hunt 每日热榜 | 2026-07-23
前端·神经网络·react.js·搜索引擎·前端框架
自然 醒10 小时前
记录We码开发者工具的一个bug
前端·javascript·bug
葡萄城技术团队10 小时前
HTML元素单元格:用自定义 CellType 扩展 SpreadJS 的显示能力
前端·javascript·html
不好听61310 小时前
Fragment:React 的 `<></>` 和原生的 DocumentFragment,同名不同命
前端·react.js·dom
不好听61310 小时前
useState 完全解析:初始化、异步更新、以及为什么传函数能解决闭包问题
前端·react.js
神明不懂浪漫12 小时前
【第七章】Java中的常用类
java·开发语言·前端·经验分享·笔记