《精通linux设备驱动程序开发》 第14章块驱动程序 学习笔记

主要内容:

  • 存储技术
  • LinuxI/O
  • I/O调度器
  • 块驱动程序数据结构和方法

1. 存储技术

块设备是一种能随机访问的存储介质,与字符设备不同,块设备能保存文件系统数据。

IDE/ATAPC的存储接口技术,ATA-7支持133MB/s的速率;ATAPICD-ROM和磁带等存储设备,用ATAPI协议连接标准IDE电缆;SATAIDE/ATA的串行演进,支持超过300MB/s的传输速率;SCSI服务器环境中流行的存储技术,Ultra320 SCSI支持320MB/sUSB大容量存储技术,是指USB硬盘、笔驱动器、CD-ROM以及软盘驱动器。

2.LinuxI/O

LinuxI/O层的工作,如下图所示,存储介质包含了文件系统的文件,用户应用程序唤醒I/O系统调用来访问这些文件,先经过通用VFS层,高速缓冲区通过磁盘块来加速文件系统对块设备的访问。在这期间,I/O调度器操控请求队列,是磁盘访问延时最小,同时使吞吐量最大。

3.I/O调度器

I/O调度器的主要目标是通过尽量少减少寻道时间来增加系统的吞吐量。为此,I/O调度器维持一个排序过的请求队列,排序是将请求按相关磁盘扇区连续性进行排列。

4. 块驱动程序数据结构和方法

(1)内核用include/linux/genhd.h中定义的gendisk结构体表示一个磁盘

struct gendisk {
	int major;
	int first_minor;
	int minors;
	
	char disk_name[32];
	struct block_device_operations *fops;
	struct request_queue *queue;
};

(2)与每个块驱动程序相关的I/O请求队列用request_queue结构体描述,该结构体定义在include/linux/blkdev.h中。

(3)每个request_queue队列中的请求用request结构体描述,该结构体定义在include/linux/blkdev.h中。

(4)Block_device_operation是与file_operation结构体对应的块驱动程序结构体。

stay hungry, stay foolish
原文地址:https://www.cnblogs.com/zygote/p/13946317.html