Linux内核学习笔记 -47 块设备驱动简介

Linux内核学习笔记 -47 块设备驱动简介_第1张图片

块设备驱动程序提供了面向块的设备访问,这种设备以随机访问的方式传输数据,并且数据总是具有固定大小的块,块设备和字符设备的区别是什么?块设备上可以通过mount文件系统,而字符设备是不可用的。数据经过块设备相比操作字符设备,需要经历一个数据缓冲层(buffer cache)机制,如图所示。

块(驱动)设备模型:上图为示意图。应用程序有两种方式访问一个块设备,一种是通过/dev目录,一种是文件系统挂载点,前者和字符设备一样,通常用于配置,后者就是我们mount之后通过文件系统直接访问一个块设备。

比如read系统调用最终它会调用一个适当的VFS函数read,接着是sys_read,然后到vfs_read,将文件描述符fd和文件内的偏移量offset传递给它;

VFS会判断这个系统调用的处理方式,如果访问的内容已经被缓存到缓冲区中,就直接访问,否则从磁盘中读取

第三次,为了从物理磁盘中读取,内核依赖映射层mapping layer层,即上图中的磁盘文件系统,确定该文件所在文件系统块的大小,并根据文件块的大小,计算所请求数据的长度,这步从本质上来说就是文件被拆

你可能感兴趣的:(Linux内核)