linux内核设计与实现读书笔记——IO层

  IO层设备分为两种

1)块设备:能够随机访问固定大小的数据片,以安装文件系统的方式使用

2)字符设备:按照字符流的方式被有序访问。

块设备的管理:

1)单位

文件块/IO块:扇区的2的整数倍,小于页面大小,访问文件系统的单位。

缓冲区:每个缓冲区与一个块对应,是磁盘块在内存中的表示;

缓冲区头:缓冲区的描述符,用buffer_head结构体描述,定义在

bio结构体:块操作的基本容器,定义在中,代表正在现场的以片段(连续的内存缓冲区)链表形式组织的块IO操作。

每个块IO请求通过一个bio结构体表示,一个活多个块存储在bio_vec结构体数组中。 

2)请求队列

块设备将快请求保存在请求队列中,reques_queue结构体定义在中,内核将请求加入队列,相应的块设备驱动程序从队列头获取请求。

request:队列中的每个请求,可由多个bio结构体组成。

3)IO调度程序

工作室管理块设备的请求队列,通过合并和排序等将磁盘IO资源分配给系统中所有挂起的块IO请求。

linus电梯调度程序(早期)

最终期限IO调度程序

预测IO调度程序

完全公正的排队IO调度程序(缺省)

空操作IO调度程序


reference:

http://www.360doc.com/content/12/0201/22/2459_183505470.shtml

http://www.cnblogs.com/liugf05/archive/2012/06/18/2553998.html



你可能感兴趣的:(linux内核设计与实现读书笔记——IO层)