linux 块I/O层 自学报告

块设备的特点在于可以被随机访问,即在访问设备时随意地从一个位置跳转到另一个位置。


块设备中最小的可寻址单元是扇区(sector),扇区的大小是设备的物理属性。扇区对于内核的重要性在于所有设备的I/O操作都必须基于扇区来进行。软件的最小逻辑可寻址单元---块,(比扇区高一层的抽象)。块是文件系统的一种抽象---只能基于块来访问文件系统。块不能比扇区还小,只能数倍于扇区大小。


每个缓冲区与一个块对应,它相当于是磁盘块在内存中的表示。用buffer_head结构体表示,被称为缓冲区头。它的目的在于描述磁盘块和物理内存缓冲区(在特定页面上的字节序列)之间的映射关系,只是扮演一个描述符的角色,说明从缓冲区到块的映射关系。


内核中块操作的基本容器由bio结构体表示,该结构体代表了正在现场的(活动的)以片段链表形似组织的块I/O操作,一个片段是一个小块连续的内存缓冲区。向量I/O就是所谓的聚散I/O.bio结构体代表的是I/O操作,它可以包括内存的一个或多个页,而buffer_head代表的是一个缓冲区,它描述的仅仅是磁盘的一个块,关联的是单独页中的单独磁盘块。bio很容易处理高端内存,它处理的是物理页而不是直接指针;也便于执行飞散-集中(向量化)块I/O操作,操作中的数据可取自多个物理页面。


块I/O请求保存在请求队列中,该队列由request_queue结构表示,只要它不为空,队列对应的块设备驱动程序就会从队列头获取请求,然后将其送入对应的块设备。队列中的每一项都是一个单独的请求(用request结构体表示)。一个请求可能要操作多个连续的磁盘块,所以每个请求可以有多个bio结构体组成。


在内核中负责提交I/O请求的子系统被称为I/O调度程序。虚拟块设备给多个磁盘请求,以便降低磁盘寻址地址,确保磁盘性能的最优化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值