第七章 连接linux
连接是将各类代码和数据片断收集并组合成为一个单一文件的过程。(在软件开发中实现分离编译)web
7.1 编译器驱动程序编程
7.2 静态连接缓存
7.3 目标文件服务器
编译器和汇编器生成可重定位目标文件,连接器生成可执行目标文件。网络
7.4 可重定位目标文件数据结构
7.5 符号和符号表多线程
7.6 符号解析★并发
7.7 重定位★socket
重定位节和符号定义
重定位节中的符号引用-重定位条目
7.8 可执行目标文件
7.9 加载可执行目标文件
7.10 动态连接共享库
7.11 从应用程序中连接和加载共享库
7.12 位置无关代码
7.13 库打桩机制(linux连接器)
7.14 处理目标文件的工具
第八章 异常控制流(ECF--Exceptional Control Flow)
8.1 异常
(1)异常类别:中断、陷阱、故障、终止
8.2 进程——一个执行中程序的实例
(1)进程提供给应用程序的关键抽象:
(2)并发流——一个逻辑流的执行时间与另外一个流重叠。
(3)上下文切换——操做系统内核采用的一种较高形式的异常控制流来实现多任务。
内核为每一个进程维持一个上下文,上下文就是内核从新启动一个被抢占进程所需的状态。它由一些对象的值组成,这些对象包括通用目的寄存器、浮点寄存器、程序计数器、用户栈、状态寄存器、内核栈和各类内核数据结构,好比描述地址空间的页表、包含有关当前进程信息的进程表,以及包含进程已打开文件的信息的文件表。
(4)信号——就是一条消息,它通知进程系统发生了一个某种类型的事件,而且容许进程和内核中断其余进程。
(5)非本地跳转
第九章 虚拟内存
9.1 物理和虚拟内存
物理寻址和虚拟寻址
9.2 地址空间——非负整数地址的有序集合
9.3 虚拟内存做为缓存的工具★
9.4 虚拟内存做为内存管理的工具
9.5 虚拟内存做为内存保护的工具
9.6 地址翻译★
9.7 案例研究:Intel Core i7/Linux 内存系统★
9.8 内存映射
9.9 动态内存分配★
9.10 垃圾收集
9.11 C程序中常见的与内存有关的错误
第十章 系统级I/O
输入输出(I/O)是在主存和外部设备(例如磁盘驱动器、终端和网络)之间复制数据的过程。
10.1 Unix I/O
10.2 文件(介绍了linux的文件和目录)
10.3 打开和关闭文件(open和close函数)
10.4 读和写文件(read和write函数)
10.5 用RIO包健壮地读写
10.6 读取文件元数据(stat和fstat函数)
10.7 读取目录内容(readdir函数)
10.8 共享文件
10.9 I/O重定向
10.10 标准I/O
10.11 综合:我该使用哪些I/O函数?
第十一章 网络编程
11.1 客户端-服务器编程模型
11.2 网络
11.3 全球IP因特网
11.4 套接字接口(socket interface)
11.5 web服务器
11.6 综合:TINY WEB服务器(实例学习)
第十二章 并发编程
三种构造并发程序的方法:
12.1 基于进程的并发编程
一个构造并发服务器的天然方法是,在父进程接受客户端的链接请求后,建立一个新子进程为每一个新客户端提供服务。
12.2 基于I/O多路复用的并发编程
基本思路:使用select函数,要求内核挂起进程,只有在一个或多个I/O事件发生后,才将控制返回给应用程序。
12.3 基于线程的并发编程
12.4 多线程程序中的共享变量
12.5 用信号量同步线程
12.6 使用线程提升并行性