1.1 Hello简介
P
2
P
:
F
r
o
m
P
r
o
g
r
a
m
t
o
P
r
o
c
e
s
s
P2P:From Program to Process
P2P:FromProgramtoProcess,即表示
H
e
l
l
o
Hello
Hello从编写代码到程序运行的过程。从整个程序的诞生和结束来说,
H
e
l
l
o
Hello
Hello需要经过
4
4
4个大步骤:预处理、编译、汇编、链接
4
4
4个过程得到一个可在内存中被直接执行的可执行文件。然后在执行的过程中,由
s
h
e
l
l
shell
shell新建进程对
H
e
l
l
o
Hello
Hello进行执行,在这个过程中,操作系统会调用
f
o
r
k
fork
fork产生子进程
H
e
l
l
o
Hello
Hello成为进程的开始。然后通过
e
x
e
c
v
e
execve
execve将其加载,不断进行访存、内存申请等操作。最后,在程序结束返回后,由父进程或祖先进程进行回收,程序结束。
020
:
F
r
o
m
Z
e
r
o
−
0
t
o
Z
e
r
o
−
0
020:From Zero-0 to Zero-0
020:FromZero−0toZero−0,即表示在
h
e
l
l
o
hello
hello的整个运行的过程中,由开始的操作系统进行的存储管理,然后由内存管理单元将虚拟地址翻译成物理地址,同时进行内存访问,通过页面的调度进入内存,开始了进程的执行。最后以父进程或者祖先进程的回收作为终点,生也操作系统,死也操作系统,这是
h
e
l
l
o
hello
hello进程的一生的执行。
1.2 环境与工具
1.2.1 硬件环境:
处理器:
I
n
t
e
r
(
R
)
Inter(R)
Inter(R)
C
o
r
e
(
T
M
)
Core(TM)
Core(TM)
i
7
−
7700
H
Q
i7-7700HQ
i7−7700HQ
C
P
U
CPU
CPU @
2.80
G
H
z
2.80GHz
2.80GHz
2.80
G
H
z
2.80 GHz
2.80GHz
R
A
M
:
8.00
G
B
RAM: 8.00GB
RAM:8.00GB
系统类型:
64
64
64位操作系统,基于
x
64
x64
x64的处理器
1.2.2 软件环境
W
i
n
d
o
w
s
10
Windows10
Windows10家庭中文版
V
M
w
a
r
e
VMware
VMware
W
o
r
k
s
t
a
t
i
o
n
Workstation
Workstation
15
15
15
P
l
a
y
e
r
Player
Player
U
b
u
n
t
u
Ubuntu
Ubuntu
18.04
L
T
S
18.04LTS
18.04LTS
1.2.3 开发与调试工具
G c c 、 C o d e : : B l o c k s 17.12 、 R e a d e l f 、 G e d i t 、 V i m 、 G d b 、 C p p 、 A s 、 L d 、 E d b Gcc、Code::Blocks17.12、Readelf、Gedit、Vim、Gdb、Cpp、As、Ld、Edb Gcc、Code::Blocks17.12、Readelf、Gedit、Vim、Gdb、Cpp、As、Ld、Edb
1.3 中间结果
文件名 | 文件作用 |
---|---|
hello.c | 存储C源代码 |
hello.i | C源代码预处理之后的结果 |
hello.s | 编译生成的汇编代码 |
hello.o | 编译生成的可重定位文本 |
hello_o.s | hello.o的反汇编文本 |
hello.elf | hello.o的ELF文件格式 |
hello | 可执行文本hello |
helloexe.elf | 可执行文本hello的ELF文件格式 |
helloexe.s | 可执行文本hello的反汇编文本 |
1.4 本章小结
本章从 h e l l o hello hello的一生对其进行了简单的概括,对其的 P 2 P P2P P2P过程、 020 020 020过程进行了阐述和概括,并且对实验的环境和生成的中间产物进行了简要概括,是全文的梗概,后文的描述都是基于这两个过程进行深入分析的。