在操作系统中,一个新的进程需要载入内存当中执行,在装入的时候需要给该进程分配一定的运行内存,在之前的章节中讲解了连续分配的几种方式,比如:单一连续分配、固定分区分配、动态分区分配,还讲解了对应的动态分区分配算法。
除了连续分配之外,还有非连续分配管理方式,那么今天我们来看看非连续分配方式其中两种:基本分页存储管理
、:基本分段存储管理
分页存储管理
非连续分配:可以为用户进程分配一些分散的内存空间。
那什么是分页存储呢? 首先将内存空间分为一个个大小相等的分区,这里每一个分区可以叫做:页框
,每个页框都会有一个编号叫做:页框号
,页框号是从 0 开始的。
内存已经分化好页框
了,那么进程也要将进程的逻辑地址空间分为与页框大小相等的一个个部分,进程划分的部分叫做页
或者 页面
,每一个页面也有一个编号,叫做 页号
,也是从 0 开始。
重点来了:操作系统会以页框
为单位,为各个进程中的页面
分配内存空间,也就是说,进程里面的页面
与内存中的页框
有一一对应的关系。进程中的页面不需要放入到连续的页框中,可以分散存放,如下图:
既然为每一个页面都分配一个相对应的页框,那操作系统是如何来记录这些一一对应的关系的呢?
什么是页表
为了能知道进程的每个页面在内存中存放的位置,操作系统要为每个进程建立一张页表
,页表
通常是存放在 PCB 当中。
那页表是如何来记录的呢? 如下图:
在页表
中会维护叶号和对应的块号,就能完成映射。
基本分段存储管理
进程的地址空间,按照程序自身的逻辑关系划分为若干个段,每一个段都有一个段名,在低级语言中,程序员使用段名来编程,每段从 0 开始编址。
内存分配规则:以段为单位进行分配,每个段在内存中占据连续空间,但各段之间可以不相邻。