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

歡迎訪問 生活随笔!

生活随笔

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

linux

【Linux 内核 内存管理】Linux 内核堆内存管理 ① ( 堆内存管理 | 内存描述符 mm_struct 结构体 | mm_struct 结构体中的 start_brk、brk 成员 )

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

文章目錄

  • 一、堆內存管理
  • 二、內存描述符 mm_struct 結構體
  • 三、mm_struct 結構體中的 start_brk、brk 成員





一、堆內存管理



Linux 操作系統中的 " 堆內存 “ 是通過 malloc 等函數 ” 動態分配 "內存區域 ;

" 堆內存 “” 連續的 “ 內存區域 , 其 " 生長方向 " ” 自下而上 " 生長 ;

" 堆內存 " 的管理 由 Linux 內核實現 , 開發者 不知道 堆的管理細節 , 只通過 " 系統調用 " 調用相關函數 ;

" brk 系統調用 " 負責 擴展 和 收縮 堆內存 ;


" 內存描述符結構體 " mm_struct 結構體中 ,

start_brk 是 " 堆內存 “” 虛擬地址空間 " 中的 起始地址 ,

brk 是 " 堆內存 " 在 " 虛擬地址空間 " 中的 結束地址 ,





二、內存描述符 mm_struct 結構體



mm_struct 結構體 定義在 Linux 內核源碼 include\linux\mm_types.h#375 源碼中 ;

mm_struct 結構體 源碼 :

struct mm_struct {struct {struct vm_area_struct *mmap; /* list of VMAs */struct rb_root mm_rb;u64 vmacache_seqnum; /* per-thread vmacache */// ...unsigned long hiwater_rss; /* High-watermark of RSS usage */unsigned long hiwater_vm; /* High-water virtual memory usage */unsigned long total_vm; /* Total pages mapped */unsigned long locked_vm; /* Pages that have PG_mlocked set */atomic64_t pinned_vm; /* Refcount permanently increased */unsigned long data_vm; /* VM_WRITE & ~VM_SHARED & ~VM_STACK */unsigned long exec_vm; /* VM_EXEC & ~VM_WRITE & ~VM_STACK */unsigned long stack_vm; /* VM_STACK */unsigned long def_flags;spinlock_t arg_lock; /* protect the below fields */unsigned long start_code, end_code, start_data, end_data;unsigned long start_brk, brk, start_stack;unsigned long arg_start, arg_end, env_start, env_end;unsigned long saved_auxv[AT_VECTOR_SIZE]; /* for /proc/PID/auxv */// ...} __randomize_layout;/** The mm_cpumask needs to be at the end of mm_struct, because it* is dynamically sized based on nr_cpu_ids.*/unsigned long cpu_bitmap[]; };

源碼路徑 : linux-5.6.18\include\linux\mm_types.h#375





三、mm_struct 結構體中的 start_brk、brk 成員



mm_struct 結構體中的 start_brk、brk 成員 , 分別是 " 堆內存 " 在 " 虛擬地址空間 " 的 開始 和 結束 地址 , 其定義在 Linux 內核源碼的 linux-5.6.18\include\linux\mm_types.h#456 源碼中 ;

unsigned long start_brk, brk, start_stack;

源碼路徑 : linux-5.6.18\include\linux\mm_types.h#456

總結

以上是生活随笔為你收集整理的【Linux 内核 内存管理】Linux 内核堆内存管理 ① ( 堆内存管理 | 内存描述符 mm_struct 结构体 | mm_struct 结构体中的 start_brk、brk 成员 )的全部內容,希望文章能夠幫你解決所遇到的問題。

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