原文:Hack The Virtual Memory: C strings & /proc - Holberton
翻译:RobotCode俱乐部
介绍
这是一系列关于虚拟内存的小文章/教程中的第一篇。我们的目标是学习一些计算机基础知识,但是是以一种不同的、更实际的方式。对于第一部分,我们将使用/proc来查找和修改运行进程的虚拟内存中包含的变数(在本例中是ASCII字元串),并在此过程中学习一些很酷的东西。
虚拟内存
在计算中,虚拟内存是一种同时使用硬体和软体实现的内存管理技术。它将程序使用的内存地址(称为虚拟地址)映射到计算机内存中的物理地址。主内存(进程所见)以连续地址空间或连续段的集合的形式出现。操作系统管理虚拟地址空间,并将实际内存分配给虚拟内存。CPU中的地址转换硬体,通常称为内存管理单元或MMU,自动将虚拟地址转换为物理地址。操作系统中的软体可以扩展这些功能,以提供超过实际内存容量的虚拟地址空间,从而可以使用比计算机中实际存在的内存更多的内存。
虚拟内存的主要好处包括使应用程序不必管理共享内存空间,由于内存隔离而提高了安全性,并且能够使用分页技术使用比物理上可用的更多的内存。
在第2章中,我们将深入讨论更多细节,并对虚拟内存中的内容和位置进行一些事实检查。现在,这里有一些关键点,你应该知道:
- 每个进程都有自己的虚拟内存
- 虚拟内存的数量取决于系统的体系结构
- 每个操作系统处理虚拟内存的方式不同,但是对于大多数现代操作系统,进程的虚拟内存是这样的: