最后一级的页表项不仅仅包含了指向页的内存地址的指针,它也包含了页的一些特定信息,这些信息是附加在多余的比特位上的,不过这些信息是特定于CPU的。下面来看看这些位的意义:
- _PAGE_PRESENT 指定了虚拟内存页是否存在于内存之中,这个之前的pte_present函数里有使用
- _PAGE_ACCESS CPU每次访问内存页时,会自动设置
- _PAGE_DIRTY表示页是否是脏的,即页的内容是否修改过
- _PAGE_FILE与_PAGE_DIRTY相同,但用于不同的上下文,即页不在内存中的时候
- _PAGE_USER,如果设置了_PAGE_USER则允许用户访问该页,否则,只有内核能够访问
- _PAGE_READ、_PAGE_WRITE、_PAGE_EXECUTE制定了普通的用户进程是否允许读取、写入、执行该页中的机器代码
对应于这些标志,内核提供了一些函数来查看和设置不同标志的状态