本章小结:
- Introduction to operating systems 操作系统简介
- Operating systems in terms of abstractions and resource managers 抽象和资源管理器方面的操作系统
定义操作系统
- 文件系统(File systems):文件在磁盘上的物理写入位置以及如何检索它?
- 摘要(Abstraction):为什么与设备无关的指令看起来是一样的?
- 并发(Concurrency):如果多个程序同时访问同一个文件怎么办?
- 安全性(Security):为什么拒绝访问?
- 在内存的哪里将阵列存储,以及如何保护它免受未经授权的访问?
- 如果数组需要比物理可用内存更多的内存怎么办?
- 如果当前只有部分数组在使用怎么办?
- 如果另一个进程开始运行怎么办?
提供抽象的虚拟机(Virtual Machine)
在早期,程序员必须直接与硬件打交道:真正的计算机硬件极难操作/编程
操作系统是硬件之上的一个间接层:
- 它为应用程序(例如,文件系统)提供抽象。
- 它为硬件提供了一个更简洁、更简单的接口,并隐藏了“裸机”的复杂性。
- 它允许程序员通过使用常规程序来偷懒

资源管理器
许多现代操作系统使用多道程序设计(multi-programming)来改善用户体验和最大化资源利用率
磁盘很慢:没有多路编程,在等待I/O请求时浪费CPU时间;想象一下:
- CPU运行在3.2 GHz(大约3.2×10^9指令/秒)
- 一个磁盘(disk)以7200 RPM的速度旋转,旋转半个磁道需要4.2 ms
- I/O很慢,我们错过了3.2×4.2×106指令(13.44m)!
多程序设计的实现对操作系统的设计有着重要的影响
操作系统必须在竞争进程之间公平安全地分配/共享资源(包括CPU、内存、I/O设备):
- 时间资源,例如cpu和打印机
- 空间资源,例如存储器和磁盘
多个程序(进程)的执行需要彼此交错:这需要上下文切换(context switches)和进程调度(process scheduling)=>互斥(mutual exclusion),死锁避免(deadlock avoidance),保护(protection),…
多道程序设计(multi-programming)
是一种计算机操作系统的运行方式,它允许同时运行多个程序。
在多道程序设计中,操作系统将CPU时间分割成很短的时间片(时间段),并在每个时间片中将CPU分配给不同的程序。这样,多个程序可以并发地执行,从而提高了系统的吞吐量和利用率。
上下文切换(context switches)
在计算机操作系统中,当一个任务被暂停以便另一个任务可以运行时,所发生的过程。这涉及保存当前任务的状态,以便稍后可以恢复,然后加载另一个任务的状态。
进程调度(process scheduling)
操作系统核心功能,负责在多进程环境中合理分配CPU资源。 主要包括长程、中程和短程三类调度,其中短程调度(CPU调度)最为关键。 常见调度算法有先来先服务(FCFS)、短作业优先(SJF)、时间片轮转(RR)和优先级调度等,各有优缺点。 多级反馈队列(MFQ)因兼具公平性和适应性成为实际常用方案。 调度性能指标包括周转时间、响应时间等。
互斥(mutual exclusion)
防止多个线程或进程同时访问共享资源 (如内存、文件、变量等)所采取的一种机制。 它是实现 并发安全 (Concurrency Safety)的核心。 互斥 的本质是: 同一时间只允许一个执行单元(线程或进程)访问某个临界资源(Critical Resource)。
死锁避免(deadlock avoidance)
要求操作系统事先得到有关进程申请资源和使用资源的额外信息。有了这些额外信息,系统可以确定:对于一个申请,进程是否应等待。 为了确定当前申请是允许还是延迟,系统必须考虑可用资源,已经分配给每个进程的资源,每个进程将来申请和释放的资源。 除此之外,系统还可以提供一个算法来检查系统状态来确定死锁是否发生,并提供另一个算法来从死锁中恢复。