Memory 逻辑地址混淆
我试图用逻辑地址做一些分析。下面的程序解释 我的动机Memory 逻辑地址混淆,memory,gcc,fragmentation,Memory,Gcc,Fragmentation,我试图用逻辑地址做一些分析。下面的程序解释 我的动机 #include<stdio.h> int main() { int x=10; printf("The address of main is %p\n",&main); printf("The address of x is %p\n",&x); return 0; } 我想把逻辑地址与页面大小联系起来。。 我的意思是说这个逻辑地址是如何创建的(在偏移量、页面、数据方面) 对于这个程序,大小是1257字节,
#include<stdio.h>
int main()
{
int x=10;
printf("The address of main is %p\n",&main);
printf("The address of x is %p\n",&x);
return 0;
}
我想把逻辑地址与页面大小联系起来。。
我的意思是说这个逻辑地址是如何创建的(在偏移量、页面、数据方面)
对于这个程序,大小是1257字节,但我认为整个页面将被加载(如果我错了,请纠正我),有没有任何方法可以确保整个页面被加载,或者只有1257字节
上膛
我希望我的问题是明确的,如果有任何差异,请让我知道。谢谢您最好进一步了解如何将二进制程序加载到操作系统中。二进制文件中的不同部分将加载到不同的页面中 尝试读取文件/proc/[proc id]/maps,您将对此类问题有更多的了解
学习ELF格式也有帮助。有两件事需要记住。一个是您将拥有组成主指令的指令地址,另一个是您将拥有运行程序所需的堆栈空间。main的地址将在指令空间中,x的地址实际上在堆栈上
The address of main is 0x80483b4
The address of x is 0xbfe3b1e0
size page_size
text data bss dec hex filename
993 260 4 1257 4e9 page_size
getconf PAGESIZE
4096