【问题标题】:MMU related to physical memory address handling [closed]与物理内存地址处理相关的 MMU [关闭]
【发布时间】:2013-05-02 19:20:48
【问题描述】:

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

所以我的意思是问如何为类似优先级进程完成的内存交换和另一侧的物理内存已满。请举例说明?

【问题讨论】:

  • MMU 不处理这个 - 它不配置自己。相反,这取决于操作系统来进行分配,并配置 MMU 来实现它们。如果配置了交换,页面可能会从 RAM 移动到磁盘。否则,操作系统可能会导致请求进程出错,或者可以将某些进程配置为杀死某些不太关键的进程以获得更多可用内存。
  • 我认为您将 CPU 的 MMU 与 Linux 内核虚拟内存管理器混淆了。

标签: linux memory


【解决方案1】:

您不应该关心在这种情况下会发生什么,并且在当前的 Linux 台式机和笔记本电脑上这是一个不太可能的情况(因为通常内核会从文件系统缓存中窃取页面)。

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

如果所有内存资源都用完了,memory overcommit 可能会发生

MMUlinux kernel 用于virtual memory 管理。应用程序在某些虚拟address space 上查看(查看/proc/,例如使用cat /proc/self/maps 了解它)。

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

请花时间阅读此处提供的所有链接。

【讨论】:

  • 所以根据你的说法,MMU 不执行活动,由内核来解决内存问题。感谢您的解决方案.. :)
  • 我不明白你认为 MMU 正在执行哪个“活动”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-04
  • 1970-01-01
  • 2015-04-01
  • 2021-10-28
  • 1970-01-01
  • 2012-12-13
  • 2011-08-05
相关资源
最近更新 更多