内存交换空间

内存交换空间

在现代操作系统中,会把一些当前没有用的内存空间中的内容保存到硬盘中。这使得操作系统可以提供虚拟内存空间的高度抽象,简化了上层程序员的工作。

我们在硬盘上开辟一部分空间用于物理页的移入和移出,这样的空间称之为交换空间

页错误和存在位

在将一个虚拟地址转为物理地址时,在查找到的PTE中有一个存在位,这标志着当前物理页是否在内存中(有可能在交换空间中)。访问不在物理内存中的页,这种情况称为页错误。

发生页错误时,硬件会触发一个异常,这个异常由操作系统负责处理,它会调用一个页错误处理程序。该程序会查找需要访问的物理页所在的交换空间,并将硬盘中的页加载到内存中。当该页加载到内存中后,操作系统会更新页表,将该页的PTE的存在位标记为存在,并重试指令。

请注意,当 I/O 在运行时,进程将处于阻塞(blocked)状态。因此,当页错误正常处理时,操作系统可以自由地运行其他可执行的进程。因为 I/O 操作是昂贵的,一个进程进行I/O(页错误)时会执行另一个进程,这种交叠(overlap)是多道程序系统充分利用硬件的一种方式。

什么时候进行交换

操作系统不会等到物理内存满时才利用交换空间:

相关推荐
阿昭L7 小时前
Windows内存管理中的交换空间
windows·操作系统·分页机制
_OP_CHEN7 小时前
【Linux系统编程】(三十六)深挖信号保存机制:未决、阻塞与信号集的底层实现全解析
linux·运维·操作系统·进程·c/c++·信号·信号保存
小李独爱秋8 小时前
模拟面试:lvs常见的工作模式有哪些?各有什么特点?
linux·运维·面试·职场和发展·操作系统·职场发展·lvs
小李独爱秋1 天前
模拟面试:不能关机的情况下 , 如果挂载目录卸载不掉应该怎么办?
linux·运维·面试·职场和发展·操作系统·文件系统
锅包一切1 天前
一、什么是Linux?
linux·运维·服务器·操作系统
BHXDML1 天前
操作系统实验:(七)动态分区分配方式的模拟
开发语言·数据库·操作系统
MR_Promethus1 天前
OS 操作系统 学习笔记
操作系统
Trouvaille ~1 天前
【Linux】高并发服务器的起点:五种 IO 模型与非阻塞 IO 本质解析
linux·运维·服务器·c++·操作系统·io模型·同步异步
_OP_CHEN1 天前
【Linux系统编程】(三十五)揭秘 Linux 信号产生:从终端到内核全解析
linux·运维·操作系统·进程·c/c++·信号·信号产生