非常小型的操作系统,如篇首的小恐龙所使用的驱动手持设备的操作系统,是Silberschatz、Galvin和Gagne第七版《操作系统概念》中的一种前沿应用。通过保留最新的,保持有意义的,并改编为课程最需要的内容,这本引导市场潮流的教材继续指导着操作系统课程。
第二部分 进程管理
第四章 进程
进程状态
创建、运行、等待、就绪、终止
进程:一个具有单个控制线程的执行程序。
第五章 线程
线程:是CPU使用的基本单元
多线程编程优点:
- 响应度高
- 资源共享
- 经济
- 多处理器体系结构的利用
多线程模型
- 多对一 Many-to-one
优点:
线程之间切换快
可以用用户自己的方式管理线程库
缺点:
如果一个线程执行了阻塞系统调用,那么整个系统就会阻塞。
- 一对一 One - to - one
优点:更好的并发能力
缺点:创建一个用户线程就需要创建一个相应的内核线程
- 多对多 Many-to - many
优点:没有many-to-One和 one-to -one的缺点
- 线程池
在进程开始时创建一定数量的线程,并放入到池中坐以等待工作。
如果池中没有可用的线程,那么服务器会一直等待直到有空线程为止。
优点:
- 用现有线程处理请求要比等待创建新的线程要快
- 线程池限制了在任何时候可存在线程的数量
第七章 进程同步
多个进程并发访问和操作同一数据且执行结果与访问发生的特定顺序有关,称为竞争条件。
两个或多个进程无限地
等待一个事件,而该事件只能由这些等待进程之一来产生。当出现这样的状态时,这些进程称为死锁(deadlocked)。
第八章 死锁
- 必要条件
- 互斥:至少有一个资源必须处于非共享模式,即一次只有一个进程使用。
- 占有并等待:一个进程必须占有至少一个资源,并等待另一资源,而该资源为其他进程所占有。
- 非抢占:资源不能被抢占;即,只有进程完成其任务之后,才会释放其资源。
- 循环等待:一组进程,循环等待下一个的资源。
所有四个条件必须同时满足才会出现死锁。
为了预防死锁,要确保这四个必要条件中的一个不成立。
- 死锁恢复
- 进程终止
终止所有死锁进程
一次只终止一个进程直到取消死锁循环为止
- 资源抢占
选择一个牺牲品
回滚
饥饿
从理论上来说,有三种方法可以处理死锁:
- 使用一些协议来预防或避免死锁,确保系统永远都不会进到死锁状态。
- 允许系统进入死锁状态,检测死锁,并恢复。
- 忽视所有问题,并假设系统中永远都不会出现死锁。