多级页表如何节省内存

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多级页表如何节省内存相关的知识,希望对你有一定的参考价值。

在谈到多级页表的优势的时候,很多地方都是这么说的:32位地址空间的分页系统,如果页面大小为4KB,则每个进程可达1M个页,假设每个页表项占用4个字节,这样每个进程仅仅页表项就占用了4MB连续的内存空间。

那么多级页表怎么节省存储空间的?

如果是2级页表,32位地址分为10,,10,12这3部分。则,页目录表1024项,每个小页表也是1024项,实际的存储空间是1024*4k(所有小页表大小)+4k(页目录大小),变大了!!!!!!

在这里我谈谈个人的理解!

实际上,一个进程并不是所有线性地址都会映射到页表中,假如所有页表都映射,的确多级页表占用了更多的内存,但是大多数地址都是没有映射的。

如果是一级页表,因为页表是一个大数组,如果在初始化的时候没有分配好足够的空间,以后要扩展的话怎么办?所以一级页表在初始化的时候便分配了全部的连续内存,即使并不是所有地址都映射到页表上。

如果是多级页表,这里以二级页表为例。在初始化的时候只需要先分配好页目录所需的连续内存,页表的内存可以到需要使用的时候再动态分配,增加了灵活性,同时节省了内存。

以上是关于多级页表如何节省内存的主要内容,如果未能解决你的问题,请参考以下文章

多级页表与快表

多级页表与快表

操作系统多级页表与快表--12

[转帖]为什么使用多级页表

多级页表——分层分页

Linux分页机制之概述--Linux内存管理