首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Linux 匿名页的反向映射

我们知道LINUX的内存管理系统中有”反向映射“这一说,目的是为了快速去查找出一个特定的物理页在哪些进程中被映射到了什么地址,这样如果我们想把这一页换出(SWAP),或是迁移(Migrate)的时候,就能相应该更改所有相关进程的页表来达到这个目的...1、为什么要使用反向映射   物理内存的分页机制,一个PTE(Page Table Entry)对应一个物理页,但一个物理页可以由多个PTE与之相对应,当该页要被回收时,Linux2.4的做法是遍历每个进程的所有...之后确实采用过此方法,为每个页结构(Page)维护一个链表,这样确实节省了时间,但此链表所占用的空间及维护此链表的代价很大,在2.6中弃之不用,但反向映射机制的思想不过如此,所以还是有参考价值的 2、Linux2.6...Linux采用三级页表: PGD:顶级页表,由pgd_t项组成的数组,其中第一项指向一个二级页表。...etc... */ spin_lock(&mm->page_table_lock); // 页表锁 pgd = pgd_offset(mm, address); /* 获得pdg

3.6K31

深入浅出Joern(一)Joern与CPG是什么?

https://github.com/joernio/joern 和其他工具不同,他引用了一种叫做CPG(Code Property Graph)的中间结构作为处理结构,是由AST + CFG + PDG...而另一个比较有用但是比较少见的就是PDG(**program dependence graphs**),PDF也是一种图关系,通过图来展示代码节点之间的依赖关系,他更强调的是节点和节点之间的关系,节点之间的边会展示数据节点的影响关系...下面这张图就是一张PDG,上面的两个对于x和y的定义会单向影响后续节点的变化,这种联动关系很清晰,这就是PDG的优势。...但无论是AST、CFG、PDG或者是IR等数据结构,又或者是某个原创的中间结构,他们的目标都是一致的,就是用更通用的方式解释代码,这整体可以算作编译原理的前端。...而CPG在这个环境下主体由AST、CFG、PDG多种结构融合而来,我觉得它最大的特点就是利用了图结构庞大的信息容纳能力(毕竟图本身并不是二维的,图结构可以很复杂),可以保证我们在代码分析中遇到任何情况都可以在

1.4K20

深入浅出Joern(一)Joern与CPG是什么?

https://github.com/joernio/joern 和其他工具不同,他引用了一种叫做CPG(Code Property Graph)的中间结构作为处理结构,是由AST + CFG + PDG...而另一个比较有用但是比较少见的就是PDG(**program dependence graphs**),PDF也是一种图关系,通过图来展示代码节点之间的依赖关系,他更强调的是节点和节点之间的关系,节点之间的边会展示数据节点的影响关系...下面这张图就是一张PDG,上面的两个对于x和y的定义会单向影响后续节点的变化,这种联动关系很清晰,这就是PDG的优势。...但无论是AST、CFG、PDG或者是IR等数据结构,又或者是某个原创的中间结构,他们的目标都是一致的,就是用更通用的方式解释代码,这整体可以算作编译原理的前端。...而CPG在这个环境下主体由AST、CFG、PDG多种结构融合而来,我觉得它最大的特点就是利用了图结构庞大的信息容纳能力(毕竟图本身并不是二维的,图结构可以很复杂),可以保证我们在代码分析中遇到任何情况都可以在

81930
领券