分页存储管理的基本方法如下:
(1)逻辑空间分页
将一个进程的逻辑地址空间划分成若干个大小相等的部分,每一部分称作页面或页。每页都有一个编号,叫做页号,页号从0开始依次编排,如0、1、2……
(2)内存空间分页
把内存也划分成与页面相同大小的若干个存储块,称作内存块或内存页面。同样,它们也进行编号,内存块号从0开始依次顺序排列:0#块、1#块、2#块……
页面和内存块的大小是由硬件确定的,它一般选择为2的若干次幂。不同机器中页面大小是有区别的。在x86平台上的Linux系统的页面大小为4KB。
(3)逻辑地址表示
在一般的分页存储管理方式中,表示地址的结构如图4所示。
地址由两个部分组成,前一部分表示该地址所在页面的页号p;后一部分表示页内位移d,即页内地址。两部分构成的地址长度为32位,其中0~11为页内位移,即每页的大小为4KB;12~31位为页号,表示地址空间中最多可容纳1M个页面。
(4)内存分配原则
在分页情况下,系统以内存块为单位把内存分给作业或进程,并且一个进程的若干页可分别装入物理上不相邻的内存块中。
(5)页表
在分页系统中允许将作业或进程的各页面离散地装入内存的任何空闲块中,这样一来就出现作业的页号连续、而块号不连续的情况。怎样找到每个页面在内存中对应的物理块呢?为此,系统又为每个进程设立一张页面映像表,简称页表。
在进程地址空间内的所有页(0~n-1)依次在页表中有一个页表项,其中记载了相应页面在内存中对应的物理块号、页表项有效标志,以及相应内存块的访问控制属性(如只读、只写、可读写、可执行)。进程执行时,按照逻辑地址中的页号去查找页表中的对应项,可从中找到该页在内存中的物理块号。然后,将物理块号与对应的页内位移拼接起来,形成实际的访问内存地址。所以,页表的作用是实现从页号到物理块号的地址映射。
linux内存管理之请求分页
最新推荐文章于 2021-05-19 17:14:54 发布