进程4G虚拟内存空间的分配
通常我们常说的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虚拟内存空间的分配相关推荐
- linux的虚拟内存是4G,而每个进程都有自己独立的4G内存空间,怎么理解?
问: linux的虚拟内存是4G,而每个进程都有自己独立的4G内存空间,怎么理解? 每个进程所拥有的4G独立的虚拟内存空间是什么意思?linux系统的虚拟4G空间中,高位的1G是用于系统内核运行的,那 ...
- linux的虚拟内存是4G,而每个进程都有自己独立的4G内存空间,怎么理解?进程虚拟地址4G指拥有4G的寻址能力,需要页表转换为实际物理地址,每个进程用到的内核是直接映射,地址的进程地址-3G的关系
linux的虚拟内存是4G,而每个进程都有自己独立的4G内存空间,怎么理解? 问: linux的虚拟内存是4G,而每个进程都有自己独立的4G内存空间,怎么理解? 每个进程所拥有的4G独立的虚拟内存空间 ...
- 虚拟内存以及进程的虚拟内存分布(第六章)
在早期的计算机中,程序都是直接运行在物理内存上的,意思是运行时访问的地址都是物理地址,而这要求程序使用的内存空间不超过物理内存的大小. 在现代计算机操作系统中,为了提高CPU的利用率计算机同时运行多个 ...
- 详解进程的虚拟内存,物理内存,共享内存
目录 写在前面: 一.关于内存的两个概念 1.1 虚拟内存 1.2 驻留内存 二.详解top命令中VIRT.RES和SHR 2.1 top命令中ⅥRT.RES和SHR的含义 三.进程的smaps文 ...
- Linux内核虚拟地址空间,-3G的由来。各个进程的虚拟内存4G,内核总在3-4G。内核的虚拟空间地址-3G,总是指向物理内存的0-1G地址,各个进程的虚拟内核共享这个物理内存
Linux内核地址空间划分 通常 32 位 Linux 内核地址空间划分 0~3G 为用户空间,3~4G 为内核空间.64 位内核地址空间划分是不同的. Linux内核高端内存 当内核模块代码或线程访 ...
- 动态内存申请(malloc, calloc, new)之分配虚拟内存空间和物理内存空间
动态内存申请(malloc, calloc, new)之分配虚拟内存空间和物理内存空间 1. 动态内存申请的底层系统调用 动态内存申请函数根据申请的内存大小选择不同的系统调用,小于128K选择brk系 ...
- linux 进程内存分布及 堆分配和栈分配的特点
文章目录 进程内存空间分布 size命令查看内存分布 堆方式内存分配和栈方式内存分配比较 使用stap 深入追踪malloc逻辑 进程内存空间分布 一个程序的内存空间主要如下: 代码段(text se ...
- 【Linux】进程概念 —— 虚拟内存地址空间
目录 一.进程地址空间 1.进程地址空间分布图 2.验证上述进程地址空间 3.Linux vs Windows 二.了解虚拟内存地址空间 0.通过代码引出虚拟内存地址空间概念 1.什么是虚拟内存地址空 ...
- linux 进程 转存储,Linux memory management——(进程虚存空间的管理)(转)
Linux memory management--(进程虚存空间的管理)(转)[@more@]Linux memory management--(进程虚存空间的管理) 1.内核空间和用户空间 进程运行 ...
最新文章
- Eclipse导入Maven项目出现错误:Unsupported IClasspathEntry kind=4
- 【BZOJ1305】 [CQOI2009]dance跳舞
- 制作 docker 镜像
- ios 判断数字大小_iOS开发积累2
- IBM X3650 M4服务器使用U盘重装系统教程
- 中国IP网通IP地址段
- 项目经理应该具备的技能和素质是什么?
- 【转】MapGISnbsp;K9基础系…
- MaxMall开源微信分销系统
- 利用ASK/OOK 发射模块,实现信号重放
- [SAP ABAP开发技术总结]搜索帮助Search Help (F4)
- UPC-5094 - Faulty Robot - 搜索
- 数字油画的起源与绘制过程
- 正态总体参数的假设检验
- 2013-2019年百度搜索算法规则解读与应对
- Android 基于 dlib 和 opencv 实现换脸(不需要依赖第三方关键点检测)
- MOOS通信框架初探(一)
- 我的学习笔记004--javascript实现旋转导航菜单mxx
- c语言自动售货机实验报告,c语言自动售货机实验报告(15页)-原创力文档
- Electron(基于Vue)中使用IPC