在ELF文件格式规范的第2-7页和第2-8页中,有两张图片展示了一个可执行文件的程序头以及它们如何被加载到内存中:specification of the ELF file format。
规范解释道:
尽管示例文件的文件偏移量和虚拟地址对于文本和数据都是模4 KB同余的,但最多四个文件页面包含不纯的文本或数据(取决于页面大小和文件系统块大小)。
第一个文本页面包含ELF标头、程序头表和其他信息。
最后一个文本页面保存了数据开头的副本。
第一个数据页面有一个文本结束的副本。
最后一个数据页面可能包含与运行进程无关的文件信息。
我的问题是:
1. 第i个“文本页面”和“数据页面”是什么意思?
2. 上述四个语句中的第二和第三项是什么意思?
3. 为什么数据填充出现在文本段之后,而文本填充出现在数据段之前,形成交错布局?
4. 如果可执行文件有超过两个段(除了文本和数据)需要加载怎么办?
规范解释道:
尽管示例文件的文件偏移量和虚拟地址对于文本和数据都是模4 KB同余的,但最多四个文件页面包含不纯的文本或数据(取决于页面大小和文件系统块大小)。
第一个文本页面包含ELF标头、程序头表和其他信息。
最后一个文本页面保存了数据开头的副本。
第一个数据页面有一个文本结束的副本。
最后一个数据页面可能包含与运行进程无关的文件信息。
我的问题是:
1. 第i个“文本页面”和“数据页面”是什么意思?
2. 上述四个语句中的第二和第三项是什么意思?
3. 为什么数据填充出现在文本段之后,而文本填充出现在数据段之前,形成交错布局?
4. 如果可执行文件有超过两个段(除了文本和数据)需要加载怎么办?