Linux C内存模型及管理

Posted tanxiaxuan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux C内存模型及管理相关的知识,希望对你有一定的参考价值。

1、Linux size命令用法

在Linux中,size命令可以用于分析可执行程序内存的分布段。


可以看到有text、data、bss、dec、hex filename五个组成部分。

各个段的作用如下:

1、文本段:包含程序的指令,它在程序的执行过程中一般不会改变。

2、数据段:包含了经过初始化的全局变量和静态变量,以及他们的值。

3、BSS段:包含未经初始化的全局变量和静态变量。

4、堆栈段:包含了函数内部声明的局部变量。


文本段 text:包含程序的指令,它在程序的执行过程中一般不会改变(包括字符串等常量)。

数据段 data:包含经过初始化全局变量静态变量,以及他们的值。

文字常量区 bss:包含未经初始化全局变量静态变量

另外:堆栈段:包含了函数内部声明的局部变量。(并非dec)


2、进程是Linux最小的资源管理单元。运行程序时,首先创建一个进程。

内核空间。PCB属于内核空间,负责管理进程的所有资源,譬如mm_struct、打开的文件、信号等等。

用户空间

mm_struct是一个指针,管理的是内存资源,也就是之前提到的text、data、bss、堆、栈。

其中text、data、bss属于静态空间

堆、栈、mmap属于动态空间


3、proc是linux下虚拟的文件系统。可以得到系统的参数,如meminfo。proc下有很多数字命名的文件夹,实际上代表作着一个个进程。proc下有一个文件夹叫做map。




以上是关于Linux C内存模型及管理的主要内容,如果未能解决你的问题,请参考以下文章

Linux共享内存使用常见陷阱与分析

linux 内存管理

linux内存管理

Linux学习笔记第4章 Linux磁盘管理

Linux内存模型

linux的bootmem内存管理