Article

操作系统-CH1.2-操作系统的发展历程

操作系统-CH1.2-操作系统的发展历程,待补充摘要。

June 10, 2026 修考 13 min read

1-2 操作系统的发展历程:从无到有的硬件压榨史

一、 宏观演进动因:起承转合的系统哲学

操作系统的演进绝非凭空产生,其核心驱动力可以概括为两点:

  1. 压榨硬件性能:解决CPU的高速性与外设(I/O)慢速性之间的矛盾,使昂贵的处理器尽可能保持忙碌状态。
  2. 满足用户需求:从最初的“追求计算速度”到“追求自动化自动化批处理”,再到“追求人机交互”以及“追求极致的实时性与扩展性”。

二、 未配置操作系统的计算机系统(早期探索阶段)

在计算机诞生之初,硬件极其昂贵,且没有“操作系统”这一中间层。用户与硬件直接交互,主要存在两种方式:

1. 人工操作方式

  • 运行逻辑: 用户(程序员)将写有程序和数据的纸带装入纸带输入机,启动输入机将程序送入计算机,CPU执行完毕后,再通过纸带输出机或打印机输出结果。

    纸带纸带输入机计算机 (CPU/内存)输出设备\text{纸带} \longrightarrow \text{纸带输入机} \longrightarrow \text{计算机 (CPU/内存)} \longrightarrow \text{输出设备}

  • 两大致命缺陷(人机矛盾)

    1. 人工装载空闲:在用户人工装磁带、换纸带的过程中,高速的 CPU 处于完全闲置状态(甘特图中表现为空闲 Idle)。
    2. I/O 速度不匹配:纸带输入输出机的物理读写速度极慢,而 CPU 读写速度极快。由于没有中间层,CPU 必须以极其低效的方式配合慢速外设。

    【知识链接·计算机组成原理】: 这种“CPU直接受慢速外设制约”的现象,促使了后来在 I/O 接口中设置数据缓冲区的思想。通过引入缓冲区,让 CPU 和外设可以在一定程度上并行或缓冲速度差,避免 CPU 性能被外设彻底拉垮。

2. 脱机 I/O 方式 (Off-line I/O)

  • 运行逻辑: 为了缓解速度不匹配,引入了外围控制机 (Peripheral Controller)磁带 (Magnetic Tape)
    • 输入过程:在外围机的控制下,先将慢速纸带上的程序和数据高速输入到磁带上。当 CPU 需要时,直接从磁带高速调入内存。
    • 输出过程:CPU 高速将结果输出到磁带上,随后在外围机控制下慢慢输出到打印机。
  • 手写笔记感悟:“感觉像是嵌入式设备中的专用数据传输通道。”
  • 两大核心改良点
    1. 缓解了速度矛盾:磁带的读写速度远比纸带输入机快,CPU 读写磁带时几乎不需要浪费等待时间。
    2. 减少了 CPU 闲置:外围机独立工作,不占用主 CPU。当外围机在外装载下一条纸带到磁带时,CPU 可以并行的执行上一个磁带里的程序。

三、 批处理系统(操作系统的萌芽与自动化)

  • 起承转合:脱机 I/O 虽然解决了输入输出速度差,但它仍需要人工干预来完成“磁带与程序运行之间的切换”。为了实现作业运行的自动化,“监督程序”(操作系统的雏形)被引入系统,从而诞生了批处理系统。

1. 单道批处理系统 (Single-program Batch Processing System)

  • 核心特征
    • 内存中始终只保持一道作业
    • 引入监督程序 (Monitor):监督程序常驻内存。它首先将磁带上的第一个作业调入内存并转交“运行控制权(即让其上 CPU 运行)”;当该作业运行结束,控制权自动返回监督程序,监督程序再调入下一个作业。如此往复,实现自动、成批处理。
  • 致命劣势CPU 在程序进行 I/O 请求时处于极度浪费的等待状态。 因为内存中只有一道程序,若该程序发出 I/O 请求(如读写外设、打印),CPU 就只能晾在一旁。即使采用中断控制方式,由于内存里没有其他进程可供切换,CPU 也无法做任何有意义的工作。

2. 多道批处理系统 (Multiprogrammed Batch Processing System)

  • 核心特征
    • 内存中同一时刻可以存放多个作业/进程
    • 用户提交的作业首先存放在外存(磁盘)中,形成后备队列 (Backup Queue)
    • 作业调度程序 (Job Scheduler) 按照特定的算法(如先来先服务、短作业优先)从后备队列中选择若干个作业调入内存。它们共享 CPU、内存和系统中的各种软硬件资源。
  • 高效运行机制: 当作业 A 运行并发出 I/O 请求时,由于其 I/O 操作由通道或专用控制器执行,CPU 立即转去执行内存中的作业 B。当作业 B 阻塞或结束时,再调度执行作业 C。直到作业 A 的 I/O 完成,CPU 再在合适的时机切回作业 A。
  • 手写笔记感悟:“多作业放到外存形成队列,执行 I/O 时干别的事,使 CPU 一直处于忙碌状态。”
  • 优缺点总结
    • 优点:资源利用率极高(CPU、内存、I/O 并行);系统吞吐量大。
    • 缺点(致命伤)无“人机交互”能力。用户一旦将作业提交给系统,就失去了对作业的控制权(像流水线一样无法人工干预),这给程序调试带来了极大的痛苦。

四、 核心高频考点演练:单道 vs 多道对比计算

现有两个作业 Job A 和 Job B 同时提交并进入系统,它们所需的 CPU 计算时间和 I/O 操作时间如下(假设系统只有 1 个 CPU 和 1 个主 I/O 通道,作业 A 的优先级高于作业 B):

  • Job A:CPU 计算 10 ms10\text{ ms} \rightarrow I/O 操作 20 ms20\text{ ms} \rightarrow CPU 计算 10 ms10\text{ ms}
  • Job B:CPU 计算 15 ms15\text{ ms} \rightarrow I/O 操作 15 ms15\text{ ms} \rightarrow CPU 计算 5 ms5\text{ ms}

请对比并计算:在单道批处理系统多道批处理系统中,两道作业全部执行完毕所需的总时间,并分别计算 CPU 的利用率。

【详细解析过程】

1. 单道批处理系统

由于内存只允许存在一道作业,Job A 必须完全执行结束后,Job B 才能调入内存执行。

  • 时间轴推演 (TT)

    • 010 ms0 \sim 10\text{ ms}:Job A 占用 CPU。
    • 1030 ms10 \sim 30\text{ ms}:Job A 进行 I/O(此时 CPU 完全空闲,耗时 20 ms20\text{ ms})。
    • 3040 ms30 \sim 40\text{ ms}:Job A 占用 CPU,Job A 运行结束。
    • 4055 ms40 \sim 55\text{ ms}:Job B 调入并占用 CPU(耗时 15 ms15\text{ ms})。
    • 5570 ms55 \sim 70\text{ ms}:Job B 进行 I/O(此时 CPU 完全空闲,耗时 15 ms15\text{ ms})。
    • 7075 ms70 \sim 75\text{ ms}:Job B 占用 CPU(耗时 5 ms5\text{ ms}),Job B 运行结束。
  • 计算结果

    • 总耗时T=75 msT_{\text{单}} = 75\text{ ms}

    • CPU 忙碌时间10+10+15+5=40 ms10 + 10 + 15 + 5 = 40\text{ ms}

    • CPU 利用率

      η=40 ms75 ms×100%53.3%\eta_{\text{单}} = \frac{40\text{ ms}}{75\text{ ms}} \times 100\% \approx 53.3\%

2. 多道批处理系统 (Job A 优先)

Job A 和 Job B 都在内存中,CPU 和 I/O 可并行。

  • 时间轴及甘特图推演

    时间段 (ms\text{ms})CPU 占用者I/O 通道占用者备选/就绪队列状态备注说明
    0100 \sim 10Job AJob B(等 CPU)Job A 占用 CPU,Job B 等待。
    102510 \sim 25Job BJob AJob A 启动 I/O (103010 \sim 30);CPU 空闲,转而执行 Job B (15 ms15\text{ ms})。
    253025 \sim 30空闲Job A, Job BJob B 在 25 ms25\text{ ms} 启动 I/O (254025 \sim 40)。此时 A、B 均在 I/O,CPU 空闲
    304030 \sim 40Job AJob B30 ms30\text{ ms} 时 Job A I/O 结束,优先抢占 CPU 运行至 40 ms40\text{ ms} 并完工。
    404540 \sim 45Job B40 ms40\text{ ms} 时 Job B I/O 结束,占用 CPU 运行最后 5 ms5\text{ ms} 并在 45 ms45\text{ ms} 完工。
  • 计算结果

    • 总耗时T=45 msT_{\text{多}} = 45\text{ ms}

    • CPU 忙碌时间:仍然为 40 ms40\text{ ms}(计算总量没有改变,仅是空闲被极大地压缩了)。

    • CPU 利用率

      η=40 ms45 ms×100%88.9%\eta_{\text{多}} = \frac{40\text{ ms}}{45\text{ ms}} \times 100\% \approx 88.9\%

【对比结论】 多道批处理系统通过程序交替运行与资源共享,将总耗时缩短了整整 30 ms30\text{ ms},CPU 利用率从 53.3%53.3\% 跃升至 88.9%88.9\%。这就是多道程序设计的威力!

五、 分时系统 (Time-Sharing System)

  • 起承转合:多道批处理虽然高效,但是它把用户完全隔离在外,无法实现人机交互。为了解决“人机交互”“多用户共享主机”的需求,分时系统横空出世。

1. 核心运行逻辑

分时系统将 CPU 的运行时间划分为极短的时间片 (Time Slice),按时间片轮流分配给各个联机终端的作业使用。如果某个作业在分配给它的时间片内没有运行完,它必须暂时让出 CPU,排到就绪队列末尾,等待下一个时间片轮转到它。

[就绪队列] --> [时间片轮转调度] --> [CPU] --(时间片用完/未完工)--> 排到队列末尾

2. 手写笔记感悟

  • “这个就是我在《操作系统导论》中学到的支持人机交互的终极法宝。”
  • 应用场景:一个计算实验室内只有一台昂贵的高性能主机,连接了数十个只有键盘和显示器的低成本终端 (Terminal)。每个终端上的学生输入指令,主机通过时间片快速切换,依次为所有人服务,营造出“人人独占主机”的错觉。

3. 分时系统的四大核心特征(背诵高频点)

  1. 同时性(多路性):宏观上多个用户同时工作,微观上轮流使用同一台 CPU。
  2. 独立性:每个用户在自己的终端上操作,互不干扰,感觉自己独占主机。
  3. 及时性:用户的输入请求能在极短的时间内(通常在 13 秒1 \sim 3\text{ 秒} 内)得到响应。
  4. 交互性:用户可以通过终端与系统进行广泛的人机对话(单道/多道批处理绝不具备此特征)。

六、 实时系统 (Real-Time System)

  • 起承转合:分时系统虽然解决了交互性,但由于其采用时间片轮转的公平分配机制,无法保证在确定的时间内做出确定的响应。如果在军事导弹拦截、飞机自动驾驶或医疗设备控制等领域,出现哪怕 0.1 秒0.1\text{ 秒} 的延迟,都可能造成灾难性后果。为此,必须引入实时操作系统。

1. 核心定义

实时系统能及时响应外部事件的请求,并在规定的截止时间内 (Deadline) 完成对该事件的处理,控制并协调所有任务的运行。

2. 分类对比

类别英文简称核心特点与截止时间要求典型应用场景
硬实时系统HRT (Hard Real-Time)必须无条件绝对满足截止时间,一旦超时,会导致灾难性破坏或系统崩溃。飞行控制、导弹拦截系统、车载安全气囊。
软实时系统SRT (Soft Real-Time)能够接受偶尔、少量的超时,虽然会降低服务质量,但不会造成灾难性后果。飞机/火车订票系统、视频流媒体播放。
  • 手写笔记感悟:“这就是嵌入式实时操作系统 (RTOS) 的核心思想。”

七、 现代高级操作系统(了解即可,选项常客)

  • 起承转合:随着网络技术和分布式计算的蓬勃发展,操作系统从“单机资源管理”拓展到了“多机协调、全球分发”的维度。

1. 网络操作系统 (NOS)

  • 手写笔记精髓:网络资源管理。
  • 定义:在计算机网络环境下,对网络中的资源(如共享文件、打印机)进行管理和控制,实现高速数据通信,为网络用户提供接口。
  • 考研认知必须在联网状态下才起作用

2. 分布式操作系统 (DOS)

  • 手写笔记精髓:管理多个独立计算机。例如,管理服务器集群,通过 SSH 统一连接。
  • 定义:管理一组通过网络连接的多个独立计算机,使它们在用户眼里像一台单一、统一的计算机在运行。
  • 经典实例(文字稿精解): Netflix(网飞)视频分发。用户在看电影时,体验非常丝滑,感觉视频就存在自己本地。但实际上,Netflix 后面是通过分布式操作系统统一调度了全球成千上万台服务器和数据中心,自动选择离用户最近的节点提供服务。对于用户来说,后台无数台主机的存在是完全透明(即看不见)的。