C++底层技术---操作系统的内存管理
来源:互联网 发布:java jdbc delete 编辑:程序博客网 时间:2024/05/22 14:23
操作系统的内存管理有几个原则
1.进程私有
2.基于页
3.4GB大小
操作系统分配主要有2个步骤
1.预留
2.提交
进程的虚拟地址空间的页有三种状态:自由,预留,和提交
预留的作用是针对频繁请求内存代码的,导致申请的地址空间不连续而增加的。一般的过程是自由---》预留------》提交
预留只是从地址空间划分一部分给程序,而得到真正的物理存储空间是在提交阶段
虚拟地址到物理地址的映射:
1.每一个进程都维护自己的层次结构来实现其地址的映射,第一层是目录页,第二层是叶表。有目录页找到叶表,找到叶表后就去找地址在此页的位置
例如一个0X2A8E31F7的指针,可以这样找到他实际的物理地址
16进制化为2进制,前10位找到页表;在10位叶表找到页,后12位为指针指向此页的位置。
2.对于每一个进程的都有自己一个AVD集合,当程序申请一块新的内存,字只需要访问VAD树。
VAD是一个平衡二叉树,申请地址在二VAD大小之内即可申请。
进程首先会根据页目录访问页表项,如果页表为空,那么会查找VAD树,然后生成相应的叶表项,程序的叶表项是在第一次访问提交页时获得的。
若果VAD显示该地址不存在或者是预留择抛出异常
3.堆
分配小块的内存就用堆,堆不用思考叶表,边界但是速度慢。
进程都有默认的堆,1M
0 0
- C++底层技术---操作系统的内存管理
- 操作系统--内存管理
- windows底层内存管理技术
- 操作系统学习笔记(16) 存储管理-程序装入内存技术
- 内存管理-内存池技术
- 操作系统的内存管理
- 基于Linux操作系统的底层驱动技术
- C语言的内存管理技术
- Objective-C:内存管理
- μC/OS-II实时操作系统内存管理的改进
- ios 内存管理,objective-c内存管理
- 操作系统学习笔记(15) 存储管理-内存的划分
- 浅谈操作系统的内存管理
- Objective-C内存管理的几点总结
- Objective-C内存管理的几点总结
- 【操作系统】【C/C++开发】内存管理
- Objective-C ---内存管理
- Object-C内存 管理规则摘要
- Problem W
- dubbo入门实例及性能测试
- CSS3学习笔记
- CodeForces - 246B Increase and Decrease (模拟)水
- UITableView的registerClass forCellReuseIdentifier释义
- C++底层技术---操作系统的内存管理
- 给定字符串查找子串,返回子串出现的位置
- Java中的数学类
- 周赛题
- JS设计模式
- 读书养人
- 2016年中南大学校赛镜像赛(校外队伍)
- C语言字节对齐
- 基于OpenCV和Android的运动目标检测系统