32位下的内存地址分布图如下:1g为内核空间,3g为用户空间

内核空间:内核空间表示运行在处理器最高级别的超级用户模式(supervisor mode)下的代码或数据,内核空间占用从0xC0000000到0xFFFFFFFF的1GB线性地址空间,内核线性地址空间由所有进程共享,但只有运行在内核态的进程才能访问,用户进程可以通过系统调用切换到内核态访问内核空间,进程运行在内核态时所产生的地址都属于内核空间。

用户空间:
用户空间占用从0x00000000到0xBFFFFFFF共3GB的线性地址空间,每个进程都有一个独立的3GB用户空间,所以用户空间由每个进程独有,但是内核线程没有用户空间,因为它不产生用户空间地址。另外子进程共享(继承)父进程的用户空间只是使用与父进程相同的用户线性地址到物理内存地址的映射关系,而不是共享父进程用户空间。运行在用户态和内核态的进程都可以访问用户空间。
在用户空间内内存被分为:0x08048000开始
text段-代码段
text段存放程序代码,运行前就已经确定(编译时确定),通常为只读

.rodata-只读数据段
存放一些只可以读的常量数据 比如:被const修饰的全局变量,被define宏定义的常量,和只可读的字符串常量。

.data
存放在编译阶段(而非运行时)就能确定的数据,可读可写。也就是通常所说的静态存储区,赋了初值的全局变量和赋初值的静态变量存放在这个区域,常量也存放在这个区域,static 声明的变量,不管它是全局变量也好,还是在函数之中的也好,只要是没有赋初值都存放在.bss段,如果赋了初值,则把它放在.data段。

.bss
定义而没有赋初值的全局变量和静态变量,放在这个区域;

heap
堆是用于存放进程运行中被动态分配的内存段,它的大小并不固定,可动态扩张或缩减。
当进程调用malloc等函数分配内存时,新分配的内存就被动态添加到堆上(堆被扩张);
当利用free等函数释放内存时,被释放的内存从堆中被剔除(堆被缩减)。由低向高。

共享库区域
这里被内核用来把文件内容直接映射到内存。所有的应用程序都可以使用linux提供的mmap()系统调用或者在windows中使用CreateFileMapping()/MapViewOfFile来进行这样的映射。memory mapping是进行文件I/O的高效方法,所以动态库的加载使用这个方式来实现。当然,也可以进行一些不关联到文件的程序数据的匿名memory mapping。在linux中,如果你通过malloc()来申请一块大的内存,C库就会在memory mapping segment中创建一个匿名memory mapping而不是使用堆空间。这里的“大”意味着大于MMAP_THRESHOLD字节,默认是128kb,可以通过mallopt()来进行调整。

stack
stack段存储参数变量和局部变量,由系统进行申请和释放,属于静态内存分配。由高向低

32位下的内存地址分布相关推荐

  1. 32位计算机中内存地址如何表示,内存地址是什么

    所谓的内存地址,指的就是在计算机系统中或移动智能设备如智能手机中运行内存的位置,在计算机界,我们通常以十六进制的方式表示这个特殊的内存地址,并称之为内存地址编号.在汇编语言中,内存地址编号经常会被使用 ...

  2. 32位Windows7上8G内存使用感受+xp 32位下使用8G内存 (转)

    32位Windows7上8G内存使用感受+xp 32位下使用8G内存 博客分类: Windows XPWindowsIE企业应用软件测试  我推荐做开发的朋友:赶快加入8G的行列吧....呵呵..超爽 ...

  3. 内核知识第九讲,32位下的分页管理,36位下的分页管理.以及64位下的分页管理

    内核知识第九讲,32位下的分页管理,36位下的分页管理.以及64位下的分页管理 一丶熟悉WinDbg的常见命令. dd 虚拟地址      显示内存. !dd 加上!,        ! dd 物理地 ...

  4. 707-详解32位Linux系统内存地址映射

    详解32位Linux系统内存地址映射 我们先看一段简单的C程序: 我们先来看一张图: 我们平时所说的x86 32位指的是:80386往后到现在的同一个体系的CPU处理芯片,但是x86这个芯片是从808 ...

  5. 【ORACLE】Oracle10g R2在RHEL AS4 U2(32位)下的安装

    Oracle10g R2在RHEL AS4 U2(32位)下的安装 本文说明: 这篇文章是很久之前,大约2010年左右,当时为华能电力部署ORACLE服务器的文档,后于2012年初发布于ITPUB论坛 ...

  6. 32位系统是指地址_不起眼却很重要丨32位操作系统与64位操作系统详解(含查询教程)...

    大家好,我是小诸葛,一个喜欢捣鼓电脑的小机灵鬼儿,如果关注电脑 手机信息,可以关注小诸葛! 小诸葛 在下载软件的时候,可能会遇到需要选择32位或64位操作系统的选项,对小白来说,32跟64是什么都不知 ...

  7. win7 32位的4g内存可用内存只有2g到3g怎么解决?

    win7 32位的4g内存可用内存只有2g到3g怎么解决?这里简要介绍一些常用的解决方法,可以适当的增加内存,需要的朋友可以参考下 win7 32位可用内存有时候只有2g多或者3g多,这里简要介绍一些 ...

  8. VS2015配置内核WDK7600环境,32位下.

    VS2015配置内核WDK7600环境,32位下. 学习内核驱动的编写,就要会配置环境.不然总是用记事本编写.比较不方便. 环境配置如下. 1.首先下载WDK7600, 课堂资料代码中已经上传.链接: ...

  9. 32位计算机分配的最大内存大小,32位系统支持多大内存,教您如何提升32位系统的内存...

    民用的32位的操作系统的内存都是4G,但犹豫要保留一部分供给硬件使用,所以留给用户的可用内存就比较少了,一般来说只有3.2G到3.5G左右,剩下的就都浪费了,那么,该怎么避免这种浪费呢?又应该如何去提 ...

最新文章

  1. Sliverlight Slide 的左右滑动
  2. BZOJ 3884 上帝与集合的正确用法 (欧拉定理)
  3. 域客户端的计算机更名
  4. inline用法详解
  5. ibm db2获取目标时间与当前时间的差值_【学术论文】高帧频视觉实时目标检测系统...
  6. php网页事件处理方法,PHP实现事件机制的方法
  7. 你为什么不敢重构代码?听高手亲授秘笈!
  8. Raphael学习笔记(4)--绘图(路径【贝塞尔曲线】)
  9. java else 语法错误_Java中带有else的语法错误
  10. 挂载命令 mount
  11. apache 服务器状态查看
  12. 换个角度来看看C++中的左值、右值、左值引用、右值引用
  13. 作业2.EVE ensp 模拟器CONSOLE接口密码设置
  14. 橙仕汽车——双排mini卡
  15. rails 创建_使用Rails和Icecast创建在线流媒体广播
  16. xcopy 复制目录及子目录
  17. 挖矿木马应急响应指南
  18. 罗切斯特计算机官网,罗切斯特
  19. PR CC 2018添加素材时出现绿色/紫色横线
  20. 网络故障以及处理方法

热门文章

  1. 学会这几个Cycles渲染技巧,再也不担心渲染慢问题了
  2. 小学计算机年考试题目,(完整版)小学四年级信息技术期末考试试题及答案
  3. 便携式计算机推销洽谈方案,惠普电脑推销洽谈方案
  4. hadoop3.1.3 HA
  5. 求职尾声(大尾巴狼) 10/21
  6. Android 启动广告页
  7. Good-Turning Smoothing介绍及推理
  8. Smoothing Images
  9. golang下载所有的依赖包
  10. 有道云笔记网页剪报登录不上,反复登录问题