磁盘调度算法
1.操作系统的概念与功能2.操作系统的特征3.操作系统的发展与分类4.操作系统的运行机制5.中断和异常6.系统调用7.计算机系统体系结构8.操作系统引导 (Boot)9.虚拟机10.进程的概念、组成、特征11.进程的状态与转换、进程的组织12.进程控制13.进程通信14.线程的概念、作用和属性15.线程的实现方式和多线程模型16.线程的状态与转换、组织与控制17.调度的概念与层次18.进程调度的时机、方式、切换与过程19.闲逛进程20.调度算法的评价指标21.调度算法22.调度算法(一)23.调度算法(二)24.调度算法(三)25.进程同步与进程互斥26.进程互斥的软件实现方法27.进程互斥的硬件实现方法28.互斥锁29.信号量机制30.信号量实现进程互斥、同步、前驱关系31.生产者-消费者问题32.多生产者-多消费者问题33.吸烟者问题34.读者-写者问题35.哲学家进餐问题36.管程37.死锁38.死锁的处理策略39.(一)预防死锁40.(二)避免死锁41.(三)死锁检测和解除42.内存的基础知识43.内存管理的概念44.覆盖与交换45.连续分配管理方式46.动态分区分配算法47.基本分页存储管理的基本概念48.基本地址变换机构49.具有快表的地址变换机构50.两级页表51.基本分段存储管理方式52.段页式管理方式53.虚拟内存的基本概念54.请求分页管理方式55.页面置换算法56.页面分配策略57.内存映射文件58.初识文件管理59.文件的逻辑结构60.文件目录61.文件的物理结构(文件分配方式)62.逻辑结构与物理结构63.文件存储空间管理64.文件的基本操作65.文件共享66.文件保护67.文件系统的层次结构68.文件系统的全局结构(布局)69.虚拟文件系统&文件系统挂载(安装)70.IO设备的概念和分类71.IO控制器72.IO控制方式73.IO软件层次结构74.IO应用程序接口&设备驱动程序接口75.IO核心子系统76.假脱机技术(SPOOLing技术)77.设备的分配与回收78.缓冲区管理79.磁盘的结构
80.磁盘调度算法
81.减少延迟时间的方法82.磁盘的管理83.固态硬盘磁盘调度算法
一、一次磁盘读/写操作需要的时间
- 寻道时间 TS
- 延迟时间 TR
- 传输时间 Tt
补充理解(上下的1.2.3.分别对应):
-
现在的磁盘移动一个磁道大约需要 0.2ms,磁臂启动时间约为 2ms
(磁盘的物理移动时间耗费较大,后续算法应尽量减少磁盘的物理移动)
-
1/r 就是转一圈需要的时间。找到目标扇区平均需要转半圈,因此再乘以 1
磁盘的典型转速为 5400转/分,或 7200转/分
-
每个磁道要可存 N 字节的数据,因此 b 字节的数据需要 b/N 个磁道才能存储。而读/写一个磁道所需的时间刚好又是转一圈所需要的时间 1/r
这里理解为要读的数据占某磁道的一部分,算就算这部分的百分比乘读完整个磁道的时间
二、磁盘调度算法
(一)FCFS 先来先服务算法 First Come First Served
(二)SSTF 最短寻找时间优先 Shortest Seek Time First
(三)SCAN 扫描算法(电梯算法)
(四)LOOK 调度算法
(五)C-SCAN 循环扫描算法
(六)C-LOOK 调度算法
——重点:比较
算法 | 特点 | 备注 |
---|---|---|
FCFS先来先服务 | 根据进程请求访问磁盘的先后顺序 | / |
SSTF最短寻找时间优先 | 优先处理离当前磁头最近的磁道 | 贪心思想的体现;可能导致“饥饿” |
SCAN扫描(电梯算法) | 磁头到边缘才能改变移动方向,沿途处理请求 | 其实更像是”公交车“,真要说的话LOOK才像是电梯;不会导致“饥饿” |
C-SCAN循环扫描 | 事先规定好一个方向,磁头只有在这个方向上移动才处理请求。到了这个方向的末端后立刻调转方向回到起点(返回途中不处理任何请求) | 是对SCAN算法的对各个位置磁道的响应频率不平均缺点的改进 |
LOOK | 磁头在某个方向上移动,当该方向上前面没有任何请求时可直接调转方向,不用非得到边缘才转向 | 是对SCAN的优化 |
C-LOOK | 磁头在某个方向1上移动,当该方向1上前面没有任何请求时可直接调转至方向2,且回到离方向2末端最近的请求作为起点,不用非得到边缘才转向 | 是对C-SCAN的优化 |
若题目中无特别说明,则将 SCAN 看作 LOOK ,将 C-SCAN 看作 C-LOOK(都看为改进后的版本)(不需要到尽头)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理