Psyduck
Psyduck copied to clipboard
Record CS knowlegement with XMind, version 2.0. 使用 XMind 记录 Linux 操作系统,网络,C++,Golang 以及数据库的一些设计
催更来了,希望作者有时间能再完善完善kubernetes部分呢?多谢
在虚拟内存优化一节中,已经提到了多级页表的使用,但仍有一些细节可以补充。 并且强烈建议改变虚拟地址中 *页号* 和 *数组下标* 的说法和思路! ## 多级页表优点:查找高效 一如大家都提到的节省内存的优点,多级页表的设计同样大大提高了 CPU 对页面的查找效率 以**32位 CPU**的虚拟地址为例,一条**4字节**的虚拟地址其页表基址占**20位**: 如果采用一级页表的方式查找,其时间复杂程度为 O(2^20); 如果采用二级页表的方式查找,其时间复杂程度为 O(2*2^10) ## 多级页表如何分级 多级页表的分级方式由**CPU 位数**以及**页面大小**共同决定 >在过去32位 CPU 中,页面通常设置为*4KB* 还是以**32位 CPU**的虚拟地址为例,一条**4字节**的虚拟地址由**20位**页表基址和**12**位偏移地址构成, 那么是否有疑问:我们为什么只凭地址的高20位就能找到对应的页面呢? 在二级页表下,每级页表基址占**10位**,这里的基址是作为**索引**去对应的目录表项和页表项遍历查找的。  而具体每个目录表项和页表项的结构实际上如下图所示:...