视频字幕
在传统的内存管理中,程序的运行受到物理内存大小的严格限制。当我们有一个4GB的物理内存时,如果程序A占用了2GB,那么剩余的2GB空间就无法同时运行需要3GB的程序B和需要2.5GB的程序C。这种限制导致了内存利用率低下,多个程序难以同时运行的问题。为了解决这些问题,计算机科学家提出了虚拟内存技术,它能够突破物理内存的限制,让系统能够运行比物理内存更大的程序,并支持多个程序的并发执行。
虚拟地址空间是虚拟内存技术的核心概念。每个进程都拥有自己独立的虚拟地址空间,在32位系统中,每个进程都可以访问4GB的虚拟地址空间,地址范围从0x00000000到0xFFFFFFFF。这个虚拟地址空间的大小与实际的物理内存大小无关,即使物理内存只有1GB,每个进程仍然可以拥有4GB的虚拟地址空间。不同进程的虚拟地址空间是完全独立的,进程A无法直接访问进程B的虚拟地址空间,这提供了良好的进程隔离和内存保护机制,同时也大大简化了程序的编写模型。
地址映射是虚拟内存系统的核心机制,负责将虚拟地址转换为物理地址。当程序访问虚拟地址0x12345678时,系统首先将其分解为页号0x12345和页内偏移0x678。然后通过页表查找该页号对应的物理页框地址,假设查到的物理页框地址是0x20000。接下来,内存管理单元MMU将物理页框地址与页内偏移组合,得到最终的物理地址0x20000678。整个转换过程由硬件自动完成,对程序透明,这样程序就可以使用连续的虚拟地址空间,而实际的物理内存可能是分散的。
当物理内存已满而需要加载新页面时,系统必须选择一个现有页面进行置换。页面置换算法决定了哪个页面被换出到磁盘。FIFO算法按照页面进入内存的先后顺序进行置换,最先进入的页面最先被换出。LRU算法则选择最近最少使用的页面进行置换,这通常能获得更好的性能。当新页面D需要加载时,如果采用FIFO策略,最早进入内存的页面A将被换出到磁盘,为新页面腾出空间。这个过程包括将被置换页面写回磁盘,然后从磁盘加载新页面到内存,整个过程对程序是透明的。
虚拟内存技术为现代操作系统带来了四大核心优势。首先是内存扩展能力,它突破了物理内存的限制,使得系统能够运行比物理内存更大的程序。其次是进程隔离,每个进程都拥有独立的虚拟地址空间,进程之间无法直接访问彼此的内存,有效防止了相互干扰。第三是内存保护机制,通过页表可以设置不同的访问权限,保障系统安全。最后是程序重定位的便利性,程序可以加载到物理内存的任意位置,简化了内存管理。整个虚拟内存系统通过虚拟地址空间、页表、MMU、物理内存和外存的协同工作,为用户提供了一个统一、安全、高效的内存管理环境。