目录
一、物理硬盘的基本结构
移动头磁盘物理结构示意图
注意:图中盘片的最顶面和最低面没有磁头。
磁头是对磁盘盘面上存储的信息进行读写的物理器件。
单独拿出一个盘片来分析,每个盘面(正反面均存储信息,除最顶和最底面外)
柱面是一个圆柱体里面的每个带磁头的盘面所构成的
1、对磁道、扇区的划分理解:
信息存储是以扇区为基本单位的,是一个一个扇区存储的。
一个扇区的存储的信息量大小为512bite=0.5kb。
柱面:磁头不动时,中心固定轴转一圈,所有磁头下形成磁道构成一个柱面。
一个盘面被划分为n个磁道,则磁盘有n个柱面。
磁盘的信息存储是一个一个柱面存储的,同一个柱面里面是一个一个磁道存储的,同一磁道里面是一个一个扇区存储的,所有,磁盘存储的物理地址结构组成为:
柱面号 | 磁道号/磁头号 | 扇区号 |
- 用户角度地址:逻辑地址--->逻辑扇区号(一个一个柱面编号,同一柱面一个一个磁道编号,同一磁道一个一个扇区编号)
例:100个磁道/盘面,100个扇区/磁道,共20个盘片
容量计算:一个柱面磁道数:18(0..17)个磁道,柱面数:100(0..99),100(1..100)扇区数/道
编号:
柱面 磁头 扇区
0 1 1~100
0 2 101~200
...
0 17 1701~1800
1 0 1801~1900
...
总容量计算:100*18*100*0.5k=90M
信息存储时一般是先存储外围柱面后存储里面柱面,最重要信息存储在外围柱面,编号从外围柱面开始。
二、磁盘读写
1、磁盘的读写
逻辑扇区号-->磁盘物理地址结构(柱面号、磁头好、扇区号)
磁盘读写时是先定位柱面,再确定磁头,之后转到盘片,盘面上要读写的扇区转到磁头下后开始读写,磁头在该扇区上滑过后即完成磁盘本次扇区读写。
因为移动臂的移动属于机械运动,花费时间较长;磁头的选择是采取光电开关,速度很快,可以忽略不计,中心轴是匀速高速圆周运动(磁盘转速),寻找定位扇区时间是移动臂移动时间的10分之一左右,扇区定位好后就是完成数据的读写及传送时间(传送到数据缓冲区)
- 寻道时间
- 延迟时间
- 传输时间
假设:转速:R转/分钟,则磁头转一圈的时间:(1/R )*60 秒
假设:M扇区/磁道,则一个扇区的读写时间:(1/(R*M) )*60 秒
2、磁盘调度
在某个时间段,存在多个磁盘服务请求者,如何选择请求者服务顺序使得完成所有服务所花费的时间尽量少(提高磁盘的读写效率,提高程序的执行速度),选择方案为磁盘调度算法。
磁盘调度首先考虑移臂调度,之后考虑旋转调度。
常见的移臂调度:
a、先来先服务FCFS
排队思路:先来先进行服务采取队列进行排队实现
缺点:没有考虑移动臂移动需花费大量时间
基本不采用
b、短距离优先服务
思路: 选择距离当前磁头位置最近的服务请求服务。
缺点:
- 可能选中的请求不在磁头运动方向上,导致磁盘转向,而磁盘转向需花费额外时间
- 可能存在某个请求长时间得不到响应,产生饥饿现象。
- 例:由4个请求,分别请求磁盘资源。 A(1,0,10),B(8,2,10),C(5,3,3),D(4,2,20),括号内的数字为请求的资源所在的磁盘位置(柱面号,磁道号,扇区号);此时磁头在3号磁道,运动方向由里向外。
FCFS:磁头移动顺序:3-->1-->8-->5-->4,A-->B-->C-->D,共2+7+3+1=13个距离
短距离优先:磁头移动顺序:3-->4-->5-->8-->1,D-->C-->B-->A,共1+1+3+7=12个距离
-
c、单向扫描法:
- 思路:磁头固定从磁盘外向内移动,移动过程中碰到请求的柱面时为其服务,磁头移动到最后时再直接返回至起始位置再重新开始扫描,在其返回过程中不进行扫描。
- 缺点:1、在无请求服务时,磁头继续运动;
- 2、在磁头运动时,请求出现在磁头移动过的柱面里,此时不会对其进行服务,只能等待下一次扫描。
- 缺点:1、在无请求服务时,磁头继续运动;
- 思路:磁头固定从磁盘外向内移动,移动过程中碰到请求的柱面时为其服务,磁头移动到最后时再直接返回至起始位置再重新开始扫描,在其返回过程中不进行扫描。
d、双向扫描法:
思路:同单向扫描法,但在其返回过程中继续由里向外扫描。里-->外-->里-->外...,不断进行
e、电梯调度法:
类似电梯运作方式,磁头从外向里扫描,遇到请求即为其服务;若运动方向无请求且反方向有请求则磁头反向为其服务;若没有请求则磁头停留在最后请求服务的位置,直到新的请求发生。
3、旋转调度:
当多个请求者其访问地址存在相同的柱面时需要考虑旋转调度,也就是选择扇区问题。
扇区的读写:每次只可以一个磁头对扇区进行读写。
当有若干等待进程请求访问磁盘上的信息时,旋转调度应该考虑以下情况:
1,进程请求访问的是同一磁道上的不同编号的扇区;
2,进程请求访问的是不同磁道上的不同编号的扇区;
3,进程请求访问的是不同磁道上具有相同编号的扇区。
对于1,2,总是让首先到达读写磁头位置下的扇区先进行传送操作;对于3,可以任选一个读写磁头位置下的扇区进行传送操作。
例:有4个请求,A(1,0,10),B(1,2,10),C(1,3,3),D(1,2,20)其柱面相同,优先选择哪个扇区?
处理策略:谁先转到磁头下就先为谁服务,若遇到不同磁头对同一扇区进行读写,则任选一个进行读写。
假设:有100个扇区/磁道,当前磁头转到1号扇区,则按照以下方式进行旋转:
1-->2-->3-->4-->5-->…-->100-->1-->2-->3-->4-->...
对上述例子的处理顺序为:
C-->A-->D-->B/C-->B-->D-->A
因为A,B都在10号扇区,磁头一次只能读取一个请求。