操作系统-课堂笔记-磁盘调度(南航)
文章目录
- 存储管理-磁盘调度
- CHS寻址 磁道:盘面:扇区
- 工作原理
- 相关计算
- LBA寻址
- LBA简介
- 相关计算
- 磁盘(磁臂)调度算法
- 1.先来先服务
- 2.最短寻道时间优先
- 3.电梯调度算法
- 4.循环扫描算法
存储管理-磁盘调度
CHS寻址 磁道:盘面:扇区
工作原理
- CHS全称:Cylinder-Head-Sector即柱面(磁道)/盘面/扇区 寻址方式,是早期IBM PC架构上用来进行磁盘寻址的方法。
- 来张图
- 下面分别介绍C, H, S
- 首先是C:Cylinder译为柱面,也可以译为磁道,示意图见上图。
- H:Head译为磁头也可以理解成盘面(含义是相同的),上图所示,现在只需要知道一个盘面一般有上下两面,分别对应一个磁头,即一个盘面对应2个磁头,可以称为上盘面磁头和下盘面磁头。
- S:Sector译为扇区,上图所示,扇区是硬盘寻址的最小单位,一般一个扇区保存512字节,这个记忆下来就好。
现在明白了什么是CHS,那么我们到底是怎么控制磁头,从而能让这种寻址方式跑起来,帮助我们找到要找的数据呢?
- 还是看要看上面的图:上图可以看出,每个盘面是中空的,其实中间是一个控制转轴, 其目的是让各个盘面高速旋转起来,目前主流硬盘旋转速度有5400转/min和7200转/min,单位是每分钟哦~好的,现在盘面已经转起来了。
- 现在我们假设磁头不动,盘面在转,那么磁头就能遍历一整个磁道,即可以访问整磁道上的数据。
- 那么问题来了,怎么能让我的磁头访问到整个盘面的数据呢?聪明的你一定想到两种方案,一是让磁头动起来,在半径方向上移动,二是多装一些磁头,使磁头覆盖整个半径。很显然前者是一种比较划算的实现方式,后者我个人认为是完全可行的方案,而且还能大大提高访问速度。不过目前市场上的硬盘都是方式一,方式二实现起来可不能很不划算。
- 让磁头在半径方向上移动起来,并且配合盘面的高转速,现在我们就能够访问整个盘面上的数据了。
相关计算
现在我们已经明白什么是CHS,以及CHS的基本工作原理,那么下面就进行一些计算。
CHS的组成:
- 一共24个比特位(最传统的实现,还有28位的实现,这里我们只讨论24位的)
- Cylinder 10位 — 210=1024个磁道,即一个盘面可以被划分成1024个同心圆
- Head 8位—28=256个磁头,有256个磁头意味着可以寻址256个盘面
- Sector 6位—26=64个扇区,即一个柱面有64个扇区
- 最大寻址空间的计算:现在就很容易计算了,能寻址256个盘面,一个盘面可以分割成1024个磁道,一个同心圆又有64个扇区,那么我现在就有 1024x256x64=16K个扇区了
- 要想计算存储空间还得知道一个扇区能保存多少字节的内容,这里硬记下来就好,一般一个扇区保存512B,那么16Kx512=8G(224x29=233),现在就算明白了。
其实上面的计算不太对,原因如下:
- 越靠近圆心的磁道其周长越小,那么扇区数就会越小。
- 上面的计算忽略了上述圆的特性,只是一个示例计算,其结果是不对的。
问题来了,我们算出来最大寻址8G,现在很多硬盘都1T是怎么回事?
- 首先CHS经过一次扩展,从24位扩展到28位,那也只能寻址128G,所以后来出现了LBA
注意事项
BIOS int 0x13调用是和读磁盘相关的,需要注意的是CHS寻址的单位是磁道,而不是盘面。笔者在读Linux0.11内核源码时遇到与此相关的内容,思考了好久,发现之前理解错了。
为什么现代OS不使用CHS呢?
- 早期OS也使用CHS寻址方式
- 技术发展后,不同磁道的扇区数不同
- 地址位数确定后,容量不容易扩展
LBA寻址
LBA简介
LBA:Logical Blokc Address
- 寻址的基本单位是块(block)
- 地址线性增长:0,1,2,3,…
- 块的大小是扇区大小的整数倍:一般为4K!
- 在OS看来,一块磁盘可以当作block类型的一维数组
LBA的出现是用来取代CHS的,那么LBA是如何寻址的呢? - LBA是一个整数,通过转换,成为CHS格式完成磁盘寻址。
- LBA采用48个比特位寻址,最大寻址空间位128PB
- 即LBA将CHS这种三维寻址转变成一维的线性地址,所谓一维即扇区号
相关计算
其实LBA与CHS相关计算的思路很简单,举个例子,现在有一个三维数组a[4][3][2],那么请问这个数组里有多少元素呢?很简单432=24,这就是一个三维到一维的转换。
那么再来一个问题,我问a[2][2][1]是第几个元素:计算方法:232+2*2+1-1
同理LBA的计算公式(与上式对比容易理解):
LBA=磁头数(盘面数)x 每磁道扇区数 x 当前柱面号 + 没磁道扇区数 x 当前所在磁头号 + 当前所在扇区号 - 1
例如CHS=0/0/1,那么LBA=255630+63*0+1-1=0,即 0柱面,0磁头,1扇区,是逻辑 0扇区。
磁盘(磁臂)调度算法
为什么需要磁盘调度算法?回想下从磁盘上读写数据的过程:
- 移动磁头到指定磁道上—寻道时间
- 等待磁盘旋转,直到需要读写的扇区在磁头下面—旋转延迟时间
- 传输数据—把数据从磁盘读出或写入
- 其中前两者的耗时比较长
- 磁盘调度问题的目的是减少寻道时间
- 更确切的说是:磁臂调度问题
磁臂调度算法分类:
- 先来先服务
- 最短寻道时间优先
- 电梯调度算法
- 循环扫描算法
先把题目给出来,便于后面讨论:
假设给定一组磁盘读写请求访问的磁道号是:55,58,39,18,90,160,150,38,18
- 当前磁头处于100号磁道上
问应当如何满足这些访问磁盘的请求,使得:
- 磁道的移动距离尽量短
- 尽量公平(至少不发生饿死)
1.先来先服务
是一种简单、公平、低效的方法:
访问顺序是:55,58,39,18,90,160,150,38,18
磁臂移动距离:45+3+19+21+72+70+10+112+20
2.最短寻道时间优先
是一种高效、不公平(磁臂容易停留在中间区域)
访问顺序是: 90,58,55,39,38,18,150,160,184
每次都找距离本磁道最近的磁道访问
磁臂移动距离:10+32+3+16+1+20+132+10+24
3.电梯调度算法
沿着某个方向移动,直到该方向没有请求,逆转方向
访问顺序:150,160,184,90,58,55,39,38,18
磁臂移动距离:50+10+24+94+32+3+16+1+20
4.循环扫描算法
只沿一个方向移动(没有逆转操作),移动到最边缘,直接返回最开始的地方
- 是一种折中的方案,能降低最坏情况下的时延
访问顺序:150,160,184,18,38,39,55,58,90
磁臂移动距离:50+10+24+166+20+1+16+3+32
思考一个问题:磁臂调度算法在何处实现?
- 驱动程序?
- 中断处理程序?
- 硬件设备?
驱动程序!
如果觉得写的不错,对你有帮助,点个赞鼓励一下叭!
本系列博客地址
下一篇:文件系统
操作系统-课堂笔记-磁盘调度(南航)相关推荐
- 操作系统-课堂笔记-文件系统(南航)
文章目录 文件系统 引言 文件系统需要做什么工作? 1.关于文件名的限制: 2.文件扩展名有哪些 3.文件有哪些类型? 4.文件是怎么保存的以及文件的属性和操作 文件的实现 如何为文件分配磁盘空间? ...
- 操作系统实验4—磁盘调度
操作系统实验4-磁盘调度 文章目录 操作系统实验4-磁盘调度 实验描述 设计思路 上机代码 测试结果 心得体会 实验描述 实验内容: 编写一个磁盘调度程序,模拟操作系统对磁盘的调度. 实验目的: 本实 ...
- 操作系统-课堂笔记-进程概述(南航)
文章目录 进程概述 1.引言 2.进程的概念 2.1进程的内存抽象 2.2分段保护 2.2.1例一 2.2.2例二 2.2.3小结 2.3进程的状态 版本1 版本2 提升思考(可跳过,涉及虚拟内存) ...
- 操作系统-课堂笔记-内存管理(南航)
文章目录 内存管理 回顾 内存管理的作用是什么? 如何分配物理内存 物理内存分配方案 1.连续分配存储管理(可应用于嵌入式设备) 1.1单一连续分配 1.2固定分区分配 1.3可变分区分配 连续分配存 ...
- 【Linux操作系统课堂笔记1】小白入手——环境配置安装
文章目录: 界面展示: 扩展: 资源: 第一步:创建虚拟机 第二步:虚拟机设备配置 第三步:开始安装系统 界面展示: 扩展: 1.Windows 系统是宿主机,而 VMware 安装的 Linux ...
- 操作系统 课堂笔记 第二章 进程管理
第二章 进程管理 2.1 本章导学 基本内容: (1)进程的基本概念. (2)进程控制. (3)进程间互斥与同步. (4)进程通信. (5)进程调度. (6)进程死锁. (7)线程. 学习重点: (1 ...
- 操作系统原理之磁盘调度
首先介绍主要的的四种磁头调度算法 (一)先来先服务算法(FCFS) 1.算法思想:按访问请求到达的先后次序服务. 2.优点:简单,公平. 3.缺点:效率不高,相邻两次请求可能会造成最内到最外的柱面寻道 ...
- 【操作系统/OS笔记20】打开文件、文件数据块分配、空闲空间管理、多磁盘管理(RAID)、磁盘调度算法概述
本次笔记内容: 12.12 打开文件的数据结构 12.13 文件的分配 12.14 空闲空间列表 12.15 多磁盘管理-RAID 12.16 磁盘调度 文章目录 打开文件 何谓"打开文件& ...
- 操作系统之磁盘调度——SCAN实例讲解
操作系统之进程调度--优先权法和轮转法(附上样例讲解) 操作系统之银行家算法-详解流程及案例数据 操作系统之多线程编程-读者优先/写者优先详解 操作系统之存储管理--FIFO算法和LRU算法 操作系统 ...
- 计算机系统基础:磁盘调度知识笔记
1.磁盘调度介绍 磁盘可以被多个进程共享的设备,如果有多个进程请求访问磁盘时,为了保证信息的安全,系统的每一时刻只允许一个进程进入磁盘进行I/O操作,别的进程需要等待. 磁盘需要采用一种适当的算法,使 ...
最新文章
- oracle并行parallel update两张表_Oracle并行更新的两种方式(merge/update内联视图)
- 常用加密算法的Java实现(一) ——单向加密算法MD5和SHA
- SQLAlchemy in 查询空列表问题分析
- Google 公开被利用了两年的 iOS 漏洞;微博新推社交产品“绿洲”;微软全新终端 v0.4 发布 | 极客头条...
- 计算机主机安装,解决方案:说明的计算机主机安装过程_IT /计算机_信息
- linux session 设置时间设置,设置linux系统history相关变量,命令时间、保存history条数,多session共享history...
- frdora10_a8_linux,硬盘安装fedora10
- python网络编程基础知识_Python 网络编程基础入门
- 最好用的pdf编辑工具——PDF Expert支持big sur
- Caused by: ParsingException[Failed to parse object: expecting token of type [START_OBJECT] but found
- maya建模模型变黑问题解决
- tekla中钢筋外形(TSM.RebarGeometry)
- 操作系统头歌实验四 文件系统
- 【工具】动图展示 60+ 个前端常用插件库合集
- CISA国际注册信息系统审计师认证
- Java *3.6(医疗应用程序:BMI)修改程序清单3-4,让用户输入重量、英尺和英寸。例如:一个人身高是5英尺10英寸,输入的英尺值就是5、英寸值为10。
- 在 CentOS 7 中安装 Nextcloud
- php lotus notes,Lotus Notes 和 Domino Web Access 的比较
- Windows下使用任务计划程序实现宽带开机自动拨号和断线自动重连
- 不借助第三方程序 无需ie拨号 自动实现adsl拨号上网【ALLyeSNO】