• 多级页表如何节省内存


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

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

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

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

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

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

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

  • 相关阅读:
    IEnumerator & IEnumerable
    GameObject.Active
    Unity3D的四种坐标系
    gvim
    Platform Dependent Compilation
    delegate
    new 约束
    UIPanel
    UIButton
    UISprite
  • 原文地址:https://www.cnblogs.com/vinozly/p/5590428.html
Copyright © 2020-2023  润新知