我想设计一个算法来分配和释放内存页和页表。什么样的数据结构可以实现最佳性能和最简单的实现?
最佳答案
毫不奇怪,最常见的算法和数据结构称为 page table。 .在最基本的情况下,它由一个将虚拟地址空间 block 映射到物理地址空间 block 的数组组成;未分配的页面设置为空。当进程试图访问未映射的内存时,系统会获取以前未使用的物理内存块并将其映射到页表中。
由于大多数虚拟内存空间对于单级页表来说太大了(具有 4k 页的 32 位机器需要 32 位 *(2^32 字节/4 千字节)= 每个虚拟地址空间 4 兆字节,而 64 bit one 需要成倍增加),使用多级页表:顶层由指向二级页表的指针组成,这些指针指向物理内存的实际区域(可能具有更多级别的间接寻址)。这允许系统在大面积地址空间未使用时节省页表上的内存。
关于c++ - 分配内存页和页表的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2099442/