现在,我们已经了解了如何获取进程及其父进程的基本信息,是时候来研究进程信息的细节了。
以下是进程镜像的图形表示。
两种类型。
初始化的数据段(Initialized) - 是目标文件或程序的虚拟地址空间的一部分,由初始化的静态变量和全局变量组成。
来源:LearnFk无涯教程网
未初始化的数据段(Un-initialized) - 是目标文件或程序的虚拟地址空间的一部分,由未初始化的静态变量和全局变量组成。
现在,让我们检查一些示例程序在段(数据段和bss段)上的大小变化,通过执行命令" size"可以知道段大小。
文件:segment_size1.c
#include<stdio.h> int main() { printf("Hello World\n"); return 0; }
在以下程序中,添加了未初始化的静态变量,这意味着未初始化的段(BSS)大小将增加4个字节,注意-在Linux操作系统中,int的大小为4个字节。整数数据类型的大小取决于编译器和操作系统支持。
文件:segment_size2.c
#include<stdio.h> int main() { static int mystaticint1; printf("Hello World\n"); return 0; }
在以下程序中,将添加一个初始化的静态变量,这意味着初始化的段(DATA)大小将增加4个字节。
文件:segment_size3.c
#include<stdio.h> int main() { static int mystaticint1; static int mystaticint2 = 100; printf("Hello World\n"); return 0; }
在以下程序中,将添加一个初始化的全局变量,这意味着初始化的段(DATA)大小将增加4个字节。
文件:segment_size4.c
#include<stdio.h> int myglobalint1 = 500; int main() { static int mystaticint1; static int mystaticint2 = 100; printf("Hello World\n"); return 0; }
在以下程序中,添加了未初始化的全局变量。这意味着未初始化的段(BSS)大小将增加4个字节。
文件:segment_size5.c
#include<stdio.h> int myglobalint1 = 500; int myglobalint2; int main() { static int mystaticint1; static int mystaticint2 = 100; printf("Hello World\n"); return 0; }
汇编
babukrishnam $gcc segment_size1.c -o segment_size1 babukrishnam $gcc segment_size2.c -o segment_size2 babukrishnam $gcc segment_size3.c -o segment_size3 babukrishnam $gcc segment_size4.c -o segment_size4 babukrishnam $gcc segment_size5.c -o segment_size5
执行/输出
babukrishnam size segment_size1 segment_size2 segment_size3 segment_size4 segment_size5 text data bss dec hex filename 878 252 8 1138 472 segment_size1 878 252 12 1142 476 segment_size2 878 256 12 1146 47a segment_size3 878 260 12 1150 47e segment_size4 878 260 16 1154 482 segment_size5 babukrishnam
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)
Python实战 · 从0到1搭建直播视频平台 -〔Barry〕