其中提到应用程序访问引发缺页异常,如何区分两种情况:
我的认知是应用程序直接访问“未分配”的内存页,应该导致出错引发Segment Fault,而不是引发缺页异常。因此不存在需要区分两者的情况。
53页也提到“当应用程序申请分配内存时,操作系统可选择将新分配的虚拟页标记成已分配但未映射至物理内存状态”。那按我的理解,假如是C语言编写的程序,调用 malloc
而不访问分配后的空间,就属于这种状态。那么对于没有调用 malloc
而直接访问内存的行为,才可能称得上是“未分配”的状态,这样的访问不是会直接导致非法访问吗?