C++ 虚拟内存与物理内存

在操作系统和计算机体系结构中,物理内存指的是计算机实际上拥有的内存空间,也就是计算机的RAM(随机存取存储器)。它是有限的,并且大小受到计算机硬件的限制。物理内存是直接用于存储和检索数据和指令的地方,包括操作系统、应用程序以及这些程序正在使用的数据等。

虚拟内存则是一种内存管理技术,它使得应用程序以为它们拥有连续可用的内存(一个连续完整的地址空间),而实际上是被分隔到多个物理内存区域,甚至可能包括磁盘上的存储(被称为交换空间或分页文件)。当程序尝试访问其地址空间中的某个部分时,如果该部分当前不在物理内存中,操作系统就会触发一个称为页面错误(或称为缺页)的事件,然后将所需的页面从磁盘加载到物理内存中。

在C++编程中,程序员通常不需要直接管理虚拟内存和物理内存,因为这些工作都是由操作系统和编译器在底层处理的。然而,了解这些概念对于理解程序的性能特征(如内存使用、缓存行为等)以及进行高级优化(如使用特定的内存分配策略)是非常有帮助的。

一些关键点:

  1. 地址空间:每个进程都有自己的虚拟地址空间,这使得它能够像访问真正的物理内存一样访问它的代码和数据,而不管它们实际上是否都在内存中。

  2. 分页:虚拟内存系统通常将虚拟地址空间划分为固定大小的块,称为页。物理内存也被划分为同样大小的帧。页可以映射到帧上,从而实现从虚拟地址到物理地址的转换。

  3. 页面置换算法:当物理内存已满,并且需要加载新的页面时,操作系统必须选择一个现有的页面进行置换(即将其移出物理内存,以便为新页面腾出空间)。有多种页面置换算

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Depth君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值