Linux 虚拟内存入门

       在计算机系统中,物理内存是一种有限的资源,即使该系统支持内存扩展(多插几根内存条),但是对于内存的安装也有最大限制。物理内存不一定是连续的,它可以作为一个不同地址的集合进行访问; 此外,不同的CPU架构,甚至相同架构的不同实现,对于查看这些范围的地址也是不一样的。

       基于以上原因,使得直接使用物理内存变得非常复杂,为了降低复杂度,虚拟内存应运而生。

       应用程序通过虚拟内存抽象了物理内存的细节,只允许在物理内存中保留需要的信息,并且提供了一种在不同进程间的数据保护和数据共享机制。

       通过虚拟内存,每个物理内存的访问都通过一个虚拟地址,当CPU从系统内存中读取(或写入)指令时,它通过MMU**,将指令中编码的虚拟地址转化为内存控制器所能理解的物理地址。**

       系统的物理内存被分为段或页,页的大小取决于特定的架构实现。有些架构支持根据配置值来指定页的大小。

       每个物理内存业都可以被映射为一个或多个虚拟内存页,这些映射关系保存在页表中,它是一个多维的数据集合,通过它可以将程序使用的虚拟内存地址转换为物理内存地址

       在页表中,最低维度指向应用程序实际使用内存页的物理地址,较高维度包含较低维护内存页的物理地址,在寄存器中包含了一个指向最高维护的指针。当CPU执行地址转换时,首先它通过这个寄存器来访问最高维,然后通过虚拟地址的高位在顶层中找到访问下一级别的指针,以此类推,直到页表的最低维,最终找到物理地址。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值