无忧资源站

 找回密码
 加入我们
查看: 1347|回复: 0

[C/C++] 数据结构之PTE原型介绍-x86

[复制链接]

56

主题

58

帖子

1058

积分

无忧资源站

Rank: 9Rank: 9Rank: 9

积分
1058

钻石用户勤劳达人超级萌主武林秘籍实例会员悬赏达人滴水穿石皇冠会员退伍军人铂金会员暗号达人打卡达人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理站点元老

QQ
发表于 2023-5-28 14:58:36 | 显示全部楼层 |阅读模式
  1. struct PTE {
  2.     unsigned int present:1;         // 存在位(P)
  3.     unsigned int read_write:1;      // 读/写位(R/W)
  4.     unsigned int user_supervisor:1; // 用户/特权位(U/S)
  5.     unsigned int write_through:1;   // 写回/写直通位(W/T)
  6.     unsigned int cache_disabled:1;  // 缓存/缓存禁止位(C/D)
  7.     unsigned int accessed:1;        // 访问位(A)
  8.     unsigned int dirty:1;           // 修改位(D)
  9.     unsigned int reserved:1;        // 保留位(RFU)
  10.     unsigned int global:1;          // 全局页位(G)
  11.     unsigned int available:3;       // 空闲位(AVAIL)
  12.     unsigned int page_table_base:20; // 页表基地址(PFN)
  13. };

  14. 其中,每一个PTE中描述了一个4KB大小的物理页框(Page Frame)和一个4KB大小的虚拟页(Virtual Page)的映射关系。下面对每个字段进行详解:

  15. present: 存在位(P),指示此PTE是否表示一个有效的映射关系,如果为0表示无效,为1则表示此映射关系有效。
  16. read_write: 读/写位(R/W),用于指示此页是否可写,如果为0表示只能读,为1则表示可写。
  17. user_supervisor: 用户/特权位(U/S),用于指示此页的访问级别,如果为0表示只能在特权模式下访问,为1则表示可在特权及用户模式下访问。
  18. write_through: 写回/写直通位(W/T),用于指示写操作是否直接写入到物理内存中,如果为0则表示写回(即先写入缓存再批量写入物理内存),为1则表示写直通(即直接写入物理内存)。
  19. cache_disabled: 缓存/缓存禁止位(C/D),用于指示是否启用页缓存,如果为0则表示启用,为1则表示禁用。
  20. accessed: 访问位(A),用于记录此页是否被访问过,主要用于页面置换。
  21. dirty: 修改位(D),用于记录此页是否被修改过,主要用于页面置换和文件映射。
  22. reserved: 保留位(RFU),为操作系统保留,暂未被使用。
  23. global: 全局页位(G),用于避免TLB(Translation Lookaside Buffer)的失效,如果为0则表示此页只在当前进程中有效,为1则表示此页在所有进程中有效。
  24. available: 空闲位(AVAIL),暂未被使用,可以用于操作系统的一些特殊用途。
  25. page_table_base: 页表基地址(PFN),指向物理页框的基地址。在读取和写入虚拟地址时,硬件通过PTE中的page_table_base字段找到对应的物理页框,然后访问其中的数据。
  26. 总之,PTE是一种非常重要的数据结构,它可以让操作系统将虚拟地址转换成物理地址,从而实现内存管理和资源保护等功能。在32位系统中,由于地址空间较小,PTE结构也相对简单,但其内部原理和用法依然非常重要。
复制代码


无忧资源专区所有资源均由管理员核实测试后发布,均可放心下载!

QQ|SiteMap|Map|小黑屋|无忧资源站

GMT+8, 2024-5-19 14:27 , Processed in 0.067458 second(s), 22 queries .

无忧资源站

Copyright © 2022-2032 www.wyzyz.net

快速回复 返回顶部 返回列表