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

网站代备案多少钱站内推广和站外推广的区别

网站代备案多少钱,站内推广和站外推广的区别,如何做伪原创文章网站,石家庄建立网站目录 一、x86_64分页概述 二、四级分页结构 三、地址转换过程 四、各级页表详解 1. PGD (Page Global Directory) 2. PUD (Page Upper Directory) 3. PMD (Page Middle Directory) 4. PT (Page Table) 五、页表条目结构 六、大页面支持 七、实际寻址示例 八、Linux内…

目录

一、x86_64分页概述

二、四级分页结构

三、地址转换过程

四、各级页表详解

1. PGD (Page Global Directory)

2. PUD (Page Upper Directory)

3. PMD (Page Middle Directory)

4. PT (Page Table)

五、页表条目结构

六、大页面支持

七、实际寻址示例

八、Linux内核中的实现

九、性能优化


一、x86_64分页概述

        在x86_64架构下,Linux使用四级分页机制来管理虚拟内存到物理内存的映射。这种分级结构允许操作系统高效地管理巨大的地址空间(理论上256TB),同时保持内存使用的灵活性。

二、四级分页结构

        x86_64架构下的四级分页包括以下层级:

  1. PGD (Page Global Directory) - 页全局目录 
  2. PUD (Page Upper Directory) - 页上层目录
  3. PMD (Page Middle Directory) - 页中间目录
  4. PT (Page Table) - 页表

三、地址转换过程

        一个64位的虚拟地址在分页过程中被划分为多个部分:

63        48 47    39 38    30 29    21 20    12 11       0
+-----------+--------+--------+--------+--------+-----------+
| 符号扩展位 | PGD索引 | PUD索引 | PMD索引 | PT索引 | 页内偏移 |
+-----------+--------+--------+--------+--------+-----------+
  1. CR3寄存器:存储当前进程的PGD物理地址  
  2. 地址转换步骤: 
  • 从CR3获取PGD基址
  • 用PGD索引找到PUD条目
  • 用PUD索引找到PMD条目
  • 用PMD索引找到PT条目
  • 用PT索引找到最终的物理页框
  • 结合页内偏移得到最终物理地址

四、各级页表详解

1. PGD (Page Global Directory)

  • 每个进程有独立的PGD

  • 存储在mm_struct->pgd

  • 上下文切换时会将其物理地址加载到CR3寄存器

  • 通常占用9位索引(512个条目)

2. PUD (Page Upper Directory)

  • 在x86_64中,PUD通常只使用一个条目

  • 主要用于兼容性,为未来扩展预留

  • 同样占用9位索引

3. PMD (Page Middle Directory)

  • 中间级别的页目录

  • 可以指向页表或更大的页面(如2MB大页)

  • 占用9位索引

4. PT (Page Table)

  • 最终级别的页表

  • 直接指向物理页框

  • 占用9位索引(512个条目)

  • 每个条目映射一个4KB页面

五、页表条目结构

        每个页表条目(PTE)是64位(8字节),包含以下重要字段:

63      62      61      52 51      32 31      12 11     9 8 7 6 5 4 3 2 1 0
+-------+-------+--------+-----------+-----------+-------++-+-+-+-+-+-+-+-+
| NX    |       |        | 保留(软件) | 物理页基址 | Avail |D|A| | | |U|W|P|
+-------+-------+--------+-----------+-----------+-------++-+-+-+-+-+-+-+-+

         关键标志位:

  • P (Present):页面是否在物理内存中

  • RW (Read/Write):可写权限

  • US (User/Supervisor):用户空间是否可访问

  • PWT/PCD:缓存控制

  • A (Accessed):页面是否被访问过

  • D (Dirty):页面是否被修改过

  • NX (No Execute):禁止执行位(安全特性)

六、大页面支持

        x86_64支持多种页面大小:

  • 4KB:标准页面,使用全部四级页表

  • 2MB:大页面,绕过PT级别,直接在PMD中映射

  • 1GB:巨大页面,绕过PMD和PT级别,直接在PUD中映射

        大页面减少了TLB缺失,提高了内存访问性能。

七、实际寻址示例

        假设48位虚拟地址0xFFFF800012345678的转换过程:

1.  符号扩展为64位:0xFFFFFFFF800012345678  

2.  分解各部分:

  • PGD索引:0x100 (第257项)
  • PUD索引:0x000
  • PMD索引:0x001
  • PT索引:0x234
  • 偏移:0x5678

3.  依次查询各级页表最终得到物理页框基址,加上偏移得到物理地址

八、Linux内核中的实现

关键数据结构:

// 页表条目
typedef struct { unsigned long pte; } pte_t;
// PMD条目
typedef struct { unsigned long pmd; } pmd_t;
// PUD条目
typedef struct { unsigned long pud; } pud_t;
// PGD条目
typedef struct { unsigned long pgd; } pgd_t;

关键宏和函数:

  • pgd_offset(mm, addr):获取PGD条目

  • pud_offset(pgd, addr):获取PUD条目

  • pmd_offset(pud, addr):获取PMD条目

  • pte_offset_map(pmd, addr):获取PTE条目

九、性能优化

  1. TLB (Translation Lookaside Buffer):缓存最近使用的地址转换
  2. PCID (Process Context ID):减少TLB刷新
  3. 延迟分配:实际访问时才分配物理页
  4. 反向映射:高效的反向查找(从物理页到PTE)

        四级分页机制是x86_64架构高效管理大内存的关键,通过分级结构平衡了内存占用和查找效率。

 

http://www.dtcms.com/wzjs/150951.html

相关文章:

  • 深圳莲花大厦住房和建设局网站以营销推广为主题的方案
  • 看课学校网站建设网站推广seo是什么
  • 化妆品公司网站源码营销策略是什么
  • 网站建设排名优化什么是淘宝seo
  • 建设银行mylove网站app推广渠道在哪接的单子
  • 动态网站建设步骤定制网站+域名+企业邮箱
  • 莆田网站建站推广app
  • 寺庙招人做网站维护吗百度移动端排名软件
  • 潍坊建设网站多少钱制作网站模板
  • 深圳做网站开发友情链接查询
  • 新会新闻官网长沙排名优化公司
  • 门户网站模板下载优化设计全部答案
  • 成品网站短视频源码搭建免费男生最喜欢的浏览器
  • 三合一网站模板seo外链查询工具
  • 0成本无货源开网店百度seo优化教程免费
  • 保定企业自助建站市场调研分析报告模板
  • 网站建设和网络营销网站优化效果
  • 团队建设网站介绍做企业网站建设的公司
  • 360搜索联盟网站制作郑州seo外包服务
  • 门户网站江苏建站
  • wordpress第2页未找到seo推广公司教程
  • 怎样利用云盘做电影网站sem是什么意思啊
  • 南京网站建设报价网站seo重庆
  • 过年做那些网站能致富爱站网seo工具
  • 工业设计公司起名河南自助建站seo公司
  • 奶茶网站源码免费下载免费网页制作网站
  • 亦庄开发区建设局网站拼多多运营
  • 网站会动的页面怎么做的微信软文广告经典案例
  • wordpress check baidu result 怎么用合肥seo外包平台
  • 做网站需要多少固定带宽连云港seo公司