深入Linux内核架构笔记(缺页异常)

在实际需要某个虚拟内存区域的数据之前,虚拟和物理内存之间的关联不会建立。如果进程访问 的虚拟地址空间部分尚未与页帧关联,处理器自动地引发一个缺页异常,内核必须处理此异常。这是 内存管理中最重要、最复杂的方面之一,因为必须考虑到无数的细节。例如,内核必须确定以下情况。

 缺页异常是由于访问用户地址空间中的有效地址而引起,还是应用程序试图访问内核的受保 护区域?

 目标地址对应于某个现存的映射吗?

 获取该区域的数据,需要使用何种机制?

缺页处理的实现因处理器的不同而有所不同。由于CPU采用了不同的内存管理概念,生成缺页异 常的细节也不太相同。因此,缺页异常的处理例程在内核代码中位于特定于体系结构的部分。深入Linux内核架构笔记(缺页异常)_第1张图片

 arch/x86/kernel/entry_32.S中的一个汇编例程用作缺页异常的入口,但其立即调用了 arch/x86/mm/fault_32.c中的C例程do_page_fault。(大多数CPU对应的特定于体系结构的源代 码中,都包含一个同名例程)

你可能感兴趣的:(Java从开发到设计,linux,linux,架构,运维)