《深入理解计算机系统》读书笔记——第一章
基于第三版。
纲要
信息的概念
C 语言源码编译过程
计算机系统的软硬件组成,及各部分介绍
一个简单的 hello 程序的执行流程
操作系统,进程/线程、并行和并发的概念
Amdahl 定律
信息
信息就是位和上下文。
如何理解“位”
绝大多数计算机系统采用二进制作为底层逻辑运算的支柱,这样,一个位只有两个值,通常标记为 0 和 1。一组位表示某个信息的集合,如 ASCII 采用 8 位描述一个符号(字母及一些特殊符号)。惯例上,计算机系统通常将 8 位(也称 8bit)描述为一个字节。
如何理解“上下文”
所谓“上下文”,可类比想象为汉语中的“语境”。同一句话,在不同语境下,所表达的意思可能截然相反。计算机中同样如此。同一个比特序列,在不同语境下的翻译结果可能不一样:有可能是描述一个无符号整数,也有可能是描述一个浮点数,甚至有可能描述的是一条指令。
源码编译流程
C 语言将源文件转换为可执行的程序,通常要经过四个步骤:预处理、编译、汇编、链接。每一步的输入都是上一步的输出,最终输出的产物为可执行的程序。
预处理
C 语言中有各式各样的宏命令,通常以 #
开头,如 #define
、#include
。
这个阶段的目的是将宏命令按照其含义展开,输入产物是 .c
文件,输出产物是 .i
文件。
编译
编译阶段,将 C 语言源码,翻译成对应的汇编代码。输入产物是 .i
文件,输出产物是 .s
文件。
汇编
汇编阶段,将汇编源码,翻译为机器语言指令。输入产物是 .s
文件,输出产物是 .o
链接
链接阶段,解析汇编阶段产生的 .o
文件,处理符号的定位问题。
版权声明: 本文为 InfoQ 作者【如浴春风】的原创文章。
原文链接:【http://xie.infoq.cn/article/6cb8e217e56fe82a5b0effc1e】。文章转载请联系作者。
评论