假设32位的,linux应用程序的线性地址的范围是0-3G,如果一个应用程序代码段长度为5G,那么线性地址怎么分配??
解决方案 »
- 内核线程和用户程序的优先级的问题;请教高手
- 动态库的使用和编译平台的内核版本还有gcc版本有关系吗?
- 求助:nginx日志报错no live upstreams while connecting to upstream
- 关于word2vec中文语料使用Out of dictionary word的问题
- linux安装rpm要各种依赖怎么解决
- Linux可以telnet通数据库端口,但是连不上
- 从Linux往windows传送文件的shell问题
- gdm3/lightdm+gnome循环登录,lightdm+gnome普通用户无法登录
- 如何来查看cpu使用率比较高的原因
- 求助:Linux下实现网络记事本
- 搭建lvs+keepalived+nginx环境,防火墙已关闭,单独访问nginx应用没有问题,出现vip能ping通,但是不能访问的情况
- ubuntu18.04有时候键盘反应延迟
也就是说,线性地址和物理地址之间的映射是会变化的。
一、网文看到这个elf_map通过mmap映射的,按照mmap直接映射代码段,逻辑地址空间是不够的。
二、我是没有自己看代码的。建议你看看elf_map的代码,看看是怎么实现的;是不是直接把elf执行文件mmap直接映射进内存的。就能确认问题了。
你说一个应用程序代码段长度为5G,首先用32位编译器根本就编译不出来这样的应用程序;
在32位系统上的应用程序,那些代码段、数据段、堆栈段等等,首先不能超过3GB,另外还要留出一部分空间供你程序中malloc分配,如果3GB地址空间用完了,你程序中在malloc内存就会报错,或者执行程序会导致堆栈溢出等等问题。