进程的内存映像

不同于存放在硬盘上的可执行程序文件,当一个程序调入内存运行时,就构成了进程的内存映像,一个进程的内存映像一般有几个要素

代码段:即程序的二进制代码,代码段是只读的,可以被多个进程共享

数据段:即程序运行时加工处理的对象,包括全局变量和静态变量

进程控制块(PCB):存放在系统区。操作系统通过PCB来控制和管理进程

堆:用来存放动态分配的变量。通过调用malloc函数动态地向高地址分配空间

栈:用来实现函数调用。从用户空间的最大地址往低地址方向增长

代码段和数据段在程序调入内存时就指定了大小,而堆和栈不一样。当调用像malloc和free这样的c标准库函数时,堆可以在运行时动态地扩展和收缩。用户栈在程序运行期间也可以动态地扩展和收缩,每次调用一个函数,栈就会增长;从一个函数返回时,栈就会收缩

你可能感兴趣的:(linux,操作系统)