本文以C语言源代码hello.c的预处理、编译、链接、加载、内存映射、系统IO调用、进程结束等操作为例,介绍了hello程序从程序到进程、从出生到死亡的全流程,阐述了计算机系统整体的运行框架。
关键词:计算机系统;编译;链接;内存管理;系统IO;
从0到Program:将源代码一行一行的编辑入hello.c中。hello.c在预处理器的作用下变为hello.i,经过汇编器成为汇编代码hello.s,经过编译器成为hello.o,经过连接器成为hello可执行程序。hello这个Program从无到有诞生了!
从Program到Progress:在shell中键入./hello 1190201706 段然 1,shell为hello fork一个子进程,在子进程中execve hello程序,hello作为一个进程被加载到内存中了!
从Progress到0:随着hello程序运行结束,hello进程也成为了一个僵死进程,shell进程作为hello的父进程负责回收hello进程,内核删除与hello有关的数据结构,hello在内存中化为虚无,抹去了最后一丝痕迹!