正文:

  1. 块设备最小可寻址单元是扇区,多数是512字节。
  2. 内核执行的所有磁盘操作都是按照块进行的。块大小一般为512,1k,4k。
  3. 当一个块被调入内存时,它要存储在一个缓冲区中,每个缓冲区都有一个对应的描述符buffer_head,它包含了内核操作缓冲区所需要的全部信息。
  4. 目前内核中块IO操作的基本容器由bio结构体表示,此结构体代表了正在现场以片段链表形式组织的块IO操作。
  5. bio结构体代替buffer_head结构体的好处:bio可以很容易的处理高端内存,因为它处理的是物理页而不是直接指针;bio既可以代表普通页,同时也可以代表直接IO(那些不通过页高速缓存的IO操作);bio便于执行分散—集中块IO操作,操作的数据可取自多个物理页面;bio更加轻量级。
  6. 块设备将它们挂起的块IO请求保持在请求队列中。
  7. IO调度程序(电梯调度) 将磁盘IO资源分配给系统中所有挂起的块IO请求。通过将请求队列中挂起的请求合并和排序来完成的。
  8. 最后期限IO调度程序 ,每个请求都有一个超时时间。
  9. 预测IO调度程序以最后期限IO调度程序为基础,它也实现了三个队列,并为每个请求设置了超时时间,但它增加了预测启发的能力。
  10. 完全公正的排队IO调度程序 是为专有工作负荷设计的,它把进入的IO请求放入特定的队列中,这种队列根据引起IO请求的进程组织的。
  11. 空操作的IO调度程序,不进行排序,也不进行其他形式的预寻址操作,但会执行请求合并。