开发者社区> 问答> 正文

32位段页模式,下如果程序分4个段,那么程序最大有16G内存空间?

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

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

    2019-07-17 19:46:21
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
内存取证与IaaS云平台恶意行 为的安全监控 立即下载
云服务器ECS内存增强型实例re6全新发布 立即下载
低代码开发师(初级)实战教程 立即下载