物理内存,虚拟内存,进程地址空间
2023-09-11 14:18:46 时间
http://www.cnblogs.com/wanpengcoder/p/5303444.html
1. 物理内存:
物理内存指的是插在计算机主板内存槽上的实际物理内存,CPU可以直接进行寻址;
物理内存的容量是固定的,但是寻址空间却取决于cpu地址线条数,如32位机,则寻址空间为2^32=4G,
即最大支持4G的寻址空间,即使我们插入了32G容量的内存条,我们也只能拥有4G的物理内存;
2. 虚拟内存:
进程执行需要将代码和数据放在内存中,但是物理内存是有限的,当进程比较多的时候,容易造成内存耗尽,而虚拟内存有效的解决了这个问题;
进程创建加载的时候,自身感知获得到了一个连续的内存地址空间,而实际上内核只是分配了一个逻辑上的虚拟内存空间,并且对虚拟内存和磁盘通过mmap做映射关系,对虚拟内存和物理内存做映射关系;等到程序真正运行的时候,需要某些数据,并且不在物理内存中,才会触发缺页异常,进行数据拷贝;
虚拟内存空间和磁盘之间的映射使用mmap完成,说白了虚拟内存空间就是磁盘上的一块区域;
3. 进程地址空间:
Linux进程地址空间包含以下几个部分:
1. 代码段:指令;
2. 数据段:初始化的全局变量;
3. BSS段:未初始化的全局变量;
4. 堆:malloc动态分配内存使用堆,从低地址向高地址增长;
5. 共享库和共享内存:加载共享库和使用mmap共享内存;
6. 栈:自动变量和函数使用栈,从高地址向低地址增长;
相关文章
- 同步和Java内存模型(五)Volatile
- Unity3D–Texture图片空间和内存占用分析(转载)
- LordPE修复从进程dump出来的内存文件
- Linux下如何查看哪个进程占用内存多?
- 查看进程,按内存从大到小 ,查看进程,按CPU利用率从大到小排序
- chrome的内存限制
- nl.basjes.parse.useragent.UserAgentAnalyzer内存泄漏问题解决
- JVM内存屏障规范
- android内存管理
- 内存数据库
- 灵魂拷问:Java对象的内存分配过程是如何保证线程安全的?(阿里面试)
- python multiprocessing Pool 进程池内存上涨问题解决方法
- Python:缓存库mo-cache支持内存、文件、Redis
- 【Linux 内核 内存管理】引导内存分配器 bootmem ② ( bootmem_data 结构体源码分析 | bootmem_data 与内存节点 pglist_data 的关联 )
- 【Linux 内核】Linux 操作系统结构 ( Linux 内核在操作系统中的层级 | Linux 内核子系统及关系 | 进程调度 | 内存管理 | 虚拟文件系统 | 网络管理 | 进程间通信 )
- 【Android 逆向】Android 进程代码注入原理 ( 进程注入原理 | 远程调用流程 | 获取函数地址 | 设置 IP 寄存器 | mmap 申请内存 | 设置 SP 寄存器 )
- 【Android 逆向】代码调试器开发 ( ptrace 函数 | 读取进程内存数据 )
- 【Android 内存优化】Bitmap 内存缓存 ( Bitmap 内存复用 | 弱引用 | 引用队列 | 针对不同 Android 版本开发不同的 Bitmap 复用策略 | 工具类代码 )
- cocostudio内存释放
- 龙芯软件开发(16)-- 内存参数读取
- C#获取特定进程CPU和内存使用率
- columbo——EDR上进程注入可以使用,依赖Volatility3 内存提取,无文件攻击典型场景
- linux 查看CPU、内存、磁盘信息命令
- 【C语言】字节对齐(内存对齐)
- 大数据Hadoop之——基于Hive的内存型SQL查询引擎Impala(Impala环境部署)
- 配置Spark on YARN集群内存