今天复习了一下计算机组成原理,重新温习了一下磁盘,发现有许多知识点不记得了,于是写个笔记增强一下记忆。

磁盘的基本参数有:

  • 磁头(head)磁头固定在可移动的机械臂上,用于读写数据。现代硬盘都是双面可读写,因此磁头数量等于盘片数的 2 倍。磁头数(Heads)表示硬盘总共有几个磁头,也就是有几面盘片, 最大为 255 (用 8 个二进制位存储);
  • 磁道(track) 每个盘面都有 n 个同心圆组成,每个同心圆称之为一个磁道。由外向内分为 0 磁道到 n 磁道。
  • 柱面(cylinder) n 个盘面的相同磁道 (位置相同) 共同组成一个柱面。柱面数(Cylinders) 表示硬盘每一面盘片上有几条磁道,最大为 1023(用 10 个二进制位存储);
  • 扇区(sector)从磁盘中心向外画直线,可以将磁道划分为若干个弧段。每个磁道上一个弧段被称之为一个扇区。扇区是硬盘的最小组成单元,通常是 512 字节。磁道上的扇区数最大为 63 (6 个二进制位)。

 

硬盘的存储容量公式:

存储容量 = 磁头数 × 磁道(柱面)数 × 每道扇区数 × 每扇区字节数
因此,结合此公式和上面的数据可知磁盘最大容量为:
  255 * 1023 * 63 * 512 / 1048576 = 8024 GB ( 1M =1048576 Bytes )或硬盘厂商常用的单位:
  255 * 1023 * 63 * 512 / 1000000 = 8414 GB ( 1M =1000000 Bytes )
在 CHS 寻址方式中, 磁头, 柱面, 扇区的取值范围分别为 0到 Heads - 1,0 到 Cylinders - 1, 1 到 
Sectors (注意是从 1 开始).

磁盘读写数据所花费的时间

读写数据过程:现代硬盘寻道都是采用CHS(Cylinder Head Sector)的方式,硬盘读取数据时,读写磁头沿径向移动,移到要读取的扇区所在磁道的上方,这段时间称为寻道时间(seek time)。因读写磁头的起始位置与目标位置之间的距离不同,寻道时间也不同。磁头到达指定磁道后,然后通过盘片的旋转,使得要读取的扇区转到读写磁头的下方,这段时间称为旋转延迟时间(rotational latencytime)。然后再读写数据,读写数据也需要时间。

从磁盘的基本结构以及数据读写过程我们可以看出,磁盘上数据读取和写入所花费的时间可以分为寻道时间、旋转延迟、传输时间三个部分。

1.寻道时间

所谓寻道时间,其实就是磁臂移动到指定磁道所需要的时间,这部分时间又可以分为两部分:
寻道时间=启动磁臂的时间+常数*所需移动的磁道数,其中常数和驱动器的的硬件相关,启动磁臂的时间也和驱动器的硬件相关。

2.旋转延迟

旋转延迟指的是把扇区移动到磁头下面的时间。这个时间和驱动器的转数有关,我们通常所说的7200转的硬盘的转就是这个。
平均旋转延迟=1/(2*转数每秒),比如7200转的硬盘的平均旋转延迟等于1/2*120≈4.17ms。旋转延迟只和硬件有关。

3.传输时间
   传输时间指的是从磁盘读出或将数据写入磁盘的时间。传输时间=所需要读写的字节数/每秒转速*每扇区的字节数。

磁盘调度算法

通过上面硬盘读写数据所分的三部分时间不难看出,大部分参数是和硬件相关的,操作系统无力优化。只有所需移动的磁道数是可以通过操作系统来进行控制的,所以减少所需移动的磁道数是减少整个硬盘的读写时间的唯一办法。

因为操作系统内可能会有很多进程需要调用磁盘进行读写,因此合理的安排磁头的移动以减少寻道时间就是磁盘调度算法的目的所在,几种常见的磁盘调度算法如下。

1.最短寻道时间算法(SSFT)

这种算法优先执行所需读写的磁道离当前磁头最近的请求。这保证了平均寻道时间的最短,但缺点显而易见:离当前磁头比较远的寻道请求有可能一直得不到执行,这也就是所谓的“饥饿现象”。

2.先来先服务算法(FCFS)

这种算法将对磁盘的IO请求进行排队,按照先后顺序依次调度磁头。此算法的优点是公平、简单,且每个进程的请求都能依次得到处理,不会出现某一进程的请求长期得不到满足的情况。但由于此算法未对寻道进行优化,在对磁盘的访问请求比较多的情况下,此算法将降低设备服务的吞吐量,致使平均寻道时间可能较长,但各进程得到服务的响应时间的变化幅度较小。

适用场景: 由于长作业会长时间占据处理机,该算法比较有利于长作业,而不利于短作业。即有利于CPU繁忙的作业,而不利于I/O繁忙的作业。

3.循环扫描算法(CSCAN)

也就是俗称的电梯算法,这种算法是对最短寻道时间算法的改进。这种算法就像电梯一样,只能从1楼上到15楼,然后再从15楼下到1楼。这种算法的磁头调度也是如此,磁头只能从最里磁道到磁盘最外层磁道。然后再由最外层磁道移动到最里层磁道,磁头是单向移动的,在此基础上,才执行和最短寻道时间算法一样的,离当前磁头最近的寻道请求。这种算法改善了SCAN算法,消除了对两端磁道请求的不公平。

4.扫描算法(SCAN)

优点:扫描算法不仅考虑到欲访问的磁道与当前磁道的距离,更优先考虑的是磁头的当前移动方向。这种算法在磁头的移动方向上选择离当前磁头所在磁道最近的请求作为下一次服务对象,这种改进有效避免了饥饿现象(饥饿:当一个进程一直无法得到自己的资源而一直无法进行后续的操作时(不一定是阻塞),我们称这个进程会饥饿而死。),并且减少了寻道时间。

缺点:不利于最远一端的磁道访问请求。

磁盘读写的时间花费和调度算法(操作系统)相关推荐

  1. 操作系统读写者问题实验报告_操作系统知识点总结

    用户态和内核态 用户态和内核态的区别? 明白这两个概念之前,我们得知道用户空间和内核空间. 用户空间:指的就是用户可以操作和访问的空间,这个空间通常存放我们用户自己写的数据等. 内核空间:是系统内核来 ...

  2. SSD和HDD的磁盘读写

    HDD 机械硬盘(HardDriver Disk)就是常说的HDD.它以铝合金材质的磁盘作为存储介质,马达驱动盘片旋转,磁头来读写数据.这就是是机械硬盘的基本构成,和光盘比较像. 机械因公安读写数据时 ...

  3. 使用BIOS进行键盘输入和磁盘读写---汇编学习笔记

    汇编笔记 使用BIOS进行键盘输入和磁盘读写 17.1 int 9中断例程对键盘输入的处理 17.2 使用int 16h中断例程读取键盘缓冲区 17.3 字符串的输入 17.4 应用int 13h中断 ...

  4. 磁盘读写流程和网络读写流程

    一 页缓存(page cache) 和 套接字缓冲区(socket buffer) 1.1 页缓存(page cache) 1.1.1 什么是页缓存? 为什么需要页缓存? 当应用程序要读取磁盘上的文件 ...

  5. Mac磁盘读写神器Tuxera NTFS for Mac2023功能介绍

    Tuxera NTFS for Mac2023是一款mac系统读写工具,Tuxera让Mac OS支持NTFS 格式文件读写,支持所有移动硬盘.U盘等外接设备,同时Tuxera用户可以简单直观的在Ma ...

  6. MySQL性能与磁盘读写的关系及优化策略

    作者:kider 出处:MySQLpub.com 转贴请表明作者和出处并不能用于商业目的. 这些天,对一个场地服务器慢的情况,进行了监控跟踪,也得出一些好的结论.现在记录一些过程,列出可以供参考的部分 ...

  7. 汇编学习--7.17--键盘输入和磁盘读写

    使用BIOS进行键盘输入和磁盘读写 大多数有用的程序都需要处理用户的输入,键盘输入是最基本的输入.程序和数据通常需要长期存储,磁盘是最常用的存储设备. BIOS为这两种外设的I/O提供了最基本的中断例 ...

  8. Paragon2022Tuxera 两款NTFS磁盘读写工具区别

    Tuxera NTFS for Mac是苹果上专门的NTFS磁盘读写工具,帮助Mac用户解决苹果操作系统读写U盘.硬盘等NTFS格式分区的磁盘的困难. 一.简介 ​Tuxera NTFS for Ma ...

  9. linux磁盘读写缓存,linux读写缓存

    1. 操作系统缓存 在linux世界里,一切可读写设备都可看作是文件.文件cache设计的好坏直接影响着文件系统和磁盘的性能.最直观的是使用free命令看到的cached列. 这里面的cached列就 ...

  10. Mac系统NTFS磁盘读写软件Tuxera NTFS for Mac2022

    ​ Tuxera NTFS for Mac是一款Mac系统NTFS磁盘读写软件.在系统默认状态下,MacOSX只能实现对NTFS的读取功能,Tuxera NTFS可以帮助MacOS 系统的电脑顺利实现 ...

最新文章

  1. 《React Native移动开发实战》一一3.4 完善商品列表——ListView组件
  2. VTK:PolyData之CurvaturesDemo
  3. 通过OData创建C4C Lead时,遇到Account missing的错误消息
  4. SPI和RAM IP核
  5. ubuntu下安装jdk1.6.0_41
  6. linux mint关于web开发的相关环境配置
  7. 7 netsnmp安装window_Linuxfx 10.2,一款来自巴西的Window操作系统,“山寨”出了高度...
  8. grads插值_grads各类参数设置.pptx
  9. 常用Java编程软件有哪些
  10. BT5 WIFI破解
  11. 开发人员使用Helix QAC实现静态代码测试合规性的五大原因
  12. 多余的回车键(Enter)
  13. Docker一些使用问题的解决方法
  14. continue语句只用于循环语句中_Python尚学堂高淇|P60P63break语句,else语句使用,循环代码的优化...
  15. git push时缺少Change-Id报错
  16. 可以免费打电话的网站
  17. 关于matlab提示“警告: 矩阵为奇异工作精度” 的问题
  18. Servlet初级学习加入数据库操作(三)
  19. XDOJ魔王语言解释
  20. 顺丰快递代码表java_JAVA接入顺丰快递

热门文章

  1. 计算机毕业设计Python+uniapp鲸落图书商城小程序LW(小程序+源码+LW)
  2. 古训良言 之 一百四十八
  3. Python-15 函数:我的地盘听我的
  4. P3435 [POI2006]OKR-Periods of Words(KMP最短公共前后缀)
  5. 周灏:金融大数据量化信用
  6. 硬盘变成Raw格式 与 移动硬盘报I/O错误问题
  7. swiper滑动切换变换样式,实时显示当前索引
  8. caj转成Word文件是怎么转换的
  9. 很全的电脑专业术语中英文对照
  10. 量化投资之股票统计套利:基于BP神经网络