扫码关注官方订阅号
学习段模式的时候想到,32位段页模式下一个段最大为4G,如果程序分n个段,那么整个程序最大可以有4*n G的空间?那一个程序有4G虚拟地址空间的说法,是在纯分页模式下才成立?平时写的hello world之类的小程序是分几个段呢?
闭关修行中......
原则上说是这样的,但是还受物理地址限制,如果物理地址是32位的,那么搞再多段也没用。32位机器为了扩展4g以上内存,intel扩展了物理地址,可以使用36位,即总共64G内存。用16个段就可以访问。但是目前操作系统为了方便,都把段基址设置成0,因此一个进程只能使用4G空间。要使用超过4G空间,需要操作系统的mmap,或者使用更多的进程。程序的段可以分很多个,常见的.text,.data,.bss。但这个跟操作系统的段关系不大,操作系统一般只给应用程序2个段,一个.text,代码段,其他数据段包括堆栈都用一个。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
原则上说是这样的,但是还受物理地址限制,如果物理地址是32位的,那么搞再多段也没用。32位机器为了扩展4g以上内存,intel扩展了物理地址,可以使用36位,即总共64G内存。用16个段就可以访问。
但是目前操作系统为了方便,都把段基址设置成0,因此一个进程只能使用4G空间。要使用超过4G空间,需要操作系统的mmap,或者使用更多的进程。
程序的段可以分很多个,常见的.text,.data,.bss。但这个跟操作系统的段关系不大,操作系统一般只给应用程序2个段,一个.text,代码段,其他数据段包括堆栈都用一个。