linux - 32位段页模式,下如果程序分4个段,那么程序最大有16G内存空间?
阿神
阿神 2017-04-17 13:49:18
[Linux讨论组]

学习段模式的时候想到,32位段页模式下一个段最大为4G,如果程序分n个段,那么整个程序最大可以有4*n G的空间?那一个程序有4G虚拟地址空间的说法,是在纯分页模式下才成立?
平时写的hello world之类的小程序是分几个段呢?

阿神
阿神

闭关修行中......

全部回复(1)
ringa_lee

原则上说是这样的,但是还受物理地址限制,如果物理地址是32位的,那么搞再多段也没用。32位机器为了扩展4g以上内存,intel扩展了物理地址,可以使用36位,即总共64G内存。用16个段就可以访问。
但是目前操作系统为了方便,都把段基址设置成0,因此一个进程只能使用4G空间。要使用超过4G空间,需要操作系统的mmap,或者使用更多的进程。
程序的段可以分很多个,常见的.text,.data,.bss。但这个跟操作系统的段关系不大,操作系统一般只给应用程序2个段,一个.text,代码段,其他数据段包括堆栈都用一个。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号