查阅此文章,应该就是和我一样想要搞懂计算机内存管理相关知识的小伙伴。那么进入正题。
四点对应概念
物理内存
物理内存是实际的硬件内存,用来存储数据和程序指令。物理内存是计算机硬件直接访问的存储空间。记住,物理内存是真实存在的硬件结构。
虚拟内存
虚拟内存是计算机操作系统提供的一种机制,它允许程序访问一个伪装成物理内存的地址空间,而实际上,部分数据可能存储在辅助存储设备上。虚拟内存的目标是扩展可用内存,以便运行更大的程序或多个程序,同时提供了一种内存管理方式,使得程序不必关心物理内存的细节。
是操作系统提供给每个进程的一种抽象概念,它使得每个进程认为它拥有连续的、私有的地址空间,这个空间称为虚拟地址空间。
而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。
虚拟存储器的容量限制:主存容量+辅存(硬盘)容量。
说到虚拟内存就不得不提到分页的知识
分页:
虚拟内存通常使用分页技术来管理数据。物理内存和磁盘都被划分成固定大小的页面(通常是4KB或更大),操作系统负责将数据从物理内存复制到磁盘(称为页面交换)或从磁盘加载到物理内存。这个过程是透明的,对于程序来说是不可见的。
物理地址
物理地址是指实际存在于计算机硬件(如RAM)中的真实地址。它是硬件层面上的地址,直接对应着物理内存的位置。
计算机的内存控制器使用物理地址来读取和写入存储器中的数据,这些地址是硬件电路直接处理和识别的
虚拟地址
虚拟地址是进程在运行时所使用的地址空间中的地址。每个进程都拥有自己的虚拟地址空间,这些地址在进程间是相互隔离的。
虚拟地址空间允许进程使用连续的地址范围,方便编程和内存管理。这些地址由操作系统分配和管理,不直接对应物理内存中的实际位置。
四点对应关系
虚拟内存和物理内存之间的关系
当计算机程序运行所需要的物理内存不够用时,这时就会使用虚拟内存,也就是使用磁盘空间来充当内存使用。虚拟内存和物理内存通过操作系统的管理和硬件的支持,相互结合,实现了进程间内存的隔离、高效的地址转换和动态的内存分配,从而提升了计算机系统的整体性能和资源利用率。
虚拟地址和物理地址之间的关系
虚拟地址通过操作系统的内存管理单元(MMU)转换为物理地址。MMU使用由操作系统维护的页表来实现虚拟地址到物理地址的映射关系。
当进程访问一个虚拟地址时,MMU会查找页表以确定对应的物理地址。如果虚拟地址对应的物理页不在内存中,会触发页错误,操作系统则负责将该物理页从磁盘加载到内存并更新页表。
虚拟内存和虚拟地址之间关系
虚拟地址是虚拟内存的一部分,它是进程在虚拟内存空间中使用的地址。
虚拟地址通过操作系统和硬件的协作,最终会被映射到物理内存中的物理地址,这种映射关系由操作系统的页表来管理和维护。
物理内存和物理地址之间关系
操作系统通过内存管理单元MMU和硬件支持来管理物理地址的分配和访问。MMU负责将程序中的虚拟地址转换为对应的物理地址。
物理地址是硬件层面上的概念,直接对应于RAM中的存储单元,而虚拟地址则是操作系统提供的抽象,方便了进程间的内存隔离和管理。