第1章 计算机系统漫游

信息就是位+上下文

系统中的所有信息——包括磁盘文件,存储器中的程序,存储器中存放的用户数据以及网络上传送的数据,都是由一串位表示的。区分不同数据对象的唯一方法是我们读到这些数据对象时的上下文。

程序被其他程序翻译成不同的格式

预处理器,编译器,汇编器和链接器一起构成了编译系统(compilation system)。

  1. 预处理阶段。预处理器(cpp)根据以字符#开头的命令, 修改原始C程序, 通常以.i作为文件扩展名。
  2. 编译阶段。 编译器(ccl)将.i翻译成.s, 它包含一个汇编语言程序。
  3. 汇编阶段。 汇编器(as)将.s翻译成机器语言指令, 把这些指令打包成可重定位目标程序(relocatable object program)的格式, 保存在.o文件中。
  4. 链接阶段。 链接器(ld)合并预编译好的文件, 生成可执行目标文件。

了解编译系统如何工作是大有益处的

  1. 优化程序性能
  2. 理解链接出现的错误
  3. 避免安全漏洞

处理器读并解释存储在存储器中的指令

  1. 系统的硬件组成:
  • 总线
  • I/O设备
  • 主存
  • 处理器
  1. CPU在指令的要求下可能会执行以下操作:
  • 加载:把一个字节或者一个字从主存复制到寄存器, 以覆盖寄存器原来的内容。
  • 存储:把一个字节或者一个字从寄存器复制到主存的某个位置, 以覆盖这个位置上原来的内容。
  • 操作:把两个寄存器的内容复制到ALU, ALU对这两个字做算术操作, 并将结果存放在一个寄存器中, 以覆盖该寄存器中原来的内容。
  • 跳转:从指令本身抽取一个字, 并将这个字复制到程序计数器(PC)中, 以覆盖PC原来的值。

高速缓存

针对处理器与主存之间的差异, 系统设计者采用了更小, 更快的存储设备, 即告诉缓存存储器(简称高速缓存), 作为暂时的集结区域。L1和L2高速缓存是用一种叫做静态随机访问存储器(SRAM)的硬件技术实现的。

存储设备形成层次结构

存储器层次结构的主要思想是一层上的存储器作为低一层存储器的高速缓存。

操作系统管理硬件

所有应用程序对硬件的操作尝试都必须通过操作系统

操作系统有两个基本功能:

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

操作系统通过几个基本的抽象概念来实现这两个功能:

  1. 进程
  • 进程是操作系统对一个正在运行的程序的一种抽象
  • 处理器在进程间切换来实现并发执行多个进程, 这种机制成为上下文切换
  • 操作系统保持跟踪进程运行所需的所有状态信息, 也就是上下文, 当处理器决定要把控制权从当前进程转移到一个新进程时,就会进行上下文切换
  1. 线程
  • 一个进程可以由多个成为线程的执行单元组成, 每个线程都运行在进程的上下文中,并共享同样的代码和全局数据
  1. 虚拟存储器 虚拟存储器为每个进程提供了抽象概念, 即虚拟地址空间
  • 程序代码和数据 对于所有的进程来说, 代码是从同一固定位置开始的, 紧接着的是和C全局变量相对应的数据位置
  • 堆 紧接着是运行时堆, 可以在运行时动态的扩展和收缩
  • 共享库 大约在地址空间的中间部分是一块用来存放像C标准库和数据的区域
  • 栈 位于用户虚拟地址顶部的是用户栈, 编译器用它来实现函数调用
  • 内核虚拟存储器 地址空间顶部是的区域是为内核保留的, 内核总是驻留在内存中, 是操作系统的一部分
  1. 文件
  • 文件就是字节序列,仅此而已

系统之间利用网络通信

  1. 网络可视为一个I/O设备

重要主题

  1. 并发和并行 并发(concurrency)是一个通用概念, 指一个同时具有多个活动的系统;并行(parallelism)指的是用并发使一个系统运行得更快
  • 线程级并发 超线程, 有时称为同时多线程(simultaneous multi-threading), 是一项允许一个CPU执行多个控制流的技术
  • 指令级并行 在较低的抽象层次上, 处理器可以同时执行多条指令的属性成为指令级并发
  • 单指令,多数据并行 即SIMD并行 一条指令产生多个可以并行执行的操作
  1. 计算机系统中抽象的重要性
  • 抽象的使用是计算机科学中最重要的概念之一

Tags: ,

Updated: