操作系统¶
概述¶
操作系统是管理计算机硬件和软件资源的系统软件,为应用程序提供运行环境。作为用户和计算机硬件之间的桥梁,操作系统负责资源分配、进程调度、内存管理、文件存储和设备控制等核心功能。
主要目标: - 方便性:为用户提供简洁的编程接口 - 有效性:提高系统资源的利用率 - 可扩展性:方便新增硬件和软件功能 - 开放性:遵循标准规范便于互联互通
一、进程管理¶
1.1 进程与线程¶
| 概念 | 定义 | 特点 |
|---|---|---|
| 进程 | 程序的一次执行过程,是资源分配的基本单位 | 独立地址空间,创建/切换开销大 |
| 线程 | CPU 调度的基本单位,是进程中的一个执行流 | 共享进程地址空间,切换开销小 |
进程三态模型:就绪 → 运行 → 阻塞
1.2 进程调度算法¶
| 算法 | 描述 | 优点 | 缺点 |
|---|---|---|---|
| FCFS(先来先服务) | 按到达顺序调度 | 公平简单 | 平均等待时间长 |
| SJF(短作业优先) | 优先调度运行时间短的 | 平均等待时间最短 | 长作业可能饥饿 |
| RR(时间片轮转) | 每个进程运行一个时间片 | 响应快,交互性好 | 时间片选择关键 |
| 优先级调度 | 按优先级高低调度 | 可区分紧急程度 | 低优先级可能饥饿 |
| 多级反馈队列 | 多个队列,不同时间片 | 综合平衡 | 实现复杂 |
1.3 进程同步与互斥¶
临界资源:一次仅允许一个进程使用的资源。
同步机制: - 信号量(Semaphore):P(wait)操作申请资源,V(signal)操作释放资源 - 管程(Monitor):高级同步机制,封装了共享变量和操作过程
经典同步问题: - 生产者-消费者问题:有限缓冲区的生产消费同步 - 读者-写者问题:多读可同时,写必须独占 - 哲学家进餐问题:避免死锁的经典模型
1.4 死锁¶
死锁产生的四个必要条件: 1. 互斥:资源一次只能被一个进程使用 2. 请求与保持:进程持有资源的同时请求其他资源 3. 不可剥夺:已分配资源不能被强制剥夺 4. 循环等待:进程间形成循环等待链
死锁处理策略: | 策略 | 方法 | 特点 | |------|------|------| | 预防 | 破坏四个必要条件之一 | 资源利用率低 | | 避免 | 银行家算法 | 需要预先知道最大需求 | | 检测 | 资源分配图化简 | 发现后解除 | | 解除 | 撤销进程/剥夺资源 | 代价较大 |
二、内存管理¶
2.1 内存管理方式¶
| 方式 | 描述 | 特点 |
|---|---|---|
| 连续分配 | 进程占用连续内存区域 | 简单,但有外部碎片 |
| 分页 | 将内存划分为固定大小的页帧 | 消除外部碎片,内部碎片小 |
| 分段 | 按逻辑段分配(代码段、数据段等) | 方便共享和保护 |
| 段页式 | 分段 + 分页结合 | 兼具二者优点 |
2.2 虚拟内存¶
基于局部性原理(时间局部性 + 空间局部性),将程序的部分内容装入内存即可运行。
页面置换算法: | 算法 | 策略 | 评价 | |------|------|------| | FIFO | 淘汰最早进入的页面 | 实现简单,但可能置换常用页面(Belady异常) | | LRU | 淘汰最久未使用的页面 | 性能好,但硬件支持成本高 | | Clock(NRU) | 近似 LRU,使用访问位 | 折中方案,广泛使用 | | 最优置换 | 淘汰未来最远使用的页面 | 理论最优,不可实现 |
2.3 分段与段页式¶
- 分段:逻辑地址 = 段号 + 段内偏移
- 分页:逻辑地址 = 页号 + 页内偏移
- 段页式:逻辑地址 = 段号 + 段内页号 + 页内偏移
三、文件系统¶
3.1 文件目录结构¶
- 单级目录:所有文件在同一目录下(命名冲突)
- 两级目录:每个用户一个目录
- 树形目录:层次结构,路径名唯一(最常用)
- 无环图目录:支持共享
3.2 文件分配方式¶
| 方式 | 描述 | 优点 | 缺点 |
|---|---|---|---|
| 连续分配 | 文件占用连续磁盘块 | 顺序访问快 | 产生外部碎片 |
| 链接分配 | 每个块指向下一块 | 无外部碎片 | 随机访问慢 |
| 索引分配 | 索引块记录所有数据块地址 | 随机访问快 | 索引块占用空间 |
3.3 磁盘调度算法¶
| 算法 | 描述 | 特点 |
|---|---|---|
| FCFS | 按请求顺序调度 | 公平,但寻道时间长 |
| SSTF(最短寻道优先) | 优先处理最近的请求 | 平均寻道时间短,可能饥饿 |
| SCAN(电梯算法) | 单向移动,处理沿途请求 | 公平性好 |
| C-SCAN(循环扫描) | 单方向扫描,另一端直接返回 | 等待时间更均匀 |
四、设备管理¶
4.1 I/O 控制方式¶
| 方式 | 描述 | CPU 参与度 |
|---|---|---|
| 程序查询 | CPU 不断轮询设备状态 | 高(忙等) |
| 中断驱动 | 设备完成后发中断通知 CPU | 中 |
| DMA | 直接内存访问,批量传输 | 低(仅参与开始和结束) |
| 通道控制 | 专用处理器控制 I/O | 极低 |
4.2 缓冲技术¶
- 单缓冲:OS 在内存中分配一个缓冲区
- 双缓冲:两个缓冲区交替使用
- 循环缓冲:多个缓冲区形成环形
- SPOOLing 技术:用磁盘模拟独占设备,将独占设备变为共享设备(如打印机)
常见面试题¶
高频考点
-
进程和线程有什么区别? 答:进程是资源分配的基本单位,有独立地址空间;线程是 CPU 调度的基本单位,共享进程的地址空间。
-
死锁产生的四个必要条件是什么? 答:互斥、请求与保持、不可剥夺、循环等待。
-
虚拟内存的作用是什么? 答:将部分程序装入内存即可运行,实现"逻辑上扩大内存",支持多道程序并发执行。
-
页面置换算法有哪些?各自的优缺点? 答:FIFO(简单但可能 Belady 异常)、LRU(性能好但成本高)、Clock(折中方案)。
-
进程间通信方式有哪些? 答:管道、消息队列、共享内存、信号量、套接字。
-
分页和分段的区别? 答:分页是系统管理的不可见机制,页大小固定;分段是用户可见的逻辑划分,段大小可变。