访存时缺页属于中断还是异常

如题所述

访存时缺页属于中断。

具体介绍:

在实际需要某个虚拟内存区域的数据之前,虚拟和物理内存之间的关联不会建立。如果进程访问的虚拟地址空间尚未与页帧关联,处理器自动地发一个缺页异常,内核必须处理此异常。这是内存管理中最重要、最复杂的方面之一。

因为必须要考虑无数的细节缺页异常时由于访问用户地址空间中的有效地址而引起的,还是应用程序试图访问内核的受保护区域?目标地址对应于某个现存的映射吗?获取该区域的地址,需要使用何种机制。

缺页异常处理的实现因处理器的不同而有所不同,本文针对ARM32的处理流程进行学习,学习处理流程。

常见的场景:

址空间映射关系未建立:内核提供了很多申请内存的接口函数malloc/mmap,申请的虚拟地址空间,但是并未分配实际的物理页面,当首次访问的时候将会触发缺页异常用户态的经常要进行地址访问。

在进程刚创建运行时,页会伴随着大量的缺页异常,例如文件页(代码段/数据段)映射到进程地址空间,首次访问会产生缺页异常。

地址空间映射已建立访问的页面已经被swapping到磁盘,访问时触发缺页异常fork子进程时,子进程共享父进程的地址空间,写是触发缺页异常(COW技术)要访问的页面被KSM合并,写时触发缺页异常(COW技术)访问的地址空间不合法。

用户空间访问内核空间地址,触发缺页异常内核空间访问用户空间地址,触发缺页异常ARM缺页硬件支持缺页处理的实现因处理器的不同而有所不同,本文以ARMV7的体系结构为例学习,大多数其他的CPU实现基本类似。

温馨提示:答案为网友推荐,仅供参考