linux 块设备驱动
来源:互联网 发布:saa7104监控软件 编辑:程序博客网 时间:2024/05/16 09:28
虚拟文件系统(vfs)层类似于面向对象中的“抽象基类”的概念,而下面一个个具体的文件系统就相对于这个抽象基类
的"派生类",所有文件操作如 open, read, write等在vfs中只是实现了一个类似于“纯虚函数”的接口,针对具体的文件
系统,就会使用其派生类中被“改写”的“虚函数”。
块设备和字符设备
相同之处:
1 . 都经过vfs向用户空间提供上述中的文件操作接口open,read,write等。
不相同之处:
1 . 字符设备是在字符设备驱动程序中实现了file_operations中的函数指针所指的函数,块设备中是在vfs
下的不同文件系统层(yaff2, ext3等)是实现这些file_operations,再下层是块设备驱动层。
2 . 字符设备的输入是顺序的,而块设备有可能是多个随机的 的访问。
3 . 块设备驱动是不关心文件操作的,文件操作在具体的文件系统实现,块设备驱动只关心要上层发下来的操作
请求,并去响应这些请求。
块设备驱动-IO调度
如果简单地以内核产生请求的次序直接将请求发向块设备的话,性能肯定让人难以接受。磁盘寻址是整个计算件
中最慢的操作之一,每次寻址定位硬盘磁头到特定块上的某个位置,需要花费不少时间。所以尽量缩短寻址时间
是提高系统性能的关键。
为了优化寻址操作,内核既不会简单地按请求接收次序,也不会立即将其提交给磁盘,相反,它会在提交前,先执
行名为合并与排序的预操作,这种预操作可以极大地提高系统的整体性能,在内核中负责提交I/O请求的子系统就
称为I/O调度程序。
请求扇区1 请求扇区1
请求扇区10 请求扇区4
请求扇区7 请求扇区7
请求扇区4 请求扇区10
I/O调度程序操作前 --> I/O调度程序操作前
关于块设备驱动的request和bio
bio用户发来的块设备I/O操作。这些bio被放到一个队列里面,这个队列就够成了一个requst,那么对于块设备驱动来
讲就是去处理这些request,处理完后并通知用户。
块设备中的多个请求request会被调度算法进行整合,块设备驱动会从请求队列取这些request,并处理这些一个个被
整合后的request(这些请求形成一个请求队列),一个request中可能包含多个bio,
- Linux块设备驱动
- Linux块设备驱动
- Linux块设备驱动
- linux块设备驱动
- Linux块设备驱动
- linux 块设备驱动
- Linux块设备驱动
- linux块设备驱动
- linux块设备驱动
- Linux 块设备驱动
- linux块设备驱动
- linux块设备驱动
- Linux块设备驱动
- linux 块设备驱动
- Linux块设备驱动
- Linux设备驱动之块设备驱动
- LINUX块设备驱动1
- LINUX块设备驱动2
- es-hadoop-hive 时间格式问题记录
- Mysql 5.1 配置双主
- 常被提到的排序四(希尔排序)
- 什么是体数据可视化(Volume data visualization)?及体绘制的各种算法和技术的特点?
- CU的划分、地址以及索引
- linux 块设备驱动
- 全兼容系列(4)----------------------2017春节倒计时
- n对括号组合的所有情况
- PE文件解析器的编写(二)——PE文件头的解析
- 如何判断自己IP是内网IP还是外网IP
- NSString类详解
- Java多线程/并发22、信号量Semaphore
- NYOJ_1275 导弹发射 【LIS】
- 银行家算法 —— js实现