运行时清理交换空间

运行时清理交换空间

我有一个理论上的问题,如果我在运行时清理所有交换空间会发生什么,操作系统会因为内核中发生的页面错误而崩溃吗?

答案1

用随机值覆盖交换区相当于用随机值覆盖内存中的过程映像。

如果一个文本段执行随机值时,最可能的结果是由于以下原因导致进程终止非法指令(信号SIGILL)。

如果一个数据段读取随机值,结果很可能是由于以下原因导致进程终止分段故障(signal SIGSEGV),因为指针将指向进程的地址空间之外。请注意,指针是数据,就像标量一样。特别是堆栈通常包含多个指针;当一个返回执行指令时,随机堆栈条目会导致跳转到随机地址。

答案2

如果您只是指在说“清理”时运行“swapoff -a”,那么不行。

如果您损坏/覆盖交换设备/文件,则换回的应用程序(带有损坏的数据)很可能会崩溃,是的。内核不会被换出,因此“系统”不会崩溃。

相关内容