← Back to Learning Notes

Lecture 1:知识 - 操作系统概述

Chinese-language Computer Science 408 note: Lecture 1:知识 - 操作系统概述. Original source available where applicable.

On this page

This note is currently available in Chinese. The original wording, formulas and diagrams are preserved to avoid an unverified technical translation.

操作系统是管理计算机软硬件资源、为用户和程序提供服务的系统软件。学习本章要把“资源管理者、用户接口、硬件扩展层”三种角色,与并发、共享、虚拟和异步四个特征连起来。

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 中断处理中的职责边界

  1. CPU 在指令执行中检测内中断,或在每个指令周期末检查外中断请求;
  2. 硬件保存中断点 PC、改变状态位并转入内核态;外中断的 PC 通常由中断隐指令自动保存;
  3. CPU 根据中断类型查询中断向量表,转入相应服务程序;
  4. OS 保存 PSW、通用寄存器等现场,执行中断服务;
  5. 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 初始化的顺序。