跳转至

操作系统

概述

操作系统是管理计算机硬件和软件资源的系统软件,为应用程序提供运行环境。作为用户和计算机硬件之间的桥梁,操作系统负责资源分配、进程调度、内存管理、文件存储和设备控制等核心功能。

主要目标: - 方便性:为用户提供简洁的编程接口 - 有效性:提高系统资源的利用率 - 可扩展性:方便新增硬件和软件功能 - 开放性:遵循标准规范便于互联互通


一、进程管理

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 技术:用磁盘模拟独占设备,将独占设备变为共享设备(如打印机)

常见面试题

高频考点

  1. 进程和线程有什么区别? 答:进程是资源分配的基本单位,有独立地址空间;线程是 CPU 调度的基本单位,共享进程的地址空间。

  2. 死锁产生的四个必要条件是什么? 答:互斥、请求与保持、不可剥夺、循环等待。

  3. 虚拟内存的作用是什么? 答:将部分程序装入内存即可运行,实现"逻辑上扩大内存",支持多道程序并发执行。

  4. 页面置换算法有哪些?各自的优缺点? 答:FIFO(简单但可能 Belady 异常)、LRU(性能好但成本高)、Clock(折中方案)。

  5. 进程间通信方式有哪些? 答:管道、消息队列、共享内存、信号量、套接字。

  6. 分页和分段的区别? 答:分页是系统管理的不可见机制,页大小固定;分段是用户可见的逻辑划分,段大小可变。