第一部分
第一章 温故而知新
1.1 从Hello World说起
1.2万变不离其宗
中央处理器 CPU
内存
I/O控制芯片
总线
SMP与多核
1.3站得高,望得远
1.4操作系统做什么
提供抽象的接口
管理硬件资源
1.4.1不要让CPU打盹
多任务系统 Multi-tasking
抢占式 Preemptive
1.4.2设备驱动
1.5内存不够怎么办
1.5.1关于隔离
虚拟地址空间 Virtual Address Space
物理地址空间 Physical Address Space
1.5.2分段(Segmentation)
把一段与程序所需要的内存空间大小的虚拟空间映射到某个地址空间
1.5.3分页(Paging)
分页的基本方法是把地址空间人为地等分成固定大小的页,每一页的大小由硬件决定,或硬件支持多种大小的页,由操作系统选择决定页的大小。
MMU
1.6众人拾柴火焰高
1.6.1线程基础
什么是线程 Thread
线程访问权限
线程调度与优先级
运行
就绪
等待
可抢占线程和不可抢占线程
Linux的多线程
1.6.2线程安全
竞争与原子操作
同步与锁
二元信号量 Binary Semaphore
互斥量 Mutex
临界区 Ciritical Section
读写锁 Read-Write Lock
条件变量 Condition Variable
可重入(Reentrant)与线程安全
可重入函数特点
不适用任何(局部)静态或全局的非const变量
不返回任何(局部)静态或全局的非const变量的指针
仅依赖于调用方提供的参数
不依赖任何单个资源的锁(mutex等)
不调用任何不可重入的函数
过度优化
volatile
阻止编译器为了提高速度将一个变量缓存到寄存器内而不写回
阻止CPU换序
不可移植的方法
1.6.3线程内部情况
三种线程模型
一对一模型
多对一模型
多对多模型