虚拟内存是计算机操作系统中的一种技术,它将每个进程的内存空间划分成若干个固定大小的页,并通过页面映射技术将这些页与物理内存或磁盘上的页面文件进行交换
扩展了实际物理内存容量:虚拟内存使得每个进程能够访问比物理内存容量更大的内存空间。当物理内存不足时,虚拟内存可以将一部分数据写入到磁盘上的页面文件中,并将页面文件中的数据按需加载到物理内存中
允许多个进程同时运行:虚拟内存让每个进程都有独立的虚拟地址空间,使得多个进程可以同时运行而不会相互干扰。每个进程都可以认为自己是独占的拥有全部虚拟内存空间
简化程序的内存管理:虚拟内存通过将进程的内存空间划分为页,并提供了对这些页面的映射、保护和权限控制等机制,简化了程序的内存管理。进程可以通过访问虚拟地址空间来进行内存操作,而无需关心具体的物理存储位置
提高内存访问效率:虚拟内存通过页面映射技术将磁盘上的页面文件与物理内存进行交换,使得访问磁盘的开销相对较低。此外,虚拟内存还使用了页面置换算法,将最常访问的页面保留在物理内存中,提高了内存访问的速度
虚拟内存地址空间划分:操作系统将虚拟内存空间分为固定大小的页面(通常为4KB)。每个进程都有自己的虚拟地址空间,它是连续且相同大小的页面的集合
页面映射:操作系统负责将虚拟地址映射到物理地址。通过页表,虚拟地址被转换为对应的物理地址。当进程访问虚拟内存中的一个页面时,操作系统会根据页表查找该页面对应的物理地址
页面置换:当物理内存不足时,操作系统需要将部分页面从内存中置换到硬盘上的页面文件中。选择被置换的页面通常使用一些页面置换算法来决定,如FIFO、LRU等。被置换的页面需要写回到磁盘,并在需要时进行页面加载
页面加载:当需要访问被置换出去的页面时,操作系统将其从硬盘加载到物理内存中。这包括从页面文件中读取页面数据,并更新页表以反映页面的物理内存位置
内存分配和回收:操作系统负责管理物理内存的分配和回收。当进程申请内存时,操作系统会为其分配一些物理页面,并更新页表以映射到对应的虚拟地址。当进程释放内存时,操作系统会将相应的物理内存页面标记为可用