参考课程 / 资料:王道考研 操作系统
一、 计算机系统层次结构
[ 用户 ] ───> [ 软件 ] ───> [ 操作系统 ] ───> [ 硬件 ]
1.1 操作系统定义
操作系统(Operating System, OS):控制和管理整个计算机系统的硬件和软件资源,并合理组织、调度计算机的工作和资源分配,以提供给用户和其他软件方便的接口和环境,是计算机系统中最基础的系统软件。
二、 操作系统功能
2.1 作为系统资源的管理者
- 处理机管理 / 进程管理:进程控制、进程同步、进程通信、死锁处理、处理机调度等。
- 存储器管理:内存分配与回收、地址转换、内存保护与共享、虚拟内存。
- 文件管理:文件存储空间管理、目录管理、文件读/写管理与保护。
- 设备管理:缓冲管理、设备分配、设备驱动与处理。
2.2 向上层提供服务
- 命令接口(供普通用户使用,非 GUI 接口):
- 联机命令接口:交互式执行(如终端命令行)。
- 脱机命令接口:批处理执行(如批处理脚本
.bat/.sh)。
- 程序接口(供程序员使用):通过系统调用(System Call)提供给应用程序使用。
- GUI 接口(图形用户界面):通过图标、窗口等形式方便用户操作。
2.3 对硬件机器的扩展
- 操作系统对裸机进行扩充,提供更方便、更强大的服务,称为虚拟机 / 扩充机器。
三、 操作系统的四大特征
并发和共享是操作系统最基本的两个特征,二者互为存在条件。
3.1 并发(Concurrency)
- 概念:指两个或多个事件在同一时间间隔内发生(宏观上同时发生,微观上交替执行)。
- 对比:
- 并发:单核 CPU 在同一时刻只执行一个程序,各程序微观上交替执行。
- 并行(Parallelism):多核 CPU 同一时刻可以执行多个程序,各程序微观上同时执行。
3.2 共享(Sharing)
- 概念:系统资源可供内存中多个并发执行的进程共同使用。
- 共享方式:
- 互斥共享:一段时间内只允许一个进程访问该资源(如摄像头、打印机等临界资源)。
- 同时共享:允许微观上交替或宏观上同时访问该资源(如磁盘读写、可重入代码等)。
3.3 虚拟(Virtual)
- 概念:把一个物理上的实体变为若干个逻辑上的对应物。物理实体是实际存在的,逻辑对应物是用户感受到的。
- 主要技术:
- 空分复用技术:如虚拟存储器技术(物理内存不足时逻辑上扩展内存空间)。
- 时分复用技术:如虚拟处理器技术(单 CPU 通过分时复用逻辑上变为多个 CPU)。
3.4 异步(Asynchronism)
- 概念:在多道程序环境下,多个程序并发执行,但由于资源有限,进程的执行不是一贯到底,而是“走走停停”,以不可预知的速度向前推进。
四、 操作系统的发展历程
手工操作阶段 ──> 单道批处理系统 ──> 多道批处理系统 ──> 分时操作系统 ──> 实时操作系统 ──> 网络/分布式/个人计算机操作系统
五、 操作系统的运行机制与体系结构
5.1 内核与指令集
- 内核(Kernel):操作系统最核心的部分,由核心内核程序组成。
- 指令分类:
- 特权指令:只允许操作系统内核程序执行(如修改 PSW、关中断、清内存等)。
- 非特权指令:应用程序和内核程序均可执行(如基本算术运算、逻辑运算等)。
5.2 CPU 状态(处理器模式)
CPU 中有一个寄存器称为程序状态字寄存器(PSW),用来指示当前 CPU 所处的运行状态:
- 内核态(管态 / 核心态):能够执行特权指令和非特权指令,运行内核程序。
- 用户态(目态):只能执行非特权指令,运行用户应用程序。
5.3 状态切换
- 内核态 ──> 用户态:执行一条修改 PSW 的特权指令(如中断返回指令)。
- 用户态 ──> 内核态:通过中断/异常机制实现,由硬件自动完成(非特权指令无法直接切换状态)。
六、 中断和异常
中断是操作系统内核重新夺回 CPU 使用权的唯一途径。
6.1 中断分类
- 内中断(又称 异常 / Exception / Internal Interrupt):
- 信号来源于 CPU 内部,与当前执行的指令相关。
- 分类 / 原因:
- 指令非法/参数非法:如除零异常、缺页中断、非法访问地址。
- 陷入指令(Trap / 访管指令):应用程序主动请求内核服务时执行,陷入指令是非特权指令,但会引发内中断使 CPU 切换到内核态。
- 外中断(狭义的中断 / Interrupt / External Interrupt):
- 信号来源于 CPU 外部,与当前执行的指令无关。
- 分类 / 原因:
- 时钟中断:由时钟部件发来的中断信号,用于进程调度和时间片管理。
- I/O 中断:由输入/输出设备发送的中断信号,告知内核数据传输或任务已完成。
6.2 中断处理的基本原理
- CPU 每执行完一条指令后,硬件会自动检测是否有外中断信号。
- 不同的中断信号对应不同的中断处理程序。
- CPU 检测到中断信号后,会根据中断类型查询中断向量表,找到对应中断处理程序在内存中的入口地址并跳转执行。
七、 系统调用
7.1 概念
系统调用(System Call)是操作系统提供给应用程序调用的接口,应用程序可以通过系统调用向操作系统内核请求服务(如文件读写、内存分配、进程创建等)。
7.2 系统调用与库函数的区别
- 普通库函数:运行在用户态,部分库函数内部会封装系统调用,部分纯计算库函数则不会。
- 系统调用:运行在内核态,提供底层资源管理和服务。
7.3 系统调用的执行过程
- 用户程序传递参数:将系统调用所需的参数放入寄存器或栈中。
- 执行陷入指令(Trap / Syscall / Int):引发内中断,CPU 状态从用户态转为内核态。
- 内核处理:由操作系统内核中的系统调用处理程序根据服务号执行相应逻辑。
- 返回用户态:处理完毕后恢复现场,CPU 返回用户态继续执行用户程序。
操作系统体系结构
大内核(宏内核/单内核)
将操作系统的主要功能模块都作为系统内核运行在和心态
包含进程管理、存储器管理、设备管理、时钟管理、中断处理、原语完整功能的内核结构
优点:高性能
缺点:内核代码庞大,结构混乱,难以维护
如linux UNIX
微内核
只把最基本的功能保存在内核
只包含时钟管理、中断处理、原语的结构
进程、存储、设备管理属于用户态
优点:内核功能少,结构清晰,便于维护
缺点:需要频繁在核心态与用户态切换,性能低
如Windows NT
分层结构
最底层硬件,最高层用户接口 每层可调用更低一层
缺点:只能高层调用低层 不可跨层导致效率低
模块化
将内核划分位多个模块 各模块相互协作
内核=主模块+可加载模块
优点:清晰易于维护,确定接口即可同时开发 通信效率高 支持动态加载新模块
缺点: 模块接口定义未必合理实用 相互依赖更难调试验证
外核
负责为用户进程分配未经抽象的硬件资源,并保证资源使用安全
减少了虚拟硬件资源的映射层,提高了效率
缺点:降低一致性 使系统变得复杂
操作系统引导(Boot)
磁盘:主引导记录(MBR)+C盘(引导记录PBR负责找到启动管理器+根目录+其他)+D……
虚拟机
使用虚拟化技术,把一台物理机器虚拟化为多台虚拟机器,每个虚拟机器都可以独立运行一个操作系统
第一类VMM,直接运行在硬件上。性能更好
第二类VMM,运行在宿主操作系统上,易于迁移
处理机管理
进程
程序:静态可执行文件
进程:动态,是程序执行过程
进程被创造初始会被分配一个唯一不重复的PID 用于区分进程
记录给进程分配了哪些资源(内存、I/O设备、文件)实现资源管理
记录运行情况(CPU使用时间、磁盘/网络使用情况等)实现进程控制调度
这些数据都被保存在一个数据结构——PCB(进程控制块)中
进程包括PCB、程序段、数据段
程序段: 程序的代码(指令序列)
数据段:运行中产生的各种数据
进程特性:动态性、并发性、独立性、异步性、结构性
进程的状态
创建态、就绪态、运行态、阻塞态、终止态
进程控制
用原语实现对进程的控制
原语的执行具有原子性,即执行过程只能一气呵成,期间不允许被中断
可以用关中断指令和开中断指令两个特权指令实现原子性
进程的创建:用户登录、作业调度、提供服务、应用请求
进程的中止:正常结束、异常结束、外界干预