当前位置: 首页 > news >正文

页表是如何工作的

页表的基本结构

页表是一个数据结构,包含虚拟页与物理页框之间的映射关系。每个进程都有自己的页表,确保进程间内存的隔离和保护。

页(Page)和 页框(Page Frame):

  • 页:虚拟内存被划分为固定大小的块,称为页,通常为4KB。
  • 页框:物理内存同样被划分为与页相同大小的块,称为页框。

TLB

快速表,存储了一些虚拟页号到物理页框号的映射

虚拟地址到物理地址

页目录索引(Page Direct0ry Index, PDI) : 10位

页表索引(Page Table Index, PTI):10位

页内偏移(0ffset);12位

每个进程都有自己的页表,这个虚拟地址对应的物理地址就记录在对应页号的对应偏移处。

假设有一个32位Wind0ws系统,进程尝试访问虚拟地址 0x1234ABCD:

虚拟地址拆分:

页目录索引 (PDI):72

页表索引 (PTI):根据地址拆分,例如842

页内偏移 (0ffset):0xBCD

虚拟页号:0x1234A

页目录查找:

读取CR3:假设CR3指向页目录基址 0x0012AB00。

计算页目录项地址:0×0012AB00+(72× 4)=0×0012AC20读取PDE:从 0x0012AC20 读取页目录项,获取页表的物理地址 0x0023CD00。

页表查找:

计算页表地址: 0x0023CD00 + (842 × 4) = 0x0023D00 + 0xD28 = 0x0023DA28

读取PTE:从 0x0023DA28 读取页表项(PTE),获取物理页框号 0x0045EF00。

生成物理地址:

物理地址 =0x0045EF00 +0xBCD = 0x0045F7CD

更新TLB:

将虚拟页号 0x1234A 和物理页框号 0x0045EF 缓存到TLB中。

相关文章:

  • 【CSS】部分div禁用tailwindcss
  • 零基础入门机器学习 -- 第八章无监督学习与聚类
  • Android 13 上通过修改 AOSP 拦截 SystemUI 音量调节事件
  • Codeforces Round 1005 (Div. 2)(A-D)
  • kong身份认证插件详解之Basic Auth插件
  • 【Linux】--- 信号阻塞、信号捕捉
  • thingboard告警信息格式美化
  • 第二章:基础概念精讲 - 第五节 - Tailwind CSS Flex 和 Grid 布局实战
  • PCL 最远点采样(二)
  • 第一章-数制与码制
  • Linux /dev/null
  • 用C语言实现通用排序函数:深入理解指针与函数指针的魅力
  • 给定非均匀012产生函数,构造均匀012产生函数
  • Pycharm+CodeGPT+Ollama+Deepseek
  • 【1.8w字深入解析】从依赖地狱到依赖天堂:pnpm 如何革新前端包管理?
  • python学习笔记,python处理 Excel、Word、PPT 以及邮件自动化办公
  • Fastapi + vue3 自动化测试平台(5)-- 封装树形结构列表生成器
  • NewMap10.3土地勘测定界自动化系统
  • 程序员-DeepSeek深度使用指南
  • Linux中线程创建,线程退出,线程接合
  • 公安网站建设素材/seo关键词快速排名前三位
  • 广州天河做网站/抖音搜索seo
  • com网站域名注册/友链
  • 祝桥建设网站/百度投广告怎么收费
  • 室内设计方案ppt案例/长沙优化网站厂家
  • 免费外贸自建网站/渠道网官网