流水线&TLB

  • 清空没有标记G(PTE中)的所有TLB项
__asm{
    mov eax,cr3
    mov cr3,eax
}
  • 强行更新TLB项,无视G位
__asm invlpg ds:[0x405000]
  • 由于我们直接在section声明中同时标识executewrite无法通过编译,我们使用go()函数中强制执行数据页中指令的方式(当作函数执行)来使页有执行属性。因为WindowsXP中DEP只是针对系统服务和内核,对RING3没有作用,所以这样的做法是有效的。

  • CPU流水线
    指令TLB(iTLB)和数据TLB(dTLB)
    当页属性有执行权限的时候,由于CPU取指令和执行指令并行流水线执行,导致可能把数据放到指令TLB中,由于指令TLB和数据TLB的某种关系(不清楚),当取指令执行的时候,还是会使用指令TLB中缓存的PTE等数据,而不会访问页中真正的PTE。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • CPU Cache 今天的CPU比25年前更复杂。那时候,CPU内核的频率与内存总线的频率相当。内存访问只比寄存器...
    blueshadow阅读 3,097评论 0 5
  • 1. 基础知识 1.1、 基本概念、 功能 冯诺伊曼体系结构1、计算机处理的数据和指令一律用二进制数表示2、顺序执...
    yunpiao阅读 5,489评论 1 22
  • 概述 我们都知道一个进程是与其他进程共享CPU和内存资源的。正因如此,操作系统需要有一套完善的内存管理机制才能防止...
    SylvanasSun阅读 3,912评论 0 25
  • 本文转载自 https://juejin.im/post/59f8691b51882534af254317 参考:...
    xingdong阅读 2,818评论 0 3
  • 本周的第三次跑步,8月的第三次跑步。 今日跑步8.33公里,用时50分37秒,平均6分05秒,最快配速5分56秒。...
    暁猴纸阅读 188评论 0 0