日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

【Linux 内核 内存管理】内存管理架构 ④ ( 内存分配系统调用过程 | 用户层 malloc free | 系统调用层 brk mmap | 内核层 kmalloc | 内存管理流程 )

發布時間:2025/6/17 linux 33 豆豆

文章目錄

  • 一、內存分配系統調用過程 ( 用戶層 | 系統調用 | 內核層 )
  • 二、內存管理流程





一、內存分配系統調用過程 ( 用戶層 | 系統調用 | 內核層 )



" 堆內存 " 動態分配 的 系統調用 過程 :

① 用戶應用程序調用 : 開發者 在 " 用戶空間 “ 的 應用程序 中調用 malloc 等函數 , 申請 動態分配 ” 堆內存 " ,

② 系統調用 : 用戶空間 的 內存管理函數 調用 " 內核與用戶層接口 “ 中的 brk sbrk mmap munmap 等函數 , 這些函數就是 ” 系統調用 " 函數 ; 系統調用接口 是 用戶層的 malloc 函數 與 內核層的 vmalloc 函數之間的 橋梁 ;

③ 內核層調用 : 內核與用戶層接口 的 內存管理函數 調用 " Linux 內核 " 中的 kmalloc vmalloc 函數 ;


C 語言中使用 malloc free 等函數分配堆內存 , C++ 中使用的 new delete 關鍵字管理內存 , 其本質還是調用 malloc free 函數實現的內存管理 ;





二、內存管理流程



內存管理流程 :

① 用戶層 ( 用戶空間 ) 內存管理 :

  • C 語言 : 在 C 中 , 使用 malloc 動態分配 " 堆內存 " , 使用 free 回收 " 堆內存 " ;
  • C++ 語言 : 在 C++ 中 , 使用 new 關鍵字 動態分配 " 堆內存 " , 使用 delete 關鍵字 回收 " 堆內存 " ;
  • C++ STL : STL 中 , 堆內存 是 自動分配 , 自動回收 的 , 不需要用戶進行手動操作 ;

② 系統調用接口 內存管理 : 調用 brk sbrk mmap munmap 等系統調用函數 ,

  • brk sbrk 函數 既可以分配內存 , 又可以回收內存 , 通過 修改 起始 和 終止 地址即可實現 ;
  • mmap 函數用于分配內存 , munmap 函數用于回收內存 ;

可參考 【Linux 內核 內存管理】Linux 內核堆內存管理 ② ( 動態分配堆內存方式 | brk 系統調用 | mmap 系統調用 | brk 系統調用源碼介紹 ) 博客 , 了解 brk 和 mmap 系統調用 ;

  • brk 系統調用 : 該方式本質是 設置 " 進程數據段 “結束地址 , 將該 ” 結束地址 "高或低 移動 , 實現堆內存的 擴張或收縮 ;

  • mmap 系統調用 : 向 Linux 操作系統 申請 " 虛擬地址空間 " 內存 , 并且將某個文件 " 映射 “ 到該申請的內存中 ; 如果 不需要映射文件 到該空間中 , 則該空間就是 ” 匿名空間 " , 可作為 " 堆內存 " 使用 ;


③ 內核層 ( 內核空間 ) 內存管理 : 在 Linux 內核中 , 通過 kmalloc vmalloc __get_free_pages 函數管理內存 ;

總結

以上是生活随笔為你收集整理的【Linux 内核 内存管理】内存管理架构 ④ ( 内存分配系统调用过程 | 用户层 malloc free | 系统调用层 brk mmap | 内核层 kmalloc | 内存管理流程 )的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。