计算机系统漫游

发布时间:2019/11/24

今天尝试阅读我新买的《深入理解计算机系统》,原本以为这会是一本我啃不动的书,尝试阅读后发现这本书将自己一知半解的概念讲解的非常的通透,语言形象且简练,颇有一种相见恨晚的感觉,今天也就阅读了第一章,随手记下了书中讲的几个概念,写出来方便自己回顾吧。

文件分类

书中将文件分为两类

  • 文本文件:由ASCII字符构成的文件(比如hello.c)
  • 二进制文件:非ASCII字符构成的文件~

c语言编译过程

c语言源程序(.c)文件需要经过翻译才可以被执行,翻译的过程有以下4个步骤

  • 预处理(cpp): 根据.c(文本)文件中#开头的命令修改原始c程序,比如#include <stdio.h>读取系统头文件stdio.h的内容,生成.i(文本)文件
  • 编译(ccl):将.i文件翻译.s(文本)汇编代码
  • 汇编(as):将.s文件翻译为机器指令.o(二进制)目标文件
  • 链接(ld):编译器会提供标准c库中的函数预编译好的.o文件,这一阶段链接器会将这部分内容与我们的.o文件进行合并生成可执行文件,可执行文件可以被加载如内存中,由系统执行

Shell

是一个命令行解释器,他输出一个提示符,等待输入一个命令,然后执行这个命令

总线

贯穿整个系统的一组电子管道,他携带信息字节,并负责在各个部件间传递

I/O设备

是系统与外界世界的联系通道

主存

是一个临时存储设备,在处理器执行程序时,用来存放程序和程序处理的数据

处理器

中央处理单元(CPU),是解释或执行存储在主存中的指令的引擎。核心是一个大小为一个字的存储设备(或寄存器),称为程序计数器(PC),在任何时刻,PC都指向主存中的某条机器语言指令

CPU指令

CPU指令在指令的要求下可能会执行这些操作:

  • 加载:从主存复制一个字节或一个字到主存的某个位置,以覆盖这个位置上原来的内容
  • 存储:从寄存器复制一个字节或一个字到主存的某个位置,以覆盖这个位置原来的内容
  • 操作:把两个寄存器的内容复制到ALU(算术/逻辑单元),ALU对这两个字做算术运算,并将结果存放到一个寄存器中,以覆盖寄存器中原来的内容
  • 跳转:从指令本身中抽取一个字,并将这个字复制到程序计数器(PC)中,以覆盖PC中原来的值

高速缓存存储器(cache memory)

设计在CPU芯片中,运行速度比主存要快

操作系统管理硬件

所有程序对硬件的操作都必须通过操作系统,操作系统有两个基本功能

  1. 防止硬件被失控的程序滥用
  2. 向应用程序提供简单一致的机制来控制复杂而又通常大不相同的低级硬件设备

操作系统通过几个基本的抽象概念(进程、虚拟内存和文件)来实现这两个功能

进程

是操作系统对一个正在运行的程序的抽象

线程

是现代操作系统中设计的相对进程更小的执行单元,一个进程中可能会有多个线程,多个线程共享进程的上下文

虚拟内存

一个抽象概念,它为每个进程提供一个假象,即每个进程都在独占地使用主存,每个进程看到的内存都是一致的,称为虚拟地址空间

文件

就是字节序列,仅此而已。每个I/O设备,甚至网络,都可以看成文件

结束

千里之行始于足下,加油啃掉这本书吧

最后更新:2022/06/30