linux块设备驱动编写,Linux内核学习笔记 -49 工程实践-编写块设备驱动的基础

本文详细介绍了Linux内核中块设备的处理流程,从字符设备与块设备的区别开始,深入到文件系统、通用块层、IO调度层以及块设备驱动的角色。通用块层为块设备提供了抽象模型,隐藏了硬件细节;IO调度层则通过各种算法优化IO请求顺序,提高效率。块设备驱动直接与硬件交互,负责具体的IO操作。
摘要由CSDN通过智能技术生成

块设备可以随机存储。字符设备,比如键盘,只能按照输入顺序存取,不可随机,打乱输入的字节流。

02297cd25e0e76705c5c8e837c73d45e.png

文件系统层,包括常见的文件系统,以及虚拟文件系统层VFS,字符设备可以直接用应用程序打开。块设备不会在应用程序直接打开,而是要通过文件系统访问块设备。

通用块层:为了通用的块设备,建立了一个统一的模型,这一层的主要工作是接收文件系统层发出的磁盘请求,并最终向磁盘设备发出io请求,所以它隐藏了很多底层硬件块设备的细节,为块设备提供了一个抽象的模型。

IO调度层:接收通用块层发出的IO请求,缓存这些请求,然后根据IO调度算法来合并相邻的请求,然后调用驱动层提供的处理函数,发送这些io请求到硬件设备。这里io调度层有多种调度算法,比如电梯调度算法,CFQ调度算法,因为传统机械硬盘,他的物理结构特性,内核是不会简单的按照请求的顺序来提交给块设备的,io调度器会根据场景进行优化,来做一些合并或排序这样一些预操作。

块设备驱动:这一层就是实际的块设备驱动,比如磁盘驱动,光驱驱动,ssd驱动。一般来说,块设备驱动包含块设备的注册,打开,关闭以及具体的IO处理

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值