分页存储概念清晰梳理(页面、页表、页表项、页面大小、页内地址等概念)
分页存储概念清晰梳理(页面、页表、页表项、页面大小、页内地址等概念)
在学习操作系统的存储器管理章节时,分页存储的概念常常让人感到困惑。本文将清晰梳理分页存储中的关键概念,包括逻辑地址空间、页面、页表、页表项等,帮助读者更好地理解这一重要概念。
本文将介绍以下概念:
- (逻辑)地址空间
- 页面、页
- 页面大小
- 页号
- 位移量、偏移量、页内地址
- 页表
- 页表项
- 页表项大小
- 页表长度
- 物理块、页框
- 页内碎片
- 页表(基址)寄存器
下面开始分别介绍:
(逻辑)地址空间:简单的理解为程序进程在运行时系统为其分配的运行内存空间。
页面(页):将用户进程的(逻辑)地址空间划分为固定且大小相等的一个个区域。
注:页面和页是同一概念!!!划分出来的一个区域为一个页(页面)!!!
页面大小:页面的一个划分区域的大小。
页号:表明页面在划分区域过后的次序。
位移量、偏移量、页内地址:页内地址即位移量或称偏移量,三者大小都等同于页面大小!!!不要着急问为什么,下面进行分析:
书上有类似下面这个图
注意这是分页地址中的地址结构!!!并不是页面!!!而是系统存储方式的一种结构!!!其中的页号在上面已经提及,而其中的页内地址即页面大小(用于之后将其中的内容放在内存物理地址中),可以通过下面这图来更好理解:
最左边的一整个为一个进程(逻辑)地址空间,每一项才是一个页面!!!
页表:系统为每个进程建立的页面映像表,即下图或上图的中间一整块部分。
页表项:页表的其中一项,即下图的中间一整块部分的其中一行(如:页号为2且物理块号为6的整体为一个页表项。
页表项大小:下图的中间一整块部分的其中一行所占大小。
页表长度:指页表项的个数,即下图中间部分一共有几行,有几行页表长度就为多少。
根据这张图可以分析以上所提的概念:
在这个图当中最左边的整个叫用户程序(逻辑地址空间),通过划分区域形成若干项,其中的每一项叫做页面,大小叫做页面大小,页面通过页表(页面映像表)对应物理块号,物理块号再对应与内存中的每一个实际(物理)地址,此时才将页面的内容(即页内地址)放在该实际(物理)地址中。
物理块、页框:物理块即页框!!!是将内存空间划分为与先前页面的大小相等的若干块(此时才能将页面大小(页内地址)完全放入划分的内存中,在上图表示的区域为最右边内存实际(物理)地址的每一行,一个物理块或页框就是其中的一行。
页内碎片:再讲页内碎片的概念时可以先看下图的例子
可以看到在(逻辑)地址空间被划分为6个区域,每个区域为一个页面,前五个区域(上图红色部分)或称前五页的地址空间大小都为100且都已存满,而第六页的区域同样可以填充100空间大小的内容,但由于用户程序的大小为512,故最后一页的内容实际空间就只填充了12空间大小,即还差100-12=88的内容是空闲的,这空闲的内容就称为页内碎片。
第六页(上图红色部分)未填充(空闲)的内容为页内碎片。
- 页表(基址)寄存器:系统中只设置一个页表寄存器,进程执行时,将页表始地址和页表长度放入页表寄存器,将页表寄存器的开始地址和相应页号相加(并非简单相加,简单这样理解就足够)得到页表中映像的物理块的具体位置,然后通过该物理块对应于内存中的实际(物理)地址,将页内地址放入其中。