计算机系统
大作业
题 目 程序人生-Hello’s P2P
专 业 英才学院
学 号 2021113238
班 级 21wl022
学 生 宋放
指 导 教 师 史先俊
计算机科学与技术学院
2023年4月
本文对hello程序从编写,到预处理,编译,汇编,链接各个阶段,生成一个可执行程序,再到可执行程序加载到内存中执行的整个过程进行分析和解释,对hello这个程序的一生进行了从头到尾的说明,一步步阐释程序从键盘输入、保存到磁盘、程序运行结束、程序变为僵尸进程的全过程。
关键词:hello.c;Linux系统;生命周期;
目 录
第1章 概述
1.1 Hello简介
P2P(From program to process):
hello程序的生命周期是从一个高级C语言程序开始的,将hello.c翻译成可执行目标文件分为四个阶段:预处理、编译、汇编、链接。这四个阶段分别由cpp(预处理器)、cc1(编译器)、as(汇编器)、ld(链接器)完成。系统创建一个新进程并且把程序加载,从而实现程序向进程的转化。
O2O(From zero to zero):
如果说P2P模式对应软件构造课程中build阶段,那么020则对应run阶段。第一个0指的是在./hello之前,内存中本没有hello的数据信息,在shell的fork以及execve相互作用下加载器把hello的代码以及数据载入内存,mmap则分配虚拟内存,在cache、流水线等硬件配合下执行代码直至结束。第二个0指的是在程序结束后,hello进程会被回收,内核删除内存中的相关代码和数据,“抹杀”了hello曾经来过的痕迹,实现归零(to zero)。
1.2 环境与工具
1)硬件环境:X64 CPU;2GHz;2G RAM;256GHD Disk 以上
2)软件环境:Windows10 64位;VMware Worksta