malloc调用后经历了什么?

时间:2022-04-06 12:54:20

进程生成虚拟地址空间,有堆地址,由于是虚拟地址,所以没有做内存碎片化处理,只是在虚拟内存不够的时候调用brk,进行堆大小的调整,然后申请到虚拟内存是页,同MMU映射到物理地址,然后并不是每个页都预先加载有对应的物理地址,在使用过程使用到没有加载物理地址的页面,会触发缺页中断,操作系统会找到空闲物理地址给对应的页面。—所以开发过程要防止触发过多的缺页中断