25-PDT/PTT基址(实验与分析)

上一篇,我们分析了PDT的基址是 0xc0300000。这个地址拆分成三段式就是300-300-000. 用大白话说就是页目录表的第0x300号PDE指向的页表PTT768中的第0x300号PTE指向的物理页。

 


这里写图片描述
图1 PTT768

 

C0300000分析

0xc0300000 拆成三段式300-300-000。所以我们可以在 WinDbg 中查找页目录表的第 0x300 号PDE指向的物理页到底是谁。这里随便选一个进程的的页目录基址来做实验。

 


这里写图片描述
图2 惊奇的发现0x300号索引指向的PTT还是页目录基址,也PDT

 

如果再接着分析下去,就是把这个页目录当成PTT来分析,这是第二重身份了。该PTT的第 0x300 号PTE 的值,依然是 0x18caa063

结论就是,0xc0300000就是页目录表的基址。只要知道了这个地址,以后访问页目录表的内容还不是轻而易举。

C0000000 分析

0xc0000000拆成三段式300-000-000。我们已经知道一级索引指向的还是页目录。重点看二级索引,索引号是 0,它指向的普通物理页是谁。

 


这里写图片描述
图2 二级索引指向的是“普通物理页”

 

我们知道的一个事实是,二级索查的是 PTT 表,然而我们查的这个 PTT 表却又是 PDT 表。所以,最终的这个普通物理页其实并不普通,它可是一张 PTT。如果你觉得有点混乱,请仔细看图1中的PTT0.

总结

知道了PDT和PTT的基址,那么PDE和PTE的基址就很容易得到,只要加上偏移就行了。

如果一个线性地址被拆分成三段式PDI-PTI-OFFSET,则有:

  • PDE 的基址
// 第 PDI 个 PDE 的基址
PDT[PDI] = 0xc0300000 + PDI  4
  • PTE 的基址
// 第 PDI 个 PDE 指向的 PTT 中的第 PTI 个 PTE 的基址
PTE[PTI] = 0xc0000000 + PDI  4096 + PTI*4
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Error: java.io.IOException: File copy failed: hdfs://192.168.101.31:8020/apps/hive/warehouse/orig.db/ods_alarm_detail_808/pdt=2023-05-01/phour=00/events-k2-00.1682870400001. gz --> hdfs://172.21.194.129:8020/distcp/apps/hive/warehouse/orig.db/ods_alarm_detail_808/pdt=2023-05-01/phour=00/events-k2-00.1682870400001.gz at org.apache.hadoop.tools.mapred.CopyMapper.copyFileWithRetry(CopyMapper.java:299) at org.apache.hadoop.tools.mapred.CopyMapper.map(CopyMapper.java:266) at org.apache.hadoop.tools.mapred.CopyMapper.map(CopyMapper.java:52) at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:146) at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:787) at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341) at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:170) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:422) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1869) at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:164) Caused by: java.io.IOException: Couldn't run retriable-command: Copying hdfs://192.168.101.31:8020/apps/hive/warehouse/orig.db/ods_alarm_detail_808/pdt=2023-05-01/phour=00/e vents-k2-00.1682870400001.gz to hdfs://172.21.194.129:8020/distcp/apps/hive/warehouse/orig.db/ods_alarm_detail_808/pdt=2023-05-01/phour=00/events-k2-00.1682870400001.gz at org.apache.hadoop.tools.util.RetriableCommand.execute(RetriableCommand.java:101) at org.apache.hadoop.tools.mapred.CopyMapper.copyFileWithRetry(CopyMapper.java:296)
06-07
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值