这是“操作系统系列教程”的第一篇。我们从一个最基础、也最容易被忽略的问题开始:操作系统到底是什么?它究竟在计算机系统中扮演什么角色?为什么没有它,现代计算机几乎无法使用?

一个看似简单的问题

如果你问一个计算机专业的学生:“操作系统是什么?”他可能会回答:“就是 Windows、Linux、macOS 这些东西。”这个回答不能算错,但远远不够。

想象一下:你打开电脑,双击一个图标,程序就启动了;你插上 U 盘,系统自动识别;你同时开着浏览器、音乐播放器和文档编辑器,它们互不干扰地运行。这些看似理所当然的事情,背后都有一个“幕后总指挥”在默默工作——它就是操作系统

很多同学在学习操作系统课程时,一上来就陷入进程调度、页面置换、死锁检测等细节,却忽略了最根本的问题:操作系统为什么存在?它到底解决了什么问题? 这篇文章将带你从“裸机”出发,一步一步理解操作系统的本质。

一、先看裸机:没有操作系统的计算机是什么样

所谓“裸机”,就是只有硬件、没有安装任何系统软件的计算机。它拥有 CPU、内存、硬盘、显示器、键盘、网卡等设备,但这些设备本身不会自动协同工作。

在计算机发展的早期(20 世纪 40—50 年代),人们使用计算机的方式非常原始。1946 年,世界上第一台通用计算机 ENIAC 在美国宾夕法尼亚大学诞生,它用了 18000 个电子管,占地 170 平方米,重达 30 吨。运转这个庞然大物全靠工程师们手动操作——成千上万个按钮需要人工调整,输入程序要重新插拔线路。

图 1:裸机结构示意图。 硬件之间彼此独立,没有统一的协调者,程序员必须直接面对硬件进行操作。

这种方式存在几个致命问题:

  1. 资源无法共享:一台计算机同一时刻只能被一个人使用。
  2. 使用效率极低:CPU 经常在等待人工输入,大量时间被浪费。
  3. 编程极其困难:程序员必须直接面对硬件接口,了解每个设备的寄存器、时序和电气特性。
  4. 缺乏保护:一个程序的错误可能直接破坏另一个程序,甚至损坏硬件。

显然,这样的计算机无法满足现代社会的需求。我们需要一个“管理者”,把硬件资源统一管起来,再以更方便的方式提供给应用程序和用户。这个管理者,就是操作系统。

二、操作系统的定义

关于操作系统的定义,不同教材有不同的表述,但核心思想一致。这里引用两个经典定义:

  • Silberschatz 等人在《操作系统概念》中的定义:操作系统是管理计算机硬件与软件资源的程序,并充当计算机硬件和计算机用户的中介。
  • Tanenbaum 在《现代操作系统》中的定义:操作系统是覆盖在硬件上的软件层,它为用户提供方便的服务,并管理所有硬件资源。

综合起来,我们可以给出一个更完整的定义:

操作系统(Operating System,OS)是一组控制和管理计算机硬件与软件资源、合理组织多道程序运行、并为用户提供方便接口的系统软件。

这个定义包含三个关键点:

  1. 系统软件:它不是应用程序,而是为应用程序提供服务的底层软件。操作系统本质上是运行在计算机上的软件/程序,作为硬件基础上的第一层软件。
  2. 资源管理:它管理 CPU、内存、I/O 设备、文件等所有资源。
  3. 提供接口:它为用户和应用程序提供使用计算机的接口。

图 2:计算机系统层次结构。 操作系统位于硬件之上、应用程序之下,是承上启下的核心层。从软件的维度审视,现代操作系统本质上是内核、系统程序和系统库这三层核心组件构成的有机整体。

从图 2 可以看出,操作系统向下管理硬件,向上支撑应用程序,同时通过系统调用向程序提供服务,通过命令行或图形界面向用户提供服务。

三、操作系统到底解决了什么问题?

操作系统之所以存在,是因为它解决了四大类问题。

3.1 资源管理

计算机中的资源是有限的:CPU 只有一个或几个核心,内存容量有限,硬盘速度远低于 CPU,外设数量有限。操作系统必须决定:

  • 哪个程序可以使用 CPU?使用多久?
  • 内存如何分配给多个程序?如何防止互相干扰?
  • 多个程序同时请求打印机,先给谁用?
  • 文件如何组织在磁盘上?如何快速找到?

这些问题分别对应处理器管理、存储管理、设备管理、文件管理。操作系统就像一个“资源调度中心”,让有限的资源被高效、公平、安全地使用。用一句话概括:操作系统将所有的底层硬件封装成一个黑盒子,用户直接向操作系统发送指令,即可完成与底层硬件的交互。

图 3:操作系统作为资源管理者。 所有硬件资源由操作系统统一分配,程序不能直接访问硬件。

3.2 提供抽象

直接操作硬件是非常痛苦的。程序员如果必须自己控制磁盘马达、处理网卡中断、管理内存地址,那么开发一个简单程序都会变得极其复杂。操作系统提供了大量抽象

  • 进程:把“一个正在运行的程序”抽象出来,程序员不必关心 CPU 寄存器、程序计数器等细节。
  • 文件:把磁盘上的数据抽象成有名字、有权限、可读写的对象。操作系统为数据存储介质提供了文件这一层抽象,编写应用程序时只需知道如何创建和读写文件即可,不用涉及具体的硬件细节。
  • 虚拟内存:让每个程序都以为自己拥有连续、独立的内存空间。
  • 套接字:把复杂的网络协议抽象成简单的发送和接收接口。

这些抽象极大地降低了编程难度,也让程序更安全、更可移植。

图 4:操作系统提供的核心抽象。 每一层抽象都隐藏了底层硬件的复杂性。

3.3 隔离与保护

现代计算机同时运行多个程序。如果没有操作系统,一个程序可以随意读写另一个程序的内存,甚至直接操作硬件。操作系统通过用户态与内核态地址空间隔离权限检查等机制,确保系统的安全。

CPU 的特权级机制将系统运行状态划分为内核态用户态

特性内核态用户态
权限最高权限,可执行所有指令权限受限,不能执行特权指令
硬件访问可直接操作所有硬件不能直接访问硬件
内存访问可访问全部物理内存只能访问所属进程的用户空间
运行内容内核代码、驱动模块应用程序、Shell、GUI

用户态程序若需执行受限操作(如文件读写、网络通信、内存申请),必须通过系统调用切换到内核态,由内核代为执行。

图 5:系统调用——用户态切换到内核态的过程。 系统调用是用户态程序进入内核态的最主要途径。

3.4 提供用户接口

操作系统为用户提供了多种使用计算机的方式。这里需要澄清一个常见的误解:很多人认为操作系统就是启动计算机后所面对的图形界面或命令行环境,但严格来说,图形用户界面和命令行环境实际上是计算机上安装的程序,并不是操作系统的一部分。它们只是操作系统提供的用户接口

  • 命令行接口(CLI):如 Linux 的 Bash、Windows 的 CMD 和 PowerShell。
  • 图形用户接口(GUI):如 Windows 桌面、GNOME、KDE。
  • 系统调用接口:供应用程序调用,如 open()read()fork()

四、操作系统的五大核心功能

结合大学《操作系统》课程的知识体系,操作系统的核心功能可以归纳为五大模块。小林coding在《图解系统》中正是按这一框架组织了15万字的图解内容,基本把操作系统进程管理、内存管理、文件系统、设备管理、网络系统这五大结构图解了。

图 6:操作系统五大核心功能。 本系列后续文章将逐一展开。

  1. 处理器管理:负责进程和线程的创建、调度、同步、通信和死锁处理。
  2. 存储管理:负责内存分配、地址映射、虚拟内存、页面置换等。
  3. 设备管理:负责 I/O 设备的驱动、中断处理、缓冲和分配。
  4. 文件管理:负责文件的组织、存储、检索、权限和磁盘空间管理。
  5. 用户接口:负责提供命令行、图形界面和系统调用。

五、从按下电源键到程序运行:操作系统全程参与

为了更直观地理解操作系统的作用,我们来看一个完整的例子:当你按下电脑电源键,到成功打开一个文本编辑器,操作系统做了什么?

图 7:从开机到运行程序的简化流程。 操作系统在内核初始化后接管全部硬件,并为应用程序提供服务。

具体来说:

  1. BIOS/UEFI 自检:主板固件检查 CPU、内存、显卡等关键硬件是否正常。
  2. 引导加载程序:如 GRUB,负责从磁盘加载操作系统内核。
  3. 内核初始化:内核接管硬件,初始化中断、内存管理、调度器、设备驱动等。
  4. 启动初始化进程:Linux 中通常是 systemdinit,它启动各种系统服务。
  5. 用户登录:显示登录界面,验证用户身份。
  6. 启动应用程序:用户双击图标,操作系统创建进程,分配内存,加载程序代码。
  7. 程序运行:程序通过系统调用请求文件、网络、显示等资源,操作系统负责响应。

在这个过程中,操作系统始终是“幕后总指挥”。没有它,应用程序根本无法运行。

六、操作系统的基本特征

现代操作系统通常具有以下四个基本特征:

特征含义通俗理解
并发多个程序在同一时间段内交替执行一个人同时处理多个任务,快速切换
共享资源可被多个并发进程共同使用多个程序共用一台打印机
虚拟把一个物理实体变成多个逻辑实体每个程序都以为自己独占内存和 CPU
异步进程以不可预知的速度推进程序的执行顺序和速度不可控,但结果正确

注意:并发不是并行。单核 CPU 同一时刻只能执行一个程序,但通过快速切换,宏观上看起来是同时运行。

七、操作系统的分类

操作系统的发展经历了多个阶段,每一类操作系统都是为了解决特定场景下的需求。

图 8:操作系统发展简史。

常见分类包括:

  • 批处理操作系统:用户提交一批作业,系统自动依次执行,吞吐量大,但交互性差。
  • 分时操作系统:CPU 时间被切成小片,轮流分配给多个用户,实现交互式使用。
  • 实时操作系统:必须在严格时限内响应外部事件,用于工业控制、航天、医疗等领域。
  • 网络操作系统:管理网络资源,提供文件共享、通信等服务。
  • 分布式操作系统:多台计算机协同工作,对用户表现为一个统一系统。
  • 嵌入式操作系统:运行在嵌入式设备中,资源受限,实时性要求高。
  • 个人计算机操作系统:面向个人用户,强调易用性和图形界面。
  • 移动操作系统:面向智能手机和平板,强调触控、功耗和移动网络。

八、主流操作系统简介

图 9:主流操作系统及其技术渊源。 Linux 在服务器、嵌入式、超级计算机领域占据主导地位;国产操作系统大多基于 Linux 内核构建。

Linux:Linux 是一个开源的类 Unix 操作系统内核,由 Linus Torvalds 于 1991 年发布。严格来说,Linux 只是内核,我们通常说的“Linux 操作系统”是指以 Linux 内核为基础、搭配 GNU 工具和桌面环境等组成的完整发行版,如 Ubuntu、CentOS、Debian、Fedora 等。

Windows:Windows 是微软公司开发的操作系统家族,从早期的 Windows 1.0 到如今的 Windows 11,是全球个人计算机市场占有率最高的操作系统。

国产操作系统:主要包括银河麒麟、统信 UOS、openEuler、深度 deepin、中标麒麟等。它们大多基于 Linux 内核,针对国内软硬件生态进行适配和优化。

九、常见误区澄清

在学习操作系统时,有几个常见误区需要澄清:

误区真相
“操作系统就是图形界面”图形界面只是操作系统提供的一种用户接口。Linux 服务器通常没有图形界面,但仍然是完整的操作系统
“操作系统就是 Windows”Windows 只是操作系统的一种。Linux、macOS、Android 都是操作系统
“没有操作系统计算机就不能运行”不完全对。一些嵌入式设备可以没有传统操作系统,直接运行裸机程序
“操作系统是硬件”操作系统是软件,是系统软件
“操作系统就是内核”不准确。内核是操作系统的核心,但操作系统还包括系统库、Shell、桌面环境等
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐