

进程在内存中的状态

注解:
1)text 代码段:我们编写的程序经过编译生成对应的指令,进程内存布局中的 text 段,就是用来存放这些计算机指令的。CPU 不断地从 text 段取走指令,进程就不断地往下执行。
2)data 段:这部分主要存放全局变量和静态变量数据。因为全局变量和静态变量数据的生命周期是伴随着进程开始和结束的,所以 data 段专门用来存放整个进程执行期间都需要保存的数据。
3) stack 段:栈空间,属于进程内存布局的一部分,用于存放局部变量、函数返回地址。
4) heap 段:堆空间,属于进程内存布局的一部分,堆用于程序运行时的动态内存分配,如 malloc 动态申请内存。
5)stack 栈空间在高地址,heap 堆空间在低地址。stack 栈空间的增长方向从高地址往低地址, heap 堆空间的增长方向从低地址往高地址。


a) main函数中调用了 g函数,g函数中调用了 f函数;
b) 当进行子程序切换(即函数调用)的时候,需要记录函数的返回地址。比如,main函数中调用了 g函数,当 g函数执行结束,下一条指令应该对应的是 main函数中调用 g函数位置的下一处: return 0; 。因此,当发生子程序的调用时,我们应该把子程序调用的下一处地址保存到栈空间,以便从栈空间中取出下一条指令的地址。
c) 在整个程序的执行过程中,出现了全局变量和静态局部变量,因此将其保存到 data 段。同时还出现了 malloc 进行动态内存分配,heap 段也使用到了。



Concurrency:the fact of two or more events or circumstances happening or existing at the same time.
并发可以解释为:在同一时间段“发生”或者“存在”。
并行可以理解为:“running at the same time.”。即:在同一时间“运行”。





注:源自B站up主:Y4NGY