Lecture 1:知识 - 操作系统概述
408 学习笔记:Lecture 1:知识 - 操作系统概述。保留原有知识内容、公式与图示;有对应原件时提供查看和下载入口。
本页目录
操作系统是管理计算机软硬件资源、为用户和程序提供服务的系统软件。学习本章要把“资源管理者、用户接口、硬件扩展层”三种角色,与并发、共享、虚拟和异步四个特征连起来。
1.1 操作系统的功能与特征
1.1.1 三种角色
| 角色 | 主要内容 | 目标 |
|---|---|---|
| 资源管理者 | 处理机、内存、文件、设备管理 | 安全、高效地分配和回收资源 |
| 用户与硬件的接口 | 命令接口、系统调用、GUI | 方便用户和应用程序使用 |
| 最接近硬件的系统软件 | 在裸机上提供抽象与服务 | 将裸机扩展成易用的虚拟机器 |
- 处理机管理包含进程控制、同步、通信、死锁处理与调度;存储器管理包含分配回收、地址映射、保护共享与扩充。
- 命令接口可分为交互式联机接口与批处理脱机接口;程序接口通过系统调用向应用提供内核服务。
- 调用库函数不必然进入内核,例如纯计算的数学库函数可完全在用户态执行;需要 OS 服务时才会通过系统调用陷入内核。
1.1.2 四个基本特征
- 并发:多个事件在同一时间段内交替推进;在教材的单核、单硬件线程模型中,同一时刻只有一个进程执行指令,多个进程可并发而非并行。多核或同时多线程硬件需另行判断。
- 共享:资源可被多个并发进程使用,分为互斥共享和同时共享。所谓同时共享在微观上常为分时交替。
- 虚拟:将一个物理实体映射为多个逻辑实体,如时分复用形成虚拟处理器、空分复用形成虚拟内存。
- 异步:多道环境下进程因资源竞争和调度走走停停,以不可预知速度推进。
并发和共享互为条件:没有并发就无共享需求;没有共享,多程序也不能共同使用系统资源。虚拟性和异步性则建立在并发之上。
1.2 发展与分类
| 阶段/类型 | 核心特征 | 优缺点 |
|---|---|---|
| 手工操作 | 用户独占机器,人工装卸作业 | 人机速度矛盾,资源利用率低 |
| 单道批处理 | 脱机 I/O、监督程序 | 自动成批执行,但 CPU 易等待 I/O |
| 多道批处理 | 多个作业装入内存并发运行 | CPU/设备利用率和吞吐量提高,不能交互 |
| 分时系统 | 时间片轮流服务多个终端用户 | 交互及时、公平;不擅长优先紧急任务 |
| 实时系统 | 在严格时限内处理外部事件 | 及时性、可靠性;分硬实时与软实时 |
- 多道程序即使没有虚拟存储也能实现:早期系统可把多道程序全部装入主存后并发执行。
- 现代单核计算机可多任务并发;CPU 可与外设并行工作,不要误称单核上的多个进程并行。
- 网络 OS 强调网络资源共享与通信;分布式 OS 中多台计算机地位对等、协同完成任务;个人 OS 面向单机用户。
1.3 程序运行环境
1.3.1 用户态与内核态
| 模式 | 可执行指令 | 典型代码 |
|---|---|---|
| 用户态(目态) | 非特权指令 | 用户程序、普通库函数 |
| 内核态(管态/核心态) | 特权和非特权指令 | 中断处理、调度、驱动、内核服务 |
- 特权指令包括关中断、I/O 控制、访问特殊寄存器等;普通算术、跳转、压栈可在用户态执行。
- 除零、缺页等事件可发生在用户态,但处理会使 CPU 进入内核态;不要混淆“指令能否在用户态执行”与“它是否导致进管”。
- PSW 的状态位标识当前模式。用户态到内核态由中断/异常/陷入触发,硬件保存必要现场并转入内核;系统调用处理完成后由特权返回指令恢复用户态。
1.3.2 中断、异常与系统调用
| 类型 | 与当前指令关系 | 例子 |
|---|---|---|
| 内中断/异常 | 相关,来源于 CPU 内部 | 除零、越界、缺页、特权指令错、陷入 |
| 外中断(狭义中断) | 无关,来源于 CPU 外部 | 时钟、I/O 完成、网络到达、掉电 |
| 系统调用/陷入 | 用户主动执行陷入指令 | read、进程控制、文件服务 |
中断处理:检测并受理请求 → 硬件保存必要的返回状态、进入内核态并定位处理入口 → 软件保存其余现场 → 执行服务程序 → 恢复现场。向量查询与最小现场保存的具体先后由体系结构规定。外中断一般在指令周期末检查;内中断在指令执行过程中检测。
- 硬件完成中断入口切换并保存必要返回状态,OS 负责初始化向量表、保存约定的通用寄存器并执行服务例程;普通子程序调用通常不切换特权级或经中断向量进入处理程序,但寄存器/标志位是否变化由指令及调用约定决定,不能概括为“PSW 绝不改变”。
- 陷入指令可在用户态执行,执行后立即引发内中断;它本身不是普通用户程序直接执行特权操作。
1.3.3 链接、装入与运行时内存
- 编译将源程序变为目标模块;链接将多个模块和库解析符号形成装入模块;装入将模块放入内存并完成地址重定位。
- 静态链接在装入前完成,运行时动态链接可延迟到执行过程中;绝对装入、可重定位装入与动态运行时装入的差别在地址绑定时机。
- 进程地址空间通常含代码段、数据段、BSS、堆和栈;堆向高地址增长、栈通常向低地址增长是常见约定,具体体系结构以题目为准。
1.4 系统调用:从 API 到内核服务
系统调用是应用程序请求内核服务的低层接口。用户程序若需内核执行受保护的资源管理操作(如打开文件、创建进程、建立内存映射),须通过系统调用或封装它的库/API 请求;已获授权的普通内存访问、映射后的读写等,不是每次操作都要再次陷入内核。用户态也不能直接执行仅允许内核态使用的硬件控制指令。
用户程序/库函数 → 执行陷入指令 → 硬件切换至内核态
→ 传递参数并保存上下文 → 对应系统调用服务例程 → 恢复上下文 → 返回用户态
- 发出系统调用请求时 CPU 仍处于用户态;陷入指令执行后产生内中断,硬件完成转内核态,随后才在内核态执行服务例程。
- 中断硬件阶段负责保存中断点、关中断(按体系结构规则)和改变 CPU 模式;OS 负责解释系统调用号、保存必要的通用寄存器、执行服务和恢复现场。不要把硬件完成的状态切换工作误写为 OS 软件完成。
- 系统调用接口可看作 OS 向程序员提供的 API;Shell 是用户同 OS 交互的接口。
libc、Windows API、POSIX API 等库把底层调用封装成较易使用的函数。使用同一 API 的系统通常具有更好的可移植性。
| 类别 | 功能与示例 |
|---|---|
| 设备管理 | 请求、释放、启动设备 |
| 文件管理 | 创建、删除、打开、关闭、读、写文件,如 open、read、write、lseek |
| 进程控制 | 创建、撤销、阻塞、唤醒进程,如 fork、execve、exit |
| 进程通信 | 消息传递、管道、共享内存,如 pipe、wait |
| 内存管理 | 分配、回收、映射与保护,如 mmap、munmap、mprotect |
| 信息维护与保护 | 查询用户数、版本、空闲空间;设置/取得资源访问权限 |
判别题要点:纯用户态计算的库函数(如求绝对值、三角函数)不必触发系统调用;页置换、进程调度等由内核自主完成,对用户透明,也不是用户通过系统调用直接要求执行的操作。
1.5 中断机制的细化
1.5.1 内中断与外中断
内中断又常称异常,与当前正在执行的指令相关,信号来源于 CPU 内部;常见场景包括执行特权指令、除数为零、陷入指令、缺页、地址越界和存储保护错。外中断与当前指令无关,来自 CPU 外部,例如时钟到期、I/O 完成、网络数据到达和掉电;掉电属于不可屏蔽中断。
异常还可按处理结果理解:
- 故障(fault):通常可由内核修复后重启相关指令,如缺页;
- 陷入(trap):程序有意引发的同步事件,如系统调用、调试断点;服务后通常从陷入指令的下一条指令继续;
- 终止(abort):发生不可恢复的严重错误,内核一般终止相应程序,而不再交还 CPU 使用权。
课件和 408 试题中,“中断”常特指狭义的外中断,“内中断”则常写作“异常”。
1.5.2 中断处理中的职责边界
- CPU 在指令执行中检测内中断,或在每个指令周期末检查外中断请求;
- 硬件保存中断点 PC、改变状态位并转入内核态;外中断的 PC 通常由中断隐指令自动保存;
- CPU 根据中断类型查询中断向量表,转入相应服务程序;
- OS 保存 PSW、通用寄存器等现场,执行中断服务;
- OS 恢复现场,硬件/特权返回使处理器回到被中断程序。
程序状态字 PSW 记录处理器状态与控制信息,是实现程序状态保护和恢复的关键。与普通子程序调用相比,中断/异常入口需要保护可返回的处理器状态,并可能切换特权级;普通调用不因此自动取得内核权限。具体标志位和寄存器是否被调用指令或被调函数改变,取决于 ISA 与调用约定。2020 类题中,提供中断服务、初始化中断向量表、保存中断屏蔽字属于 OS;中断服务寻址、关中断、保存中断点 PC 属于题设硬件机制。
1.6 操作系统结构
内核是操作系统中最基本、最核心的底层软件;内核程序实现内核功能。常见内核组成有进程、存储器和设备管理,以及时钟管理、中断处理和原语。原语通常短小、调用频繁,关键要求是对外呈现不可分割的原子效果;教材常用“执行时不被中断”说明单核临界段,但实现原子性不等于任何硬件中断都绝不发生,多处理器上还需锁或原子指令等同步手段。
| 结构 | 核心思想 | 优点 | 局限 |
|---|---|---|---|
| 分层结构 | 自下而上分层,每层仅调用相邻低层提供的接口 | 易调试验证,接口清晰,便于维护 | 层次边界难划分;不能跨层调用,经过多层会降低效率 |
| 模块化 | 内核 = 主模块 + 可加载模块;主模块提供核心服务和模块通信/加载能力 | 结构较清晰,可并行开发,可动态加载驱动或文件系统,模块可直接调用,效率高 | 模块相互依赖,接口边界仍可能不清晰 |
| 宏内核(大内核) | 大部分系统功能均在内核态,通常也采用模块化组织 | 内核内部可直接调用,性能高 | 代码庞大复杂、维护困难;一个模块故障可能拖垮整个系统 |
| 微内核 | 内核只保留最小的进程管理、内存管理和通信机制;其他服务在用户态,以消息传递协作 | 可扩展、易维护,隔离更好,单个服务故障不必导致整体崩溃 | 频繁用户态/内核态切换及 IPC 带来额外开销 |
| 外核(Exokernel) | 外核本身是精简的内核,负责安全地复用、分配和保护底层硬件资源;具体抽象与策略多由用户态库操作系统(library OS)实现 | 应用可按需构建抽象,减少不必要的映射层 | 资源保护和库操作系统设计复杂,通用接口的一致性更难维护 |
补充:macOS 为混合结构,包含 Mach 微内核思想与 BSD 等组件;Android 采用分层结构,底层 Linux 内核向上提供进程、内存与硬件驱动支持。
1.7 引导、磁盘初始化与虚拟机
1.7.1 传统 BIOS/MBR 引导链
以下是课件中的传统 BIOS/MBR 口径(现代 UEFI/GPT 的实现不同):
复位 → ROM 中 BIOS/引导程序 → 建立中断向量表、POST 自检
→ 读启动磁盘 MBR(磁盘引导程序 + 分区表)
→ 找到活动分区并执行 PBR/分区引导程序
→ 装入并执行 OS 初始化程序/启动管理器 → 操作系统初始化
- 系统初始化不等于操作系统初始化:系统启动先由 ROM 固件、BIOS、引导记录完成,OS 的初始化程序在定位到相应分区后才装入 RAM 执行。
- MBR 位于启动盘第一个扇区,包含磁盘引导程序和分区表;活动分区的第一个扇区是 PBR,其中的引导程序继续定位启动管理器。常见 Linux 引导程序例子为 GRUB。
- 2021 题型中四者执行顺序为:ROM 引导程序 → 磁盘引导程序 → 分区引导程序 → 操作系统初始化程序。
1.7.2 磁盘准备顺序
安装操作系统前的典型顺序是:低级(物理)格式化 → 磁盘分区 → 逻辑格式化 → 安装 OS。
- 物理格式化划分磁道和扇区;扇区一般含头、数据区和尾,头尾可含奇偶校验、CRC 等校验信息。
- 分区将磁盘划为若干卷;完成逻辑格式化后才可在该分区上安装 OS。
- 逻辑格式化创建文件系统,并初始化根目录、空闲空间管理结构(如位示图)、超级块、索引结点区等数据结构;根目录在创建文件系统时建立,而不是在物理格式化或仅分区时建立。
1.7.3 虚拟机与两类 VMM
虚拟化技术可把一台物理机抽象为多台虚拟机(VM),每台 VM 可独立运行客户操作系统。虚拟机管理程序也称 VMM 或 Hypervisor。
| 对比项 | 第一类 VMM(裸机型) | 第二类 VMM(宿主型) |
|---|---|---|
| 位置 | 直接运行在硬件之上 | 运行在 Host OS 之上 |
| 资源分配 | 直接控制、分配物理资源 | 依赖 Host OS 分配;虚拟磁盘常是 Host 文件系统中的文件 |
| 性能与数量 | 少一层宿主 OS 依赖,特定场景开销可能较低 | 需要宿主 OS 提供服务,可能增加开销;两类可支持的 VM 数量均取决于硬件资源、实现和配置,不能仅凭类别断定 |
| 可迁移性 | 可迁移,取决于共享存储、网络和管理能力 | 镜像文件便于复制,但迁移仍受设备状态、存储和目标环境约束;不能仅凭类别断定难易 |
| 运行模式 | VMM 直接控制硬件,运行在相应平台提供的高权限/虚拟化模式,不必一律等同于传统 Ring 0 | VMM 可包含用户态与内核态组件;Guest 应用的系统调用通常先由 Guest OS 处理,Guest 执行敏感/特权操作或访问虚拟设备时才可能陷入 VMM,由 VMM 模拟或借助 Host OS 完成 |
NOTE · 源稿表述边界 原 PDF 第 22 页的外核图意在强调“内核向程序暴露更多底层资源”,不是把“外核”放到内核之外;第 29--30 页的 VMM 比较把性能、虚拟机数量和迁移难易写成固定排序。它们可帮助理解典型部署,但这些结论不能脱离具体实现和资源条件当作普遍定律。
相关知识
1.8 本节复盘
- OS 管资源、供接口、扩展裸机;基本特征是并发、共享、虚拟、异步。
- 单核进程可并发不可并行;CPU 与外设可并行。
- 用户态不能执行特权指令,进入内核由中断/异常/陷入触发;“发生在用户态”不等于“处理在用户态”。
- 系统调用经陷入进入内核,调用库函数不必然进入内核;中断题必须区分硬件状态与 OS 服务程序。
- 结构题比较层次边界、模块通信、故障隔离和性能;引导题抓住 ROM → MBR → PBR → OS 初始化的顺序。