操作系统的特征
操作系统有四个基本特征:并发、共享、虚拟、异步。
四者不是并列的四条性质,而是有依赖关系的:并发与共享是两个最基本的特征,且互为存在条件;虚拟与异步都建立在它们之上。理解这个依赖关系,比记住四个定义重要得多。
机制
并发
并发指两个或多个事件在同一时间间隔内发生。
关键在”时间间隔”三个字,它与”同一时刻”是完全不同的。单核 CPU 在任一时刻只能执行一个程序,但操作系统可以让多个程序在一段时间内交替推进,宏观上看它们都在”同时”运行。
操作系统的并发性靠多道程序设计技术实现——内存中同时存放多道程序,它们轮流占用 CPU。
并发是操作系统一切复杂性的源头:进程这个概念是为管理并发而发明的,同步与互斥是为协调并发而存在的,死锁是并发的副作用。没有并发,操作系统会简单得多,也没什么用。
共享
共享(资源共享)指系统中的资源可供内存中多个并发执行的进程共同使用。 它有两种方式:
互斥共享方式——一段时间内只允许一个进程访问该资源。这类资源称为临界资源(或独占资源),例如摄像头、打印机。注意”一段时间内”:不是一个进程用完这台打印机就永远归它,而是在它使用期间别人不能插入。
同时访问方式——允许一段时间内多个进程”同时”访问该资源。这里的”同时”是宏观上的,微观上这些进程可能仍是交替访问的。典型例子是磁盘——多个进程可以同时读同一个文件。
为什么磁盘能同时访问而打印机不能,理由在 5.1.1:磁盘可寻址,各进程能各自记住自己的读写位置、互不影响;而打印机的输出是一条不可分割的流,两个进程交替输出会把内容搅成一团。
虚拟
虚拟指把一个物理上的实体变为若干逻辑上的对应物。 物理实体是实际存在的,逻辑上的对应物是用户感受到的。
实现虚拟有两类技术:
时分复用技术——把一段时间切分给多个对象轮流使用。典型是虚拟处理器:一个 CPU 通过分时,让每个用户感觉自己独占了一台处理机。
空分复用技术——把一个空间划分给多个对象使用。典型是**虚拟存储器**:用外存扩充内存,让用户感觉内存比实际大得多。
本课程中”虚拟”这个词出现过多次,都是同一个套路:虚拟设备(SPOOLing)把一台打印机虚拟成多台,虚拟内存把有限的内存虚拟成很大的地址空间。它们全都是”用一个物理实体冒充多个逻辑实体”。
异步
异步指在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进。
“不可预知”是这个特征的核心。 一个进程什么时候被剥夺 CPU、什么时候等到它要的资源,取决于当时系统里还有哪些进程、它们在干什么,这些都不由该进程自己决定。
异步性带来的直接后果是:程序的执行结果不能依赖于执行速度。 若两个并发进程的正确性依赖于”谁先跑完”,那么它在这次运行中正确,下次就可能出错。这正是必须引入同步机制的根本原因——同步的作用就是把”不可预知”变回”可控”。
边界
并发不等于并行
这是本章最高频的一对,判据是”同一时间间隔”还是”同一时刻”。
并发:两个或多个事件在同一时间间隔内发生。宏观上同时,微观上可能交替。
并行:两个或多个事件在同一时刻发生。必须有多个执行部件(多核、多处理机)才可能。
关键结论:单核 CPU 上可以并发,但不能并行。 反过来,并行必然意味着并发(同一时刻发生,当然也在同一时间间隔内发生)。
这条辨析在后面反复出现:共享设备”宏观上同时、微观上交替”、多线程模型能否利用多核,用的都是同一个判据。
并发与共享互为存在条件
这是本节唯一需要论证而非记忆的结论,也是”为什么这两个最基本”的答案。
若失去并发性,共享就失去了意义。 系统中只有一个程序在运行,资源本来就全归它,“共享”这个词无从谈起。
若失去共享性,并发也无法进行。 多个程序并发执行,必然要用到内存、CPU、设备——若资源不能被它们共同使用,就只能一个跑完再跑下一个,那就退回到串行了。
两句话合起来:并发需要共享作为前提,共享需要并发才有意义。这就是”互为存在条件”的确切含义。
而虚拟和异步都是它们的产物:虚拟是把资源分给多个并发进程用(需要并发和共享);异步是并发进程争抢有限资源的必然结果(需要并发和共享)。所以四个特征的依赖关系是:并发 ⇄ 共享 → 虚拟、异步。
互斥共享中的”一段时间内”
这个限定词常被抽掉,抽掉之后说法就错了。
准确表述是”一段时间内只允许一个进程访问”,而不是”只允许一个进程访问”。 打印机在进程 A 打印期间不能给 B,但 A 打完之后当然可以给 B。
若说成”只允许一个进程访问”,就变成”这台打印机永远只归一个进程”了,那不叫共享,叫独占分配。
虚拟的两种复用不要记反
判据是”切分的是时间还是空间”:
时分复用切的是时间——一个 CPU 被切成许多时间片轮流给不同进程,产物是虚拟处理器。
空分复用切的是空间——内存(连同外存)被划分给多个进程,产物是虚拟存储器。
一个记法:处理器是”用的时候才占用”的资源,所以按时间切;存储器是”一直占着”的资源,所以按空间切。
对照速查
| 特征 | 定义 | 关键限定 |
|---|---|---|
| 并发 | 两个或多个事件在同一时间间隔内发生 | 不是”同一时刻” |
| 共享 | 资源可供多个并发进程共同使用 | 分互斥共享与同时访问 |
| 虚拟 | 把一个物理实体变为若干逻辑对应物 | 时分复用 / 空分复用 |
| 异步 | 进程走走停停,以不可预知的速度推进 | 不可预知是核心 |
| 并发 | 并行 | |
|---|---|---|
| 时间 | 同一时间间隔 | 同一时刻 |
| 单核能否 | 能 | 不能 |
| 关系 | — | 并行必然并发,反之不然 |
| 共享的两种方式 | 含义 | 例子 |
|---|---|---|
| 互斥共享 | 一段时间内只允许一个进程访问(临界资源) | 打印机、摄像头 |
| 同时访问 | 宏观上多个进程同时访问,微观上可能交替 | 磁盘 |
| 虚拟的两种技术 | 切什么 | 产物 |
|---|---|---|
| 时分复用 | 时间 | 虚拟处理器 |
| 空分复用 | 空间 | 虚拟存储器 |
| 四个特征的依赖关系 | |
|---|---|
| 并发 ⇄ 共享 | 两个最基本的特征,互为存在条件 |
| 虚拟、异步 | 建立在并发与共享之上 |
考点
- 并发是”同一时间间隔”,并行是”同一时刻”;单核能并发不能并行
- 并发与共享互为存在条件,且要能说出两个方向的理由
- 虚拟与异步建立在并发与共享之上
- 互斥共享的限定是”一段时间内”,抽掉就错
- 临界资源 = 只能互斥共享的资源
- 时分复用 → 虚拟处理器;空分复用 → 虚拟存储器
- 异步的核心是”不可预知”,它是必须引入同步机制的根本原因
链接
- 🏠 返回总览:操作系统第 1 章:计算机系统概述总览
- ⬅️ 上一节:1.1.2 操作系统的功能和目标
- ➡️ 下一节:1.2 操作系统发展历程
- 🔗 异步为何需要同步机制,见 2.3.1 同步与互斥的基本概念
- 📖 名词库:第 1 章名词库