操作系统核心原理-6.外存管理(上)磁盘基础

  计算机是处理数据的机器,而数据就需要有地方存放。在计算机中,可供数据存放的地方并不太多,除了内存之外,最主要的存储数据的媒介就是磁盘。对于大多数计算机领域的人来说,磁盘通常被看做是一种外部设备。可是,对于现代操作系统来说,磁盘是不可或缺的。虽然早期的操作系统可以基于磁带,但由于操作系统复杂性和性能的不断提升,用磁带作为操作系统的载体已经不合时宜,取而代之的是磁盘。由于操作系统需要存放在磁盘上,且操作系统内的文件系统也是基于磁盘,所以,从某种程度来说,磁盘是操作系统不可分割的一部分,理解磁盘将对理解操作系统的原理具有重要的意义。

一、磁盘的结构

1.1 什么是磁盘?

  通俗地讲,磁盘就是以形状像盘子一样的磁性存储介质

  (1)特性是持久,正常情况下数据存放在上面不会消失;

  (2)显著特征是磁性圆形,因此被称为磁盘;

  (3)价格低廉,因此可以大量使用;

1.2 磁盘的结构

  一块磁盘实际上并不是只有一块盘片,而是由多块盘片组成,每块盘片的正反两面皆可以存放数据。下图给出的是一个将磁盘外壳切开一块所看到的结构图:

  (1)每个盘面上都有一个读写磁头,而所有读写磁头都连在一根共享的磁臂上。

  (2)当磁臂运动时,所有的磁头均作相同的运动,盘片则以常速不停地旋转。

PS:盘片的旋转速度通常为每分钟3500~10000转,即大约每6ms~17ms旋转一圈。目前3500转的磁盘已经看不到,对于笔记本来说,最低的都是5400转了,一般都是7200转,10000转+已经是机械磁盘的极限。 

1.3 盘面的结构

  为了方便存储数据,人们将每块盘面又分为磁道扇面,如下图所示:

  (1)磁道是一个个的同心环;

  (2)每个磁道又被分为若干个扇面(也称为扇区),数据是以扇面进行存储的,扇面也是磁盘I/O的最小单位;

  (3)扇面的内容通常分为3个部分:标题、数据部分和ECC纠错信息,如下表所示:

二、磁盘驱动器的访问速度

  磁盘在读写数据时的访问速度称为磁盘的动态属性,这是衡量一个磁盘性能的重要数据。数据访问时间或速度的计算并不简单,而这种计算不仅依赖于磁盘的旋转速度,还依赖于在访问开始时读写磁头所处的位置。数据访问时间也有几种衡量办法:

2.1 寻道时间

  寻道时间(Seek Time)是指将读写磁头移动到所要求的磁道位置所需要的平均时间。寻道时间通常在8ms~20ms以内,在近年来变化不大。

2.2 磁道到磁道的访问时间

  磁道到磁道的访问时间(Track-to-Track Time)衡量的是磁头从一个磁道移动到一个相邻磁道所需要的时间。这个时间通常在2ms~3ms以内,它也被称为柱面切换时间或磁道切换时间。

2.3 旋转延迟时间

  旋转延迟时间指的是磁头到达所要求的磁道位置后,等待所要求的扇面旋转到磁头下方的平均时间。当前磁盘驱动器的旋转速度所处的范围为每分钟3500~10000转,因此旋转延迟的范围在3ms~8.57ms内。

→ 平均访问时间 = 寻道时间 + 旋转延迟时间

三、磁盘调度算法

3.0 磁盘读写时间的影响因素

  (1)寻道时间

  (2)旋转延迟时间

  (3)数据传输时间

  在以上3者中,前两者为机械运动,数据传输主要为电子运动,机械运动的速度远低于电子运动的速度。在两个机械运动中,寻道时间又相对较长,因此,寻道时间居于支配地位。所以,为了提高磁盘的读写效率,需要降低磁盘的寻道时间,实现的手段则是磁盘调度。下面我们陆续来了解一下主要的磁盘调度算法。

3.1 先来先服务算法

  先来先服务是一种自然公平的调度策略,先来后到,谁也木有神马特权!

  例如下图中的一组磁盘请求,其中X表示需要读写的扇面,下面的数字为磁道号(这里不考虑旋转延迟,数据所在的扇面号在此忽略)。假定磁头的初始位置为10号位,而磁盘请求发生的顺序为0、23、6、16、2、21、8、9、12。则在先来先服务调度下,总寻道的道数为:

  先来先服务追求自然公平,当然效率也十分低下,因此很少采纳。

3.2 短任务优先算法

  短任务优先就是谁的磁盘读写数据量最少,谁就优先。由于磁盘的访问时间主要取决于寻道和旋转延迟,因此读写的数据量对于整个磁盘读写时间的影响并不大,因此这种策略意义不大。

3.3 短寻道优先算法

  短寻道优先则考虑当前磁头离谁的数据最近,谁就优先。由于寻道在磁盘访问时间中占的比重最大,因此此种策略能够缩短磁盘访问时间。

  例如继续使用上面FCFS的例子,使用短寻道优先算法的访问磁道号顺序为:9、8、6、2、0、12、16、21、23,总寻道数为1+1+2+4+2+12+4+5+2=33,可以看到比FCFS的109个少了好几倍。

  但是,这种缩短并不是绝对的,如果当前的磁盘读写操作如下图所示,则磁盘读写请求的执行呈现的就是一种左右摆动的模式,这种情况下总寻道数=1+3+7+15+31=57。

  从上图也可以看出,寻道执行呈现出一种左右摆动的情况,如果左右摆动的幅度越来越大,系统花费在寻道上的时间将会迅速增加。而改进的办法就是不要左右摆动,而令其单向运动,这就是下面将要提到的电梯调度策略。

3.4 电梯调度算法

  电梯调度的核心思想是:先满足一个方向的所有请求,再满足所有反方向的请求,如此循环往复

  这里再次使用FCFS的例子来看,使用电梯调度时,磁头往每个方向运动时皆会扫描到头,如下图所示:

  这里的总寻道数为:1+4+16+1+24+8=54,比短寻道优先节省了3个磁道的寻道时间。

  但是,电梯调度策略执行时,如果一个方向已经没有需求了,它还是会扫描到末端才会掉头,无法提前调度,也就影响了效率。因此,实现提前调度的电梯调度就是下面要介绍的提前查看电梯调度算法。

3.5 提前查看电梯调度算法

  提前查看电梯调度算法的核心思想是:如果一个方向的请求全部满足后,立即反转运行,而无需扫描到底。每次往某个方向移动时必须确保该方向还有请求未满足,否则就立刻调转方向,这样也就提高了效率。

  还是使用FCFS的例子来看,使用提前查看电梯调度算法的总寻道数为:1+4+16+23+8=52,比普通的电梯调度算法节省了2个磁道的寻道时间,如下图所示:

  这种正反两个方向的交替运动并不一定最优,另一种改进办法则是单向电梯调度:即只向一个方向扫描。当该方向没有剩余请求时,则回到0道,再进行同样的扫描。同样,在FCFS的例子中,如果使用单向电梯调度策略,那么执行结果会如下所示,其总寻道数为:1+4+16+8=29,比提前查看电梯调度节省了23个磁道的寻道时间。

四、关于固态盘

  前面的介绍我们可以知道:磁盘低下的瓶颈在于寻道和旋转延迟,而寻道和旋转操作之所以效率低下的原因又在于它们都是机械运动(磁臂的直线来回运动和磁盘的旋转运动)。目前,磁臂移动速度和磁盘旋转速度已达或接近极限,再行提高会导致定位精度的降低。因此,提高磁盘的运行效率只能将机械运动从磁盘的结构中去除。

  回想一下我们之前提到的内存,不就是没有机械运动的存储介质嘛?于是,使用与内存介质相同或相仿的存储介质构建的磁盘就是所谓的固态盘(Solid State Disk,SSD)横空出世了。

  固态的原始意义是半导体驱动器,但在今天的存储工业界已经演化为表示没有机械运动部件的驱动器由于没有移动的部件,整个驱动器似乎是固定的,因而也就被称为固态盘

  由于木有移动的机械部件,固态盘具有一些机械盘所不具备的优点:

  (1)可靠性高,没有噪音(没有风扇);

  (2)访问速度快,接近内存的访问速度;

  (3)热耗低于机械盘,且更省电;

  (4)不需要旋转,其启动时间更短;

  但是,固态盘最大的问题是成本,其单位容量成本大约为机械盘的10~20倍,这对于大容量的固态盘来说,这个成本十分可观。对于小容量的固态盘来说,我们已经能够承受。

参考资料

邹恒明,《操作系统之哲学原理》,机械工业出版社

作者:周旭龙

出处:http://edisonchou.cnblogs.com

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏瓜大三哥

FPGA内部资源介绍

2972
来自专栏linux驱动个人学习

GPU与CPU的区别

1603
来自专栏人工智能头条

机器学习数据采集入门经验分享

1204
来自专栏云成本管理

云成本管理方法论(二)——云使用管理

本篇文章将基于云成本管理模型对云使用管理中四个管理维度(管理对象、管理时点、判定规则和管理措施)进行更具体的分析。

4835
来自专栏CDA数据分析师

Python告诉你:单词软件火了,但真的有那么多人在背单词吗?

0x00 前言 你想知道背单词软件有大概多少人注册第一天都没有背完嘛? 你想知道背单词软件这么火,这么多人在使用,真的有多少人真的在背诵嘛? 别急,Python...

2377
来自专栏量子位

捡漏!用谷歌图片搜索自制深度学习数据集 | 教程

就怕前脚刚立志搞个新研究,后脚就发现没有合适的数据集可用。AI工程师从入门到放弃,可能就是这么一会的功夫。

1481
来自专栏AI科技大本营的专栏

深度学习训练时GPU温度过高?几个命令,为你的GPU迅速降温

图来自网络 作者 | 人工智豪(ID:Aihows) 新买回来的不带水冷公版GPU,在满负载运行的时候,温度从室温马上飙升到85度,而且模型训练不是几分钟完事,...

5019
来自专栏AI科技评论

开发 | 深度学习训练时 GPU 温度过高?输入这几行命令就能迅速降温

AI科技评论按:本文作者胡智豪,原载于作者个人博客,AI科技评论经授权发布。 新买回来的不带水冷公版GPU,在满负载运行的时候,温度从室温马上飙升到85度,而且...

37312
来自专栏美团技术团队

人工智能在线特征系统中的生产调度

前言 在上篇博客《人工智能在线特征系统中的数据存取技术》中,我们围绕着在线特征系统存储与读取这两方面话题,针对具体场景介绍了一些通用技术,此外特征系统还有另一个...

51410
来自专栏贾老师の博客

游戏中的网络同步

2794

扫码关注云+社区

领取腾讯云代金券