文章目录

  • 存储管理-磁盘调度
    • 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. 操作系统-课堂笔记-文件系统(南航)

    文章目录 文件系统 引言 文件系统需要做什么工作? 1.关于文件名的限制: 2.文件扩展名有哪些 3.文件有哪些类型? 4.文件是怎么保存的以及文件的属性和操作 文件的实现 如何为文件分配磁盘空间? ...

  2. 操作系统实验4—磁盘调度

    操作系统实验4-磁盘调度 文章目录 操作系统实验4-磁盘调度 实验描述 设计思路 上机代码 测试结果 心得体会 实验描述 实验内容: 编写一个磁盘调度程序,模拟操作系统对磁盘的调度. 实验目的: 本实 ...

  3. 操作系统-课堂笔记-进程概述(南航)

    文章目录 进程概述 1.引言 2.进程的概念 2.1进程的内存抽象 2.2分段保护 2.2.1例一 2.2.2例二 2.2.3小结 2.3进程的状态 版本1 版本2 提升思考(可跳过,涉及虚拟内存) ...

  4. 操作系统-课堂笔记-内存管理(南航)

    文章目录 内存管理 回顾 内存管理的作用是什么? 如何分配物理内存 物理内存分配方案 1.连续分配存储管理(可应用于嵌入式设备) 1.1单一连续分配 1.2固定分区分配 1.3可变分区分配 连续分配存 ...

  5. 【Linux操作系统课堂笔记1】小白入手——环境配置安装

    文章目录: 界面展示: 扩展: 资源: 第一步:创建虚拟机 第二步:虚拟机设备配置 第三步:开始安装系统 界面展示:  扩展: 1.Windows 系统是宿主机,而 VMware 安装的 Linux ...

  6. 操作系统 课堂笔记 第二章 进程管理

    第二章 进程管理 2.1 本章导学 基本内容: (1)进程的基本概念. (2)进程控制. (3)进程间互斥与同步. (4)进程通信. (5)进程调度. (6)进程死锁. (7)线程. 学习重点: (1 ...

  7. 操作系统原理之磁盘调度

    首先介绍主要的的四种磁头调度算法 (一)先来先服务算法(FCFS) 1.算法思想:按访问请求到达的先后次序服务. 2.优点:简单,公平. 3.缺点:效率不高,相邻两次请求可能会造成最内到最外的柱面寻道 ...

  8. 【操作系统/OS笔记20】打开文件、文件数据块分配、空闲空间管理、多磁盘管理(RAID)、磁盘调度算法概述

    本次笔记内容: 12.12 打开文件的数据结构 12.13 文件的分配 12.14 空闲空间列表 12.15 多磁盘管理-RAID 12.16 磁盘调度 文章目录 打开文件 何谓"打开文件& ...

  9. 操作系统之磁盘调度——SCAN实例讲解

    操作系统之进程调度--优先权法和轮转法(附上样例讲解) 操作系统之银行家算法-详解流程及案例数据 操作系统之多线程编程-读者优先/写者优先详解 操作系统之存储管理--FIFO算法和LRU算法 操作系统 ...

  10. 计算机系统基础:磁盘调度知识笔记

    1.磁盘调度介绍 磁盘可以被多个进程共享的设备,如果有多个进程请求访问磁盘时,为了保证信息的安全,系统的每一时刻只允许一个进程进入磁盘进行I/O操作,别的进程需要等待. 磁盘需要采用一种适当的算法,使 ...

最新文章

  1. oracle并行parallel update两张表_Oracle并行更新的两种方式(merge/update内联视图)
  2. 常用加密算法的Java实现(一) ——单向加密算法MD5和SHA
  3. SQLAlchemy in 查询空列表问题分析
  4. Google 公开被利用了两年的 iOS 漏洞;微博新推社交产品“绿洲”;微软全新终端 v0.4 发布 | 极客头条...
  5. 计算机主机安装,解决方案:说明的计算机主机安装过程_IT /计算机_信息
  6. linux session 设置时间设置,设置linux系统history相关变量,命令时间、保存history条数,多session共享history...
  7. frdora10_a8_linux,硬盘安装fedora10
  8. python网络编程基础知识_Python 网络编程基础入门
  9. 最好用的pdf编辑工具——PDF Expert支持big sur
  10. Caused by: ParsingException[Failed to parse object: expecting token of type [START_OBJECT] but found
  11. maya建模模型变黑问题解决
  12. tekla中钢筋外形(TSM.RebarGeometry)
  13. 操作系统头歌实验四 文件系统
  14. 【工具】动图展示 60+ 个前端常用插件库合集
  15. CISA国际注册信息系统审计师认证
  16. Java *3.6(医疗应用程序:BMI)修改程序清单3-4,让用户输入重量、英尺和英寸。例如:一个人身高是5英尺10英寸,输入的英尺值就是5、英寸值为10。
  17. 在 CentOS 7 中安装 Nextcloud
  18. php lotus notes,Lotus Notes 和 Domino Web Access 的比较
  19. Windows下使用任务计划程序实现宽带开机自动拨号和断线自动重连
  20. 不借助第三方程序 无需ie拨号 自动实现adsl拨号上网【ALLyeSNO】

热门文章

  1. 《OpenCv视觉之眼》Python图像处理二十:Opencv图像美化处理之图像流年、光照、浮雕、素描、怀旧、滤镜、毛玻璃、油漆特效处理
  2. 用无线热点入门树莓派4详解
  3. win10获得system权限(超级管理员)
  4. 统计思维-程序员数学之概率统计_源代码
  5. 硬盘的免费分区工具:简单、易用
  6. 教你如何用PQ魔法师调整硬盘分区大小
  7. 2022-2027年中国盐酸二甲双胍缓释片行业市场全景评估及发展战略规划报告
  8. 查看 PCD 点云 windows
  9. 三分钟告诉你什么是三层交换机!
  10. 2.使用RNN做诗歌生成