0

通过交换和终止,我的意思是,如果进程即将被交换到交换空间或终止(由 OOM 杀手)以释放内存。

linux内核遵循什么算法?

例如,进程 A 需要额外的内存,进程 B 已被选择交换或终止(如果交换空间已被占用),但进程 B 仍然有一个阻塞线程。

a.)无论阻塞线程如何,进程 B 是否都会被交换或杀死?

b.)如果不是,这种情况如何处理?

如果我的例子不太可能发生,任何见解都会受到赞赏。

4

1 回答 1

1

是的-您需要按照@CL的建议阅读分页虚拟内存。进程不会全部换出并交换!=终止。

如果操作系统需要终止一个进程,无论是因为特定的 API 请求还是因为它的 OOM 算法,操作系统都会首先停止它的所有线程。阻塞的线程很容易“停止”,因为它们无论如何都没有运行——只需要更改它们的状态以确保它们不再运行。实际在内核上运行的线程必须通过内核间通信驱动程序停止,该驱动程序可以硬件中断运行线程的内核。一旦所有线程都没有运行,就可以释放分配给进程的资源,包括所有用户空间内存,并释放 OS 线程/进程管理结构。然后该过程不再存在。

于 2013-08-15T09:24:15.647 回答