操作系统发展历程

本页的编排说明:教材把 1.2 分成 1.2.1~1.2.6 六个三级节,但每节仅半页篇幅, 而这一节真正的价值恰恰在于”演进链条”本身——每一代系统都是为了解决上一代留下的问题而出现的。 拆成六页会把这条链切断,因此本页完整覆盖 1.2 全部六个小节,是本次重构中唯一一处合并。

这一节不需要背,只需要顺着一个问题往下推:上一代系统留下了什么毛病,下一代就是来治它的。

graph TD
    A["<b>手工操作</b><br/>用户独占全机<br/>❌ 人机速度矛盾"] -->|"用脱机输入输出<br/>把人从中间去掉"| B["<b>单道批处理</b><br/>自动 · 顺序 · 单道<br/>❌ CPU 等 I/O 时空闲"]
    B -->|"内存里多放几道程序<br/>一道等 I/O 就跑另一道"| C["<b>多道批处理</b><br/><b>操作系统正式诞生</b><br/>❌ 无人机交互"]
    C -->|"把 CPU 时间切成片<br/>轮流给各终端"| D["<b>分时系统</b><br/>多路 · 独立 · 及时 · 交互<br/>❌ 不能优先处理紧急任务"]
    D -->|"引入时限约束"| E["<b>实时系统</b><br/><b>及时性 + 可靠性</b>"]
    classDef bad fill:#fee2e2,stroke:#dc2626,color:#7f1d1d
    classDef mid fill:#dbeafe,stroke:#2563eb,color:#1e3a8a
    classDef good fill:#dcfce7,stroke:#16a34a,color:#14532d
    class A bad
    class B,C,D mid
    class E good

机制

手工操作阶段(此阶段无操作系统)

用户独占全机:程序员把写有程序和数据的纸带装入输入机,启动机器运行,运行完毕取走结果,下一个用户才能上机。

这个阶段的核心矛盾是人机速度矛盾:CPU 的运算速度远快于人工装带、取结果的速度,于是 CPU 绝大部分时间都在空等一个人慢吞吞地操作。资源利用率极低。

单道批处理系统

解决办法是引入脱机输入/输出技术,并由监督程序负责控制作业的输入输出。

“脱机”的意思是这些输入输出不由主机直接完成,而是先用一台外围机把纸带上的内容读到磁带上,主机再从高速的磁带上读——把慢速的人和慢速的设备从主机的关键路径上挪走了。 这正是 5.2.4 SPOOLing 技术的思想来源,SPOOLing 就是用软件模拟这一整套流程。

单道批处理系统的三个特征:自动性(一批作业自动逐个运行,无须人工干预)、顺序性(各作业按进入内存的顺序执行)、单道性(内存中始终只保持一道作业)。

它留下的毛病很明显:内存里只有一道程序,这道程序一旦开始 I/O,CPU 就只能干等。资源利用率仍然上不去。

多道批处理系统

解决办法是往内存里多放几道程序:当一道程序因 I/O 而暂停时,CPU 立刻转去执行另一道程序。

多道程序设计技术的特点是:多道、宏观上并行、微观上串行。 “宏观上并行”指多道程序都处于运行过程中;“微观上串行”指单处理机上任一时刻仍只有一道程序在执行——这正是 1.1.3 讲的并发。

多道批处理系统的出现,标志着操作系统的正式诞生。

原因是:只有到了这一步,系统才真正需要”管理”。 内存里同时有多道程序,就必须决定谁用 CPU(处理机管理)、谁的内存放在哪(存储器管理)、设备给谁用(设备管理)。这四类管理正是 1.1.2 列出的四项功能。

它的优点是资源利用率高、系统吞吐量大;缺点是没有人机交互能力——作业一旦提交就无法干预,用户要等一整批作业跑完才能拿到结果,平均周转时间长。

分时操作系统

解决办法是把 CPU 时间划分成很短的时间片,轮流分配给各个联机作业使用。

分时系统的四个特征:

同时性(多路性)——多个用户可同时使用一台计算机。独立性——各用户之间互相独立、互不干扰,每个用户感觉自己独占了整台机器。及时性——用户的请求能在很短的时间内得到响应。交互性——用户能与系统进行人机对话。

它的毛病是:所有作业被同等对待,无法优先处理紧急任务。 时间片轮转是公平的,但有些任务等不起。

实时操作系统

解决办法是引入时限约束:系统能够在规定的时间内完成对外部事件的处理。

按时限的严格程度分为两类:硬实时系统要求必须在绝对严格的规定时间内完成处理,如导弹控制、飞行器自动导航;软实时系统能够接受偶尔违反时间规定,如飞机订票系统、银行管理系统。

实时系统的两个主要特征是及时性和可靠性。 注意这里的”及时”与分时系统的”及时”不是一回事:分时系统追求的是”响应快”(用户感觉不到延迟),实时系统追求的是”绝不超时”(哪怕平均更慢也不能有一次超期)。

网络操作系统与分布式计算机系统

网络操作系统把网络中的各台计算机有机地结合起来,其特点是网络中各种资源的共享以及各台计算机之间的通信。

分布式计算机系统中,任意两台计算机都可以通过通信交换信息,其特点是分布性和并行性——系统中的所有计算机既相互独立又相互协同,一个任务可以被分成若干部分并行地在多台机器上执行。

个人计算机操作系统

面向单用户,追求的是界面友好、使用方便,如 Windows、macOS。它不再以资源利用率为首要目标,因为个人计算机的资源相对于单个用户的需求已经足够充裕。

边界

分时系统与实时系统的”及时”含义不同

这是本节最容易混、也最常考的一对。

分时系统的及时性是”响应时间短”,衡量标准是用户感觉不到卡顿。它是一个平均意义上的、软性的要求——偶尔慢一点用户能忍。

实时系统的及时性是”不超过截止时间”,衡量标准是每一次都必须在时限内完成。它是一个每次都要满足的、硬性的要求——哪怕只超时一次,导弹就打偏了。

由此推出一个反直觉的结论:实时系统未必比分时系统”快”。它可能为了保证最坏情况下不超时,而牺牲了平均性能。实时的核心是”可预测”,不是”快”。

分时系统与多道批处理系统的分界

判据是”用户能不能干预”,这与 1.1.2 中联机/脱机命令接口的判据完全相同。

多道批处理下用户提交作业后就脱离了,中途无法干预,对应脱机命令接口。分时系统下用户坐在终端前,随时可以根据上一步的结果决定下一步,对应联机命令接口。

两者的目标也因此不同:多道批处理追求系统吞吐量和资源利用率(把机器喂饱);分时系统追求响应时间(让用户感觉良好)。前者是站在机器角度,后者是站在人的角度。

并发的起点是多道批处理

“操作系统正式诞生于多道批处理系统”这句话,其实等价于”操作系统诞生于并发”。

单道批处理系统里没有并发——内存中始终只有一道程序,不存在”谁先谁后""资源给谁”这类问题,所以那个监督程序还算不上操作系统。

一旦内存里同时有多道程序,并发与共享同时出现,管理的需求才真正产生。这就是为什么第 1 章讲完特征紧接着讲历史——历史正是特征出现的过程。

网络操作系统与分布式系统的判据

判据是各台计算机之间”有没有主从之分、任务能不能被拆开”。

网络操作系统中,各台计算机相对独立,一台机器上的任务不会被拆到别的机器上执行;它解决的是资源共享与通信。

分布式系统中,一个任务可以被分成若干部分,并行地在多台计算机上执行;系统对用户呈现为一个整体。它的特点是分布性和并行性。

记法:网络操作系统是”你的资源借我用”,分布式系统是”这活儿咱们一起干”。

对照速查

阶段解决了什么遗留问题
手工操作—人机速度矛盾,资源利用率极低
单道批处理用脱机输入输出去掉人的等待内存只有一道程序,CPU 等 I/O 时空闲
多道批处理CPU 空闲(一道等 I/O 就跑另一道)无人机交互,平均周转时间长
分时系统人机交互不能优先处理紧急任务
实时系统时限约束—
系统特征
单道批处理自动性、顺序性、单道性
多道程序设计多道、宏观上并行、微观上串行
分时系统同时性(多路性)、独立性、及时性、交互性
实时系统及时性、可靠性
分时系统实时系统
”及时”的含义响应时间短(软性、平均)不超过截止时间(硬性、每次)
核心追求快可预测
分类—硬实时 / 软实时
多道批处理分时系统
用户能否干预不能(脱机)能(联机)
追求吞吐量、资源利用率响应时间
站在谁的角度机器人
网络操作系统分布式系统
特点资源共享 + 通信分布性 + 并行性
任务能否拆开不能能,并行在多机上执行
记法”你的资源借我用""这活儿咱们一起干”

考点

  • 演进链:每一代都是为治上一代的毛病而生
  • 多道批处理系统的出现标志着操作系统正式诞生(因为并发从此出现)
  • 单道批处理三特征:自动性、顺序性、单道性
  • 多道程序设计:多道、宏观上并行、微观上串行
  • 分时系统四特征:同时性(多路性)、独立性、及时性、交互性
  • 实时系统两个主要特征:及时性与可靠性;分硬实时 / 软实时
  • 分时的”及时”是响应快,实时的”及时”是不超时——实时未必更快
  • 网络操作系统重共享与通信,分布式系统重分布性与并行性

链接