注:核心数据避免术语 unfaulting,因为它是混乱的。 虚拟 内存页面错误没有“不合格”。页面错误是 触发,引起,解雇或 遇到。当然,你可以通过 多种方式(使用函数 vm_deallocate,munmap或sbrk)将内存释放回内核。核心 数据将此描述为“将 对象变为故障”。
是核心数据中的错误本质上是内存页错误?对于内存页面的内容我只有一点点的想法。我相信这是一种“内存中的代码片段”,它需要执行这样的过程和类似的东西,而且当应用程序运行时,代码片段会作为“页面”被吸引到内存中,因为它们不是需要了。大概99%是错的;)
有人吗?
I不要介意你对整个虚拟记忆的描述(就像我一样),但考虑到你提供的详细程度,你不觉得你应该提及它吗?您描述它的方式,听起来像每个应用程序映射到物理内存。一般来说,换出的内容不是绑定到物理地址,而是与您自己的应用程序的另一个(虚拟)页面绑定。无需您的应用程序的内存使用特性来影响其他人的应用程序。 – tvanfosson 2010-06-13 13:01:47
@tvanfosson我没有提到它,现在你已经提出了它,我不知道如何总结它。但是,每个应用程序*都映射到物理内存:每个应用程序都可以看到整个(或大部分)地址空间,就好像地址空间仅由该应用程序拥有一样,而O/S将地址空间映射到RAM 。多个应用程序意味着多个地址空间实例,并且不同的实例彼此竞争RAM。 – ChrisW 2010-06-13 13:11:28
决定要交换的内容(例如,是否选择由此应用程序或其他应用程序使用的页面)是O/S特定的实现细节(我不知道iPhone的细节是什么)。 – ChrisW 2010-06-13 13:14:30