第八章 异常控制流 Exceptional Control Flow
顾名思义,本章主要讲解异常控制,不过这里的“异常”并不是Java或者C++里狭义的异常,而是一个广义的“Exceptions”的概念,包括中断(Interrupt),陷阱(Trap),错误(Falut),中止(Abort)等。本章同时引入了进程的概念,介绍了进程级别的 Exception:信号(signal)以及操作系统处理这个异常的手段--上下文切换(context switch)。
应试 ★★: 主要掌握进程的概念即可。
修炼 ★★★: 知道异常控制流是怎么回事,用户程序和系统交互(如系统调用)的原理和方式即可,不用太深入。
第九章 虚拟存储器 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这样的高级编程语言,至少也应该弄懂垃圾回收机制吧。
第十章 系统级I/O System-Level I/O
介绍类Unix系统下的I/O读写,主要介绍系统层面的I/O接口。由于我们日常编程所用的I/O接口都是各种高级语言提供的经过封装的标准接口,故而如果不进行底层开发的话这部分知识不是必须的,我便跳过没读。
第十一章 网络编程 Network Progranmming
本章简单介绍了网络模型,TCP/IP协议,类Unix系统的socket接口等。
应试和修炼 ★★: 因为篇幅限制,本章只做了简单讲解,要掌握网络编程知识还需要参考专门的网络技术书籍。
第十二章 并发编程 Concurrent Programming
本章简单介绍了并发程序设计的内容,主要包括:
1.进程级别的并发,各子进程拥有不同的虚拟地址空间,需要IPC(InterProcess Communication)机制共享数据,切换开销大。
2.I/O复用,事件驱动,单进程运行,共享虚拟地址空间,并发效果不理想。
3.线程,介于上述两种中间,各子线程共享进程的虚拟地址空间,切换开销较小。
另外介绍了并发编程中访问共享变量的信号量机制,并给出了4类容易引起线程不安全的函数。
应试 ★★: 除应聘相关职位外,并发编程考的比较少,不过需要清楚锁机制和信号量机制等。
修炼 ★★★: 多线程程序在现今的开发中还是很常见的,但是本章介绍的比较简单,需要参考另外专门的书籍。
总的来说,我觉得这本书很适合在找工作之前读一读,因为从网上流传的各种笔试和面试题中,我们就能看出各大IT公司在招聘工程师的时候是很看重基础知识的,而对于像我这样上了三年研究生的同学来说,很多知识由于长时间没用早就忘了,所以需再要再复习一下。
但是我们可能没有时间按照课程一门一门地去复习,即使一门一门去看了,也不一定能把知识都联系起来,而这本书正好提供了这样一个视角,从程序员的角度把计算机专业最重要的基础知识都串了起来,形成了一个完整的计算机系统的概念。