大成若缺,其用不敝;大盈若冲,其用不穷
文件系统从根本上说是操作系统对磁盘进行的抽象和装扮
本篇最重要的核心是文件夹及其实现,因为它是文件系统运作的根本。通过文件夹,我们才能找到我们需要的文件,完成从抽象到现实的转换。
磁盘操作
磁盘组织与管理
由于文件系统是磁盘的抽象,因此不了解磁盘就很难深刻理解文件系统。
磁盘的结构
一块磁盘实际上并不只有一块盘片,而是由多块盘片组成,每块盘片的正反两面皆可以存放数据。每个盘面上都配有一个读写磁头,而所有的读写磁头连在一根共享的磁臂上。当磁臂运动时,所有的磁头均作相同的运动。盘片则以常速不停地旋转。这个旋转速度通常为每分钟3500转到10000转,即大约每6毫秒到17毫秒旋转一圈。
除此之外,一块磁盘还含有信号和界面电子系统。
盘面的结构
为方便存储数据,人们将每块盘面分为磁道和扇面。磁道是一个个的同心环。而每个磁道又被分为扇面(也称为扇区)。数据则以扇面进行存储。扇面也是磁盘I/O的最小单位,如图
磁盘驱动器的访问速度
磁盘在读写数据时的访问速度称为磁盘的动态属性。这是衡量一个磁盘性能的重要数据。数据访问时间或速度的计算并不简单,而这种计算不仅依赖于磁盘的旋转速度,而且还依赖于在访问开始时读写磁头所处的位置。数据访问时间也有几种衡量办法。
影响磁盘读写时间的因素有3个:
寻道时间
旋转延迟
数据传输时间
操作系统界面
对于磁盘来说,操作系统的一种功能是将磁盘驱动器系统里面的各种细节屏蔽起来,这样用户和应用程序都无须知道数据到底是如何存放在磁盘上的。操作系统在对磁盘进行管理时通常以磁盘块作为最小单位。而定位一个磁盘块则通过磁盘块地址进行。磁盘块通常为扇面数的整数倍,更为常见的是2的幂次方倍,如32个扇面或64个扇面等。
下列步骤描述的是从磁盘上读取一个扇面的过程:
1)操作系统将要读取的LBA传送给磁盘驱动器并启动读取命令。
2)磁盘驱动器通过将磁头移动到正确的位置,并启动处于指定盘面上的磁头来搜索指定的磁道。在磁头的移动过程中,读取磁头将不断地检查下面的扇面号直到找到所要求的扇面为止。
3)磁盘控制器将扇面数据和ECC信息传送到一个处于磁盘界面里的缓冲区。这里的ECC信息是在数据流动的动态过程中进行计算而得出的。
4)磁盘驱动器向操作系统发出“数据就绪”信号。
5)操作系统从磁盘界面里的缓冲区读取数据,既可以按一个字节一个字节的方式来读取,又可以启动DMA命令来读取。
磁盘调度算法
磁盘调度的算法主要有以下几种:
先来先服务FCFS(First Come,First Serve)
短任务优先STF(Shortest Task First)
短寻道优先SSF(Shortest Seek First)
电梯调度ES(Elevator Scheduling)
提前查看电梯调度ESLA(Elevator Scheduling with Look Ahead)
单向电梯调度OWES(One Way Elevator Scheduling)
讨论:
固态盘
智能磁盘系统
《操作系统之哲学原理第2版》邹恒明
精彩摘抄
?