Linux 内核 内存管理虚拟地址空间布局架构 ④ ( 内存描述符 mm_struct 结构体成员分析 | hiwater_rss | start_code | start_brk )

Posted 韩曙亮_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 内核 内存管理虚拟地址空间布局架构 ④ ( 内存描述符 mm_struct 结构体成员分析 | hiwater_rss | start_code | start_brk )相关的知识,希望对你有一定的参考价值。



文章目录






一、mm_struct 结构体成员分析



​mm_struct​​ 结构体 在 Linux 源码 linux-4.12\\include\\linux\\mm_types.h#359 位置 ;

参考 ​​【Linux 内核 内存管理】虚拟地址空间布局架构 ② ( 用户虚拟地址空间组成 | 内存描述符 mm_struct 结构体源码 )​​ 博客 ;



下面开始分析 mm_struct 结构体 的重要 成员 ;



1、hiwater_rss 成员



​unsigned long hiwater_rss​​ 表示 进程 的 最大 页框 数量 ;

unsigned long hiwater_rss;  /* High-watermark of RSS usage */



2、hiwater_vm 成员



​unsigned long hiwater_vm​​ 表示 进程 的 线程区 最大页数 ;

unsigned long hiwater_vm; /* High-water virtual memory usage */



3、total_vm 成员



​unsigned long total_vm​​ 表示 进程的 虚拟地址空间 的总页数

unsigned long total_vm;   /* Total pages mapped */



4、locked_vm 成员



​unsigned long locked_vm​​ 表示 内存页被锁住 的 个数 , 这些内存页不能被换出 ;

unsigned long locked_vm;  /* Pages that have PG_mlocked set */



5、start_code、end_code、 start_data、 end_data 成员



​start_code​​​ 表示 代码段 的 起始地址 , ​​end_code​​​ 表示 代码段 的 结束地址 , ​​start_data​​​ 表示 数据段 的 起始地址 , ​​end_data​​ 表示 数据段 的 结束地址 ;

unsigned long start_code, end_code, start_data, end_data;



6、start_brk、 brk、 start_stack 成员



​start_brk​​​ 是 " 堆内存 " 的 起始地址 , ​​brk​​​ 是 " 堆内存 " 的 终止地址 , ​​start_stack​​ 是 " 栈内存 " 的 起始地址 ;

unsigned long start_brk, brk, start_stack;



7、arg_start、 arg_end、env_start、 env_end 成员



​arg_start, arg_end​​​ 是 参数字符串 的 起始地址 和 结束地址 ; ​​env_start, env_end​​ 是 环境变量 的 起始地址 和 结束地址 ;

unsigned long arg_start, arg_end, env_start, env_end;



8、context 成员



​mm_context_t context​​ , 表示 处理器架构 特定的 内存管理 上下文 ;

/* Architecture-specific MM context */
mm_context_t context;



以上是关于Linux 内核 内存管理虚拟地址空间布局架构 ④ ( 内存描述符 mm_struct 结构体成员分析 | hiwater_rss | start_code | start_brk )的主要内容,如果未能解决你的问题,请参考以下文章

Linux 内核 内存管理虚拟地址空间布局架构 ④ ( 内存描述符 mm_struct 结构体成员分析 | hiwater_rss | start_code | start_brk )

Linux 内核 内存管理虚拟地址空间布局架构 ① ( 虚拟地址空间布局架构 | 用户虚拟地址空间划分 )

Linux 内核 内存管理Linux 内核内存布局 ④ ( ARM64 架构体系内存分布 | 内核启动源码 start_kernel | 内存初始化 mm_init | mem_init )

Linux 内核 内存管理虚拟地址空间布局架构 ⑦ ( Linux 内核地址空间布局简介 )

Linux 内核 内存管理Linux 内核内存布局 ④ ( ARM64 架构体系内存分布 | 内核启动源码 start_kernel | 内存初始化 mm_init | mem_init )

Linux 内核 内存管理虚拟地址空间布局架构 ⑤ ( Linux 内核中对 “ 虚拟地址空间 “ 的描述 | task_struct 结构体源码 )