linux 块设备驱动
z41013774
这个作者很懒,什么都没留下…
展开
-
块设备的基本概述
什么是块设备,块设备将信息存储在固定大小的块中,每个块都有自己的地址。数据块的大小通常在512字节到32768字节之间。块设备的基本特征是每个块都能独立于其它块而读写。 块设备驱动程序的调用,可以由上往下分为下面几层。也就是从上层的应用中的读写函数如何到磁盘中的数据,可以这样分,也就是函数调用的步骤。 第一层VFS部分,在VFS文件系统中给出了一些分析。 第二层的具体的文件系统原创 2011-10-30 14:08:49 · 1383 阅读 · 0 评论 -
页高速缓存(一)
一、 页高速缓存 页高速缓存是Linux内核使用的主要磁盘高速缓存。在大多数情况下,内核在读写磁盘的时候都会引用页高速缓存。如果页不在高速缓存中,新的页就会回到高速缓存中,然后从磁盘中读出数据来填充它。如果内存有足够的空闲空间,会让该页长期保留在高速缓存中,以提高访问磁盘的速度。 同样,把数据写到磁盘上也是一样的,如果该数据对应的页在高速缓存中,就可以直接写回磁盘,如果不在,就增加新页,然后写原创 2011-10-30 14:12:01 · 2123 阅读 · 0 评论 -
块设备驱动层
这一章不准备介绍太多,以后还会补充,主要介绍一下块设备驱动的大致流程。 一、 磁盘和磁盘分区的表示 磁盘是一个由通用块层处理的逻辑块设备。通常一个磁盘对应一个硬件块设备,如硬盘,软盘或光盘。磁盘是由gendisk对象描述。 struct gendisk { 01 int major; 02 int first_minor; 03 int minors;原创 2011-10-30 14:27:25 · 1120 阅读 · 0 评论 -
页高速缓存(二)
五. 把块放在页高速缓存中 在旧的Linux内核版本中,有两种不同的磁盘高速缓存,分别是页高速缓存和缓冲区高速缓存,前者用来存放访问磁盘文件内容时生成的磁盘数据页,后者把通过VFS访问的块的内容保留在内存中。从2.4.10版本开始,缓冲区高速缓存不存在了,把它们存放在叫做”缓冲区页”的专门页中,页缓冲区页保存在页高速缓冲中。缓冲区页在形式上就是与称做”缓冲区首部”的附加描述符相关的数据页,主要目原创 2011-10-30 14:15:36 · 1304 阅读 · 0 评论 -
通用块层
通用块层是一个内核组件,处理来自系统中的所有块设备发出的请求,接着上一层,处理提交过来的缓存区头。如果上一章address_space是关键的数据结构,这一章是bio和bio_vec,这两个数据结构 一、 两个重要的数据结构 struct bio { 01 sector_t bi_sector; 02 struct bio *bi_next; /* request queue lin原创 2011-10-30 14:19:19 · 1349 阅读 · 0 评论 -
IO调度层
一、 IO调度的两个重要的数据结构 request_queue数据结构如下struct request_queue { 01 struct list_head queue_head; 02 struct request *last_merge; 03 struct elevator_queue *elevator; 04 struct request_list rq; 05 06原创 2011-10-30 14:21:05 · 974 阅读 · 0 评论