Linux 块设备驱动
风雨兼程8023
这个作者很懒,什么都没留下…
展开
-
Linux块设备驱动(一)————块设备的结构及磁盘的结构
块设备的结构及磁盘的结构 1、扇区 磁盘上的每个磁道被等分成若干个弧段,这些弧段便是磁盘的扇区。磁盘驱动器在向磁盘读写数据时,都是以扇区为单位。一般为512个字节,但也有1024或者2048个字节的。注意,即使程序只读取一个字节的数据,也应该传递一个扇区的数据。Linux系统中,扇区的大小都是512字节。内核模块中都是以512字节来定义扇区的。如果设备的扇区大小为2048字节,内核将其原创 2017-04-22 18:54:03 · 1587 阅读 · 0 评论 -
Linux块设备驱动(三)————块设备驱动程序的框架
/* 参考:* drivers\block\xd.c* drivers\block\z2ram.c*/#include #include #include #include #include #include #include #include #include #include #include #include #incl原创 2017-04-22 20:57:51 · 1101 阅读 · 0 评论 -
Linux块设备驱动(二)————块设备的体系架构
块设备的体系架构从上到下依次为VFS虚拟文件系统、磁盘缓冲、各种类型的磁盘系统、通用块设备层、I/O调度层(优化访问上层的请求(读写请求))、块设备驱动层、块设备硬件层。1、虚拟文件系统(VFS)由于Linux内核支持的文件系统(NTFS、FAT、Ext2等)很多,为了使应用程序不至于对每一种文件系统单独进行操作,所以要为各种文件系统提供统一的接口,这就是VFS的由来。由来VF原创 2017-04-22 19:36:01 · 823 阅读 · 0 评论 -
Linux块设备驱动(四)————块设备的数据结构与相关操作及I/O调度器
0、数据从内存到磁盘的过程 内存是一个线性的结构,Linux系统将内存分为页。一页最大可以是64KB,但是目前主流的系统页的大小都是4KB。每一页的数据会被先封装成一个段,用bio_vec表示。多个页会被封装成多个段,这些段被组成以一个bio_vec为元素的数组,这个数组用bio_io_vec表示。 bio_io_vec是bio中的一个指针。一个或者多个bio会组成一个request原创 2017-04-23 00:04:54 · 939 阅读 · 2 评论 -
Linux块设备驱动(五)————通用块层
通用块层是块设备驱动的核心部分,这部分主要包含块设备驱动程序的通过代码部分。 1、通用块层 通用块层是一个内核组件,他处理来自系统其他组件发出的块设备请求。换句话说,通用块层包含了块设备操作的一些通用函数和数据结构,如通用磁盘结构gendisk,前文介绍的请求队列结构request_queue、请求结构request、块设备I/O操作结构bio和块设备操作结构block_dev原创 2017-04-23 14:56:04 · 3599 阅读 · 2 评论 -
Linux块设备驱动(六)————待续
使用请求队列、不使用请求队列、使用I/O调度器、不使用I/O调度器这四种情况,涉及到系统调用部分,笔者在这暂时就不多说了,有兴趣的可以自己了解一下。若以后用到,在补充吧。原创 2017-04-23 15:22:55 · 603 阅读 · 0 评论