什么是虚拟内存,为什么要使用虚拟内存,虚拟内存可能比物理内存大吗?

什么是虚拟内存

虚拟内存是一种内存管理技术,允许操作系统使用硬盘空间来扩展可用内存的逻辑地址空间。它为每个进程创建一个独立的逻辑地址空间,这样程序可以认为自己拥有一个完整的内存空间,而不必关心实际物理内存的可用情况。

关键概念

  • 逻辑地址空间:程序执行时所用的地址,由操作系统提供给每个进程。
  • 物理内存:实际的 RAM(随机访问存储器),用于存储数据和程序。
  • :将逻辑地址空间划分为固定大小的块(通常为4KB或其他大小),称为页。
  • 页表:用于映射虚拟地址到物理地址的结构,它维护每个逻辑页在物理内存中的位置。
  • 交换空间/交换文件:使用硬盘上的一部分空间来临时存放不活跃的页,当物理内存不足时,操作系统会将不常用的数据移动到交换空间,以便释放物理内存。

为什么要使用虚拟内存

  1. 扩展内存容量

    • 虚拟内存允许计算机使用比实际物理内存更多的内存。程序可以使用一个更大的逻辑地址空间,可以不节约物理内存的情况下启动更大的程序。
    • 比如,物理内存是4GB,物理内存是有限的,当有多个进程要执行的时候,都要给4G内存,很显然你内存小一点,这很快就分配完了,于是没有得到分配资源的进程就只能等待。当一个进程执行完了以后,再将等待的进程装入内存。这种频繁的装入内存的操作是很没效率的。
  2. 内存隔离

    • 每个进程的虚拟内存空间是独立的,从而提供了内存保护。一个进程无法直接访问另一个进程的内存,增强了系统的稳定性和安全性。
  3. 更好的内存管理

    • 操作系统可以根据进程的需求动态管理内存,优化内存使用。在需要时,可以将未使用的内存页面移动到硬盘上。
  4. 简化编程模型

    • 程序员可以忽略物理内存的限制,专注于开发而不必担心手动管理内存分配的复杂性。

进程访问 

进程开始要访问一个地址,它可能会经历下面的过程

  1.     每次我要访问地址空间上的某一个地址,都需要把地址翻译为实际物理内存地址
  2.     所有进程共享这整一块物理内存,每个进程只把自己目前需要的虚拟地址空间映射到物理      内存上
  3.     进程需要知道哪些地址空间上的数据在物理内存上,哪些不在(可能这部分存储在磁盘         上),还有在物理内存上的哪里,这就需要通过页表来记录
  4.     页表的每一个表项分两部分,第一部分记录此页是否在物理内存上,第二部分记录物理内      存页的地址(如果在的话)
  5.     当进程访问某个虚拟地址的时候,就会先去看页表,如果发现对应的数据不在物理内存         上,就会发生缺页异常
  6.     缺页异常的处理过程,操作系统立即阻塞该进程,并将硬盘里对应的页换入内存,然后使      该进程就绪,如果内存已经满了,没有空地方了,那就找一个页覆盖,至于具体覆盖的哪     个页,就需要看操作系统的页面置换算法是怎么设计的了。

 

 

 

我们的cpu想访问虚拟地址所在的虚拟页(VP3),根据页表,找出页表中第三条的值.判断有效位。 如果有效位为1,DRMA缓存命中,根据物理页号,找到物理页当中的内容,返回。

若有效位为0,参数缺页异常,调用内核缺页异常处理程序。内核通过页面置换算法选择一个页面作为被覆盖的页面,将该页的内容刷新到磁盘空间当中。然后把VP3映射的磁盘文件缓存到该物理页上面。然后页表中第三条,有效位变成1,第二部分存储上了可以对应物理内存页的地址的内容。

缺页异常处理完毕后,返回中断前的指令,重新执行,此时缓存命中,执行1。将找到的内容映射到告诉缓存当中,CPU从告诉缓存中获取该值,结束。

 虚拟内存的大小与物理内存的关系

  • 虚拟内存可以大于物理内存:是的,虚拟内存的空间可以超过物理内存。例如,如果系统中有 8GB 的物理内存,但硬盘上有 16GB 的交换空间,操作系统可以将虚拟内存设置为超过 8GB,这样可以同时运行更多的进程或更大的应用程序。

  • 性能考虑:尽管虚拟内存可以大于物理内存,但如果程序需要频繁访问未在物理内存中的数据,可能会导致频繁的磁盘交换(也称为“交换”或“分页”)。这种情况称为“内部碎片”,如果过度交换会显著降低性能,因此在设计系统和管理内存时,需要合理配置虚拟内存的大小。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值