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

时间:2015-04-16 17:56:14

标签: linux memory-management process

当进程P1处于阻塞或挂起状态时,内存管理系统是否会将其从主内存交换出来以便为活动进程腾出空间?

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

1 个答案:

答案 0 :(得分:1)

  

所以我猜测进程是否被换出内存并放入   暂停状态,其所有常驻页面都被移出。当。。。的时候   进程恢复,以前在主要的所有页面   内存返回主内存

考虑页面,而不是流程。

如果系统处于内存压力下,即使是活动进程也可能有很多页面被物理内存驱逐出去并进入交换。

所以,当然,暂停的流程可能会有效地将所有页面完全换掉。

但是,由于流程醒来,所以不太可能只更换所有页面。这样做会浪费CPU,I / O和内存。相反,页面将根据需要返回(一般情况下 - 一些寻呼机可能启发式地返回页面集。)


如果一个进程处于活动状态,那么它就不会被换出,所以最低调用堆栈的动态状态(所有寄存器噪声,堆栈上的红色区域......等)都不是。交换时发挥作用。

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

事实上,PC和PSW之类的东西作为上下文切换子系统的一部分而不是分页。即在典型的系统上,您可能会在CPU的N个物理内核上同时运行数百甚至数千个线程。该体系结构的并发支持是您可以找到该状态的维护方式。