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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

【Linux 内核 内存管理】内存管理架构 ② ( 用户空间内存管理 | malloc | ptmalloc | 内核空间内存管理 | sys_brk | sys_mmap | sys_munmap)

發(fā)布時間:2025/6/17 linux 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Linux 内核 内存管理】内存管理架构 ② ( 用户空间内存管理 | malloc | ptmalloc | 内核空间内存管理 | sys_brk | sys_mmap | sys_munmap) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 一、用戶空間內(nèi)存管理 ( malloc / free / ptmalloc / jemalloc / tcmalloc )
  • 二、內(nèi)核空間內(nèi)存管理
    • 1、內(nèi)核內(nèi)存管理系統(tǒng)調(diào)用 ( sys_brk | sys_mmap | sys_munmap )
    • 2、sys_brk、sys_mmap 系統(tǒng)調(diào)用





一、用戶空間內(nèi)存管理 ( malloc / free / ptmalloc / jemalloc / tcmalloc )



" 應(yīng)用程序 " 通過使用

C 中的 malloc / free 函數(shù) ,

或者 C++ 中的 new / delete 函數(shù) ,

glibc 提供的 ptmalloc 函數(shù) , FreeBSD 提供的 jemalloc 函數(shù) , Google 提供的 tcmalloc 函數(shù) ,

操作 堆內(nèi)存 ;

上述函數(shù) 都是 " 用戶空間 " 操作內(nèi)存的函數(shù) ;


malloc / free 函數(shù) 是 glibc 函數(shù)庫 ( GNU 發(fā)布的 libc 庫 ) 的 " 內(nèi)存分配器 " , 由 ptmalloc 函數(shù)提供 內(nèi)存操作接口 ;

glibc 庫提供的 ptmalloc 函數(shù) 的原理是 , 調(diào)用 Linux 內(nèi)核 提供的 brk / mmap 系統(tǒng)調(diào)用接口 , 以 " 內(nèi)存頁 “ 為單位 , 申請內(nèi)存 , 然后將申請的內(nèi)存 分成 ” 內(nèi)存塊 “ 分配給 用戶空間” 應(yīng)用程序 "





二、內(nèi)核空間內(nèi)存管理




1、內(nèi)核內(nèi)存管理系統(tǒng)調(diào)用 ( sys_brk | sys_mmap | sys_munmap )


" 內(nèi)核空間 " 中 , 調(diào)用 Linux 內(nèi)核中的 sys_brk / sys_mmap / sys_munmap 函數(shù) , 管理 " 堆內(nèi)存 " ;

  • sys_brk 通過修改 堆內(nèi)存 的 終止地址 , 擴張 / 收縮 堆內(nèi)存 ;
  • sys_mmap 在 " 內(nèi)存映射區(qū) " 分配 " 虛擬內(nèi)存頁 " ;
  • sys_munmap 釋放 " 虛擬內(nèi)存頁 " ;

上述函數(shù)屬于 " 虛擬內(nèi)存管理 “ , 虛擬內(nèi)存管理 從 ” 進(jìn)程虛擬地址空間 “ 分配 / 釋放 ” 虛擬內(nèi)存頁 " ;


2、sys_brk、sys_mmap 系統(tǒng)調(diào)用


可參考 【Linux 內(nèi)核 內(nèi)存管理】Linux 內(nèi)核堆內(nèi)存管理 ② ( 動態(tài)分配堆內(nèi)存方式 | brk 系統(tǒng)調(diào)用 | mmap 系統(tǒng)調(diào)用 | brk 系統(tǒng)調(diào)用源碼介紹 ) 博客 ;

① brk 系統(tǒng)調(diào)用 : 該方式本質(zhì)是 設(shè)置 " 進(jìn)程數(shù)據(jù)段 “結(jié)束地址 , 將該 ” 結(jié)束地址 "高或低 移動 , 實現(xiàn)堆內(nèi)存的 擴張或收縮 ;

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

總結(jié)

以上是生活随笔為你收集整理的【Linux 内核 内存管理】内存管理架构 ② ( 用户空间内存管理 | malloc | ptmalloc | 内核空间内存管理 | sys_brk | sys_mmap | sys_munmap)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。