日期:2014-05-16  浏览次数:20615 次

linux内存管理中段的大小是固定值(或者有个最大值),还是随机根据运行程序需要设定段的大小
1.如果是固定的,是多大,是不是编译程序自动把每个段限制到那么大.
或者要是固定的比如1G但是我的实际内存只有512k那么如何装入1G的段(程序有好几个段),并运行?

2.如果是随机设定的,那么在编译程序时是否限定程序中每个段(汇编中的)的大小,他是多少.
如果都不限定,内存只有512k那么如何装入1G的段(程序有好几个段),并运行?

3.ELF格式中的SECTION和汇编中的SEGMENT是否是相同的,不考虑编译参数造成的合并.

------解决方案--------------------
这个在 linux情景分析 和 赵炯的那个书里面有详细的介绍 , linux中的内核数据代码段,以及用户的数据代码段都是整个虚拟空间,不过访问权限有些不同,但必要的权限检查是放到分页管理中的.这里仅仅是为了通过分段的检查!!