gpt4 book ai didi

linux - 进程处于阻塞/挂起状态时是否保留在主内存中?

转载 作者:太空狗 更新时间:2023-10-29 12:30:15 26 4
gpt4 key购买 nike

当进程 P1 处于阻塞或挂起状态时,内存管理系统会将其从主内存中换出,为事件进程腾出空间吗?

如果确定进程返回,程序的过程调用堆栈、程序计数器内容 (PC) 和程序状态字内容 (PSW) 存储在哪里?操作系统是将其全部保存在辅助内存中,还是将 P1 的挂起/阻塞进程的部分保存在主内存中?

最佳答案

So I'm guessing when a process is swapped out of memory and put in a suspended state, all of its resident pages are moved out. When the process is resumed, all of the pages that were previously in main memory are returned to main memory

从页面而非流程的角度思考。

如果系统处于内存压力下,即使是一个事件进程也可能有许多页面被逐出物理内存并进入交换区。

因此,可以肯定的是,一个挂起的进程可能实际上已经完全换出了它的所有页面。

但不可能仅仅因为进程唤醒就将所有页面换入。这样做会浪费 CPU、I/O 和内存。相反,页面将根据需要返回(一般情况——一些寻呼机可能会试探性地返回页面集)。


如果一个进程是事件的,那么它不会被换出,所以当发生交换。

即对于要换出的进程,线程需要在某些事情上被阻塞,通常是对内核的调用或对阻塞的系统库的调用。寄存器将停止运行等...因此,需要换出的执行状态非常简单,因为调用返回状态将保留在线程状态本身中(因为线程被阻塞)。

事实上,PC 和 PSW 之类的东西更多地作为上下文切换子系统的一部分而不是分页被保留下来。 IE。在一个典型的系统上,您可能会同时在 CPU 的 N 个物理内核上运行数百甚至数千个线程。架构的并发支持是您将找到如何维护该状态的地方。

关于linux - 进程处于阻塞/挂起状态时是否保留在主内存中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29682499/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com