2013-05-02 41 views
-2

当物理内存被进程完全占用并引入新进程(类似优先级)时会发生什么情况。内存管理单元如何处理新旧进程所请求的页面(资源)(相同的优先级任务)。与物理内存地址处理有关的MMU

所以我的意思是要问,如何为类似的优先级进程和物理内存的交换完成另一边。请用一个例子来解释一下?

+0

MMU不处理这个 - 它不配置它自己。而是由操作系统来完成分配,并配置MMU来实现它们。如果配置了交换,页面可能会从RAM移动到磁盘。否则,操作系统可能会错误地请求进程,或者一些可能被配置为关闭某些不太关键的进程以获得更多空闲内存。 – 2013-05-02 19:25:14

+3

我认为你将CPU的MMU与Linux内核虚拟内存管理器混淆在一起。 – tadman 2013-05-02 19:28:51

回答

3

你不应该在乎这种情况,在当前的Linux桌面上这是一个不可能的情况(因为通常内核从文件系统缓存中窃取页面)。

当一个新的程序开始与execve(2)系统调用,新的内存映射设置了copy-on-write机制(好像几乎被mmap(2)完成),可能。一旦程序访问它们,内核就会发生页面错误并最终将页面加载到物理RAM中。它可能必须选择应该窃取哪些页面。如果它们很脏,则必须将它们写入某个交换区域(或者如果映射为MAP_SHARED,则将其写入某个mmap -ed文件)。否则,它只是重用它们(并重新分配物理页面)。

如果使用的内存资源,memory overcommit可能发生

MMUvirtual memory管理使用的linux kernel。应用程序在某些虚拟address space上进行查看(查看/proc/,例如使用cat /proc/self/maps来了解它)。

MMU正在执行虚拟到物理地址转换,并导致页面错误。内核负责配置MMU(即设置虚拟地址空间转换机制)和处理页面错误(这对应用程序来说通常是不可见的 - 例如,因为内核会从磁盘,文件系统或交换中获取页面区域 - 除了当访问“不存在”页面时发生的SIGSEGV信号)。

请花些时间阅读此处给出的所有链接。

+0

所以根据你MMU不执行的活动,它是由内核来解决内存问题..谢谢你的解决方案.. :) – 2013-05-02 19:39:18

+1

我不明白你认为哪个“活动”MMU正在执行。 – 2013-05-02 20:01:30

相关问题