66、在执行malloc申请内存的时候,操作系统是怎么做的?

从操作系统层面上看,malloc是通过两个系统调用来实现的: brk和mmap

  brk是将进程数据段(.data)的最高地址指针向高处移动,这一步可以扩大进程在运行时的堆大小

  mmap是在进程的虚拟地址空间中寻找一块空闲的虚拟内存,这一步可以获得一块可以操作的堆内存。

 

通常,分配的内存小于128k时,使用brk调用来获得虚拟内存,大于128k时就使用mmap来获得虚拟内 存。

 

进程先通过这两个系统调用获取或者扩大进程的虚拟内存,获得相应的虚拟地址,在访问这些虚拟地址 的时候,通过缺页中断,让内核分配相应的物理内存,这样内存分配才算完成。

 

66、在执行malloc申请内存的时候,操作系统是怎么做的?

上一篇:error LNK2005: _DllMain@12 已经在 dllmain.obj 中定义


下一篇:Servlet 内存马 - 从环境搭建 到 复现