当下多数开发平台以hello或其变种作为入门程序,且多数情况下只追求掌握运行结果不要求研究其运行过程。然而近年来,随着对软件、机器学习模型开发等计算机类工程需求的增大以及对高性能的要求,对计算机系统认识的深入提上了进程。此时针对简单程序运行机制的研究将具有极大价值。本文以hello.c为例,讨论了其在Linux系统x86-64平台下P2P、020等过程,深入研究了其编译、链接、计算机系统进程管理、虚拟内存管理等方面,充分概述了其生命周期。较c语言程序设计等课程相比,提升了对计算机系统的认识。
关键词:程序的预处理,编译,汇编,链接,进程管理,内存管理
第1章 概述
1.1 Hello简介
Hello程序是现阶段python、c、java等多数开发平带的首个入门级程序,其中又以c语言的hello.c最为经典。虽如今hello程序多作为入门程序存在,很少有人研究,但其作为首个完成P2P、020的程序,仍有较大研究价值。
-
-
- P2P
-
P2P(From Program to Process)表示在Linux系统下一类从程序变成进程的过程。在此过程中,属于文本文件的hello.c需经过cpp的预处理、ccl的编译、as的汇编、ld的链接,才可成为可执行的二进制文件。此时,Linux可以通过进程管理运行Hello程序。
-
-
- 020
-
020(From zero to zero)代表一类在Linux系统中从不存在,到运行中的进程,再到运行结束被系统回收重归于零的过程。Linux的Shell首先创建一个子进程,在该进程中运行hello程序,映射虚拟内存,载入物理内存,CPU分配时间片,通过微程序指令在硬件上运行程序。在运行结束后,shell接收到进程终止信号,回收hello进程,删除其上下文。
1.2 环境与工具
为证实本文内容有效,现公布本文研究环境及开发工具。
-
-
- 硬件环境
-
Intel CORE-i9 CPU;2.