• 内存管理(七)特定于PTE的信息


       最后一级的页表项不仅仅包含了指向页的内存地址的指针,它也包含了页的一些特定信息,这些信息是附加在多余的比特位上的,不过这些信息是特定于CPU的。下面来看看这些位的意义:

    1. _PAGE_PRESENT 指定了虚拟内存页是否存在于内存之中,这个之前的pte_present函数里有使用
    2. _PAGE_ACCESS CPU每次访问内存页时,会自动设置
    3. _PAGE_DIRTY表示页是否是脏的,即页的内容是否修改过
    4. _PAGE_FILE与_PAGE_DIRTY相同,但用于不同的上下文,即页不在内存中的时候
    5. _PAGE_USER,如果设置了_PAGE_USER则允许用户访问该页,否则,只有内核能够访问
    6. _PAGE_READ、_PAGE_WRITE、_PAGE_EXECUTE制定了普通的用户进程是否允许读取、写入、执行该页中的机器代码
    对应于这些标志,内核提供了一些函数来查看和设置不同标志的状态
    1. pte_present 页是否在内存中
    2. pte_read 从用户空间是否可以读取该页
    3. pte_write 是否可以写入该页
    4. pte_exec 该页中的数据是否可以作为二进制代码执行
    5. pte_dirty 页的内容是否被修改过
    6. pte_file 该页表项是否属于非线性映射
    7. pte_young 访问位(_PAGE_ACCESS)是否设置了
    8. pte_rdpprote 清除该页的读权限
    9. pte_wrprote 清除该页的写权限
    10. pte_exprote 清除该页的二进制数据的权限
    11. pte_mkread 设置读权限
    12. pte_mkwrite 设置写权限
    13. pte_mkexec 允许执行页的内容
    14. pte_mkdirty 将页标记为脏
    15. pte_mkclean "清除"页,通常是清除_PAGE_DIRTY位
    16. pte_mkyoung 设置访问位,通常是_PAGE_ACCESSD
    17. pte_mkold 清除访问位

    from: http://blog.chinaunix.net/uid-21718047-id-3146807.html

  • 相关阅读:
    GIt-重置
    Git-对象
    Git-暂存区
    Git-Git初始化
    Git-起步
    调试九法-制造失败
    调试九法-理解系统
    readhat7.0 bond配置
    firewall-cmd 防火墙命令详解 及 TCP Wrappers
    RAID与LVM磁盘阵列技术
  • 原文地址:https://www.cnblogs.com/aspirs/p/12595585.html
Copyright © 2020-2023  润新知