基本概念
扇区sector:对于磁盘,每个磁道的扇区数并不是常量
磁道track:从外往里数,也就是说最外面为0磁道。外道数据访问速度更快(相同角速度下,半径越大线速度越大)
柱面cylinder:不同盘片相同半径的磁道所组成的圆柱
磁头head:每个磁盘有两个面,每个面都有一个磁头
Flash Disk
优点:低功耗、大容量、数据访问速度快
缺点:容量、价格、寿命、可靠性、读写不对称(读快、写慢)
两种技术:NADND、NOR
磁盘的组织与调度
主引导记录MBR
硬盘分区表DPT:64字节。分为四小部分,每个部分表示一个分区的信息,占16字节
CHS模式
柱面数NC:最大1024(10位)
磁头数NH:表示硬盘总共有几个磁头,也就是几个盘片,最多256个(8位)
扇区数NS:表示每一条磁道上有几个扇区,由于所有的0扇区用于存放固件以及一些硬盘的专用的文件,最大为63 (用 6 位存储)。用户可见扇区从1开始
8.46GB问题:
LBA模式
Logic Block Address,将磁盘驱动器可以看做一个一维的逻辑块的数组,逻辑块是最小的传输单位
CHS与LBA地址转换
磁盘空间的管理
位图:空闲为1,已分配为0
空闲表法:将所有空闲块记录在一个表中。主要记录两项内容:起始块号,块数
空闲链表法:把所有空闲块链成一个表,链会很长
成组链接法:把空白物理块分成组,再通过指针把组与组之间链接起来
磁盘访问时间
寻道时间:指的是把磁臂(磁头)从当前位置移动到指定磁道上所经历的时间。Ts=启动磁盘的时间s + 磁头移动n条磁道所花费的时间之和(m x n, m为常数)
旋转延迟时间:平均旋转延迟时间Tr=转一圈所需时间/2=1/(2*转速r)
传输时间:把数据从磁盘读出,或向磁盘写入数据所经历的时间,Tt = 每次所读/写的字节数b/(转速r*磁道上的字节数)
总访问时间Ta = Ts + Tr + Tt
磁盘调度算法
- 先来先服务算法(FCFS)
- 最短寻道时间优先算法(SSTF,Shortest Seek Time First):优先选择距当前磁头最近的访问请求进行服务,主要考虑寻道优先。可能出现饥饿现象
- 扫描算法(SCAN)
- 循环扫描算法(C-SCAN):移动臂到达最后一个柱面后,立即带动读写磁头快速返回到0号柱面,返回时不为任何的等待访问者服务,返回后可再次进行扫描。
- LOOK
- C-LOOK
提高磁盘I/O性能
缓存
优化数据布局
提前读:顺序访问时,常采用提前读入下一块到缓冲区中
延迟写:将本应立即写回磁盘的数据挂到空闲缓冲区的队列的末尾。直到该数据块移到链头时才将其写回磁盘,再作为空闲区分配出去
虚拟盘:利用内存空间去仿真磁盘(RAM盘)
Vitual disk 与disk cache的区别是:
Vitual disk的存放的内容由用户完全控制
Disk cache中的内容完全是由操作系统控制