前言:本章是基于我们的期末考试范围以及高频考点总结的markdown版本
还有对应的每一章PPT和一部分例题,以及简单题与大题
我分开来发,分别为 基础知识点速览(本章),高频大题解题,ppt与例题.三篇版本
最后祝大家期末考试顺利 o.0
第一章 操作系统引论 - 极速冲刺版
一、操作系统的目标(单选/简答题点)
核心答案:
- 方便性:让计算机更容易使用(提供图形界面、命令行等)
- 有效性:提高资源利用率(CPU、内存、设备),提高系统吞吐量
- 可扩充性:容易增加新功能(比如从单核到多核的支持)
- 开放性:能兼容不同硬件和软件标准
速记口诀 :"便(方便)有(有效)可(可扩充)开(开放)"
二、操作系统的作用(多选题重点)
核心答案:
- 作为用户与计算机硬件之间的接口 (桥梁)
- 提供三种接口:命令接口、图形接口、程序接口
- 作为计算机资源的管理者
- 管理四大资源:CPU、内存、设备、文件
- 作为计算机系统的扩充(扩展机)
- 把硬件包装成更方便使用的形式(比如把硬盘抽象成文件)
速记 :"接口、管家、扩展机"
三、操作系统的发展过程(单选考点)
时间线:
- 手工操作(无OS)→ 效率极低
- 单道批处理(一次一个作业)→ 有OS雏形,但CPU和I/O串行
- 多道批处理 (内存中多个作业)→ 现代OS真正开始,CPU和I/O可以并行
- 分时系统(多用户共享)→ 可以交互了
- 实时系统(及时响应)→ 用于控制领域
- 现代OS(多种技术融合)
关键 :多道程序设计的出现是OS发展的里程碑
四、操作系统的基本类型及其特点(必背表格)
| 类型 | 目标 | 特点 | 缺点 |
|---|---|---|---|
| 批处理系统 | 提高资源利用率、吞吐量 | 自动成批处理、无交互 | 无交互、响应慢 |
| 分时系统 | 提供交互性、及时响应 | 多用户、时间片轮转、交互强 | 不能及时处理紧急任务 |
| 实时系统 | 在规定时间内可靠完成 | 及时响应、高可靠性、专用 | 资源利用率可能不高 |
五、分时系统 vs 实时系统(必考区别)
分时系统追求的目标:
- 及时响应(秒级,比如2-3秒内响应命令)
- 交互性(用户可以随时输入命令)
- 多路性(多个用户同时使用)
- 独立性(每个用户感觉独占计算机)
实时操作系统主要追求目标:
- 实时性(毫秒/微秒级,必须在截止时间内完成)
- 可靠性(不能出错,比如导弹控制)
- 确定性(响应时间可预测)
一句话区别 :分时系统要"快",实时系统要"准时+可靠"
六、批处理系统的缺点(简答题点)
- 无交互性:作业提交后用户不能干预
- 平均周转时间长:短作业可能要等长作业完成
- 作业调试困难:出错后要重新排队
七、操作系统提供的接口(简答题重点)
三类接口:
-
命令接口:
- 联机命令接口(命令行,如Linux shell)
- 脱机命令接口(批处理脚本,如.bat文件)
-
图形用户接口(GUI):
- 窗口、图标、菜单(如Windows桌面)
-
程序接口(系统调用):
- 最重要! 应用程序请求OS服务的唯一方式
- 例如:打开文件(open)、创建进程(fork)
系统调用详细说明(简答题模板):
问:什么是系统调用?它的作用是什么?
答:
- 定义:系统调用是操作系统提供给应用程序的接口,用于请求内核服务。
- 作用:应用程序通过系统调用访问系统资源(如文件、设备),执行特权操作。
- 特点 :
- 每个系统调用有唯一编号
- 执行时从用户态切换到内核态
- 是应用程序与OS的边界
- 例子:读写文件、创建进程、申请内存等。
八、微内核操作系统的特征(多选题必考)
记住这5点,多选题看到就选:
- 内核非常小(只包含最基本功能:进程调度、低级存储管理、中断处理)
- 大多数OS功能作为独立服务进程运行在用户态(文件系统、设备驱动等都放在内核外)
- 服务之间通过消息传递通信(不是直接函数调用)
- 优点:高可靠性(一个服务崩溃不影响内核)、易扩展、易移植
- 缺点:性能较低(因为消息传递开销大)
典型例子:Windows NT早期版本、Mach、Minix
题型应对策略(针对你的一天半)
单选题(5题)预测:
- 问OS的目标(选"有效性"或"方便性")
- 问OS的作用(选"资源管理者")
- 问分时系统的特点(选"交互性")
- 问实时系统的目标(选"实时性"或"可靠性")
- 问系统调用相关(选"程序接口")
多选题(2题)预测:
- 微内核特征(选:内核小、服务外移、消息通信)
- OS的作用(选:接口、资源管理者、扩展机)
简答题(3题)预测:
- 操作系统提供的接口(系统调用) ← 极大概率考!
- 分时系统和实时系统的比较
- 批处理系统的缺点 或 微内核的特点
5分钟极速记忆法
- 目标:便(方便)有(有效)可(可扩充)开(开放)
- 作用:我是桥梁(接口)、我是管家(管理者)、我是魔术师(扩展机)
- 类型 :
- 批处理:工厂流水线,只求产量
- 分时:网吧,大家轮流玩,要响应快
- 实时:导弹控制系统,必须准时+可靠
- 微内核:小政府,大社会(内核小,服务外移)
第二章 进程的描述与控制 - 极速冲刺版
一、进程的概念与引入目的(单选/简答题点)
1. 进程的定义
核心答案 :进程是程序的一次执行过程,是系统进行资源分配和调度的独立单位。
关键理解:
- 进程 ≠ 程序 :
- 程序是静态的代码文件
- 进程是动态的执行过程
- 类比 :
- 程序 = 菜谱(静态)
- 进程 = 按照菜谱做菜的过程(动态)
2. 为什么要引入进程?
引入目的 :为了实现多道程序的并发执行,提高系统资源利用率。
解释:
- 单道程序:CPU和I/O串行,CPU经常闲着等I/O
- 多道程序:多个程序在内存中,A程序等I/O时,CPU去执行B程序
- 问题:多个程序同时运行,需要管理每个程序的执行状态、资源等
- 解决:引入"进程"概念,为每个程序的执行实例建立一个管理实体
速记 :因为要"并发执行",所以需要"进程"来管理
二、进程状态转换(必考,尤其单选)
1. 三状态模型(最基本)
┌───────────┐
│ 就绪 │
└─────┬─────┘
│ 调度
▼
┌───────────┐
│ 运行 │
└─────┬─────┘
阻塞↑ │时间片用完/被抢占
│
┌─────▼─────┐
│ 阻塞 │
└───────────┘
三个状态:
- 就绪(Ready):进程已分配到除CPU外的所有资源,只等CPU
- 运行(Running):正在CPU上执行
- 阻塞(Blocked):等待某事件(如I/O完成),即使给CPU也无法运行
2. 关键转换(单选高频考点)
- 就绪 → 运行 :被进程调度程序选中(调度)
- 运行 → 就绪:时间片用完、被更高优先级进程抢占
- 运行 → 阻塞:请求I/O、等待某事件发生(如等待键盘输入)
- 阻塞 → 就绪 :I/O操作完成、等待的事件发生
特别注意:
- I/O操作完成后,进程状态从"阻塞"变为"就绪"(不是直接到运行!)
- 因为还要等调度程序分配CPU
三、进程控制块(PCB)的作用与存储内容(多选重点)
1. PCB的作用
- 进程存在的唯一标志:没有PCB,就没有这个进程
- OS管理进程的依据:所有进程管理功能都基于PCB
- 进程切换时的现场保存:保存CPU寄存器等现场信息
2. PCB存储内容(多选题看到就选)
必须记住的分类:
-
进程标识信息
- 进程ID(PID)
- 父进程ID(PPID)
- 用户ID
-
处理机状态信息(现场信息)
- 程序计数器(下条指令地址)
- CPU寄存器(通用寄存器、栈指针等)
- 程序状态字(PSW)
-
进程调度信息
- 进程状态(就绪/运行/阻塞)
- 进程优先级
- 调度所需其他信息(如等待时间)
-
进程控制信息
- 内存分配信息(基址、限长)
- 打开文件列表
- 使用的I/O设备信息
- 进程间通信信息
速记口诀 :"标识、现场、调度、控制"四类信息
四、进程的创建(操作系统创建新进程的操作)
创建步骤(简答题模板)
- 申请空白PCB:为新进程分配唯一的进程标识符
- 分配资源:为进程分配内存空间、文件、I/O设备等
- 初始化PCB :
- 设置进程标识信息
- 设置处理机状态信息(如程序计数器指向程序入口)
- 设置进程状态为"就绪"
- 设置优先级等调度信息
- 插入就绪队列:将新进程的PCB插入就绪队列,等待调度
创建原因(什么情况下会创建进程)
- 系统初始化
- 用户请求创建新进程
- 正在运行的进程创建子进程(如fork()调用)
五、原语的概念(单选考点)
定义
原语是由若干条指令组成的、用于完成特定功能的一个过程,且执行过程不可被中断。
特点
- 原子性:要么全做,要么全不做,不可分割
- 在核心态执行:属于操作系统内核功能
- 不可被中断:执行期间不允许响应中断
常见原语
- 创建进程原语
- 撤销进程原语
- 阻塞原语
- 唤醒原语
速记 :原语 = 不可中断的原子操作
六、进程的并发与并行(单选/判断题)
1. 并发(Concurrency)
- 定义:多个进程在同一时间间隔内交替执行
- 特点:宏观上同时,微观上交替
- 例子:单核CPU上运行多个程序
- 判断题考点 :"并发是指多个进程在同一时间段内同时执行"是错的(应该是交替执行)
2. 并行(Parallelism)
- 定义:多个进程在同一时刻同时执行
- 特点:需要多核/多CPU硬件支持
- 例子:多核CPU上每个核运行一个程序
3. 关键区别
- 并发:逻辑上的同时(单核可实现)
- 并行:物理上的同时(需要多核)
速记:
- 并发:轮流使用CPU(如一人同时玩三个手机,其实是快速切换)
- 并行:每人一个CPU同时玩(如三人各玩一个手机)
题型预测与答题技巧
单选题(7题)预测:
- 进程定义:选"程序的一次执行过程"
- 状态转换:I/O完成后,进程从阻塞→就绪
- PCB作用:选"进程存在的唯一标志"
- 进程创建:第一步是"申请空白PCB"
- 原语概念:选"不可中断的原子操作"
- 并发定义:选"同一时间间隔内交替执行"
- 状态转换:时间片用完,进程从运行→就绪
多选题(3题)预测:
- PCB存储内容:选标识信息、现场信息、调度信息、控制信息(四类全选)
- 进程创建步骤:选申请PCB、分配资源、初始化PCB、插入就绪队列
- 进程状态:选就绪、运行、阻塞(三状态)
判断题(1题)预测:
- 可能考点1:"进程是程序的执行过程"(√)
- 可能考点2:"并发是指多个进程同时执行"(×,应该是交替执行)
- 可能考点3:"原语执行过程中可以被中断"(×,不可中断)
5分钟极速记忆法
- 进程是什么:动态的程序执行,为了并发
- 三状态 :就绪(等CPU)、运行(用CPU)、阻塞(等事件)
- 关键转换:I/O完成 → 阻塞变就绪
- PCB:进程的身份证,存四类信息(标识、现场、调度、控制)
- 创建步骤:申请PCB → 分资源 → 初始化 → 入队列
- 原语:不可中断的原子操作
- 并发 vs 并行 :
- 并发:逻辑同时,单核就能实现(快速切换)
- 并行:物理同时,需要多核
实战答题模板
如果考简答题"进程状态转换":
答:进程有三种基本状态:就绪、运行、阻塞。转换关系如下:
- 就绪→运行:进程被调度程序选中
- 运行→就绪:时间片用完或被更高优先级进程抢占
- 运行→阻塞:请求I/O或等待某事件
- 阻塞→就绪:I/O完成或等待事件发生
特别注意:I/O完成后,进程从阻塞状态变为就绪状态,等待调度。
如果考简答题"PCB作用与内容":
答:PCB是进程存在的唯一标志,是OS管理进程的依据。包含四类信息:
- 进程标识信息(PID、PPID等)
- 处理机状态信息(程序计数器、寄存器等)
- 进程调度信息(状态、优先级等)
- 进程控制信息(内存分配、打开文件等)
第三章 进程的同步与通信 - 极速冲刺版
一、同步与互斥的概念(单选/判断/简答)
1. 互斥(Mutual Exclusion)
- 定义:多个进程不能同时访问同一个共享资源
- 特点:竞争关系,只有一个进程能进入临界区
- 例子:打印机、共享变量
- 制约关系来源:对共享资源的排他性使用要求
2. 同步(Synchronization)
- 定义:多个进程按特定顺序执行,一个进程必须等待另一个进程的消息
- 特点:合作关系,进程间有明确的先后顺序
- 例子:生产者生产后消费者才能消费
- 制约关系来源:进程间的直接合作关系
3. 关键区别
- 互斥:强调"不能同时"(排他性)
- 同步:强调"先后顺序"(协调性)
速记 :互斥是"不能一起进",同步是"你先我后"
二、PV操作(综合题必考!)
1. 基本概念
-
P操作(wait/wait操作) :申请资源
cP(S) { S = S - 1; if (S < 0) { 当前进程阻塞,进入等待队列; } } -
V操作(signal/signal操作) :释放资源
cV(S) { S = S + 1; if (S <= 0) { 从等待队列唤醒一个进程; } }
2. 信号量含义
- 信号量S的初始值:表示可用资源数量
- S > 0:可用资源数
- S = 0:无可用资源,也无等待进程
- S < 0 :|S| 表示等待该资源的进程数(重要!)
3. PV操作应用场景
场景一:实现互斥
c
semaphore mutex = 1; // 互斥信号量,初值为1
Process P_i() {
P(mutex); // 进入临界区前
// 临界区代码
V(mutex); // 离开临界区后
}
场景二:实现同步(前趋关系)
P1
|
V
P2
c
semaphore S = 0; // 同步信号量,初值为0
// P1进程
P1() {
// ... 执行代码
V(S); // 通知P2可以执行了
}
// P2进程
P2() {
P(S); // 等待P1的通知
// ... 执行代码
}
4. 经典问题模板(必须掌握!)
生产者-消费者问题
c
semaphore mutex = 1; // 互斥访问缓冲区
semaphore empty = n; // 空缓冲区数量
semaphore full = 0; // 满缓冲区数量
生产者() {
while(1) {
生产产品;
P(empty); // 申请空缓冲区
P(mutex); // 申请缓冲区访问权
产品放入缓冲区;
V(mutex); // 释放缓冲区访问权
V(full); // 增加满缓冲区数
}
}
消费者() {
while(1) {
P(full); // 申请满缓冲区
P(mutex); // 申请缓冲区访问权
从缓冲区取产品;
V(mutex); // 释放缓冲区访问权
V(empty); // 增加空缓冲区数
消费产品;
}
}
读者-写者问题(读者优先)
c
semaphore rw_mutex = 1; // 读写互斥
semaphore mutex = 1; // 更新read_count的互斥
int read_count = 0; // 读者数量
写者() {
P(rw_mutex); // 申请写权限
// 写操作
V(rw_mutex); // 释放写权限
}
读者() {
P(mutex); // 更新read_count前互斥
read_count++;
if (read_count == 1) {
P(rw_mutex); // 第一个读者锁定写权限
}
V(mutex);
// 读操作
P(mutex);
read_count--;
if (read_count == 0) {
V(rw_mutex); // 最后一个读者释放写权限
}
V(mutex);
}
三、优先级倒置及解决方法(单选/简答)
1. 优先级倒置现象
- 定义:高优先级进程被低优先级进程间接阻塞的现象
- 发生场景 :
- 低优先级进程L占有资源R
- 高优先级进程H申请资源R被阻塞
- 中优先级进程M抢占CPU,导致L无法执行从而无法释放R
- 结果:H被M间接阻塞(H优先级 > M优先级 > L优先级)
2. 解决方法
- 优先级继承 :当高优先级进程等待低优先级进程占有的资源时,低优先级进程临时继承高优先级,防止被中优先级进程抢占
- 优先级天花板 :为每个资源设置一个优先级天花板(可能使用该资源的最高优先级),当进程获得资源时,将其优先级提升到天花板优先级
四、死锁(简答题必考!)
1. 死锁概念
- 定义:多个进程因竞争资源而造成的一种互相等待,若无外力作用,这些进程都无法向前推进
- 产生原因 :
- 资源竞争
- 进程推进顺序不当
2. 死锁的四个必要条件(必须同时满足)
- 互斥条件:资源一次只能被一个进程使用
- 请求与保持条件:进程在请求新资源时,保持对已有资源的占有
- 不可剥夺条件:进程已获得的资源在未使用完之前不能被强行剥夺
- 循环等待条件:存在一个进程-资源的循环等待链
速记口诀 :"互请勿循"(互斥、请求与保持、不可剥夺、循环等待)
3. 死锁的预防(破坏必要条件)
- 破坏互斥条件:将独占资源改造成共享资源(不现实,如打印机无法共享)
- 破坏请求与保持条件 :一次性分配策略(静态分配),进程运行前申请所有资源
- 破坏不可剥夺条件:允许抢占资源(进程资源可被剥夺)
- 破坏循环等待条件 :顺序资源分配法(给资源编号,进程必须按编号顺序申请)
4. 死锁的避免(银行家算法)
- 安全状态:系统能按某种顺序为每个进程分配资源,直至满足所有进程的最大需求,使每个进程都能顺利完成
- 银行家算法步骤 :
- 检查请求是否超过进程的最大需求
- 检查请求是否超过系统可用资源
- 试探性分配,修改系统状态
- 执行安全性算法,检查是否安全
- 安全则分配,不安全则让进程等待
5. 死锁的检测与解除
- 检测:资源分配图化简法
- 解除 :
- 资源剥夺法:从其他进程剥夺资源给死锁进程
- 撤销进程法:撤销部分或全部死锁进程
- 进程回退法:让进程回退到避免死锁的状态
题型预测与答题技巧
单选题(5题)预测:
- 同步与互斥的区别
- 信号量S<0时的含义(绝对值表示等待进程数)
- 死锁的必要条件之一(如循环等待条件)
- 优先级倒置的解决方法(优先级继承)
- PV操作中P、V的含义
判断题(1题)预测:
- 可能考点:死锁的必要条件(如"死锁产生的原因是资源不足",×,还有进程推进顺序不当)
- 可能考点:信号量初值含义(如"信号量初值为负数表示有进程等待",×,初值不能为负)
简答题(3题)预测:
- 死锁的四个必要条件(极高概率)
- 如何预防死锁(破坏四个条件的方法)
- 同步与互斥的区别 或 优先级倒置及解决方法
综合题(2题)预测:
- PV操作题:生产者-消费者、读者-写者、前趋图(必须掌握模板!)
- 银行家算法题:判断安全状态、处理资源请求
5分钟极速记忆法
-
同步 vs 互斥
- 同步:你先我后(合作关系)
- 互斥:不能一起用(竞争关系)
-
PV操作
- P:申请资源(-1操作)
- V:释放资源(+1操作)
- 信号量S:正数=可用资源,负数=等待进程数
-
死锁四条件 :"互请勿循"
- 互斥、请求与保持、不可剥夺、循环等待
-
预防死锁:
- 破坏请求与保持:一次性分配
- 破坏循环等待:按序申请
-
优先级倒置:高优先级被低优先级间接阻塞
- 解决:优先级继承(低优先级临时继承高优先级)
综合题答题模板
PV操作题答题步骤:
- 分析关系:找出同步关系和互斥关系
- 定义信号量 :
- 互斥信号量:mutex,初值1
- 同步信号量:根据条件设置,初值通常为0或n
- 写出伪代码:按模板填写
- 检查:确保P、V操作成对出现
银行家算法题答题步骤:
- 列出已知:可用资源、最大需求、已分配、还需资源
- 安全性检查 :
- 找还需资源 ≤ 可用资源的进程
- 假定完成,释放资源,更新可用资源
- 重复直到所有进程完成(安全)或找不到(不安全)
- 资源请求处理 :
- 检查请求 ≤ 还需资源
- 检查请求 ≤ 可用资源
- 试探分配后检查安全性
第四章 处理机调度 - 极速冲刺版
一、调度算法分类与特点(简答题必考!)
1. 先来先服务(FCFS)
算法规则 :按作业/进程到达顺序排队,先到先服务
特点:
- 最简单的调度算法
- 不可抢占
- 对长作业有利,对短作业不利
- 可能产生"饥饿"现象吗?不会!(但短作业要等长作业)
缺点:
- 平均等待时间较长
- 不利于短作业(短作业可能等待很长时间)
- 不利于I/O型作业(CPU密集型作业会长时间占用CPU)
例子:
作业到达顺序:P1(24ms)、P2(3ms)、P3(3ms)
执行顺序:P1→P2→P3
等待时间:P1=0, P2=24, P3=27
平均等待时间:(0+24+27)/3=17ms
2. 短进程优先(SPF)/短作业优先(SJF)
算法规则 :选择预计运行时间最短的作业/进程
特点:
- 可抢占 (最短剩余时间优先,SRTF)和不可抢占两种
- 平均等待时间最短(理论最优)
- 对长作业不利,可能产生"饥饿"现象
缺点:
- 需要预知作业运行时间(实际难以准确估计)
- 长作业可能永远得不到调度(饥饿)
例子:
作业:P1(6ms)、P2(8ms)、P3(7ms)、P4(3ms)
按SPF顺序:P4(3ms)→P1(6ms)→P3(7ms)→P2(8ms)
3. 时间片轮转(RR)
算法规则 :将CPU时间分成固定大小的时间片,按FCFS排队,每个进程执行一个时间片
特点:
- 专为分时系统设计
- 可抢占
- 时间片大小影响性能:
- 时间片太大→退化为FCFS
- 时间片太小→上下文切换开销过大
优点:
- 公平性好
- 响应时间快,适合交互式系统
缺点:
- 平均等待时间可能较长
- 上下文切换开销
4. 高响应比优先(HRRN)
算法规则 :选择响应比最高的进程
响应比公式:
响应比 = (等待时间 + 要求服务时间) / 要求服务时间
= 1 + (等待时间 / 要求服务时间)
特点:
- 非抢占式
- 兼顾了FCFS和SPF的优点
- 短作业等待时间短→响应比高
- 长作业等待时间增加→响应比提高,避免饥饿
- 不会产生饥饿
5. 多级反馈队列(MFQ)
算法规则(必须背熟,简答题高频!):
- 设置多个就绪队列,每个队列优先级不同
- 队列优先级越高,时间片越小(如Q1: 8ms, Q2: 16ms, Q3: FCFS)
- 新进程进入最高优先级队列(队列1)
- 进程用完当前队列时间片还未完成,则降到下一级队列
- 只有高优先级队列为空时,才调度低优先级队列
- 在低优先级队列中等待时间过长的进程可能被提升优先级(防止饥饿)
特点:
- 综合了多种算法优点
- 对交互型作业友好(短作业快速完成)
- 对CPU密集型作业友好(长作业最终能得到执行)
- 现代操作系统常用(如UNIX、Windows)
二、调度相关指标计算(必考计算)
关键指标:
- 周转时间 = 完成时间 - 到达时间
- 带权周转时间 = 周转时间 / 服务时间
- 平均周转时间 = 所有作业周转时间之和 / 作业数
- 平均带权周转时间 = 所有带权周转时间之和 / 作业数
带权周转时间意义:衡量作业的相对等待时间,值越小越好(≥1)
计算例子(FCFS算法):
作业 到达时间 服务时间 开始时间 完成时间 周转时间 带权周转时间
P1 0 8 0 8 8 1.0
P2 1 4 8 12 11 2.75
P3 2 9 12 21 19 2.11
平均周转时间 = (8+11+19)/3 = 12.67
平均带权周转时间 = (1.0+2.75+2.11)/3 = 1.95
计算步骤:
- 按算法确定执行顺序
- 计算开始时间(上一个的完成时间,但要考虑到达时间)
- 完成时间 = 开始时间 + 服务时间
- 周转时间 = 完成时间 - 到达时间
- 带权周转时间 = 周转时间 / 服务时间
三、进程调度的任务与方式
1. 进程调度的任务
- 保存当前运行进程的现场(PCB)
- 按调度算法从就绪队列选择下一个进程
- 为选中进程恢复现场
2. 调度方式
-
非抢占式:
- 进程主动放弃CPU(完成、等待I/O)
- 实现简单,系统开销小
- 响应时间可能较长
- 例子:FCFS、SPF(非抢占)、HRRN
-
抢占式:
- 系统可强行剥夺正在运行进程的CPU
- 响应时间快,适合交互系统
- 实现复杂,系统开销大
- 例子:RR、SPF(抢占式)、多级反馈队列
四、调度算法对作业的影响
不同算法比较表(简答题模板)
| 算法 | 特点 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| FCFS | 先到先服务,不可抢占 | 简单、公平 | 平均等待时间长,不利于短作业 | 早期批处理系统 |
| SJF/SPF | 最短作业优先,可抢占/不可抢占 | 平均等待时间最短 | 需要预知时间,长作业可能饥饿 | 批处理系统 |
| RR | 时间片轮转,可抢占 | 响应快、公平 | 时间片大小敏感,上下文切换开销 | 分时系统 |
| HRRN | 高响应比优先,不可抢占 | 兼顾长短作业,无饥饿 | 需要计算响应比 | 批处理系统 |
| MFQ | 多级队列,可抢占 | 综合性能好,灵活 | 算法复杂,参数设置影响大 | 通用操作系统 |
题型预测与答题技巧
单选题(3题)预测:
- 问某种算法的特点(如"RR算法中,时间片太大时相当于什么算法?"→FCFS)
- 问调度方式(抢占式 vs 非抢占式)
- 问带权周转时间的计算或含义
简答题(3题)预测:
- 比较FCFS和RR算法(或比较几种算法)
- 多级反馈队列的工作原理(极高概率!)
- 高响应比优先算法的原理和优点
判断题(1题)预测:
- 可能考点:SJF算法能保证最短平均等待时间(√)
- 可能考点:时间片轮转算法会产生饥饿现象(×,不会)
- 可能考点:多级反馈队列中,低优先级队列的时间片更小(×,应该是更大或FCFS)
5分钟极速记忆法
-
五个算法特点:
- FCFS:排队买票,先来先买
- SJF:谁快谁先(但长的可能饿死)
- RR:轮流坐庄,每人一小会儿
- HRRN:等得越久,优先级越高(照顾老人)
- 多级反馈:新人优先,做不完降级
-
关键公式:
- 周转时间 = 完成 - 到达
- 带权周转时间 = 周转时间 / 服务时间
- 响应比 = 1 + 等待时间/服务时间
-
重要结论:
- SJF平均等待时间最短(理论上)
- RR适合交互系统
- 多级反馈是现代OS常用的
- HRRN不会饿死长作业
简答题答题模板
模板1:比较两种算法
一、算法原理
FCFS:按到达顺序排队...
RR:将CPU时间分成时间片...
二、主要区别
1. 调度方式:FCFS非抢占,RR抢占
2. 响应时间:FCFS可能较长,RR响应快
3. 适用场景:FCFS适合批处理,RR适合分时
三、优缺点
FCFS优点:简单、公平;缺点:平均等待时间长
RR优点:响应快;缺点:上下文切换开销大
模板2:多级反馈队列工作原理
一、队列设置
设置多个优先级不同的就绪队列,优先级越高时间片越小。
二、调度规则
1. 新进程进入最高优先级队列
2. 进程用完当前队列时间片未完成,则降级到下一队列
3. 高优先级队列为空时,才调度低优先级队列
4. 可设置老化机制,防止低优先级队列进程饥饿
三、优点
1. 综合多种算法优点
2. 短作业快速响应
3. 长作业最终能完成
4. 灵活可配置
模板3:高响应比优先算法
一、响应比公式
响应比 = 1 + 等待时间/要求服务时间
二、调度规则
每次选择响应比最高的进程运行
三、优点
1. 兼顾长短作业:短作业等待时间短,响应比高;长作业等待时间增加,响应比提高
2. 不会产生饥饿现象
3. 无需预知作业运行时间
四、缺点
需要计算响应比,增加系统开销
计算题步骤
已知: 作业到达时间、服务时间、调度算法
求: 平均周转时间、平均带权周转时间
步骤:
- 确定顺序:根据算法决定作业执行顺序
- 画时间线 :
- 开始时间 = max(到达时间, 上一个作业完成时间)
- 完成时间 = 开始时间 + 服务时间
- 计算 :
- 周转时间 = 完成时间 - 到达时间
- 带权周转时间 = 周转时间 / 服务时间
- 求平均 :
- 平均周转时间 = 总和 / 作业数
- 平均带权周转时间 = 总和 / 作业数
第五章 存储器管理 - 极速冲刺版
一、地址重定位(逻辑地址转物理地址)
1. 概念:
- 逻辑地址:程序编译链接后生成的地址,从0开始编址。
- 物理地址:内存中的实际地址。
- 地址重定位:将逻辑地址转换为物理地址的过程。
2. 两种重定位方式:
-
静态重定位:
- 在程序装入内存时一次性完成地址转换
- 程序运行期间不能在内存中移动
- 实现简单,无硬件支持要求
-
动态重定位:
- 在程序执行期间进行地址转换(每条指令执行时)
- 需要硬件支持(基址寄存器)
- 程序可在内存中移动,便于内存管理
- 现代操作系统常用方式
考试重点 :动态重定位更灵活,支持程序移动和内存紧凑
二、存储管理方案分类
(一)连续分配:程序在内存中连续存放
1. 固定分区:
- 内存预先划分为若干个固定大小的分区
- 内部碎片:分区内未被利用的空间(分区已分配但作业较小)
- 例子:分区大小分为小、中、大三种
2. 可变分区:
- 根据作业大小动态创建分区
- 外部碎片:分区之间的零散小空间,无法被利用
- 分配算法 :
- 首次适应:从低地址开始找第一个够用的分区(速度快)
- 最佳适应:找大小最接近的分区(产生小碎片多)
- 最坏适应:找最大的分区(减少小碎片)
3. 拼接技术(紧凑):
- 将内存中多个分散的空闲区合并成一个大的空闲区
- 需要动态重定位支持(因为程序地址会改变)
- 开销大,不宜频繁进行
(二)非连续分配:程序分散在内存中
1. 页式存储管理(重点!)
- 基本思想 :
- 逻辑空间和物理空间都划分为固定大小的页(页面)
- 页面大小通常为2的幂(如4KB)
- 逻辑地址结构 :
页号P + 页内偏移W - 页表:实现页号→物理块号的映射
- 特点 :
- 无外部碎片,有内部碎片(平均半页)
- 内存利用率高,管理简单
- 需要两次访存(查页表+取数据),用快表TLB加速
2. 段式存储管理
- 基本思想:按逻辑单位(模块)划分,每段长度可变
- 逻辑地址结构 :
段号S + 段内偏移W - 段表:包含段基址和段长(用于越界检查)
- 特点 :
- 有外部碎片,无内部碎片
- 便于共享和保护(以段为单位)
- 符合程序逻辑结构
3. 段页式存储管理(结合两者优点)
- 基本思想:先分段,每段内再分页
- 逻辑地址结构 :
段号S + 段内页号P + 页内偏移W - 需要段表 和页表(每个段一个页表)
- 特点 :
- 结合段式和页式优点
- 便于共享保护,且无外部碎片
- 地址转换复杂,开销大
【页式 vs 段式 对比表】(简答题高频!)
| 对比项 | 页式管理 | 段式管理 |
|---|---|---|
| 划分单位 | 物理单位(固定大小) | 逻辑单位(可变长度) |
| 地址空间 | 一维 | 二维 |
| 碎片 | 内部碎片 | 外部碎片 |
| 共享保护 | 不易实现 | 容易实现 |
| 表结构 | 页表(页号→块号) | 段表(段基址、段长) |
| 优势 | 内存利用率高,管理简单 | 符合程序结构,便于共享 |
三、虚拟存储的特征(简答题必背!)
三大特征:
- 多次性:一个作业被分成多次调入内存运行(区别于传统的一次性装入)
- 对换性:允许在运行过程中换进换出(作业不必常驻内存)
- 虚拟性:从逻辑上扩充内存容量,使用户感觉内存远大于实际
一句话 :虚拟存储是基于局部性原理,通过请求调入和置换功能实现的逻辑内存扩充技术
四、局部性原理及其应用
两种局部性:
- 时间局部性 :刚被访问的单元不久可能再次被访问
- 原因:循环、递归等程序结构
- 空间局部性 :刚被访问单元附近的单元不久可能被访问
- 原因:顺序执行、数组访问
应用:
- 虚拟存储技术的基础
- 高速缓存(Cache)的设计依据
- 预取技术(Prefetching)
五、请求分页系统
1. 页表字段扩展:
在基本页表(页号→块号)基础上增加:
- 状态位/有效位:表示该页是否在内存中
- 访问字段:记录访问次数或时间,用于页面置换
- 修改位(脏位):表示该页是否被修改过(置换时是否需要写回外存)
- 外存地址:该页在外存中的位置
2. 抖动(颠簸)
- 定义:进程频繁进行页面置换,大部分时间花在页面调入调出,系统效率急剧下降
- 原因:进程分配的物理块太少,无法容纳其工作集
- 防止方法 :
- 采用局部置换策略(只置换自己的页面)
- 引入工作集模型,保证足够物理块
- 调整多道程序度(减少并发进程数)
- 使用合适的页面置换算法(如LRU)
六、页面置换算法(综合题可能考!)
1. 最佳置换算法(OPT)
- 规则:淘汰未来最长时间内不再被访问的页面
- 特点:理论最优,无法实际实现(需要预知未来)
- 用途:作为评价其他算法的基准
2. 先进先出(FIFO)
- 规则:淘汰最早进入内存的页面
- 特点 :
- 实现简单(队列)
- 可能产生Belady异常:增加物理块数,缺页率反而上升
- 性能较差
3. 最近最久未使用(LRU)
- 规则:淘汰最近最长时间未被访问的页面
- 特点 :
- 性能接近OPT
- 实现复杂(需要硬件支持:移位寄存器或栈)
- 不会出现Belady异常
4. 时钟置换算法(Clock/NRU)
- 规则 :
- 每页设置一个访问位,被访问时置1
- 指针循环扫描,访问位=0则淘汰,=1则置0并继续
- 特点:LRU的近似实现,开销较小,实际系统常用
【算法对比表】
| 算法 | 规则 | 特点 | 实现难度 | 是否Belady异常 |
|---|---|---|---|---|
| OPT | 未来最久不用 | 理论最优 | 不可实现 | 否 |
| FIFO | 先进先出 | 简单,性能差 | 易 | 是 |
| LRU | 最近最久未用 | 性能好 | 难 | 否 |
| Clock | 访问位为0淘汰 | 近似LRU | 中等 | 否 |
七、页式存储地址转换计算(综合题必考!)
1. 基本转换步骤:
已知 :逻辑地址LA,页面大小L,页表
求:物理地址PA
步骤:
- 计算页号和页内偏移 :
- 页号 P = LA / L
- 页内偏移 W = LA % L
- 查页表:用P查页表,得物理块号B
- 计算物理地址:PA = B × L + W
注意:页面大小L通常是2的幂,如4KB=4096=2^12,则偏移占12位
2. 带快表(TLB)的地址转换:
-
快表:高速缓存,存放最近使用的页表项
-
有效访问时间(EAT)计算 :
EAT = 命中率 × (访问快表时间 + 访问内存时间) + 未命中率 × (访问快表时间 + 访问页表时间 + 访问内存时间) -
通常假设 :
- 访问快表时间忽略不计(或很小)
- 访问页表需要一次内存访问
- 访问数据需要一次内存访问
举例 :
快表命中率80%,访问内存时间100ns,访问快表时间20ns
EAT = 0.8×(20+100) + 0.2×(20+100+100) = 0.8×120 + 0.2×220 = 96+44=140ns
3. 缺页中断处理:
如果页面不在内存中(状态位=0),则发生缺页中断:
- 从外存调入所需页面
- 如果内存满,按置换算法淘汰一页
- 如果淘汰页被修改过(脏位=1),需写回外存
- 更新页表
- 重新执行被中断的指令
缺页处理时间包括磁盘I/O时间,通常很长(毫秒级)
题型预测与答题技巧
单选题(9题)预测:
- 地址重定位方式(动态重定位特点)
- 碎片类型(固定分区→内部碎片,可变分区→外部碎片)
- 分配算法特点(首次适应、最佳适应比较)
- 页式管理优点(无外部碎片)
- 段式管理优点(便于共享)
- 虚拟存储特征(三大特征)
- 局部性原理(时间局部性 vs 空间局部性)
- 页面置换算法(FIFO的Belady异常)
- 快表作用(减少访存次数)
多选题(3题)预测:
- 虚拟存储的特征(多次性、对换性、虚拟性)
- 页面置换算法对比(哪些会产生Belady异常)
- 存储管理方案分类(连续、非连续)
简答题(4题)预测:
- 虚拟存储器的特征(极高概率)
- 分页和分段的主要区别(极高概率)
- 抖动的原因和防止方法
- 页面置换算法原理(如LRU、Clock)
综合题(1题)预测:
- 页式地址转换计算(给逻辑地址、页表、页面大小,求物理地址,可能含快表)
- 页面置换算法应用(给访问序列和物理块数,计算缺页次数和缺页率)
5分钟极速记忆法
-
地址重定位:
- 静态:装入时转换,不能移动
- 动态:执行时转换(基址寄存器),能移动
-
存储管理:
- 连续分配:固定分区(内碎片)、可变分区(外碎片)
- 非连续:页式(固定大小,页表)、段式(变长,段表)、段页式(结合)
-
虚拟存储三大特征 :多(多次性)对(对换性)虚(虚拟性)
-
局部性原理:
- 时间局部性:刚用的再用(循环)
- 空间局部性:用旁边的(数组)
-
页面置换算法:
- OPT:未来最久不用(理论最优)
- FIFO:先进先出(Belady异常)
- LRU:最近最久未用(性能好)
- Clock:看访问位,为0淘汰
-
地址转换步骤:
- 算页号、偏移
- 查页表得块号
- 物理地址=块号×页面大小+偏移
简答题答题模板
模板1:虚拟存储器的特征
一、多次性:一个作业被分成多次调入内存运行,区别于传统的一次性装入。
二、对换性:允许作业在运行过程中换进换出,作业不必常驻内存。
三、虚拟性:从逻辑上扩充内存容量,使用户感觉到的内存容量远大于实际内存容量。
虚拟存储是基于局部性原理,通过请求调入和置换功能实现的逻辑内存扩充技术。
模板2:分页和分段的主要区别
1. 划分单位:页是信息的物理单位,大小固定;段是信息的逻辑单位,长度可变。
2. 地址空间:页式地址空间是一维的;段式地址空间是二维的(段号+段内偏移)。
3. 碎片问题:页式有内部碎片,无外部碎片;段式有外部碎片,无内部碎片。
4. 共享保护:页式不易实现共享保护;段式便于实现,可以以段为单位进行共享和保护。
5. 管理方式:页式通过页表映射;段式通过段表映射(含段基址和段长)。
模板3:抖动的原因和防止方法
抖动是指进程频繁进行页面置换,系统大部分时间花在页面调入调出上,效率急剧下降的现象。
主要原因:系统分配给进程的物理块太少,无法容纳其工作集。
防止方法:
1. 采用局部置换策略,避免一个进程的抖动影响其他进程。
2. 引入工作集模型,确保每个进程有足够的物理块。
3. 调整多道程序度,减少系统中并发执行的进程数。
4. 采用合适的页面置换算法,如LRU等。
模板4:LRU置换算法原理
LRU(最近最久未使用)置换算法选择最近最长时间未被访问的页面予以淘汰。
原理依据:程序的局部性原理,认为过去一段时间内未访问的页面,在将来也可能不会被访问。
实现方法:
1. 计数器法:为每页设置计数器,访问时更新,选择计数器值最大的页面淘汰。
2. 栈法:维护一个访问顺序栈,访问页面时移到栈顶,淘汰栈底页面。
特点:性能接近最佳置换算法,但实现开销较大,需要硬件支持。
综合题解题步骤
类型一:地址转换计算
题目示例:逻辑地址0x3A7F,页面大小4KB,页表如下,求物理地址。
解题步骤:
- 确定页面大小:4KB=4096字节=2^12,所以页内偏移占12位
- 分离页号和偏移 :
- 逻辑地址0x3A7F = 0011 1010 0111 1111(二进制)
- 后12位是偏移:1010 0111 1111 = 0xA7F
- 前几位是页号:0011 = 3(假设地址空间32位,具体看题目)
- 查页表:页号3对应的物理块号(假设为5)
- 计算物理地址 :
- 物理块号5,偏移0xA7F
- 物理地址 = 5×4096 + 0xA7F = 20480 + 2687 = 23167 = 0x5A7F
类型二:页面置换算法应用
题目示例:页面访问序列:1,2,3,4,1,2,5,1,2,3,4,5,物理块数=3,用FIFO算法求缺页次数和缺页率。
解题步骤:
-
画表:按访问顺序,记录物理块中页面变化
-
规则:先进先出,缺页时淘汰最早进入的
-
计算 :
访问序列:1 2 3 4 1 2 5 1 2 3 4 5 物理块3个: 1: 1 (缺) [1] 2: 2 (缺) [1,2] 3: 3 (缺) [1,2,3] 4: 4 (缺) 淘汰1 → [2,3,4] 1: 1 (缺) 淘汰2 → [3,4,1] 2: 2 (缺) 淘汰3 → [4,1,2] 5: 5 (缺) 淘汰4 → [1,2,5] 1: 1 (在) [1,2,5] 2: 2 (在) [1,2,5] 3: 3 (缺) 淘汰1 → [2,5,3] 4: 4 (缺) 淘汰2 → [5,3,4] 5: 5 (在) [5,3,4] 缺页次数:9次 缺页率:9/12=75%
LRU算法:记录最近访问时间,淘汰最久未访问的
第六章 设备管理 - 极速冲刺版
一、I/O设备控制方式(单选/判断/简答)
四种控制方式(按性能从低到高):
1. 程序直接控制方式(轮询)
- 工作原理:CPU不断查询设备状态,直到设备准备好才进行数据传输。
- 特点 :
- CPU利用率极低(大量时间在等待和查询)
- 实现简单
- 适用于慢速设备
- 数据流向:设备 → CPU寄存器 → 内存
2. 中断驱动方式
- 工作原理:CPU发出I/O命令后继续执行其他任务,设备准备好后发出中断信号,CPU响应中断处理数据传输。
- 特点 :
- 提高了CPU利用率(不必轮询等待)
- 但每次传输一个数据单位(字/字节)就要中断一次,开销仍然较大
- 数据流向:设备 → CPU寄存器 → 内存
- 适用场景:低速设备,如键盘、鼠标
3. DMA方式(直接存储器访问)
- 工作原理 :在DMA控制器控制下,设备与内存直接交换数据,不需要CPU干预传输过程。
- 特点 :
- 数据传输单位是数据块
- 仅在开始(设置参数)和结束(处理中断)时占用CPU
- 需要DMA控制器硬件支持
- 数据流向 :设备 ↔ DMA控制器 ↔ 内存(不经过CPU)
- 适用场景:高速设备,如磁盘、光盘
4. 通道控制方式
- 工作原理:通道是专门处理I/O的处理器,可执行通道程序,控制多台设备。
- 特点:CPU干预最少,性能最高,实现最复杂。
速记口诀 :"轮询(程序控制) → 中断 → DMA → 通道"(性能越来越高,CPU干预越来越少)
二、中断驱动方式与DMA方式的应用场景(单选/判断)
中断驱动方式适用场景:
- 低速设备:键盘、鼠标、串口
- 数据量小:每次传输数据量不大
- 原因:每传输一个单位数据就中断一次,如果数据量大,中断次数过多会严重降低CPU效率。
DMA方式适用场景:
- 高速设备:磁盘、光盘、网卡(高速)
- 数据量大:需要传输大量连续数据
- 原因:以数据块为单位传输,传输过程不需要CPU参与,大大减少中断次数。
重要判断题:
- "DMA方式下数据传输完全不需要CPU干预"(×,需要CPU初始化和结束处理)
- "中断驱动方式适合高速设备"(×,适合低速设备)
三、设备控制器的基本功能(单选/简答)
设备控制器是CPU与设备之间的接口,接收CPU命令控制设备。六大功能:
- 接收和识别CPU命令:有命令寄存器存储命令,并能识别不同命令。
- 数据交换:实现CPU与控制器、控制器与设备之间的数据交换。
- 设备状态的了解和报告:状态寄存器记录设备状态(忙/闲/就绪/错误)。
- 地址识别:识别设备地址,让CPU能选择特定设备。
- 数据缓冲:提供数据缓冲区,缓解速度差异。
- 差错控制:检测和纠正数据传输中的错误。
速记口诀 :"接命令、换数据、报状态、认地址、缓数据、查错误"
四、设备标识(逻辑设备名、物理设备名)(单选)
物理设备名:
- 系统用于唯一标识设备的名称
- 与硬件直接相关,如
/dev/sda1、COM1 - 缺点:用户难以记忆,设备更换后名称可能变化
逻辑设备名:
- 用户或程序使用的抽象设备名称
- 与具体物理设备无关,如
打印机1、显示器 - 优点 :实现设备独立性,程序不用修改就能使用不同物理设备
映射关系:
应用程序 → 逻辑设备名 → 设备无关软件 → 物理设备名 → 设备驱动程序 → 物理设备
关键点 :逻辑设备名到物理设备名的映射由设备无关软件完成,不是设备驱动程序。
五、设备无关软件的作用(简答题重点)
设备无关软件(设备独立性软件)位于设备驱动程序之上,主要作用:
- 统一接口:向上层提供统一的系统调用接口,隐藏设备细节。
- 设备命名与映射:管理逻辑设备名到物理设备名的映射,实现设备独立性。
- 设备保护:检查用户对设备的访问权限。
- 提供与设备无关的块大小:屏蔽不同设备的物理块大小差异。
- 缓冲区管理:提供缓冲区,协调CPU与设备速度差异。
- 错误报告:处理设备驱动程序返回的错误。
- 设备分配与释放:管理共享设备的分配和回收。
设备独立性的好处:
- 方便编程:用户使用逻辑设备名,不用关心物理设备。
- 易于扩展:增加新设备只需增加驱动程序,不影响上层。
- 提高利用率:动态映射可将逻辑设备映射到空闲物理设备。
六、DMA方式的数据通路(单选/判断)
关键概念:
- 数据流向 :设备 ↔ DMA控制器 ↔ 内存
- 不经过CPU :数据传输过程中,数据不经过CPU寄存器,直接在设备和内存间传输。
DMA控制器与CPU共享内存的冲突解决:
- 停止CPU访问内存:DMA传输时,CPU停止访存(简单,但CPU性能受影响)。
- 周期窃取:DMA在CPU不访存的周期访问内存(常用)。
- 交替访存:将存储周期分成两个时间片,一个给CPU,一个给DMA。
DMA传输过程:
- 初始化:CPU设置DMA控制器参数(内存起始地址、设备地址、传输字节数)。
- 启动传输:CPU启动DMA,继续执行其他任务。
- 数据传输 :DMA控制器管理数据传输,一个字/字节地传输,但不需要CPU干预。
- 结束处理:传输完成,DMA控制器发中断给CPU,CPU进行后续处理。
重要区别:
- 中断方式:数据经过CPU(设备→CPU→内存)。
- DMA方式:数据不经过CPU(设备→内存)。
题型预测与答题技巧
单选题(4题)预测:
- 问哪种I/O控制方式CPU利用率最低(程序直接控制/轮询)。
- 问DMA方式的特点(数据传输不经过CPU,但需要初始化)。
- 问设备控制器的功能(如数据缓冲)。
- 问逻辑设备名的优点(设备独立性)。
判断题(2题)预测:
- "DMA方式下,数据传输完全不需要CPU干预"(×,需要初始化和结束处理)。
- "中断驱动方式适用于磁盘等高速设备"(×,适用于低速设备)。
- "设备无关软件位于设备驱动程序之上"(√)。
- "逻辑设备名到物理设备名的映射由设备驱动程序完成"(×,由设备无关软件完成)。
简答题(2题)预测:
- 设备无关软件的作用(极高概率!)
- 比较中断驱动方式和DMA方式(或问DMA工作原理)
5分钟极速记忆法
-
I/O控制方式四兄弟:
- 轮询(程序控制):CPU傻等,效率最低
- 中断:设备叫CPU一下,但太频繁(每传一个就叫)
- DMA:雇了个管家,CPU只需要吩咐,管家自己搬数据
- 通道:雇了个专业经理,能管多个设备
-
设备控制器功能 :"接命令、换数据、报状态、认地址、缓数据、查错误"
-
设备标识:
- 物理设备名:身份证号(唯一但难记)
- 逻辑设备名:外号(好记,可以换人对应)
-
设备无关软件作用:
- 统一接口、设备映射、设备保护
- 缓冲区、错误处理、设备分配
-
DMA数据通路 :设备 ↔ DMA ↔ 内存(不经过CPU)
简答题答题模板
模板1:设备无关软件的作用(必背!)
设备无关软件,也称为设备独立性软件,位于设备驱动程序之上,其主要作用包括:
一、提供统一接口:向上层应用程序提供统一的系统调用接口,隐藏不同设备的细节差异。
二、设备命名与映射:管理逻辑设备名到物理设备名的映射,实现设备独立性。用户使用逻辑设备名,系统自动映射到具体物理设备。
三、设备保护:检查用户对设备的访问权限,防止非法访问。
四、提供与设备无关的块大小:屏蔽不同设备的物理块大小差异,向上提供统一的逻辑块大小。
五、缓冲区管理:提供缓冲区,协调CPU与设备之间的速度差异,提高系统性能。
六、错误报告:处理设备驱动程序返回的错误,并以统一方式向上层报告。
七、设备分配与释放:管理共享设备的分配和回收,提高资源利用率。
设备独立性的好处:方便用户编程、提高系统可扩展性、提高资源利用率。
模板2:比较中断驱动方式和DMA方式
中断驱动方式和DMA方式的主要区别如下:
一、数据传输单位:
- 中断驱动方式:每次传输一个数据单位(字或字节)。
- DMA方式:每次传输一个数据块。
二、CPU介入程度:
- 中断驱动方式:每传输一个单位数据都需要CPU介入(执行中断服务程序)。
- DMA方式:仅在传输开始前(CPU设置DMA控制器参数)和传输结束后(DMA控制器发中断)需要CPU介入,数据传输过程由DMA控制器管理,不需要CPU干预。
三、适用场景:
- 中断驱动方式:适用于低速设备,如键盘、鼠标。
- DMA方式:适用于高速设备,如磁盘、光盘。
四、系统开销:
- 中断驱动方式:中断次数多,CPU开销大。
- DMA方式:大大减少了CPU开销,提高了系统并行性。
五、实现复杂度:
- 中断驱动方式:实现相对简单。
- DMA方式:需要DMA控制器硬件支持,实现复杂。
模板3:DMA方式的工作原理
DMA(直接存储器访问)方式是一种高效的I/O控制方式,其工作原理如下:
一、传输前准备:
1. CPU设置DMA控制器参数:内存起始地址、设备地址、传输字节数等。
2. CPU启动DMA传输,然后继续执行其他任务。
二、数据传输过程:
1. DMA控制器接管总线控制权。
2. 数据直接在设备和内存之间传输,不经过CPU。
3. 每传输一个单位(字或字节),DMA控制器修改地址和计数器。
三、传输结束处理:
1. 传输完成,DMA控制器向CPU发出中断请求。
2. CPU响应中断,进行后续处理(如校验数据等)。
DMA方式的特点:
1. 数据传输以数据块为单位。
2. 传输过程中不需要CPU干预,大大减少了CPU开销。
3. 需要DMA控制器硬件支持。
4. 适用于高速、大数据量传输。