表-磁盘管理 |
硬盘分类 | 机械硬盘(磁盘) | 由机电器件组成 |
固态硬盘 | 由半导体器件组成 |
磁盘组成 | 每个磁盘由若干盘片组成,每个盘片由一个或两个盘面组成,每个盘面由若干磁道组成,每个磁道由若干扇区组成 |
盘面 | 每个盘片可以用一个盘面或两个盘面存储数据。每个盘面至少有一个磁头 |
磁道 | 所有盘面具有相同的磁道数,且各盘面中对应磁道的半径相同 |
磁头类型 | 固定磁头 | 每条磁道有一个磁头,无需移动磁头,可以并行读写。用于大容量磁盘 |
移动磁头 | 每个盘面仅有一个磁头,需要移动磁头,只可串行读写。用于中小容量磁盘 |
扇区 | 扇区是磁盘可寻址的最小物理存储单位(类似内存的存储单元)。每个扇区存储一个物理记录,每个物理记录占用一个扇区 |
扇区划分方式 | 等分 | 所有磁道具有相同的扇区数,且各磁道中对应扇区的圆周角重合 |
差分 | 将相邻的磁道分为若干条环带,同一环带中的磁道具有相同的扇区数,外层环带磁道具有较内层环带磁道更多的扇区。对OS提供虚拟几何的磁盘规格(即同一盘面中的所有磁道具有相同的扇区数)以隐藏实现细节 |
磁盘数据格式 | 磁盘数据块 | 每个扇区包括两个字段:标识符字段和数据字段。 |
标识符字段 | 标识符字段由字段定界符SYNCH(1Byte)、标志该扇区的磁道号、磁头号和扇区号及字段检验码CRC(2Byte)三部分组成 |
数据字段 | 数据字段由字段定界符SYNCH(1Byte)、数据及字段检验码CRC(2Byte)三部分组成 |
磁盘格式化 | 低级格式化 (划分扇区) | 即按照磁盘数据块的格式划分扇区 |
中级格式化 (划分分区) | 即将一个物理磁盘分为若干逻辑磁盘(即分区)。一个物理磁盘只有一个不属于任何分区的主引导扇区(该物理磁盘的第1个扇区,即物理磁盘的0号扇区,也称为主引导记录(MBR))。主引导扇区中包含引导程序、磁盘分区表(DPT)、Windows磁盘签名(占4bytes)和结束标志(0x55AA)四部分。磁盘分区表中至多(受磁盘扇区和磁盘分区表大小的限制)可记录4个表项,故每个物理磁盘至多可有4个主分区(物理分区)或3个主分区(物理分区)和1个扩展分区(包含逻辑分区)。磁盘分区表中的每个表项记录一个分区的起始位置(起始扇区)、大小(扇区数)和使用的文件系统的类型。磁盘分区表中必须有一个分区被标记成活动的,以保证能够从硬盘引导系统。每个分区均有一个属于自己的引导扇区(该分区的第1个扇区,即该分区的0号扇区) |
高级格式化 (安装文件系统) | 即为每个磁盘分区安装各自的文件系统(同一磁盘的不同分区可以使用不同的文件系统) |
磁盘访问 | 磁盘访问时间 | 磁盘在工作(读写数据和空转)时以恒定速率按扇区号递增的方向单向旋转。磁盘的访问时间分为寻道时间、旋转延时时间、传输时间,即Ta=Ts+Tr+Tt。在数据访问中,寻道时间和旋转延时时间基本都与访问数据的多少无关,但它们通常占据了访问时间中的大头 |
寻道时间 | 寻道时间,指磁头移动到指定磁道上所经历的时间,Ts=s+m×n,其中,s为启动磁臂的时间,m为磁头移动一条磁道所需的时间,n为移动的磁道数。即寻道时间为启动时间与磁头移动n条磁道所需时间之和 |
旋转延时时间 | 旋转延时时间,指指定扇区移动到磁头下面所经历的时间,平均旋转延时时间Tr=1/(2r),其中,r为转速。即平均旋转延时时间为旋转一周所需时间的一半 |
传输时间 | 传输时间,指将数据从磁盘读出或将数据写入磁盘所经历的时间,Tt=b/(nr),其中,r为转速,n为一条磁道上存储的字节数,b为传递的字节数,即传输时间为磁盘转过读写数据所占角度所经历的时间 |
磁盘地址结构 | 磁盘的存储是按照盘面、磁道和扇区三要素唯一确定的,但在具体使用时是将所有的存储块按一维地址来进行分配的。磁盘的地址结构如下 因为在磁盘数据访问中,寻找磁道的寻道时间最长,寻找扇区的旋转延时时间次之,确定盘面几乎不需时间,故为减少访问地址连续的数据所需的时间,设计使时间花费越少的部件所对应的地址字段越靠近地址的低位部分。磁道、扇区和盘面均从0开始编号,最外层磁道的编号为0。 |
磁盘调度 | 调度原理 | 使各进程对磁盘的平均访问时间最小。由于在访问时间中主要是寻道时间,故磁盘调度的目标是使磁盘的平均寻道时间最小 |
调度算法 | FCFS | 先来先服务。按进程请求访问磁盘的先后次序进行调度 |
SSTF | 改进 | 减小平均访问时间 |
实现 | 最短寻道时间优先。每次选择其要求访问的磁道与当前磁头所在的磁道距离最近的进程,以使每次的寻道时间最短。但不能保证平均寻道时间最短 |
缺点 | 容易产生进程饥饿 |
SCAN | 改进 | 防止进程饥饿 |
实现 | 扫描算法(又称电梯调度算法)。不仅考虑欲访问磁道与当前磁道间的距离,更优先考虑磁头当前的移动方向。即当磁头移动到请求访问的最外(内)层磁道并完成访问后,立即将移动方向改变,并移动到与当前磁道距离最近的请求访问的磁道。可能的最大进程请求延时为2T(T为磁头完成从最外层磁道到最内层磁道的扫描的最大时间) |
缺点 | 可能出现较大的进程请求延时 |
CSCAN | 改进 | 减小可能出现的最大进程请求延时 |
实现 | 循环扫描算法。磁头在扫描期间只做单向移动。当磁头移动到请求访问的最外(内)层磁道并完成访问后,立即直接移动到请求访问的最内(外)层磁道,最外(内)层磁道与最内(外)层磁道构成循环。可能的最大进程请求延时为T+S(T为磁头完成从最外层磁道到最内层磁道的扫描的最大时间,S为磁头从最外层磁道移动到最内层磁道的时间) |
缺点 | 可能出现磁臂粘着(SSTF和SCAN也可能出现) |
NStepSCAN | 改进 | 解决磁臂粘着 |
实现 | N步扫描。将磁盘请求队列分成若干长度为N的子队列,子队列间采用FCFS调度算法,子队列内采用SCAN调度算法 |
缺点 | 实现较复杂 |
FSCAN | 改进 | 对NStepSCAN算法进行简化 |
实现 | 快速扫描。FSCAN实质是NStepSCAN算法的简化,将磁盘请求队列分成两个子队列,一个是当前队列,即当前所有磁盘请求进程形成的队列,对该队列采用SCAN算法;另一个是等待队列,即在扫描当前队列期间所有新出现的磁盘请求进程形成的队列,当前队列扫描完后等待队列自动变为当前队列 |
磁盘I/O速度提高方式 | 磁盘高速缓存 | 定义 | 磁盘高速缓存,指利用内存中的存储空间来暂存从磁盘中读出的一系列盘块中的信息。磁盘高速缓存逻辑上属于外存,物理上属于内存。 |
数据交付方式 | 数据交付方式,指将磁盘高速缓存中的数据传送给请求者进程 |
数据交付 | 直接将磁盘高速缓存中的数据传送到请求者进程的工作区内 |
指针交付 | 只将指向磁盘高速缓存中某区域的指针交付给请求者进程 |
置换算法 | 置换算法同请求调页(段)使用的置换算法,除考虑最近最久未使用这一原则外,还考虑访问频率、可预见性和数据一致性等问题。基于以上考虑,可将磁盘高速缓存中的所有盘块数据拉成一条LRU链。对应那些会严重影响到数据一致性的盘块数据和很久都可能不再使用的盘块数据,都放在LRU链的头部,使它们被优先写回磁盘,以减少发生数据不一致性的概率,或者可以尽早地腾出磁盘高速缓存的空间。对于那些可能在不久之后便要再用的盘块数据,应挂在LRU链的尾部,以便在不久以后需要时,只要该数据尚未从链中移至链首而被写回磁盘,便可直接到LRU链中去找它们 |
对比 | 表-高速缓存与缓存区的区别 | | 高速缓存(Cache) | 缓存区(Buffer) | 存放的数据不同 | 高速缓存中存放的是高、低速设备上数据的拷贝 | 缓冲区中存放的是高、低速设备之间的传送数据,不一定在高、低速设备上有备份 | 目的不同 | 高速缓存是通过存放经常被访问数据的拷贝,以减少访问低速设备的次数 | 缓冲区是通过存放高、低速设备之间的传送数据,以缓和高、低速设备间的速度不匹配 |
|
提前读 | 即在读当前块的同时,将下一盘块(提前读的块)中的数据也读入缓冲区 |
延迟写 | 延迟写是指在缓冲区中的数据,本应立即写回磁盘,但考虑到该缓冲区中的数据在不久之后可能还会再被本进程或其它进程访问(共享资源),因而不立即将该缓冲区中的数据写入磁盘,而是将它挂在空闲缓冲区队列的尾部(此时该缓冲区还不是空闲缓冲区,只有空闲队列中其前面的“空闲”缓冲区全部用完后,仍需要分配空闲缓冲区时,才变为真正的空闲缓冲区)。随着空闲缓冲区的使用,缓冲区也缓缓往前移动,直至移到空闲缓冲队列的首部。当再有进程申请到该缓冲区时,才将该缓冲区中的数据写入磁盘,而把该缓冲区作为空闲缓冲区分配出去。当缓冲区仍在队列中时,任何访问该数据的进程,都可直接读出其中的数据而不必去访问磁盘 |
虚拟盘 | 定义 | 虚拟盘,是指利用内存空间去仿真磁盘,又称RAM盘(与虚拟内存利用外存空间仿真内存相反)。 |
用途 | 虚拟盘通常用于存放临时文件。 |
对比 | 虚拟盘与磁盘高速缓存的主要区别是:虚拟盘中的内容完全由用户控制,磁盘高速缓存中的内容由OS控制。 |