操作系统(1):概述
Last updated on June 18, 2025 pm
这是《操作系统》课程的课程笔记系列。本文整理部分为“第1章:操作系统概述”。
1.1 操作系统的基本概念
1.1.1 操作系统的功能
- 资源的管理者:负责管理协调硬件、软件等计算机资源的工作
- 管理内容:处理机管理(Chapter2)、存储器管理(Chapter3)、文件管理(Chapter4)、设备管理(Chapter5)
- 向上层提供服务:为上层用户、应用程序提供简单易用的服务
- 给用户使用:
- GUI:用户图形界面
- 联机命令接口:即交互式命令接口,如 Windows 的命令提示符(说一句做一句)
- 脱机命令接口:即批处理命令接口,如 .bat 文件(说一堆做一堆)
- 给应用程序:程序接口,由系统调用组成,用户通过程序间接使用
- 给用户使用:
- 对硬件机器的扩展:将裸机改造为扩充机器,是一种系统软件
1.1.2 操作系统的特征
- 并发:多个事件在同一时间间隔内发生
- 宏观上同时发生,微观上交替发生
- 并行:多个事件在同一时刻同时发生
- 共享:资源可供内存中多个并发进程共同使用
- 互斥共享方式:一个时间段内只允许一个进程访问(如摄像头)
- 同时共享方式:一个时间段内允许多个进程“同时”访问(微观可能交替,如硬盘)
- 虚拟:将一个物理上的实体变为若干逻辑上的对应物
- 空分复用技术:如虚拟存储器
- 时分复用技术:如虚拟处理器
- 异步:由于资源有限,进程的执行不连续,以不可预知的速度推进
1.2 操作系统发展历程
- 手工操作阶段:所有工作人工干预
- 缺点:用户独占全机、人机速度矛盾
- 批处理阶段:
- 单道批处理系统:引入脱机输入输出技术
- 优点:缓解人机速度矛盾
- 缺点:系统资源利用率仍较低
- 多道批处理系统:操作系统开始出现
- 优点:多道程序并发执行,资源利用率高
- 缺点:不提供人机交互功能
- 单道批处理系统:引入脱机输入输出技术
- 分时操作系统:多用户通过终端同时共享一台主机
- 优点:提供人机交互服务
- 缺点:不能优先处理紧急任务
- 实时操作系统:
- 优点:能优先处理紧急任务
- 硬实时系统:必须在绝对严格的规定时间内完成处理
- 软实时系统:能接受偶尔违反时间规定
- 网络操作系统和分布式操作系统:
- 个人计算机操作系统
1.3 操作系统的运行环境
1.3.1 操作系统的运行机制
- 内核:操作系统最重要最核心的部分,由很多内核程序组成
- 时钟管理:实现计时功能,时钟中断可实现进程切换
- 中断处理:负责实现中断机制(保护和恢复中断现场的信息,转移控制权到处理程序)
- 原语:是一种特殊的程序
- 处于操作系统最底层,最接近硬件
- 运行具有原子性,只能一气呵成,不能中断
- 运行时间较短,但调用频繁,如 CPU 切换
- 系统资源管理:进程管理、存储器管理、设备管理
- 两类程序:
- 内核程序:可以执行特权指令
- 应用程序:不可以执行特权指令
- 两种指令:
- 特权指令:不允许用户直接使用的指令
- 如:I/O 指令、内存清零指令、存取用于内存保护的寄存器等
- 非特权指令:允许用户直接使用的指令
- 不能直接访问系统中的软硬件资源,仅限于访问用户的地址空间
- 特权指令:不允许用户直接使用的指令
- 两种处理器状态:
- 内核态:表明此时正在运行的是内核程序,可以执行特权指令
- 用户态:表明此时正在运行的是应用程序,只能执行非特权指令
- 该状态一般记录在 CPU 的程序字状态寄存器(PSW)中
- 处理器状态切换:
- 内核态->用户态:操作系统用一条特权指令将 PSW 中的标志位设置为用户态
- 用户态->内核态:CPU 检测到中断信号后,会立即变为内核态(硬件自动完成)
- 并停止运行当前的应用程序,转而运行处理中断信号的内核程序
1.3.2 中断和异常
- 作用:操作系统内核重新获得 CPU 控制权的唯一途径,使 CPU 从用户态切换到内核态
- 中断:也称外中断,与当前执行的指令无关,中断信号来源于 CPU 外部
- 如:时钟中断(由时钟部件发出,实现进程切换)、I/O 中断(由 I/O 设备发出)
- 异常:也称内中断,与当前执行的指令有关,中断信号来源于 CPU 内部
- 陷入(Trap):由陷入指令引发,是应用程序故意引发的
- 用于应用程序请求操作系统内核的服务
- 如:系统调用
- 故障(Fault):由错误条件引起,可能被内核程序修复
- 修复后会将 CPU 使用权还给应用程序,该程序继续执行
- 如:缺页故障
- 终止(Abort):由致命错误引起,内核程序无法修复
- CPU 使用权不会还给改该应用程序,而是直接终止该应用程序
- 如:整数除 0、非法使用特权指令
- 陷入(Trap):由陷入指令引发,是应用程序故意引发的
- 中断和异常的处理:
- 检查中断信号:
- 异常:CPU 在执行指令时会检查是否有异常发生
- 中断:每个指令周期末尾,CPU 都会检查是否有中断信号需要处理
- 找到相应的中断处理程序:中断向量表(根据中断信号的不同类型)
- 检查中断信号:
1.3.3 系统调用
- 系统调用:操作系统提供给应用程序(程序员)使用的接口
- 系统调用的功能:与共享资源有关的操作都必须通过系统调用来实现
- 如:设备管理、文件管理、进程控制、进程通信、内存管理
- 系统调用的过程:
- 应用程序传递系统调用参数
- 执行陷入指令,引发中断,CPU 由用户态转为内核态
- 由操作系统内核程序处理系统调用请求
- 内核程序将 CPU 使用权还给应用程序,返回原应用程序
1.4 操作系统结构
- 分层法:内核分为多层,每层单向调用更低一层提供的接口
- 优点:
- 便于调试和验证(自底向上逐层调试验证)
- 易扩充和易维护,各层之间调用接口清晰固定
- 缺点:
- 仅可调用相邻低层,难以合理定义各层的边界
- 效率低,不可跨层调用,系统调用执行时间长
- 优点:
- 模块化:将内核划分为多个模块,各模块之间相互协作
- 内核由主模块和可加载内核模块组成
- 主模块:只负责核心功能,如进程调度、内存管理
- 可加载内核模块:可动态加载新模块到内核,而无需重新编译整个内核
- 优点:
- 模块间逻辑清晰易于维护,确定模块接口后可多模块同时开发
- 支持动态加载新的内核模块(如安装设备驱动程序),增强 OS 适应性
- 任何模块都可以直接调用其他模块,无需采用消息传递进行通信,效率高
- 缺点:
- 模块间的接口定义未必合理实用
- 模块间相互依赖,更难调试和验证
- 内核由主模块和可加载内核模块组成
- 宏内核(大内核):将操作系统的主要功能模块都作为系统内核,运行在核心态
- 优点:内核各模块间可以相互调用,性能高
- 缺点:
- 内核庞大,结构复杂,难以维护
- 内核中某个功能模块出错,可能导致整个系统崩溃
- 微内核:只把最基本的功能保留在内核(中断、原语、进程通信等)
- 优点:
- 内核功能少,结构清晰,方便维护
- 可靠性高,内核外某个功能模块出错不会导致整个系统崩溃
- 缺点:
- 需要频繁地在内核态和用户态之间切换,性能低
- 用户态下的各功能模块不可直接相互调,只能通过内核的消息传递来间接通信
- 优点:
- 外核:内核负责进程调度和通信等功能,外核负责为用户进程分配未经抽象的硬件资源
- 优点:
- 用户进程可以更灵活地使用硬件
- 减少了虚拟硬件资源的映射层,效率提高
- 缺点:
- 降低了系统的一致性
- 使系统更加复杂
- 优点:
1.5 操作系统引导
- 操作系统引导:操作系统的加载和启动过程
- 引导过程:
- CPU 读取并执行 ROM 中的引导程序(BIOS),先硬件自检再开机
- 将主引导记录(MBR)读入内存,执行磁盘引导程序,扫描分区表
- 从活动分区(即操作系统所在分区)读入分区引导记录(PBR),执行其中的程序
- 从根目录下找到操作系统初始化程序(即启动管理器)并执行,完成开机动作
1.6 虚拟机
- 虚拟机:利用虚拟化技术,将一台物理机器虚拟化为多台虚拟机器
- 虚拟机管理程序(VMM):
对比维度 | 第一类 VMM | 第二类 VMM |
---|---|---|
对物理资源的控制权 | 直接运行在硬件之上,能直接控制和分配物理资源 | 运行在宿主 OS 之上,依赖于宿主 OS 为其分配物理资源 |
资源分配方式 | 安装客户 OS 时,VMM 自行分配存储空间,分配未经抽象的物理硬件 | VMM 为客户 OS 分配宿主 OS 提供的虚拟内存 |
性能 | 更好 | 更差,需要宿主 OS 作为中介 |
可支持的虚拟机数量 | 更多,不需要和宿主 OS 竞争资源 | 更少,宿主 OS 本身和宿主 OS 上运行的进程也要使用物理资源 |
虚拟机的可迁移性 | 更差 | 更好,只需导出镜像文件即可迁移到另一台宿主 OS 上,商业化应用更广泛 |
运行模式 | 运行在最高特权级,可以执行最高特权指令 | 部分运行在用户态、部分运行在内核态,客户 OS 发出的特权指令会被 VMM 捕获,并转化为 VMM 对宿主 OS 的系统调用 |
操作系统(1):概述
https://cny123222.github.io/2025/06/13/操作系统-1-:概述/