大西冰城的博客

跟我学操作系统(3):操作系统的发展与分类

Word count: 4.5kReading time: 15 min
2026/04/24
loading

1.手工阶段

在计算机发展的最初阶段,并没有“操作系统”这一概念。那时要让计算机执行任务,人们必须先在纸带上手工打孔,打孔的位置代表二进制中的“1”,未打孔的空白处则代表“0”。一段简单的程序,往往需要制成一卷布满密密麻麻小孔的纸带。

纸带制作完成后,需送入专门的纸带机,由纸带机逐孔读取信息、转换为电信号,计算机才能启动并执行程序。整个过程完全依赖人工操作。出了问题也没别的办法,人们只能凭借肉眼,顺着纸带的每一个孔逐一检查,不仅耗时费力,效率也低得惊人。

flowchart LR
    A["程序员
手工打孔"] --> B["纸带"] B --> C["纸带机
读孔转信号"] C --> D["计算机
执行程序"] D --> E["输出结果"] E --> F["下一个用户
排队等待"] F --> A

要知道,那时候的计算机堪称“天价”,但大量宝贵的运行时间,却浪费在手工准备纸带的环节上。只要纸带没有制作完成,昂贵的机器就只能处于闲置状态,造成极大的资源浪费。而且同一时间计算机只能运行一个程序,多人使用时只能排队等候;纸带一旦打孔出错,没有撤销这一说,只能全部作废、重新打孔。程序越长,打孔的工作量就越大,出错的概率也越高,让人抓狂。

2.单道批处理系统

面对手工阶段的低效困境,有人开始思考:能不能让计算机一次准备好几个程序,跑完一个直接切换到下一个,不用等人来换纸带?解决办法是把准备工作从主机上剥离出来——用一台外围机把纸带上的程序读进磁带,存好了再交给主机跑;跑完的结果也先写进磁带,再由外围机负责输出。这就是脱机输入/输出技术,这样运作的系统叫单道批处理系统。

负责调度和管输入输出的那段程序叫监督程序,此时这个监督程序就已经具备了操作系统的雏形了。

flowchart LR
    A["程序员
提交纸带"] --> B["外围机
读纸带→写磁带"] B --> C["输入磁带"] C --> D["主机
监督程序调度"] D --> E["执行程序A"] E --> F["执行程序B"] F --> G["执行程序C"] G --> H["输出磁带"] H --> I["外围机
打印输出"]

单道批处理系统的出现,确实解决了手工阶段的部分效率问题,机器不再需要闲置等待人工更换纸带,资源浪费得到了一定缓解。但它依然存在致命缺点:系统一次只能读取并运行一个程序,当主机在执行当前程序时,其他程序只能在磁带中排队等候,需等前一个程序运行完毕,下一个程序才能被读取并继续执行。更关键的是,在程序运行过程中,CPU有大量时间会处于闲置状态,主要用于等待输入输出操作完成,这就导致CPU的利用率依然处于较低水平,未能充分发挥其核心性能。

3.多道批处理系统

为了克服单道批处理系统CPU利用率低的缺点,多道批处理系统应运而生。与单道批处理系统不同,它每次可以往内存中读入多个程序,当CPU在运行其中一个程序时,其他程序会在内存中待命。一旦当前运行的程序需要进行输入输出操作、CPU陷入等待状态时,系统会立即切换CPU去执行内存中待命的另一个程序。

这种动态切换的方式,彻底改变了CPU闲置等待的局面,大大提高了CPU的利用率。引入多道程序设计技术后,计算机的各类资源得到了充分利用,CPU等核心资源几乎时刻都有程序在运行,不会再出现长时间闲置的情况,与此同时,系统的吞吐量也大幅提升,单位时间内能够处理的程序数量显著增加。

flowchart LR
    A["程序员
提交作业"] --> B["输入磁带"] B --> C["内存
程序A · 程序B · 程序C
同时装入"] subgraph 调度循环["CPU 调度循环"] direction LR D["运行程序A"] -->|"A 等待 I/O
CPU 切换↓"| E["运行程序B"] E -->|"B 等待 I/O
CPU 切换↓"| F["运行程序C"] F -->|"C 等待 I/O
CPU 切换↓"| D end C --> D D <-->|"I/O 操作"| G["I/O 设备"] E <-->|"I/O 操作"| G F <-->|"I/O 操作"| G G -->|"I/O 完成
重新就绪"| C F --> H["输出结果"]

此时的操作系统已经具备了基本的功能,能够管理内存、调度程序、处理输入输出等,但还没有引入用户交互的概念。用户只能通过纸带或者磁带来提交程序,无法直接与计算机进行交互——提交程序后,只能被动等待程序运行完成,既不能在运行过程中进行任何干预,也无法对程序进行调试。因此,这个阶段的操作系统,还不能算是真正意义上的操作系统。

4.分时操作系统

为了解决多道批处理系统缺乏用户交互的问题,分时操作系统应运而生。它的核心思路是,计算机以“时间片”为单位,轮流为多个用户提供服务。虽然从本质上来说,CPU依然是通过快速切换的方式,为不同用户的程序分配运行时间,但由于切换速度极快,每个用户都能产生“自己在独占计算机资源”的错觉。

分时操作系统正式引入了用户交互的概念。用户可以通过终端直接输入命令,操作系统会立即响应并执行这些命令,无需像之前那样通过纸带、磁带提交程序后被动等待。这种即时交互的方式,让用户能够在程序运行过程中进行干预、调试程序,彻底弥补了前几个阶段的不足,也真正意义上实现了操作系统的完整功能。

flowchart LR
    U1["终端用户1
输入命令"] --> OS U2["终端用户2
输入命令"] --> OS U3["终端用户3
输入命令"] --> OS subgraph OS["操作系统 · 时间片轮转调度"] direction LR T1["时间片1
服务用户1"] -->|"时间片到期"| T2["时间片2
服务用户2"] T2 -->|"时间片到期"| T3["时间片3
服务用户3"] T3 -->|"时间片到期"| T1 end OS -->|"立即响应"| U1 OS -->|"立即响应"| U2 OS -->|"立即响应"| U3

分时系统的出现标志着操作系统进入了一个新的阶段,用户可以直接与计算机进行交互,操作系统也变得更加复杂和强大,已经是多用户、多任务的系统。但它依然存在一定的局限性:此时的操作系统没有优先级调度机制,所有用户的命令都被平等对待,无法区分不同用户的需求和重要性,这也成为了后续操作系统进一步发展的一个重要方向。

5.实时操作系统

实时操作系统是在分时系统的基础上发展起来的,核心改进就是引入了优先级调度机制,恰好弥补了分时系统无法区分任务重要性的不足,能够更好地满足不同用户、不同任务的差异化需求。与分时系统的时间片轮转方式不同,实时操作系统可以优先响应一些特定的事件或任务,这类关键任务无需等到时间片轮转到自己时才执行,而是会被优先调度、即时处理。

这种优先级调度机制,确保了关键任务能够及时得到响应和处理,有效避免了关键任务因等待而延误的情况,极大地提高了系统的运行效率和响应速度,让操作系统能够适应对实时性要求更高的场景。

flowchart LR
    E1["外部事件
高优先级中断"] -->|"立即抢占"| CPU E2["外部事件
中优先级中断"] -->|"抢占低优先级"| CPU E3["外部事件
低优先级中断"] -->|"等待高优先级完成"| CPU subgraph CPU["CPU · 抢占式优先级调度"] direction LR R1["运行低优先级任务"] -->|"高优先级中断到来
立即打断!"| R2["运行高优先级任务"] R2 -->|"完成,返回"| R1 end CPU -->|"在截止期限内完成"| D1["高优先级结果
✓ 满足截止期限"] CPU -->|"完成"| D2["低优先级结果
✓ 延后但不丢失"]

在实时操作系统的控制下,计算机系统接受到外部事件或者任务请求时,必须在严格的时间限制内做出响应,确保关键任务能够及时得到处理,满足实时性的要求。这一特性对于一些对时间敏感的应用场景至关重要,比如工业控制、航空航天、医疗设备等领域——这些领域中,任务的延迟可能会导致严重的安全事故或重大损失,实时操作系统的实时响应能力成为了核心保障。

根据实时性要求的严格程度,实时操作系统又可以分为硬实时系统软实时系统。硬实时系统对任务完成时间有绝对严格的要求,必须在规定的截止期限内完成任务,一旦超出期限,就视为任务失败,可能会引发严重后果;软实时系统则相对灵活,允许任务完成的时间稍微延后一些,但绝不允许丢失任务,这种设计既保证了基本的实时需求,又提供了更大的灵活性和容错能力,适用于对时间要求相对宽松的场景。

到此为止,操作系统已经发展到了一个非常成熟的阶段,能够满足各种不同用户和不同任务的需求。但随着互联网的发展和计算机网络的普及,新的挑战和需求不断涌现,操作系统也并未停止发展的脚步,而是在持续地演进和创新,以适应新的应用环境和多样化的场景需求。

6.网络操作系统

随着互联网时代的到来,计算机之间的网络连接变得越来越普遍,此前的操作系统已无法满足多台计算机协同工作的需求,网络操作系统应运而生。它在传统操作系统的基础上,新增了对分布式计算和网络通信的支持,能够允许不同计算机之间共享硬件资源、软件资源和数据信息,实现了更大范围的设备协作和信息交互。

这一发展也正式引入了分布式系统的概念,此时的操作系统不再仅仅负责管理本地计算机的资源,还需要承担起协调网络上所有计算机的资源分配、处理网络通信、保障数据传输安全等任务,让多台计算机能够高效、有序地协同工作,适应互联网环境下的多样化应用需求。

flowchart LR
    U1["用户A"] --> H1["工作站A
网络操作系统"] U2["用户B"] --> H2["工作站B
网络操作系统"] U3["用户C"] --> H3["工作站C
网络操作系统"] H1 <-->|"发送请求 / 接收结果"| NET["计算机网络"] H2 <-->|"发送请求 / 接收结果"| NET H3 <-->|"发送请求 / 接收结果"| NET NET <-->|"共享文件访问"| FS["文件服务器"] NET <-->|"远程打印"| PS["打印服务器"] NET <-->|"数据通信"| DB["数据库服务器"]

网络操作系统的出现使得计算机能够更好地协同工作,用户可以通过网络访问远程资源和服务,计算机不再是一个个孤立的孤岛,而是一个个互联的节点,共同形成了一个庞大的计算机网络。这一变革对于企业、科研机构和个人用户来说都是一个巨大的进步,极大地扩展了计算机的应用范围和功能,让资源共享、远程协作变得更加便捷高效。

与此同时,网络操作系统还引入了新的安全机制和管理工具,专门用于保护网络中的各类资源和传输数据的安全,防范网络风险,同时确保网络通信的可靠性和运行效率,为多设备互联、多用户协同提供了坚实的保障。

7.分布式操作系统

分布式操作系统是在网络操作系统的基础上发展起来的,相比网络操作系统,它进一步增强了对分布式计算的支持,能够更高效地协调和管理分布在不同计算机上的各类资源和任务。通过这种高效的协调管理,分布式操作系统实现了更合理的资源利用和更强大的整体计算能力,让多台计算机协同工作的效能得到了极大提升。

flowchart LR
    U["用户
(感觉像用单台计算机)"] -->|"提交任务"| IF["统一接口层"] subgraph NODES["分布式集群(内部协同通信)"] direction LR N1["节点1"] <--> N2["节点2"] N2 <--> N3["节点3"] end IF -->|"拆分子任务"| NODES NODES -->|"汇总结果"| IF IF -->|"返回结果"| U

其核心优势在于,能够让用户像使用单台计算机一样,便捷地使用整个分布式系统。分布式操作系统通过透明化的资源管理和任务调度,隐藏了底层分布式架构的复杂细节,用户无需关心数据存储在哪个节点、任务在哪个计算机上运行,就能轻松享受到分布式计算带来的高效与便捷。这一特性对于大规模数据处理、云计算和高性能计算等对计算能力和资源调度要求极高的领域来说,具有至关重要的意义。

8. 个人操作系统

随着个人计算机的普及,面向专业场景的操作系统已无法满足普通用户的使用需求,个人操作系统应运而生。它专门为个人用户设计,核心亮点是提供了直观易懂的图形用户界面(GUI),摆脱了此前命令行操作的繁琐,同时支持丰富的应用程序,让计算机变得更加易用、友好,降低了普通用户的使用门槛。
个人操作系统的出现,让普通用户也能轻松使用计算机完成各类任务,从办公自动化、文档处理,到娱乐休闲、网络浏览,全方位覆盖了人们的日常数字生活,极大地丰富了人们的生活方式。同时,它还引入了多用户支持功能,可满足家庭、小型办公等多用户共用一台计算机的需求,搭配完善的安全机制,有效保障用户数据的隐私与安全,避免信息泄露。

flowchart TB
    U["普通用户"] -->|"鼠标 / 键盘操作"| GUI["图形用户界面 GUI"]

    GUI --> APP1["办公软件"]
    GUI --> APP2["浏览器"]
    GUI --> APP3["娱乐应用"]

    APP1 & APP2 & APP3 --> OS["个人操作系统内核
(进程管理 · 内存管理 · 文件系统)"] OS --> HW1["CPU"] OS --> HW2["内存"] OS --> HW3["存储设备"]

此外,个人操作系统还提供了丰富的开发工具和开放平台,为软件开发者提供了便捷的开发环境,极大地促进了软件生态系统的繁荣与发展。从本质上来说,个人操作系统的出现,标志着计算机从专业领域的工具,正式转变为大众可及的消费品,极大地推动了信息技术的普及与应用,如今已成为现代社会生产生活中不可或缺的一部分。

写在最后

操作系统的种类和发展远远不止文中所介绍的这些,受本文篇幅所限,无法一一详述。随着科学技术的不断发展和创新,操作系统也始终在持续演进、不断迭代,以适应新的技术环境和多样化的应用场景。比如广泛应用于手机、平板等设备的移动操作系统,支撑云计算发展的云操作系统,以及嵌入到各类智能设备中的嵌入式操作系统等等,每一种操作系统都有其独特的设计理念和核心功能,专门用于满足不同用户、不同应用场景的个性化需求。

纵观操作系统的整个发展史,这是一个充满创新与变革的过程,每一个阶段的进步都源于人类对效率提升、使用便利和技术创新的追求,也生动展现了人类在计算机领域不断探索、持续突破的精神,而这种精神也将推动操作系统在未来实现更长远的发展。

CATALOG
  1. 1. 1.手工阶段
  2. 2. 2.单道批处理系统
  3. 3. 3.多道批处理系统
  4. 4. 4.分时操作系统
  5. 5. 5.实时操作系统
  6. 6. 6.网络操作系统
  7. 7. 7.分布式操作系统
  8. 8. 8. 个人操作系统
  9. 9. 写在最后