美文网首页
Linux c++ 内存管理知识索引

Linux c++ 内存管理知识索引

作者: JimmyPan | 来源:发表于2020-07-01 06:57 被阅读0次
分配内存流程.png

背景知识

虚拟内存和物理内存之间依靠mmu进行映射

一.虚拟内存管理

在32为的cpu 上, 有4G的虚拟内存空间
其中3:1的比例分为3G的用户空间和1G的内核空间
内核又分为896mb固定分配空间(不发生缺页中断,先分配好固定地址,再分配虚拟线性地址)
和128mb动态分配空间(为了内核访问全部内存)
用户空间全部是动态分配空间
动态分配的意思是,先申请虚拟地址,当使用的时候再去动态的分配物理地址。
当用户进行new和malloc是,最终调用brk或者mmap,只在3G用户空间虚拟内存上进行申请

二.物理内存管理

当用户使用一块 第一次被访问的内存时,会发生缺页中断,发生缺页中断时向slab/伙伴系统请求物理内存,请求好后在页面表内建立映射关系后,cpu就可以通过虚拟地址进行访问

相关文章

网友评论

      本文标题:Linux c++ 内存管理知识索引

      本文链接:https://www.haomeiwen.com/subject/papofktx.html