《深入理解计算机系统》笔记
计算机系统是由硬件和软件相配合,运行应用程序的。
通过hello.c
程序的生命周期:创建,编译,运行,打印结果,结束,来了解计算机系统的内部工作机制。
1,创建
对于计算机来说,所有的信息均以 bit 来存储。
1,创建hello.c
文件
#include <stdio.h>
int main()
{
printf("hello world!
");
return 0;
}
2,以十进制ascii形式查看文件内容
2,编译
普通人比较容易理解hello.c
的内容。这个程序,最终是要交给计算机去运行的。因此,运行之前,需要通过中间商,将我们编写的 hello.c
转换为低层次的机器语言。转换的结果就是可执行目标文件(executable object file)。简而言之,就是 C 文件通过编译器生成二进制可执行文件。
# 编译命令
gcc -o hello hello.c
3,运行
./hello
3.1 硬件结构
3.2 运转流程:
步骤一:读取./hello
命令到内存
步骤二:加载可执行文件hello
到内存
步骤三:显示执行结果
4,优化
程序运行时,存在多次复制信息的操作。首先,将 hello 可执行文件从硬盘加载到内存,然后 CPU 运行程序时,从内存中加载指令到 CPU。我们可以通过提高信息的加载速度来优化程序。
一条物理定律:容量大的存储设备,价格便宜,但读取速度慢;硬盘比内存大 1000 倍,但是读取速度比内存慢 10,000,000 倍
5,软件对硬件的抽象
参考资料: