gpt4 book ai didi

linux - 与物理内存地址处理相关的MMU

转载 作者:太空宇宙 更新时间:2023-11-04 05:38:47 26 4
gpt4 key购买 nike

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

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

最佳答案

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

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

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

MMUlinux kernel 使用对于 virtual memory管理。应用程序看到一些虚拟address space (查看 /proc/ 例如使用 cat/proc/self/maps 来理解它)。

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

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

关于linux - 与物理内存地址处理相关的MMU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16346078/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com