【转载】CSSAPP阅读指南

Chapter 1

A Tour of Computer System

一个对计算机系统总体的介绍,简单明了。

应试 ★★★:可能在笔试中会有一些整体上的概念题。

修炼 ★: 属于计算机最基本的概念。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

chapter 2

Representing and Manipulating Information

信息在计算机中的表示形式。分别包括整数和浮点数的表示形式。

应试 ★: 应试中很少会考到。

修炼 ★★★★:有很多人可能写了多年的代码都不知道浮点数是如何用那4(8)个字节存储的。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

chapter 3

Machine-Level Representation of Program

汇编语言的复习。

修炼 ★★★★★:理解汇编语言和寄存器结构是后面很多内容的基础。

应试:

3.7 Procedures ★★★★★:过程调用,尤其是过程调用(包括递归调用)中堆栈的使用情况是经常会考到的。

3.10 Alignment ★★★★★:数据在内存中的“对齐”方式,也是经常出现在考题中的。比如定义一个结构体数组,打印出其中一个元素的地址,问这个地址相对数组起始地址有多少个字节的距离。

others ★★★: 汇编在应试中考的还是比较少的(除专门的职位)。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

chapter 4

Processor Architecture

计算机体系结构的内容。

处理器结构,各种逻辑门、功能单元,指令集,指令的执行,指令执行的流水线等。

应试 ★: 对于软件相关职位来说,很少会考到这么底层的东西的。

修炼 ★★★: 对于从事软件层面的技术人员来说,不用深入,但是也应该理解,知道是怎么回事。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

chapter 5

Optimizing Program Performance

如何优化程序的执行效率,包括代码的优化,编译器的优化,及CPU级别的优化。

5.1-5.6

应试 ★★★★: 经常会有一些让你寻找程序瑕疵的问题,你能看出代码在哪些细节上可以优化吗?

修炼 ★★★★★: 你当然需要知道编译器能在什么层面上自动帮你优化代码,在编译器无法优化时你自己如何在小细节上优化代码。

5.7以后

CPU级别的优化,微指令的概念,功能单元上微指令的并行,程序分支的预测等。

应试 ★: 对于软件相关职位来说,不会考这些东西的。

修炼 ★★★: 不用深入,但是应该知道并能够理解。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

chapter6

The Memory Hierarchy

详细介绍了计算机系统中的存储结构。

6.1 介绍了不同种类的存储设备以及对应的存取数据的方式。

应试 ★: 很少会考到这么底层的东西

修炼 ★★: 知道就好了。

6.2-6.5 介绍了存储设备的组织形式,着重介绍了Cache及其工作方式。

应试 ★★★★: 在面试中,经常会考到跟cache相关的题目。

修炼 ★★★★: 存储结构和cache是计算机中很基础也很重要的概念。

6.6-6.7 介绍了程序如何和cache打交道,不同的循环嵌套顺序、遍历方向等对cache命中的影响。

应试 ★★: 很少会考到这些东西。

修炼 ★★★★: 你当然希望在写多重循环的时候知道什么样的嵌套顺序效率最高。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

chapter 7

Linking

顾名思义,详细讲解了程序的链接过程,主要分为静态链接和动态链接,以及链接过程中使用到的技术。

应试 ★★★:需要知道链接的基本概念,尤其是动态链接可能会考到。

修炼 ★★★★★:有的时候,你很可能会被一个链接错误折磨好几天。另外,动态链接库的应用现在也是很普遍的。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

chapter 8

Exceptional Control Flow

顾名思义,本章主要讲解异常控制,不过这里的“异常”并不是Java或者C++里的狭义的异常,而是一个广义的“Exceptions”的概念,包括中断(Interrupt,硬件层面,主要是I/O中断),陷阱(Trap,主动产生的异常,主要用于用户程序和系统内核间的交互,如系统调用),错误(Falut,如除0错误;页错误:在虚拟内存中,所请求页面并不在内存中,需要从硬盘读取等。错误可能恢复),中止(Abort,致命错误,无法恢复,如硬件问题等)。

在介绍异常处理的同时,引入了进程的概念,对进程控制也进行了详细介绍,以及进程级别的Exception:信号(signal),这个级别的异常处理由操作系统完成,通常叫做上下文切换(context switch)。

应试 ★★: 主要掌握进程的概念即可。

修炼 ★★★: 知道异常控制流是怎么回事,用户程序和系统交互(如系统调用)的原理和方式即可,不用太深入。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

chapter 9

Measuring Program Execution Time

本章介绍了如何尽可能准确的测量程序执行的时间。在实际编程中,我们极少会需要进行如此精确的测量,所以我跳过本章不读。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

chapter 10

Virtual Memory

非常重要的一章,虚拟存储机制是计算机实现多任务的一项重要技术。计算机正是通过时间片技术使得每个进程在执行时仿佛独占CPU,进而又通过虚拟存储机制使得每一个进程在执行时,仿佛独占内存。

10.1介绍了虚拟地址和物理地址,CPU进行寻址操作产生的是虚拟地址,通过存储管理单元(memory management unit)转换为实际的物理内存地址。

10.3~10.5讲述了虚拟存储机制的优点:使得内存可以作为硬盘的cache;能够更方便的管理内存;能更好的提供内存保护机制。

10.6 介绍了虚拟地址如何转换为物理地址。

10.7 很精彩的一节,通过Intel Pentium和Linux的实例讲述了整个存储管理机制。记得以前上操作系统课的时候,各种理论、机制学了一大堆,但是就是不知道实际的操作系统到底用的哪套方法。而本节内容正是通过实例让你对刚学的理论机制有一个直观的了解。

10.8~10.10 讲述了存储映射(Memory Mapping)、动态内存分配和垃圾回收机制。

10.11 很实用的一节,列举了一些C编程中容易犯的内存引用错误。

应试 ★★★★: 本章内容是操作系统课程的重点内容,如果考操作系统,极有可能考到。10.11节的知识也能帮你应对一些程序挑错题。

修炼 ★★★★★: 操作系统中重要的基础内容,即使你只使用Java这样的高级编程语言,至少也应该弄懂垃圾回收机制吧。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

chapter 11

System-Level I/O

介绍类Unix系统下的I/O读写,主要介绍系统层面的I/O接口。由于我们日常编程所用的I/O接口都是各种高级语言提供的经过封装的标准接口,故而如果不进行嵌入式编程的话这部分知识不是必须的,我跳过没读。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

chapter 12

Network Progranmming

简单介绍了网络模型,TCP/IP协议,类Unix系统的socket接口等。

应试和修炼 ★★: 因为篇幅限制,本章只做了简单讲解,要掌握网络编程知识还需要参考专门的网络技术书籍。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

chapter 13

Concurrent Programming

本章简单介绍了并发程序设计的内容,主要包括:

进程级别的并发,各子进程拥有不同的虚拟地址空间,需要IPC(InterProcess Communication)机制共享数据,进程之间切换开销大。

I/O复用,事件驱动,单进程运行,共享虚拟地址空间,并发效果不理想。

线程,介于上述两种中间,各子线程共享进程的虚拟地址空间,线程间切换开销较小。

另外介绍了并发编程中访问共享变量的信号量机制。给出了4类容易引起线程不安全的函数。

应试 ★★: 除应聘相关职位外,并发编程考的比较少,不过需要清楚锁机制和信号量机制等。

修炼 ★★★: 多线程程序在现今的开发中还是很常见的,但是本章介绍的比较简单,需要参考另外专门的书籍。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,904评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,581评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,527评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,463评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,546评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,572评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,582评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,330评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,776评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,087评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,257评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,923评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,571评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,192评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,436评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,145评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352

推荐阅读更多精彩内容