码迷,mamicode.com
首页 > 其他好文 > 详细

多级页表如何节省内存

时间:2016-06-16 11:38:33      阅读:385      评论:0      收藏:0      [点我收藏+]

标签:

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

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

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

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

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

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

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

多级页表如何节省内存

标签:

原文地址:http://www.cnblogs.com/vinozly/p/5590428.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!