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