gpt4 book ai didi

linux - 在 Linux 中,当一个进程即将被交换或终止时,它的线程应该处于什么状态?

转载 作者:太空宇宙 更新时间:2023-11-04 11:21:03 24 4
gpt4 key购买 nike

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

linux内核遵循什么算法?

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

a.) 无论阻塞线程如何,进程 B 都会被交换或终止吗?

b.) 如果没有,这种情况如何处理?

如果我的例子不太可能发生,任何见解都将不胜感激。

最佳答案

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

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

关于linux - 在 Linux 中,当一个进程即将被交换或终止时,它的线程应该处于什么状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18248688/

24 4 0