Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何检查虚拟地址是否属于用户数据空间或用户代码空间?_C_Linux_Linux Kernel - Fatal编程技术网

C 如何检查虚拟地址是否属于用户数据空间或用户代码空间?

C 如何检查虚拟地址是否属于用户数据空间或用户代码空间?,c,linux,linux-kernel,C,Linux,Linux Kernel,mm_结构映射到bss、代码、数据段。我应该检查他们的开始和结束范围。如何确定给定的虚拟地址属于用户数据还是用户代码空间 非常感谢您的帮助很遗憾,我不知道答案,但作为参考,在Windows编程中,它在全局调用和系统调用中都可用。不清楚您要精确检查什么:您是否只想检查某个虚拟地址是否映射为数据(RW)与代码(RX)?还是要检查地址是否与拥有mm_结构的任务的.text或.data部分完全对应?在第一种情况下,这应该很容易,而在第二种情况下,这并没有多大意义,因为一旦加载二进制文件,就很难分辨哪个v

mm_结构映射到bss、代码、数据段。我应该检查他们的开始和结束范围。如何确定给定的虚拟地址属于用户数据还是用户代码空间


非常感谢您的帮助

很遗憾,我不知道答案,但作为参考,在Windows编程中,它在全局调用和系统调用中都可用。不清楚您要精确检查什么:您是否只想检查某个虚拟地址是否映射为数据(RW)与代码(RX)?还是要检查地址是否与拥有
mm_结构的任务的
.text
.data
部分完全对应?在第一种情况下,这应该很容易,而在第二种情况下,这并没有多大意义,因为一旦加载二进制文件,就很难分辨哪个
vm\u area\u struct
对应于哪个节。@MarcoBonelli问题陈述是-一个针对用户代码段中的页面错误,一个针对用户数据段中的页面错误,一个用于不在代码段或数据段中的页面错误。(其中大部分将在堆栈中。)提示是——内存管理结构跟踪代码和数据段的开始和结束。因此,我假设这是第二种情况,使用mm_struct,它需要位于其中一个区域让我举个例子:假设程序确实
mmap(0x123000,0x1000,PROT_READ | PROT_WRITE | PROT_EXEC,MAP_PRIVATE | MAP_ANONYMOUS,-1,0),您会在这样的页面中定义一个地址,如?代码、数据还是其他?相同但没有
PROT_EXEC
的呢?