机制
分段机制
将内存一整段一整段的分配给程序
可能产生外部内存碎片
程序内存与内存之间可能不连续,存在外部空隙
内存交换效率低
分页机制
将虚拟内存和物理内存进行分页(Linux为4kb),使用页与页对应管理
不会产生外部碎片
将内存分页分配,不会有外部内存碎片
可能产生内部碎片
如果某个数据剩余大小不到一页,会产生内部碎片
寻址
把虚拟内存地址,切分成页号和偏移量
根据页号,从页表里面,查询对应的物理页号
直接拿物理页号,加上前面的偏移量,就得到了物理内存地址
多级页表
场景:32位虚拟地址空间为4G,64位为128T,单个页表很明显存不下
根据局部性原理,一个页被置换进内存,接下来被置换进内存的很可能是其周围分页
一级页表可以动态创建,如果二级页表没被使用,可以不用创建,从而节省空间
64位下是四级页表