linux块设备驱动之相关结构体间的关系

原创 2015年07月08日 21:29:47

        根据上一篇blog:linux块设备驱动之相关结构体

        前一篇blog中已经贴出这些相关的结构体,但是其中关系还是没有说的很清楚。现在来理一理它们之间的关系,首先是struct gendisk 和 struct block_device 以及struct hd_struct;其中struct  gendisk 表示的是一个块设备,而struct block_device表示是一个分区设备(也可以表示块设备),struct hd_struct表示的是一个分区信息;它们的关系如下面。

       

        下面是struct request 和 struct bio 的关系;其实还有一副图没有贴出,就是表示一个块设备只有一个队列,而该队列中有多个request,每个request都代表了一个请求。而request结构体真正的有效数据是bio,其实request的请求都是bio请求。如果不是硬盘之类的设备,比如闪存、ssd之类不需要对request请求进行排列顺序(因为硬盘请求是要移动磁头的,所以会在队列里把所有的request请求进行排序,一般我们熟悉的就是电梯算法;但是像ssd这样的设备是不需要用磁头的,可以随时访问任何地址,没有什么磁道之类的,也就不需要电梯算法对request请求进行排序之类的。所以不用request,直接用bio进行访问请求)

       


        转载地址:linux块设备驱动之相关结构体间的关系


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

linux块设备驱动之请求过程剖析

当设备完成在一个I/O请求的部分或者全部的扇区时,必须调用下面的函数通知块设备子系统:int end_that_request_first(struct request *req, int suc...

块设备驱动实例

摘自:http://my.oschina.net/heiden/blog/194505 将ldd3(linxu device driver 3)中块设备驱动部分的代码在redhat6.3下编译时,会...

linux中用debugfs调试

Linux驱动调试中的Debugfs的使用简介 (2012-03-31 14:14) 在调试linux驱动的时候,可以用debugfs来调试,debugfs类似字符设备驱动一样,甚至更简单,不需要...

linux块设备驱动之相关结构体

我做的主要是ssd驱动,ssd驱动通过FTL转换成对一个磁盘的操作,也就相当于一个磁盘的块设备驱动。块设备驱动程序主要通过传输固定大小的随机数据来访问设备。 注册块设备         和字符设备驱...

linux块设备驱动之实例

前两篇blog已经基本熟悉了块设备的相关结构,这里来总结下ldd3中提到的一些块设备驱动例题; 注册: sbull_major = register_blkdev(sbull_ma...

openVswitch(OVS)源代码分析之数据结构

记得Pascal之父、结构化程序设计的先驱Niklaus Wirth最著名的一本书,书名叫作《算法 + 数据结构 = 程序》。还有位传奇的软件工程师Frederick P. Brooks曾经说过:“给...

linux内核驱动模块编程框架---(hello world模块)

linux内核驱动模块编程框架,模块Makefile文件,模块的常用操作命令(模块的加载卸载命令);重点来说下注册的回调函数,static int __init hello_init(void)和st...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)