本文共 1790 字,大约阅读时间需要 5 分钟。
进程调度算法与页面置换、磁盘调度算法的比较分析
1. 进程调度算法
1.1 进程调度的概念
进程调度(CPU 调度)是计算机中的关键任务之一。当CPU空闲时,系统需要选择一个处于就绪状态的进程进行执行。调度发生于以下几种情况:
- 进程从运行状态转为等待状态
- 进程从运行状态转为就绪状态
- 进程从等待状态转为就绪状态
- 进程从运行状态转为终止状态
调度可分为抢占式和非抢占式两种。非抢占式调度允许当前进程持续运行,直到其完成或被阻塞。而抢占式调度则允许正在运行的进程被暂时打断。
1.2 调度算法分类
常见的进程调度算法有:
先来先服务调度算法(FCFS)
- 非抢占式调度,按进程到达顺序依次执行
- 适用于资源受限但长作业优越的场景,可能对短作业不利
最短作业优先调度算法(SJF)
- 抢占式调度,优先处理执行时间最短的进程
- 适用于资源丰富但长作业影响大的场景,但可能导致长作业被忽视
高响应比优先调度算法(HRRN)
- 结合等待时间和服务时间,计算响应比优先级,优先调度响应比高的进程
- 优化了SJF和FCFS的不足
时间片轮转调度算法(RR)
- 抢占式调度,按固定时间片轮流执行进程
- 公平公正,适用于多用户环境
最高优先级调度算法(HPF)
- 静态或动态优先级调度,按优先级执行进程
- 动态调度可根据作业长短或等待时间调整优先级
多级反馈队列调度算法(MFCQ)
- 结合了时间片轮转和最高优先级调度,将系统分为多个优先级队列
- 新进程加入最高优先级队列后立即触发higher priority process,优化了系统响应时间
2. 内存页面置换算法
2.1 缺页异常处理
当CPU访问的页面不在物理内存中时,会触发缺页中断。缺页中断与普通中断不同:
缺页处理流程:
发现缺页 更新物理内存状态 写回到磁盘,并更新页表 重新执行被中断的指令 2.2 页面置换算法评估
页面置换的主要目标是减少页面换入换出的开销。常用算法包括:
最佳页面置换算法(OPT)
- 预见未来访问,置换最久未访问的页面
- 理想状态,但无法实现
先进先出置换算法(FIFO)
- 最先进入序列的页面优先被置换
- 简单性好,但导致页面多次置换,效率低
最近最久未使用(LRU)
- 根据最近的页面使用时间选择置换页
- 历史存用,适用于大部分系统
时钟页面置换算法(CLOCK)
- 使用环形链表,每页标记访问状态和修改状态,定期移除未被使用的页
- 实现简单,效率较高
最不常用页面置换算法(LFU)
- 按照访问频率最低的页面优先替换
- 逻辑简单,但硬件支持成本高
2.3 算法比较
- OPT:ε isLoading 和_maximum future access time
- FIFO:ε istime since enter queue
- LRU:ε oftenest recently used
- CLOCK:ε circular linkage, cleanup strategy
- LFU:ε least frequently used
3. 磁盘调度算法
3.1 磁盘结构
磁盘由多个盘面组成,每个盘面有多个磁道,每个磁道有多个扇区。寻道时间占磁盘操作时间的绝大部分。
3.2 策略优化
磁盘操作本质上是顺序决策,算法包括:
先来先服务(FCFS)
最小寻道时间优先(SSF)
- 优先处理最近当前磁头位置的磁道请求
- 减少寻道时间,但可能导致饥饿现象
扫描算法(SCAN)
- 磁头逐个处理请求,直到转到盘末端
- 返回时继续处理剩余请求,避免饥饿
循环扫描(CSCAN)
- 磁头只处理一个方向上的请求
- 减少磁头反转次数,提高效率
圆形扫描(C-SCAN)
- 与SCAN类似,磁头移动到最高请求位置后立即反转,处理另一端请求
LOOK和 C-LOOK
- 磁头移动至远端请求位置后立即反转
- LOOK允许多个方向调处;C-LOOK只能
4. 算法优化
- 优化目标:减少寻道时间,提高磁盘吞吐量
- 常见优化措施:
- 选择合理的盘面安排策略
- 合理调节磁头移动速度
- 使用先进先出或类似策略,减少磁盘空闲时间
通过对比各类调度和页面置换算法,可以根据系统特点选择最优方案。例如,对于I/O密集型系统,采用时间片轮转或循环扫描调度;而CPU密集型系统,则使用多级反馈队列调度以更高效地管理进程调度。
转载地址:http://ruqiz.baihongyu.com/