Use*_*job 5 linux memory-management process
当进程 P1 处于阻塞或挂起状态时,内存管理系统是否会将其从主内存中交换出来,为活动进程提供空间?
如果确定进程返回,则程序的过程调用堆栈、程序计数器(PC)内容和程序状态字(PSW)内容存储在哪里?操作系统是否将其全部保存在辅助内存中,或者将P1 的挂起/阻止进程的一部分保存在主内存中?
所以我猜测当一个进程被交换出内存并置于挂起状态时,它的所有驻留页面都会被移出。当进程恢复时,先前在主内存中的所有页面都将返回到主内存
从页面的角度思考,而不是进程。
如果系统面临内存压力,即使是活动进程也可能会将许多页面从物理内存中逐出并放入交换区。
因此,当然,挂起的进程可能实际上已完全换出其所有页面。
但不可能仅仅因为进程被唤醒就将所有页面换入。这样做会浪费 CPU、I/O 和内存。相反,页面将根据需要返回(一般情况 - 某些寻呼机可能会试探性地返回页面集)。
如果一个进程处于活动状态,那么它不会被换出,因此当交换发生时,最低调用堆栈的动态状态(所有寄存器噪声、堆栈上的红色区域等......)不会发挥作用。
即,对于要换出的进程,线程需要在某些事情上被阻塞,通常是对内核或对阻塞的系统库的调用。寄存器将无法使用,等等...因此,需要换出的执行状态非常简单,因为调用返回状态将保留在线程状态本身中(因为线程被阻塞)。
事实上,像 PC 和 PSW 这样的东西更多地被保留为上下文切换子系统的一部分,而不是分页。即,在典型的系统上,您可能会同时在 CPU 的 N 个物理核心上运行数百个甚至数千个线程。您可以在架构的并发支持中找到如何维护该状态。
| 归档时间: |
|
| 查看次数: |
969 次 |
| 最近记录: |