通常我们常说的4G/8G内存是指计算机硬件的内存条是4G/8G,而不是我们今天所谈论的进程4G虚拟的内存。
当一个程序运行时,系统会为每一个进程分配一个4G的虚拟内存空间,用来保存进程运行所需要的各种资源(详细资源列表后面会谈到),并创建task_struct进程控制块,保存进程的属性(进程ID、父进程、进程状态、使用的寄存器等)。
接下来聊一聊4G的虚拟内存是如何分配的:
4G------------- |-----
内核空间 | 特点是由内核管理,用户是不可见的更是进不去的
3G------------- |-----
用户空间 | 特点是由用户管理
0-------------- |------
用户空间的0~3G分为:
3G |----------------------------------|
^ | 栈区 | ------>特点是由系统管理,先进后出,存放的是局部变量,函数形参,自动变量;
|| |----------------------------------|
|| | 堆区 | ------>特点是由用户管理,用户可以使用的malloc申请的空间就是这片空间;
|| |----------------------------------|
|| | 未初始化区域 | ------>保存的是未初始化的全局变量
|| |-----------------------------------|
|| | 全局/静态初始化区域 | ------>保存了初始化的全局变量还有static修饰的变量
|| |---------------------------------- |
|| | 字符串常量 | ------>保存了常量
|| |-----------------------------------|
^ | 代码区 | ------>存放源代码
0 |----------------------------------|

内核空间的3G~4G分为:
4G |----------------------------------|
| 保留分区4K | ------>用于错误码的判断
|| |----------------------------------|
|| | 专业内存映射区 | ------>给内核使用的我们无需关心
|| |----------------------------------|
|| | 高端内存映射区 | ------>896M~4G/8G(依据内存条空间而定)
|| |-----------------------------------|
|| | vmalloc区 | ------>驱动程序中vmalloc函数申请的空间
|| |---------------------------------- |
| 直接物理地址映射 | ------>直接物理地址的映射仅896M
3G |---------------------------------- |

最后谈一谈几个关于地址的概念:
物理地址:硬件芯片手册上的地址是实际的物理地址;
虚拟地址:4G虚拟空间的地址,上面所讲述的都是虚拟地址;
线性地址:在ARM架构中,线性地址与虚拟地址是相同;
逻辑地址:反汇编程序中我们能看到的地址是逻辑地址;
相对地址:相对于某一个地址来说的;

进程4G虚拟内存空间的分配相关推荐

  1. linux的虚拟内存是4G,而每个进程都有自己独立的4G内存空间,怎么理解?

    问: linux的虚拟内存是4G,而每个进程都有自己独立的4G内存空间,怎么理解? 每个进程所拥有的4G独立的虚拟内存空间是什么意思?linux系统的虚拟4G空间中,高位的1G是用于系统内核运行的,那 ...

  2. linux的虚拟内存是4G,而每个进程都有自己独立的4G内存空间,怎么理解?进程虚拟地址4G指拥有4G的寻址能力,需要页表转换为实际物理地址,每个进程用到的内核是直接映射,地址的进程地址-3G的关系

    linux的虚拟内存是4G,而每个进程都有自己独立的4G内存空间,怎么理解? 问: linux的虚拟内存是4G,而每个进程都有自己独立的4G内存空间,怎么理解? 每个进程所拥有的4G独立的虚拟内存空间 ...

  3. 虚拟内存以及进程的虚拟内存分布(第六章)

    在早期的计算机中,程序都是直接运行在物理内存上的,意思是运行时访问的地址都是物理地址,而这要求程序使用的内存空间不超过物理内存的大小. 在现代计算机操作系统中,为了提高CPU的利用率计算机同时运行多个 ...

  4. 详解进程的虚拟内存,物理内存,共享内存

    ​ 目录 写在前面: 一.关于内存的两个概念 1.1 虚拟内存 1.2 驻留内存 二.详解top命令中VIRT.RES和SHR 2.1 top命令中ⅥRT.RES和SHR的含义 三.进程的smaps文 ...

  5. Linux内核虚拟地址空间,-3G的由来。各个进程的虚拟内存4G,内核总在3-4G。内核的虚拟空间地址-3G,总是指向物理内存的0-1G地址,各个进程的虚拟内核共享这个物理内存

    Linux内核地址空间划分 通常 32 位 Linux 内核地址空间划分 0~3G 为用户空间,3~4G 为内核空间.64 位内核地址空间划分是不同的. Linux内核高端内存 当内核模块代码或线程访 ...

  6. 动态内存申请(malloc, calloc, new)之分配虚拟内存空间和物理内存空间

    动态内存申请(malloc, calloc, new)之分配虚拟内存空间和物理内存空间 1. 动态内存申请的底层系统调用 动态内存申请函数根据申请的内存大小选择不同的系统调用,小于128K选择brk系 ...

  7. linux 进程内存分布及 堆分配和栈分配的特点

    文章目录 进程内存空间分布 size命令查看内存分布 堆方式内存分配和栈方式内存分配比较 使用stap 深入追踪malloc逻辑 进程内存空间分布 一个程序的内存空间主要如下: 代码段(text se ...

  8. 【Linux】进程概念 —— 虚拟内存地址空间

    目录 一.进程地址空间 1.进程地址空间分布图 2.验证上述进程地址空间 3.Linux vs Windows 二.了解虚拟内存地址空间 0.通过代码引出虚拟内存地址空间概念 1.什么是虚拟内存地址空 ...

  9. linux 进程 转存储,Linux memory management——(进程虚存空间的管理)(转)

    Linux memory management--(进程虚存空间的管理)(转)[@more@]Linux memory management--(进程虚存空间的管理) 1.内核空间和用户空间 进程运行 ...

最新文章

  1. Eclipse导入Maven项目出现错误:Unsupported IClasspathEntry kind=4
  2. 【BZOJ1305】 [CQOI2009]dance跳舞
  3. 制作 docker 镜像
  4. ios 判断数字大小_iOS开发积累2
  5. IBM X3650 M4服务器使用U盘重装系统教程
  6. 中国IP网通IP地址段
  7. 项目经理应该具备的技能和素质是什么?
  8. 【转】MapGISnbsp;K9基础系…
  9. MaxMall开源微信分销系统
  10. 利用ASK/OOK 发射模块,实现信号重放
  11. [SAP ABAP开发技术总结]搜索帮助Search Help (F4)
  12. UPC-5094 - Faulty Robot - 搜索
  13. 数字油画的起源与绘制过程
  14. 正态总体参数的假设检验
  15. 2013-2019年百度搜索算法规则解读与应对
  16. Android 基于 dlib 和 opencv 实现换脸(不需要依赖第三方关键点检测)
  17. MOOS通信框架初探(一)
  18. 我的学习笔记004--javascript实现旋转导航菜单mxx
  19. c语言自动售货机实验报告,c语言自动售货机实验报告(15页)-原创力文档
  20. Electron(基于Vue)中使用IPC

热门文章

  1. 期货和股票平仓时成本计价的区别
  2. 风很大的PMP证书真有这么厉害?这是被腾讯/华为招聘时所提到过的证书
  3. 03 矩阵不只是mn个数字
  4. MAC程序坞0响应设置
  5. 微信认证年审 涉及支付 充值等信息 需要校验合同
  6. 上半年结束,46万家公司倒闭,2024太难了!
  7. 博士申请 | ​悉尼科技大学澳大利亚人工智能研究院招收联邦学习全奖博士生...
  8. COJ1978-LXX的图论题
  9. 在Win7环境下搭建Geant4工作平台
  10. vbs获取html内容,VBS获取网页内容