通过交换和终止,我的意思是,如果进程即将被交换到交换空间或终止(被OOM杀手)以释放内存。
Linux内核遵循什么算法?
例如,进程A需要额外的内存,并且已选择进程B进行交换或终止(如果交换空间已占用,则为),但进程B仍然有阻塞线程。
a。)无论阻塞线程如何,进程B都会被交换或杀死吗?
b。)如果没有,这种情况是如何处理的?
如果我的例子不太可能,那么任何见解都会受到赞赏。
答案 0 :(得分:1)
是的 - 您需要按照@CL的建议阅读分页虚拟内存。进程不会完全换出并交换!=终止。
如果操作系统需要终止进程,无论是由于特定的API请求还是由于其OOM算法,操作系统都会首先停止其所有线程。被阻塞的线程很容易“停止”,因为它们无论如何都没有运行 - 只需要改变它们的状态以确保它们永远不会再运行。实际在核心上运行的线程必须通过核心间通信驱动程序停止,该驱动程序可以硬件中断运行线程的核心。一旦所有线程都没有运行,就可以释放分配给进程的资源,包括所有用户空间内存,并释放OS线程/进程管理结构。然后该过程不再存在。