最近分析内存申请一系列关系,应用程序自己的内存池,malloc/tcmalloc/jemalloc对内存的管理,现在分析linux操作系统对内存申请的管理,即brk函数。
系统调用sys_brk包括两个主要函数:
- do_munmap 用于内存的释放
- do_brk 用于内存的申请
首先,对新申请内存的地址进行调整,判断申请内存地址是否小于已有内存的边界(mm0->brk),如果是表示是释放内存,调用do_munmap函数,如果不是,表示申请内存,调用do_brk函数。
do_munmap函数分析: