1.2 操作系统的发展过程
L02
学习目标
从无 OS 的人工操作和脱机 I/O,到单道批处理、多道批处理、分时系统和实时系统,再到微机操作系统的发展历程。
- 未配置 OS 时:人工操作存在人机矛盾(用户独占全机、CPU 等待人工操作),脱机 I/O 将输入输出从主机卸下以减少 CPU 空闲。
- 单道批处理:监督程序依次装入和执行一批作业,内存中只有一道,I/O 期间 CPU 空闲,资源利用率低。
- 多道批处理:多道程序共享内存、交替执行,CPU 在一道等待 I/O 时运行另一道,提高利用率和吞吐量;但无交互能力、周转时间长。
- 分时系统:多终端共享一台 CPU,按时间片轮转,提供交互能力;关键指标为响应时间。实时系统:及时响应外部事件,须在严格截止时间内完成;分硬实时和软实时。
- 微机操作系统:从单用户单任务(MS-DOS)到单用户多任务(Windows)再到多用户多任务(UNIX/Linux),功能逐步完善。
原理 · 深入理解
1.2 操作系统的发展过程
操作系统不是一次设计完成的,而是被资源浪费、用户等待计算机、计算机等待用户等问题逐步推动产生的。按时间发展可分为三个阶段。
出现了第一个简单的批处理系统:作业先汇集为一批,再由监督程序依次执行,用户不再需要在控制台旁更换纸带。
多道程序进入内存后,批处理发展为多道批处理;为使用户能与计算机交互,分时系统出现;工业和武器控制要求在截止时间前做出反应,实时系统随之问世。
超大规模集成电路和体系结构的发展推动了微型机、多处理机和计算机网络的兴起,于是出现了微机操作系统、多处理机操作系统和网络操作系统。
1.2.1 未配置操作系统的计算机系统
人工操作方式
还没有操作系统时,程序员带着穿孔纸带或卡片上机。人工操作有两个明显缺点。
一台计算机的全部资源由当前上机用户独占,其他用户无法使用。
装带、卸带时 CPU 与内存空闲,资源利用率很低——这就是人机矛盾。
脱机输入 / 输出
后来把输入输出从主机上卸下来:先由一台便宜的外围机把卡片、纸带收到磁带上,再把磁带挂到主机。主机只跟高速磁带打交道,装带、运输这些慢动作不再占用它。
这样 CPU 空等的时间缩短了,输入也加快了。反之,主机直接控制输入输出的方式称为联机 I/O。脱机并未消除手工操作,只是将手工从主机旁转移出去。
1.2.2 单道批处理系统
单道批处理把一批作业脱机录到磁带上,由监督程序依次装入内存、运行、交还控制权。内存里始终只有一道作业,所以叫「单道」。
问题随即出现:该道作业执行 I/O 时,CPU 必须等待。I/O 设备速度慢,处理器大部分时间处于等待状态。资源虽存在,却未能充分利用。
1.2.3 多道批处理系统 (Multiprogrammed Batch Processing System)
要使 CPU 在一道作业等待 I/O 时能执行另一道,内存中必须同时容纳多道程序。二十世纪六十年代中期的多道程序设计技术即实现了这一目标,批处理系统由此发展为多道批处理系统。
调度发生在 CPU 出现空闲时:A 等待磁盘,B 或 C 立即占用处理器,整机看似一直在运行。下图用同一条时间线对比单道和多道。
多道技术使 CPU、内存和 I/O 均得到利用:程序交替占用处理器,内存中不止一个作业,设备也不再只服务一道程序。切换通常发生在作业完成或无法继续时,额外开销不大,单位时间内完成的工作量更多。
代价是等待时间长、无法干预。作业需要排队,周转时间往往长达数小时甚至数天;一经提交,直到结束用户都不能修改自己的程序,调试尤为不便。
内存里同时存在多道程序时,操作系统就不能仅充当简单的监督程序。以下几方面必须进行管理,而且必须正确管理。
几道程序都想用 CPU。既要轮得公平、满足各道的需要,又不能让处理器空闲。
每道程序要有独立的内存空间,且不能因某道程序出错而破坏其他程序的内存。
慢速设备也要按作业需要分配、回收,并尽量让设备和 CPU 并行,而不是一道作业独占到结束。
程序和数据不断增多,既要便于用户查找和使用,又不能被随意修改或读取。
系统中同时存在多个作业,需要按各自要求接收、排队、执行完毕后回收资源。
用户不能再直接操作硬件。操作系统须提供命令或程序接口,使用户在不涉及硬件细节的情况下使用计算机。
1.2.4 分时系统 (Time Sharing System)
批处理提高了利用率,却把用户关在门外:程序一经提交就不能改。用户真正想要的是两件事——能跟自己的作业说话,以及不必独占整台主机。
分时系统把多台带键盘和显示器的终端接到同一台主机上。每个用户通过自己的终端交互地使用计算机,看似独占,实际上与其他用户分时使用同一台计算机。下图就是这种接法:多终端连一台主机,CPU 按时间片轮转。
交互要成立,时间上有两道关:打出去的字主机要收得到,打进去的命令要立即能执行。少一道,终端就只是摆设。
多用户同时敲击键盘,依靠多路卡将多路输入分时复用送入主机,方能避免漏字。
命令进了内存就要尽快运行、尽快把控制权交回给用户,否则「交互」只是一句空话。
作业直接放进内存,再按时间片轮转:每个用户执行一小段就换下一位,谁都不必空等太久。
分时系统的四条特征,实质上都在回答「多用户同时坐在终端前,是否会发生混乱、是否需要等待过久」。
一台主机同时连着许多终端,宏观上多个用户一起用。
每个用户都感觉机器是自己的,一个用户的程序出错不应影响其他用户。
对命令的响应要落在用户能忍受的等待里。这个量级常常是两三秒。
用户可以随时过问、修改自己的作业,而不是交出去就只能等批处理出结果。
1.2.5 实时系统 (Real Time System)
实时系统是为了在规定期限内完成特定任务而设计的。和分时系统不同,它的核心不是「让用户交互」,而是「让被控对象来得及」——响应超时,可能出事故。
实时系统涉及两类对象:系统的类型和任务的类型。按应用领域划分,它覆盖工业控制、信息查询、多媒体和嵌入式等场景。
按固定周期重复执行的任务,如传感器定时采样。
不按周期但仍有截止时间的要求,发生时必须及时处理。
错过截止时间会造成严重后果,如工业控制中的失控。
偶尔超时影响不大,如多媒体播放中丢一帧。
1.2.6 微机操作系统的发展
多用户多任务让许多用户通过各自的终端共用一台主机,每个用户的程序还可以再拆成并发的任务。UNIX 以及后来影响很大的 Solaris、Linux,都在这条线上。
做 · 交互动画
- 根据「学习目标」列出 3 个关键词,对照原理段落解释给自己听。
操作系统的发展过程
用控件单步操作;日志区记下每一步发生了什么。
总结与提升
- 能举出与本课路径相关的两代特征(多道、实时/嵌入式)。
- 能用自己的话复述学习目标,并指出概念与板上实验的对应。
延伸思考
- 为何本课不直接用完整 Linux?
- 如果把本节机制拿到 Linux 或完整 OpenHarmony 上,会多出哪些硬件假设?