【发布时间】:2013-01-25 02:56:50
【问题描述】:
我希望能够知道页表中属于进程的哪些页用作数据段。 我正在为 amd64 使用 Linux 内核 v 3.2
这是我之前做过但没用的:
使用
task->mm->start_data访问数据段(task是目标进程的task_struct)。搜索
task->mm->mmap(链表)并将每个vm_area_struct(vm_start)的起始地址与task->mm->start_data进行比较。这里我假设数据段的开头与页面的开头对齐。
所有这些都应该在内核模块中完成。
谢谢。
【问题讨论】:
-
为什么每个页面的执行属性都不是一个足够的测试(即文本页面允许执行而数据页面不能)?
-
我没有假设或提到“复制”,那么你为什么要提出这个断言呢?您最初的问题仅提到“数据段”,但现在您正在寻找“静态变量”? en.wikipedia.org/wiki/NX_bit BTW Linux 中的“文本页”(相对于“数据页”)与“代码页”相同。假设您理解“文本”的含义,我可能犯了一个错误。
标签: c memory-management linux-kernel virtual-memory memory-model