声明: 1. 本文为我的个人复习总结, 并非那种从零基础开始普及知识 内容详细全面, 言辞官方的文章
2. 由于是个人总结, 所以用最精简的话语来写文章
3. 若有错误不当之处, 请指出
进程调度
调度算法的评价指标:
- CPU 利用率 确保 CPU 是始终匆忙的状态
- 系统吞吐量 单位时间内 CPU 完成进程的数量
- 周转时间 是进程运行和阻塞时间总和, 越小越好
- 等待时间 进程处于就绪队列的时间
- 响应时间 用户提交请求到系统产生响应所花费的时间
调度算法:
类型: 非抢占式调度算法
(没时钟中断) 和 抢占式调度算法
(有时钟中断)
-
先来先服务
-
最短作业优先
-
高响应比优先 (等待时间+服务时间)/服务时间, 其实就是高服务比
-
时间片轮转
-
最高优先级
-
多级反馈队列 是「时间片轮转算法」和「最高优先级算法」的综合和发展
-
「多级」表示有多个不同优先级级别的队列,优先级越小 越优先运行
-
「反馈」新的进程会被放入到第⼀级队列的末尾,按先来先服务的原则排队等待被调度;
如果在第⼀级队列规定的时间片内没运行完成,则将其转⼊到第二级队列的末尾,以此类推,直至完成;
-
页面置换
缺页中断(缺页异常):
当访问内存中的某一页面不存在时, 则去磁盘里寻找有无此页面, 若找到则将其换入到内存
若内存已满, 则进行页面置换(淘汰掉缓存中的某一页面 置出后, 再将此页面换入)
页面置换算法:
-
最佳页面置换算法(OPT)
置换在「未来」最长时间不访问的页面
这种算法不可能实现, 因为无法预测哪个页面将许久不会再次被访问
-
先进先出置换算法(FIFO)
简单
有可能把经常缓存的页面置换出去
-
最近最久未使用的置换算法(LRU)
较优, 但不易实现
-
最不常用置换算法(LFU)
较优, 但不易实现
最近一段时间经常访问, 不代表当前一小段时间还被经常访问
-
时钟页面置换算法(Lock)
是一个环形链表, 同时具有 LRU + FIFO 的优点
流程:
检查表针指向的页面:
- 如果它的访问位位是 0 就淘汰该页面,并把新的页面插⼊这个位置,然后把表针前移⼀个位置
- 如果访问位是 1 就将其标记为0,并把表针前移⼀个位置
磁盘调度
调度算法:
-
先来先服务
-
最短寻道时间优先
贪心算法
-
扫描算法
磁头在一个方向上移动 访问所有未完成的请求,直到磁头到达该方向上的
最后的磁道
才调换方向 -
循环扫描算法
在循环扫描算法的基础上, 磁道只响应⼀个方向上的请求 返回中途不处理任何请求
-
LOOK
磁头在一个方向上移动 访问所有未完成的请求,直到磁头到达该方向上的
最后的请求
才调换方向 -
C-LOOK
在 LOOK 算法的基础上, 磁道只响应⼀个方向上的请求 返回中途不处理任何请求