14---块IO层

什么是块?

固定大小的数据块

什么是块设备?

系统能够随机访问块的硬件设备

怎样区分字符设备和块设备?

设备能够以不按顺序的方式访问的是块设备否则是字符设备。

什么是扇区?

扇区是块设备最基本的操作和寻址单元,扇区的大小是设备的物理属性,一般是2的倍数,最常见扇区大小为512字节。

磁盘块在内存中如何表示?

当一个块被调入内存时,被存储到缓冲区。每个缓冲区和一个块对应。

什么是缓冲区头?

缓冲区用一个buffer_head的数据结构描述块的相关控制信息(如块所属块设备、块对应的缓冲区),这个数据结构称为缓冲区头。

缓冲区头有什么作用?

描述磁盘块和缓冲区之间的映射关系。

缓冲区头有哪些缺点?

  • 缓冲区头很大且不易控制,对数据操作不方便不清晰。
  • 仅能描述单个缓冲区

目前内核中块IO操作的基本容器是什么?

bio结构体,代表正在现场的活动的以片段(segment)链表形式组织的块IO操作。

什么是片段(segment)?

一小块连续的内存缓冲区

缓冲区头和bio结构体有什么区别?

  • 缓冲区头----代表缓冲区,描述单独某一页的某个磁盘块
  • bio结构体---代表IO操作,描述一个或多个页中的块

使用片段bio结构体来描述缓冲区有什么好处?

  • bio结构体可以代表普通页IO,也可以代表直接IO(不通过页高速缓存的IO操作)
  • 易于处理高端内存
  • 便于处理集中或分散的块IO操作,操作数据取自多个物理页面
  • 只包含块IO操作相关的信息,不包含缓冲区信息

什么是请求队列?

request_queue结构体表示请求队列,它保存着块设备挂起的块IO请求。当请求队列不为空时,相应的块设备驱动程序从队列头获取请求送到对应的块设备上。

如何表示队列的块IO请求?

用request结构体表示块IO请求,一个请求可能需要操作多个连续的磁盘块(内存中的块不一定要连续),所以一个请求可以由多个bio结构体组成

怎样提高系统性能?

磁盘寻址在计算机操作中占用大量时间,缩短磁盘寻址的时间是提高性能的关键。

怎样优化寻址,缩短寻址时间?

内核在将请求提交给磁盘之前,先将请求队列中挂起的请求执行合并和排序的预操作。合并操作---当存在两个或两个以上的请求访问的磁盘扇区相邻,将多个请求结合成一个新的请求。排序操作----将请求队列按照磁盘扇区的增长方向有序排序,使磁头保持直线方向移动,保证队列中的请求是以被访问磁盘物理位置为序进行排列的。

什么是IO调度程序?

内核中负责提交IO请求的子系统。

IO调度程序和进程调度程序有什么不同?

  • 进程调度程序的作用是将处理器资源分配给系统中运行的进程
  • IO调度程序的作用是将磁盘IO资源通过预操作分配给系统中挂起的块IO请求

在IO调度程序预处理机制下,一个请求插入请求队列有哪几种情况?

  • 队列中存在一个相邻磁盘扇区的操作请求,将新请求与之合并;
  • 队列中存在一个驻留时间过长的请求,将新请求插入到队列尾部
  • 队列中以扇区方向为序存在合适的插入位置,将新请求插入该位置
  • 队列中不存在合适位置插入新请求,将新请求插入到队列尾部

什么是最后期限IO调度程序?

在最后期限IO调度程序中每个请求都有一个超时时限,除了将请求按照访问磁盘顺序添加到普通排序队列中,还会根据请求的类型加入到相应的FIFO队列。当某个请求超时或超时前,不管普通排序队列中下一个响应的是不是这个请求,都会依据FIFO队列,提交和执行这个请求。

猜你喜欢

转载自blog.csdn.net/weixin_42415578/article/details/84323749
今日推荐