CSAPP 1 概览

CSAPP 1 概览

这本书之前非常简略的阅读过一次,过了这么一年多,重新拿起这本书反倒有了更多理解。可能这就是一本好书的特点把,他随着你的经验增加,提供给你更多的信息。给人的感觉就是,第一次读醍醐灌顶,第二次读,还是醍醐灌顶。。。

作者首先描述了一个 hello 程序是如何从源代码变成可以被执行的机器码,然后通过简单介绍计算机的硬件组成说明了程序是如何被执行的。在这个过程中有几个比较重要的点:

  • 编译器就是一个把一段程序(源代码)翻译成另一种程序(机器码)一个程序(机器码)
  • 计算机的主要操作就是读取指令(数据),运算,输出数据
  • 由于不同数据存储介质的读取速度和容量负相关,缓存机制尤其重要

随后引入了操作系统的三个重要抽象:

  • 进程、线程
  • 文件
  • 虚拟内存

作者高度概括了计算机系统设计的两个基本概念:

  • 并发和并行
  • 抽象

操作系统抽象

进程

进程,是一个运行的程序的抽象。是实现并发的基本元素,操作系统通过上下文(context)切换让 CPU 在不同进程之间交替执行,从而实现多个程序的并发执行。Context 包括寄存器、内存、程序指针(PC)等。

线程

线程,是存在于进程内部的更小的运行的程序。他们共享父进程的内存空间,但是切换更加迅速。(他们共享 stack 吗?共享 heap 吗?)

虚拟内存

虚拟内存,是一个进程的内存空间抽象。每一个进程虽然都共享主内存,因为有这个抽象,每个进程拥有独立的内存空间。而操作系统和硬件负责虚拟内存和物理内存的映射。

The basic idea is to store the contents of a process’s virtual memory on disk, and then use the main memory as a cache for the disk.

文件

文件,就是一段连续的字节(byte)。所有的 IO 设备都被抽象成文件。

并发与并行

并发和并行是提高运行效率的主要手段,他们体现在不同的层次上,从 CPU 层次,到操作系统,最后是应用程序。

  • 线程级别并发
  • 指令级别并行
  • Single-Instruction, Multiple-Data (SIMD)
  • green thread
tags: CSAPP