一次只有一个进程在内存中,并且上下文切换不断地在DRAM到磁盘之间来回移动进程吗?或者多个进程同时保存在DRAM中,上下文切换只是改变了cpu正在执行的进程?
这对于虚拟内存有何不同?
一次只有一个进程在内存中,并且上下文切换不断地在DRAM到磁盘之间来回移动进程吗?或者多个进程同时保存在DRAM中,上下文切换只是改变了cpu正在执行的进程?
这对于虚拟内存有何不同?
Answers:
这个问题确实没有任何意义。
信息根据其使用频率和虚拟内存管理器做出的决定加载到内存中并保存在内存中。进程由调度程序调度。一个与另一个无关。
它不是现代操作系统中存储在内存中的进程,而是页面。例如,如果你想象两个进程运行相同的可执行文件,那么当任一进程访问它们时,如果需要,许多页面将被共享并加载到内存中。
我偶尔会从哲学的角度考虑这一点,试图将它应用于人类,以便思考我们对某些过程的体验。我用计算机作为模拟器; 意识是来自记忆的信息过程的产物。
这对我没有帮助,但我认为它适用于你的问题,因为在一个简单的例子中,答案是肯定的。
在CPU内核中,如果进程是执行过程,我们知道处理器正在处理来自其寄存器内存的数据。也许这还不够低。不断深入,到执行的门槛,其中的过程导致的产品,我们会看到它在结束的算术逻辑单元。ALU具有对两个数字执行操作的功能。所以,这就是为什么我说是的,如果我们的观点在这里有限,那么一次只有一个进程在内存中。
所以:
这不是问题的答案,但我希望能让你思考不同级别和类型的内存,并记住它底部有一台物理机器。答案假设ALU最终将从两个输入和一个输出完成该过程。对于我来说,现代CPU可能过于复杂,甚至可能会说有多少潜在的最终子ALU实际上位于单元的末尾。
多个进程的地址空间的一部分当然可以并且几乎总是在物理存储器中同时存在。所有流程的血管都很常见。它几乎没有任何一个居民。(事实上,在Windows上,因为每个进程都带有少量不可分页的信息,所以这是不可能的。不知道其他操作系统,但我希望它是相同的。)
由于调度行为,内存不会被分页和页面调度 - 除了当然,未运行的线程不会导致页面错误; 如果进程中的所有线程都没有运行,则没有理由在其任何虚拟地址空间中进行分页。
相反,如果存在RAM短缺和/或高页面错误率,则长空闲进程可能会从操作集中回收一些内存(并且可能,但不一定,从RAM丢失)。
您没有指定您询问的操作系统。在Windows,任务管理器,“进程”选项卡(Windows Vista和7)或“详细信息”选项卡(Windows 8.x)上,“内存(专用工作集)将显示每个进程的工作集中有多少RAM, for process-private vas“内存(共享工作集)”列告诉您每个进程的ws中有多少RAM也可能位于其他进程的工作集中。
此外,通常会有一些页面与修改和备用页面列表中的每个进程相关联。备用列表是Windows报告为“可用”的一部分,修改后的列表不是。这些不在任何进程的工作集中,但如果相应的虚拟页面出现故障,则可以非常快速地“分页”,而无需转到磁盘。