一台有 1GB 内存的机器 运行 可以没有交换 space 的 2GB 二进制文件吗?

Can a machine with 1GB memory run a 2GB binary without swap space?

当所有的page都用完后,操作系统会移除一个page为新的page做space,还是会OOM?

如果我们在进程 运行 时删除二进制文件会怎么样?当出现页面错误并且操作系统试图从磁盘加载页面但找不到它时,会发生什么?

答案取决于二进制文件。文本段不需要交换 space,因为该段以只读方式映射到内存中。如果所有物理帧都已满并且包含文本的页面被逐出,则物理帧被清除但页面不会写回磁盘,因为文本已经存在于磁盘上的二进制文件中。但是,数据段将需要写入交换 space,因为进程可以写入数据段中的全局变量。因此,答案取决于数据段有多大。当然,栈和堆也需要交换space。我想如果数据段不是太大的话,可以限制栈和堆的大小,不使用swap space.

当您在使用二进制文件的进程为 运行 时删除二进制文件时,二进制文件只是从目录结构中取消链接。在使用二进制文件的最后一个进程终止之前,二进制文件不会从文件系统中删除。