块设备驱动程序不同于字符设备驱动程序,它需要将每一次的“读/写”操作放入队列进行优化后在执行,这样做是为了提高读写的效率。比如:在硬件中里有两个磁盘A和B,软件需要读A的磁盘,再跳到磁盘B写,然后跳回A读,这里要两次跳转,当这个跳转次数多的时候将会十分耗时间。而块设备驱动程序将这次操作优化成:将读A磁盘的所有操作完成后在去磁盘B写,这样只需要跳转一次,有点类似与电梯算法(将同次需要下的人运输下去,然后再运输需要上的人)。
接下俩讲讲块设备的框架:当上层App操作文件(read/write等)时,文件系统VFS(vfat,ett2,ett3,yaffs2,jffs2)会将文件的读写转换为扇出的读写ll_rw_block,在ll_rw_block里会将“读写”的任务放入队列,调用队列的处理函数并优化执行。
。。。。未完待续