来自docs:
注意:Core Data避免使用该术语 因为它令人困惑而无法理解。 没有“虚无”的虚拟 内存页面错误。页面错误是 触发,引发,解雇或 遇到。当然可以 将内存释放回内核中 各种方式(使用功能 vm_deallocate,munmap或sbrk)。核心 数据将此描述为“转向 把对象变成了一个错误“。
核心数据中的故障本质上是内存页面错误吗?我对内存页面的内容只有一点了解。我相信它是执行程序和类似内容所需的“内存中的一段代码”,并且当应用程序运行时,代码片段作为“页面”被吸入内存并因为它们不被丢弃而被丢弃需要了。可能99%错了;)
任何?
答案 0 :(得分:7)
我对内存页面的含义只有一点了解。我相信它是执行程序和类似内容所需的“内存中的一段代码”,并且当应用程序运行时,代码片段作为“页面”被吸入内存并因为它们不被丢弃而被丢弃需要了。
内存(即代码和数据)存在于内存中。
存在于内存中的每个东西都有一个地址(一个内存地址)。
内存地址空间(例如32位计算机上的4GB)被划分为“页面”,其中每个页面都是连续的内存块(例如,每页4KB)。
地址空间(由CPU和O / S映射)到RAM中(或可能映射到I / O端口,但这是一个不同的故事)。
安装的RAM(例如1 GB)可能少于地址空间(例如4 GB),因此某些内容(例如最近最少使用的内容)可能会被换出(通过O / S) RAM到磁盘上的页面文件。整个页面(例如4KB块)是交换的(不是单个字节)。
当应用程序尝试访问当前未映射到RAM的地址时,那就是所谓的页面错误。为了处理页面错误,操作系统可能:
答案 1 :(得分:3)
从操作系统的角度来看,内存页面是应用程序的基本数据单元。您的所有代码和数据都以页面组的形式排列。当您的程序引用应用程序中的合法内存位置时 - 通过尝试读取或写入数据或加载指令,地址将转换为其中一个页面中的某个位置。当保存地址的页面实际上不存在于物理内存中时,会发生页面错误。此时,操作系统需要将页面从磁盘加载到内存中,以便程序可以继续。
答案 2 :(得分:2)
当您的程序运行时,并非所有程序都存储在RAM中
作为操作系统的一部分,存在分页机制,其仅存储RAM中最常用的存储器页面以便更快地访问
当您尝试访问当前未加载到RAM的内存位置时,会发生页面错误,并且页面将从磁盘中获取。
由于可用的RAM仅限于存储在RAM中的最重要的存储器页面。
此机制受操作系统实施的影响 为了更全面地探索操作系统理论,我推荐A.S.Tenenbaum的“现代操作系统”一书。