1.1 操作系统的基本概念
操作系统 (Operating System, OS)
控制和管理整个计算机系统的硬件与软件资源,并合理地组织调度计算机的工作和资源的分配,以提供给用户和其他软件方便的接口和环境的程序集合。操作系统的两个核心作用:
- 资源管理者:管理处理机、存储器、文件、设备四类资源,跟踪资源使用情况、决定资源分配策略、回收资源。
- 用户与硬件之间的接口:提供命令接口、程序接口(系统调用)和 GUI,屏蔽硬件细节。
易考点:操作系统是最基本的系统软件,是硬件之上的第一层软件;它提供的是"接口"而非"服务",应用程序通过系统调用获得操作系统提供的服务。
1.2 操作系统的特征
操作系统有四大基本特征,其中并发和共享是最基本的,二者互为存在条件。
1. 并发 (Concurrency)
指两个或多个事件在同一时间间隔内发生。多道程序环境下,多个程序宏观上同时运行,微观上交替执行。
并行 vs 并发
并行:多个事件在同一时刻发生(需要多核/多处理机)。并发:多个事件在同一时间间隔内发生(单核通过分时实现)。
引入进程的目的是使程序能并发执行。
2. 共享 (Sharing)
系统中的资源可供多个并发执行的进程共同使用。分为两种方式:
- 互斥共享方式:资源在一段时间内只允许一个进程访问(如打印机)。这类资源称为临界资源。
- 同时访问方式:资源在一段时间内允许多个进程"同时"访问(如磁盘设备、可重入代码)。
3. 虚拟 (Virtual)
通过某种技术将一个物理实体变为若干个逻辑上的对应物。用于实现资源复用。
| 虚拟技术 | 物理实体 | 逻辑对应物 | 实现原理 |
|---|---|---|---|
| 时分复用 | 一台处理机 | 多台逻辑处理机 | 多道程序分时使用 CPU |
| 空分复用 | 一块物理内存 | 多块虚拟内存 | 虚拟内存技术、分区分配 |
4. 异步 (Asynchronism)
多道程序环境下,由于资源争夺、进程切换等因素,进程以不可预知的速度推进,即"走走停停"。但只要运行环境相同,OS 必须保证多次执行结果相同(即程序执行的封闭性和可再现性)。
关系总结:并发是共享的前提,共享是并发的基础。并发与共享使得程序异步执行,虚拟则是对资源的抽象复用。
1.3 操作系统的发展历程
| 阶段 | 特征 | 主要问题 |
|---|---|---|
| 手工操作阶段 | 人工操作,独占资源 | 人机矛盾、CPU 等待人工 |
| 批处理阶段(单道) | 自动性、顺序性、单道性 | CPU 与 I/O 串行,资源利用率低 |
| 批处理阶段(多道) | 多道、宏观并行微观交替 | 无交互能力 |
| 分时操作系统 | 同时性、交互性、独立性、及时性 | 不能响应紧急任务 |
| 实时操作系统 | 及时性、可靠性 | — |
| 网络/分布式 OS | 网络通信、资源共享、分布式计算 | 复杂度高 |
多道程序设计
允许多个程序同时存在于内存中,并允许它们交替使用 CPU。其核心是:当一道程序因 I/O 请求而暂停执行时,CPU 立即转去执行另一道程序。优点是资源利用率高、系统吞吐量大。分时系统 vs 实时系统:分时系统追求交互性和响应时间(秒级);实时系统追求及时性和可靠性(毫秒/微秒级)。实时系统又分硬实时(绝对不可超时)和软实时(偶尔超时可容忍)。
1.4 操作系统运行机制
1. 用户态与核心态(管态)
CPU 在执行不同程序时,根据程序对资源和指令的访问权限,运行在两种不同状态:
| 对比项 | 核心态(管态/内核态) | 用户态(目态) |
|---|---|---|
| 执行程序 | 内核程序 | 应用程序 |
| 资源访问 | 可访问全部硬件和内存 | 只能访问受限资源 |
| 特权指令 | 可执行 | 不可执行(会触发陷阱) |
| 典型指令 | I/O 指令、置中断、清内存、时钟设置 | 普通运算、访存 |
特权指令与非特权指令
特权指令:仅在核心态下可执行的指令,如 I/O 指令、置中断屏蔽、内存清零、停机等。非特权指令:用户态下可执行,如普通运算、访存指令。
2. 用户态与核心态的切换
- 用户态 → 核心态:通过访管指令/陷阱指令(trap),即系统调用、异常(如除零、缺页)、外部中断(如时钟中断)。
- 核心态 → 用户态:OS 执行完内核程序后,通过修改程序状态字 PSW 设置。
注意:用户态到核心态的切换是由硬件自动完成的(中断/异常机制),核心态到用户态的切换是由 OS 软件完成。访管指令是用户态下有意请求内核服务的指令,它本身是非特权指令。
3. 系统调用
操作系统为应用程序提供的、内核级别的服务接口。应用程序通过系统调用陷入核心态,获得 OS 提供的服务。
系统调用按功能可分为六类:
| 类别 | 典型调用 | 说明 |
|---|---|---|
| 设备管理 | 请求/释放设备 | 申请设备、启动 I/O |
| 文件管理 | 打开/关闭/读/写 | 文件操作 |
| 进程控制 | 创建/撤销/阻塞/唤醒 | 进程管理 |
| 进程通信 | 消息传递/信号量 | 进程间数据交换 |
| 内存管理 | 分配/回收内存 | 存储管理 |
| 时钟管理 | 获取/设置时间 | 时间相关服务 |
系统调用执行过程
用户程序执行访管指令(int/trap/syscall)→ 硬件检测到特权指令陷阱 → 保存用户态现场(PC、PSW)→ 切换到核心态 → 跳转到系统调用入口 → 执行内核服务例程 → 恢复现场 → 返回用户态继续执行。4. 操作系统内核
操作系统内核是计算机配置的底层软件,通常包含以下功能模块:
- 时钟管理:维持系统时间、实现分时调度(时钟中断)。
- 中断机制:中断处理是内核最基本的功能。
- 原语:具有原子性、不可中断的底层程序(如进程切换原语)。
- 系统控制的数据结构及处理:进程管理、存储器管理、设备管理。
原语 (Primitive)
处于操作系统最底层、最接近硬件、运行时间短、调用频繁、具有原子性(不可被中断)的程序段。用原语可保证操作不可分割。5. 中断与异常
中断是操作系统获得 CPU 控制权的核心机制,是并发多道程序设计的基础。
| 分类 | 来源 | 典型例子 | 同步/异步 |
|---|---|---|---|
| 内中断(异常/陷阱) | CPU 内部执行 | 除零、缺页、地址越界、系统调用 trap | 同步 |
| 外中断(中断) | CPU 外部设备 | 时钟中断、I/O 完成中断、键盘 | 异步 |
重要区分:异常(内中断)由 CPU 执行指令时引起,是同步的;中断(外中断)由外部信号引起,是异步的。系统调用属于自愿性内中断(陷阱 trap)。
1.5 操作系统结构
操作系统内核的结构设计影响系统性能、可靠性与扩展性。主要有以下几种结构:
| 结构 | 原理 | 优点 | 缺点 |
|---|---|---|---|
| 模块组合结构(宏内核) | 将进程管理、内存管理、文件系统等所有功能模块紧耦合在内核态 | 性能高(模块间直接调用) | 耦合度高,一个模块崩溃导致全系统崩溃 |
| 层次结构 | 将 OS 功能分层,每层只依赖下层,层间接口清晰 | 结构清晰,易于调试与维护 | 层间调用开销大,性能受限 |
| 微内核结构 | 内核只保留最基本功能(进程调度、IPC、内存映射),其他服务作为用户态进程 | 可靠可扩展(服务崩溃不影响内核)、支持分布式 | 频繁的用户态↔内核态切换开销大 |
| 外核结构 | 内核仅提供资源复用机制,由应用库操作系统自行管理资源 | 应用可定制资源管理策略 | 实现复杂,应用间隔离开销大 |
宏内核 vs 微内核:宏内核(Linux/Windows)将大量服务放入内核态,性能高但庞大易崩溃;微内核(Mach/Minix)仅保留最小内核,服务运行在用户态,可靠性强但 IPC 开销大。408 考点:微内核的基本功能包括进程管理、存储管理、进程通信(IPC)和中断处理。
1.6 系统引导与启动
计算机从上电到 OS 运行,经历一系列引导过程,将 OS 内核从外存载入内存并初始化。
引导过程
- BIOS 引导(传统):上电 → 执行 BIOS(固化在 ROM)→ POST 加电自检 → 读取主引导记录 MBR(含分区表与引导程序)→ 加载引导扇区 → 加载 OS 内核到内存 → 跳转执行 OS。
- UEFI 引导(现代):上电 → 执行 UEFI 固件 → 读取 ESP 分区中的 EFI 程序 → 直接加载 OS 引导管理器 → 加载内核。支持 GPT 分区、图形界面、安全启动。
引导程序 Bootloader
引导程序位于 MBR 或 EFI 系统分区,负责将 OS 内核从外存载入内存。常见 Bootloader:GRUB(Linux)、Windows Boot Manager、LILO。两阶段引导:第一阶段(MBR,512B)加载第二阶段;第二阶段加载内核并传递启动参数。
BIOS vs UEFI:BIOS 16 位实模式,MBR 分区最大 2TB;UEFI 32/64 位保护模式,支持 GPT 大容量磁盘、安全启动(防止恶意代码)、快速启动。408 关注:MBR 与 GPT、引导过程顺序。
1.7 虚拟机 [22新增]
虚拟机 (Virtual Machine, VM)
通过虚拟化技术在单个物理机上模拟出多台逻辑计算机,每台虚拟机可运行独立的操作系统(Guest OS),共享底层物理硬件资源。虚拟机监视器 (VMM / Hypervisor)
VMM 是虚拟机技术的核心软件层,负责在物理硬件与 Guest OS 之间进行资源协调与隔离。分为两种类型:
| 类型 | 说明 | 典型代表 | 特点 |
|---|---|---|---|
| Type 1(裸机型/原生) | VMM 直接运行在物理硬件之上,不依赖于宿主操作系统 | VMware ESXi、Xen、KVM、Hyper-V | 性能高,常用于数据中心 |
| Type 2(宿主型) | VMM 运行在宿主操作系统之上,作为宿主 OS 的一个应用程序 | VMware Workstation、VirtualBox、QEMU(模拟模式) | 部署方便,适合桌面开发 |
虚拟化的分类
- CPU 虚拟化:将物理 CPU 抽象为多个虚拟 CPU (vCPU),通过分时复用让各 Guest OS 轮流使用物理 CPU。关键技术包括指令模拟(二进制翻译)和硬件辅助虚拟化(Intel VT-x / AMD-V)。
- 内存虚拟化:在 Guest OS 的"物理地址"与实际物理地址之间引入一层映射(影子页表或 EPT/NPT),实现不同虚拟机的内存隔离和共享。
- I/O 虚拟化:让多个 Guest OS 共享 I/O 设备。常见方式有设备模拟(VMM 模拟常见设备)、半虚拟化(Guest OS 使用专门的虚拟 I/O 驱动,如 virtio)、直通(将物理设备直接分配给某个 VM)。
虚拟机的优势与用途
- 资源利用率高:一台物理机上运行多个 VM,充分利用硬件资源,降低硬件成本。
- 隔离性强:各 VM 之间安全隔离,一个 VM 崩溃不影响其他 VM。
- 可迁移与负载均衡:VM 可在不同物理机之间热迁移 (Live Migration),实现负载均衡和灾备。
- 快照与回滚:可对虚拟机做快照 (Snapshot),方便实验、调试和灾难恢复。
- 开发测试:开发人员可在一台机器上同时运行多个不同 OS 环境进行测试。
- 云计算基础:IaaS 平台(如 AWS EC2、阿里云 ECS)的核心技术就是虚拟机。
408 考点:区分 VMM Type 1 vs Type 2;理解虚拟化的三种分类(CPU/内存/I/O);虚拟机与容器的区别——虚拟机有完整 Guest OS(开销大、隔离强),容器(如 Docker)共享宿主机内核(开销小、隔离弱)。