操作系统的概念
第 1 章是整门课的入口。它要回答的是:操作系统在计算机系统里处在什么位置、它凭什么存在。
这一章看似都是概念题,但它其实是后面四章的地基——第 2 章讲的处理机管理、第 3 章的存储器管理、第 4 章的文件管理、第 5 章的设备管理,正是本章”资源管理者”这一句话的四个展开。
机制
为什么需要操作系统
一台不装任何软件的计算机称为裸机。 裸机不是不能用,而是用起来的代价高到不现实。
要在裸机上运行一个程序,程序员必须亲自处理每一件事:把程序的机器码逐条放进内存的哪个地址、怎么驱动磁盘控制器把数据读出来、怎么在打印时轮询打印机的状态寄存器。这些事与他要解决的问题毫无关系,却占了绝大部分工作量。
更糟的是:这些细节还不能复用。 换一台机器、换一块磁盘,整套代码就要重写。
操作系统的存在就是为了把这一切从应用程序里拿走——它把裸机包装成一台功能更强、使用更方便的机器,应用程序只需说”读这个文件”,不必知道磁头怎么动。
定义的三段拆解
操作系统是指控制和管理整个计算机系统的硬件与软件资源,合理地组织、调度计算机的工作与资源的分配,进而为用户和其他软件提供方便接口与环境的程序集合。操作系统是计算机系统中最基本的系统软件。
这个定义很长,但拆成三段之后,每一段正好对应它的一个身份(详见 1.1.2):
“控制和管理……硬件与软件资源,合理地组织、调度……与资源的分配” —— 这是资源管理者的身份。
“为用户和其他软件提供方便接口与环境” —— 这是接口的身份。
“程序集合” —— 注意这三个字:操作系统不是一个程序,而是一大批程序的集合。进程调度程序、内存分配程序、文件系统、设备驱动,各管一摊。
操作系统在计算机系统中的层次
graph TD U["用户"] --> A["应用程序<br/><i>Word、浏览器、自己写的程序</i>"] A --> S["其他系统软件<br/><i>编译程序、数据库管理系统、汇编程序</i>"] S --> O["<b>操作系统</b><br/><i>最基本的系统软件</i>"] A -.->|也可直接调用| O O --> H["裸机(硬件)<br/><i>CPU、内存、磁盘、I-O 设备</i>"] classDef usr fill:#fef3c7,stroke:#d97706,color:#78350f classDef app fill:#dbeafe,stroke:#2563eb,color:#1e3a8a classDef os fill:#dcfce7,stroke:#16a34a,color:#14532d classDef hw fill:#e5e7eb,stroke:#6b7280,color:#1f2937 class U usr class A,S app class O os class H hw
这张图里最需要注意的是操作系统的位置:它紧贴硬件,且在所有其他软件的下面。
“最基本的系统软件”这个说法的确切含义正是这个位置——其他系统软件(编译程序、数据库管理系统)本身也要运行在操作系统之上,它们要读文件、要申请内存,靠的都是操作系统提供的服务。
边界
系统软件不都是操作系统
这是本节最常考的一对包含关系。
系统软件是一个大类,包括操作系统、编译程序、汇编程序、数据库管理系统、各种工具软件等。操作系统只是其中之一,只不过是最基本的那一个。
判据是:这个软件运行时需不需要另一个软件为它管理资源。 编译程序运行时要向操作系统申请内存、要通过操作系统读源文件;而操作系统运行时不依赖任何其他软件,它直接管理硬件。
这条边界的常见考法是给出一组软件让你挑出操作系统,或者问”下列关于操作系统的说法哪个正确”,选项里常混入”编译程序是操作系统的一部分”这类说法。
操作系统不是一个程序
“程序集合”这三个字容易被读过去,但它有实际后果。
操作系统的各个部分是分别被触发、分别运行的:时钟中断到来时运行的是中断处理程序和调度程序;进程申请内存时运行的是内存分配程序;读文件时运行的是文件系统的那几层代码。
它们之间不存在”主程序调用子程序”那样的统一控制流。 因此不存在一个”操作系统进程”从头跑到尾——操作系统更像一套随时待命、被事件触发的例程集合。
这个认识在理解系统调用时很关键:系统调用不是”把控制权交给操作系统这个程序”,而是”进入内核态,执行内核中对应的那一段例程”。
操作系统与硬件的分界
操作系统是软件,它管理硬件,但它自己也要靠硬件的支持才能实现管理。
最典型的例子是处理器运行模式:操作系统之所以能阻止用户程序执行特权指令,不是因为它逐条检查了用户程序,而是因为 CPU 硬件本身提供了特权级机制,操作系统只是配置了规则。
这条边界贯穿整门课:地址转换靠 MMU、中断响应靠中断隐指令、互斥锁靠原子指令——操作系统的每一项管理能力,背后都有一个硬件机制在支撑。
做题时的用处:看到”操作系统如何实现 X”,先问”硬件为此提供了什么”。
对照速查
| 定义的三段 | 对应的身份 |
|---|---|
| 控制和管理硬件与软件资源,组织调度与分配 | 资源管理者 |
| 为用户和其他软件提供方便接口与环境 | 接口 |
| 程序集合 | 不是一个程序,而是一批例程 |
| 层次(自上而下) | 内容 |
|---|---|
| 用户 | — |
| 应用程序 | Word、浏览器、用户自己的程序 |
| 其他系统软件 | 编译程序、数据库管理系统 |
| 操作系统 | 最基本的系统软件,紧贴硬件 |
| 裸机 | CPU、内存、磁盘、I/O 设备 |
| 易混 | 判据 |
|---|---|
| 系统软件 vs 操作系统 | 前者是大类,操作系统是其中最基本的一个 |
| 操作系统是不是一个程序 | 不是,是一批被事件触发的例程 |
| 操作系统 vs 硬件 | 操作系统管理硬件,但每项能力背后都有硬件机制支撑 |
考点
- 操作系统的定义三段:资源管理者 + 接口 + 程序集合
- 操作系统是最基本的系统软件,其他系统软件运行在它之上
- 系统软件 ≠ 操作系统:编译程序、数据库管理系统也是系统软件
- 不存在一个”操作系统进程”——它是一批被触发的例程
- 操作系统的每项管理能力背后都有一个硬件机制
链接
- 🏠 返回总览:操作系统第 1 章:计算机系统概述总览
- ➡️ 下一节:1.1.2 操作系统的功能和目标
- 📖 名词库:第 1 章名词库