操作系统核心考点解析:模块一
进程管理、同步互斥与死锁
本模块涵盖操作系统中最核心的逻辑部分,侧重于理解进程行为及处理并发冲突。
1. 进程状态转换 (State Transitions)
理解进程状态的“变迁逻辑”是解题的关键。
转换路径 | 触发原因 | 注意点 |
|---|---|---|
就绪 → 运行 | 进程调度程序分配了 CPU 时间片 | 此时进程已获得除 CPU 外的所有资源 |
运行 → 就绪 | 时间片用完,或被更高优先级进程抢占 | 进程仍处于内存中,等待下一次调度 |
运行 → 阻塞 | 进程发起 I/O 请求或申请信号量未果 | 这是一个主动行为(调用阻塞原语) |
阻塞 → 就绪 | I/O 完成或申请的资源已到位 | 这是一个被动行为(由中断处理程序唤醒) |
挂起态 (Suspend):当内存空间不足时,操作系统将进程移至外存。
阻塞挂起:进程在外存等待事件。
就绪挂起:进程在外存,但只要调入内存即可运行。
2. 信号量 PV 操作:同步与互斥
PV 操作是大题常客,掌握以下“三步模板”:
设信号量:
互斥信号量:
mutex(初始值 1,保护临界资源)。同步信号量:
empty/full(对应资源个数,初始化为 n 或 0)。
P 操作 (Wait):
先 P 同步,再 P 互斥(防止死锁的关键)。
V 操作 (Signal):
先 V 互斥,再 V 同步(逻辑更清晰)。
经典模型:生产者-消费者
producer() { while(1) { 生产产品; P(empty); // 检查缓冲区是否有空位 P(mutex); // 进入临界区 放入产品; V(mutex); // 退出临界区 V(full); // 增加一个可取产品 } }3. 死锁 (Deadlock) 预防与避免
3.1 死锁四个必要条件
互斥:资源独占。
占有并等待:拿着资源不放去等别的资源。
非抢占:不能强行剥夺他人的资源。
循环等待:形成闭环等待链。
3.2 银行家算法 (Banker's Algorithm)
安全性检查表 (解题模板):
进程 | Work (可用) | Need (还需) | Allocation (已分配) | Work + Allocation | 安全性 |
|---|---|---|---|---|---|
P2 | (3, 3, 2) | (1, 0, 2) | (2, 1, 1) | (5, 4, 3) | 安全 |
P1 | (5, 4, 3) | (2, 2, 2) | (1, 0, 0) | (6, 4, 3) | 安全 |
结论判断:若能找到一个序列(如 {P2, P1, P3})让所有进程顺利完成,则系统处于安全状态。
4. 重点概念辨析
进程 vs 线程:进程是资源分配的单位,线程是独立调度的单位。
管程 (Monitor):一种高级同步机制,特点是“一次只允许一个进程进入管程”。
DMA vs 中断:DMA 以块为单位传输,不经过 CPU;中断以字节为单位,CPU 介入深。
操作系统核心考点解析:模块二
内存管理、寻址转换与置换算法
本模块聚焦于地址转换的精确计算以及请求分页管理系统的性能分析。
1. 地址映射与转换 (Address Translation)
1.1 分页存储管理 (Paging)
分页的主要目的是消除外部碎片。
物理地址计算公式:
物理地址 = 物理块号 × 页面大小 + 页内偏移量计算三步走:
算页号:逻辑地址 / 页面大小(向下取整)。
查页表:根据页号找到对应的物理块号。
算物理地址:用物理块号拼接原有的页内偏移。
1.2 分段存储管理 (Segmentation)
分段的目的是满足程序员的逻辑需求。
物理地址计算公式:
物理地址 = 段基址 + 段内偏移量必考点:必须检查段内偏移量 < 段长,若不满足则报“越界异常”。
2. 页面置换算法 (Page Replacement)
当内存满且发生缺页时,谁该腾位置?
算法 | 决策原则 (解题技巧) | 优缺点 |
|---|---|---|
OPT (最佳) | 向右看:淘汰未来最长时间不被访问或永不访问的页面。 | 理论上限,无法实现。 |
LRU (最近最久) | 向左看:淘汰过去最长时间未被访问的页面(找离当前最远的左侧数字)。 | 性能最佳,开销大。 |
FIFO (先来先服务) | 看时间:淘汰最早进入内存的页面。 | 简单,但有Belady 异常。 |
CLOCK (时钟) | 扫状态位:遇到1清0,遇到0则置换(给第二次机会)。 | 性价比最高,工程常用。 |
3. 核心计算大题模板
题目:多级页表寻址
假设逻辑地址为 32 位,页面大小为 4KB,页表项大小为 4B。
页内偏移位数:4KB = 2^12,故偏移占 12 位。
页表项数:2^32 / 2^12 = 2^20。
题目:缺页率与有效访问时间 (EAT)
公式:
EAT = (1 - 缺页率) × 内存访问时间 + 缺页率 × (处理中断开销 + 内存访问时间)注意:如果题目提到“更新快表(TLB)”,需在内存访问前加上 TLB 查找时间。
4. 重点概念辨析
内部碎片 vs 外部碎片:
内部碎片:分配给进程的空间中没用上的部分(常见于固定分区、分页)。
外部碎片:太小而无法分配给任何进程的空闲区(常见于动态分区、分段)。
抖动 (Thrashing):由于内存不足,系统频繁地进行换入换出,导致 CPU 大部分时间用于页面置换而非执行程序。
工作集 (Working Set):在某段时间间隔内,进程实际访问页面的集合。
5. 易错点总结
越界判断:在分段计算中,如果偏移量等于段长,也是越界(因为偏移量从 0 开始)。
缺页中断次数:计算置换算法时,前几次填满物理块的过程也算“缺页”。
操作系统核心考点解析:模块三
文件管理、I/O 设备及磁盘调度
本模块侧重于外存的组织结构、设备的控制方式以及提高系统整体吞吐量的优化策略。
1. 文件系统 (File System)
1.1 文件物理结构计算
这是文件管理中最常考的计算题,通常涉及多级索引分配。
直接索引:索引表项直接指向物理块。
间接索引:索引项指向一个存放索引的块(索引块)。
1.2 目录与 FCB
FCB (文件控制块):包含文件名、物理位置、逻辑结构、物理结构等元数据。
索引节点 (Inode):为了加快目录检索速度,将文件名与文件描述信息分开,目录项仅包含文件名和指向 Inode 的指针。
2. 磁盘调度算法 (Disk Scheduling)
磁头移动距离决定了磁盘 I/O 的效率。
算法名称 | 调度逻辑 | 优缺点 |
|---|---|---|
FCFS (先来先服务) | 按请求到达的先后顺序处理 | 公平,但寻道时间长 |
SSTF (最短寻道优先) | 优先处理离磁头当前位置最近的磁道 | 效率高,但会产生**“饥饿”**现象 |
SCAN (电梯算法) | 磁头在盘面上往返移动,沿途处理请求 | 无饥饿,寻道性能平滑 |
C-SCAN (循环扫描) | 单向扫描处理请求,返回时不处理 | 减少了两端请求的等待不均 |
注意:在计算总寻道距离时,若磁头从 53 号移动到 100 号再到 200 号,距离为 |100-53| + |200-100|。
3. I/O 设备管理
3.1 I/O 控制方式演进
方式 | 控制单位 | 硬件干预度 | 特点 |
|---|---|---|---|
程序直接控制 | 字 | CPU 全程忙等 | 效率极低 |
中断驱动方式 | 字 | CPU 仅在开始和结束参与 | 提高并发性 |
DMA 方式 | 块 | 仅在块传输开始/结束参与 | 不经过 CPU,直接入内存 |
通道方式 | 一组块 | CPU 仅需发出启动指令 | 具有独立执行 I/O 程序的能力 |
3.2 SPOOLing 技术 (假脱机)
核心思想:利用磁盘空间作为缓冲区,将独占设备(如打印机)虚拟化为共享设备。
组成:输入井、输出井、输入进程、输出进程。
效果:提高了 I/O 速度,实现了虚拟设备功能。
4. 缓冲技术 (Buffering)
双缓冲:基本实现输入与处理的完全并行。
5. 综合考前提分点
文件的逻辑结构:有结构文件(记录式)和无结构文件(流式,如源代码)。
空闲空间管理:空闲表法、空闲链表法、位示图法(必考:计算行号和列号)。
缓冲区溢出:在设计系统时必须考虑缓冲区的大小,避免产生数据覆盖。
设备分配:必须考虑设备独立性,即应用程序应独立于具体物理设备(逻辑设备名 vs 物理设备名)。
至此,操作系统三大核心模块解析已全部完成。建议结合真题进行解题模板的应用练习!