1.3 操作系统的基本特性

L03

学习目标

并发、共享、虚拟、异步是操作系统的四个基本特性,也是后文进程、调度、虚存、I/O 的总纲。

  • 并发性:多个事件在同一时间间隔内发生(区别于并行——同一时刻发生);通过多道程序设计实现,是 OS 的核心特性。
  • 共享性:系统资源可供多个并发进程共同使用,分互斥共享(如打印机,需排队)和同时访问(如磁盘,可交叉读写)两种方式。
  • 虚拟性:通过时分复用技术(如 CPU 分时共享)和空分复用技术(如内存分区共享),将一个物理实体映射为多个逻辑实体。
  • 异步性:进程因资源竞争和共享而以「停停走走」方式运行,执行顺序不可预知,但结果必须正确。

原理 · 深入理解

1.3 操作系统的基本特性

批处理要的是利用率和吞吐量,分时要的是及时应答,实时要的是截止时间。三种系统外表不同,底下却共用四条性质:并发、共享、虚拟、异步。后面几节按这四条展开。

1.3.1 并发(Concurrence)

并行是指同一时刻真正同时发生;并发是指同一段时间内有多件事情在推进。单处理机无法在同一时刻执行两道程序,但可在一段时间内来回切换,看似同时在执行。要实现真正并行,通常需要多台处理机(或多核)。

正是这种宏观上的同时性,使 CPU 在一道程序等待时能执行另一道,从而提高利用率和吞吐量。下图将两条时间线叠在一起:上方为并行,下方为并发。

并行性

两个或多个事件在同一时刻发生。

并发性

两个或多个事件在同一时间间隔内发生。

并行 vs 并发 并行 同一时刻,两件事都在发生(通常要两台处理机) P1 P2 同一时刻 并发 同一段时间内都在推进,微观上交替(一台处理机就够) P1 P2 这里的「并发」,多指这一条:宏观同时,微观交替。

指在系统中能独立运行并作为资源分配的基本单位,由一组机器指令、数据和堆栈等组成的,是一个能独立运行的活动实体。 多个进程之间可以并发执行和交换信息。

1.3.2 共享(Sharing)

两种共享方式

共享是指:内存中同时存在多道进程时,系统资源可供各进程共同使用。常见方式分两种。

互斥共享

临界资源(独占资源)同一时刻只容一个进程访问——多数物理设备,以及栈、变量、表格都是。操作系统必须保证互斥,否则结果会因交错次序而不可复现。

同时访问

磁盘等资源允许在一段时间里被多个进程「同时」使用;在单处理机上,这种同时只是宏观的,微观上访问仍是交替进行的。

共享的两种方式 互斥共享 同时访问 打印机 临界资源 A 用完,B 才能用 同一时刻只容一个进程 磁盘 可同时访问 一段时间里 A、B 都能用 单机上微观仍是交替 共享不等于谁都可以同时上手;临界资源必须互斥。

1.3.3 虚拟(Virtual)

时分复用与虚拟

虚拟,即:一个物理实体在逻辑上划分为多份。通信中将一条线路变为多条逻辑信道;操作系统中亦采用同一方法,通过时分复用或空分复用实现。

时分复用是切时间。多道程序每道至少有一个进程,大家轮流占用 CPU,于是每道程序都觉得自己有一台处理器——这就是虚拟处理机。一台物理 I/O 设备按时间分给多个逻辑设备,就是虚拟设备。

虚拟处理机

用多道程序把 CPU 时间片分给各进程,用户感觉每道程序都独占一台处理器。

虚拟设备

把一台物理 I/O 设备分时复用成多台逻辑设备。

空分复用与虚拟存储

空分复用是切空间,不是切时间。内存先划成几块,让几道程序同时住进来,空闲区就不再浪费——利用率提高了。

还不够时,再靠虚拟存储:程序不必一次装完,缺了再调、满了再换。用户感觉到的内存可以比真正的芯片大得多。提高利用率,和在逻辑上把容量做大,是空分复用的两面:先分区同住,再不够就靠虚拟存储。

代价也清楚:一份物理资源如果被分成 N 份逻辑资源,每一份平均摊到的时间或空间,都超不过原来的 1/N。下图左边是切时间,右边是切空间。

时分复用 vs 空分复用 时分:切时间 空分:切空间 一台 CPU → 多台虚拟处理机 一块内存 → 多道程序各占一区 CPU A B C 同一时刻仅一个在执行 一段时间里 A、B、C 都在推进 程序 A 程序 B 程序 C 虚线:逻辑上还可以更大(虚拟存储) 虚成 N 份时,每一份平均分到的时间或空间,都超不过原来的 1/N。

1.3.4 异步(Asynchronism)

多道程序同时推进,但谁先完成、中间停顿多久,事先无法确定,这称为异步性。单处理机同一时刻只能执行一个进程,其余处于等待状态;进程常常是执行一段、等待 I/O、再被调度回来,间断执行,结束次序也随之不同。下图中的灰段即为等待。

这不代表结果可以随便变。只要同步机制是对的、运行环境相同,同一作业执行多次,仍应得到完全相同的结果。

异步:间断执行,次序事先无法确定 A 等 I/O B C 何者先完成,取决于 I/O、时间片及调度顺序,事先无法确定。 灰段是等待。同步机制正确、环境相同时,同一作业多次运行结果仍应相同。

做 · 交互动画

  • 根据「学习目标」列出 3 个关键词,对照原理段落解释给自己听。

操作系统的基本特性

用控件单步操作;日志区记下每一步发生了什么。

总结与提升

  • 用自己的话解释并发与共享。
  • 能用自己的话复述学习目标,并指出概念与板上实验的对应。

延伸思考

  • SOWL 单核上「并行」体现在哪里?
  • 如果把本节机制拿到 Linux 或完整 OpenHarmony 上,会多出哪些硬件假设?

← 本阶段封面 · 课程列表