缺页(Page Fault)是计算机操作系统中的一种常见现象,它发生在进程试图访问内存中某个页面(即内存中的一页)时,该页面当前不在物理内存中。
具体来说,当以下情况发生时,会触发缺页:
1. 请求未在内存:进程请求访问的页面不在物理内存中,可能因为之前已经被其他进程占用或者根本就没有被加载到内存中。
2. 页面置换:如果内存中已经满了,操作系统需要从内存中移除一个页面来为新页面腾出空间。这个被移除的页面可能会被后续再次访问,这时就需要再次将其加载到内存中。
当发生缺页时,操作系统会执行以下步骤:
查找空闲页面:如果内存中有空闲页面,操作系统可以直接将需要访问的页面加载到这个空闲页面中。
选择置换页面:如果内存中没有空闲页面,操作系统需要选择一个页面进行置换。置换策略有多种,如最近最少使用(LRU)、随机置换等。
写入磁盘:被置换的页面被写入到磁盘上的交换空间(swap space)。
加载新页面:将需要的页面从磁盘加载到刚才置换出的页面位置。
更新页表:操作系统更新进程的页表,标记新页面在内存中的位置。
缺页是虚拟内存管理中不可避免的一部分,适当的缺页处理对于提高系统性能至关重要。过多的缺页会导致系统性能下降,因为磁盘I/O操作通常比内存访问要慢得多。