您的位置:首页 > 运维架构 > Linux

为什么linux中.text 虚拟内存段不是从0起始的?

2014-09-29 10:57 246 查看


为什么linux中.text 虚拟内存段不是从0起始的?



0D4y
 4 2011年12月10日
提问

关注 0 关注

收藏 0 收藏,18.8k 浏览

问题对人有帮助,内容完整,我也想知道答案
0
问题没有实际价值,缺少关键内容,没有改进余地

另外,为什么.text段对于32bit/64bit体系分别起始于0x08048000/0x00400000, 关于这个确定数值的取值有什么决定因素?

c 

c++ 

vm 

linux 

linux-kernel

链接 
0 评论 

更多


2 个回答

答案对人有帮助,有参考价值
2
答案没帮助,是错误的答案,答非所问

采纳



gaosboy 4.8k 2011年12月10日
回答

据我所知,这个数字没什么特殊含义,这个数值就是大佬们拍脑袋定的。

文档里说:虚拟内存不从0开始是为了可以预留一个足够大的read only堆,每个程序都可以在这里建立单独的2级页表。一个2级页表是0x00400000

链接 
1 评论 

更多

答案对人有帮助,有参考价值
0
答案没帮助,是错误的答案,答非所问



白开水 28 2011年12月13日
回答

From the Linkers and loaders book:
On 386 systems, the text base address is 0x08048000, which permits a reasonably large stack below the text while still staying above address 0x08000000, permitting most programs to use a single second-level page
table. (Recall that on the 386, each second-level table maps 0x00400000 addresses.)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: