扇区是硬件设备传送数据的基本单位,而块是VFS和文件系统传送数据的基本单位
一个块对应磁盘上一个或多个相邻的扇区,而VFS系统将其看成是一个单一的数据单元。

扇区:
为了达到可接受的性能,硬盘和类似的设备快速传送几个相邻字节的数据。块设备的每次数据传输操作都是作用于一组称为扇区的相邻字节。大部分磁盘设备中,一个扇区的大小是512字节。

块:
在Linux中,块的大小必须四2的幂,而不能超过一个页框,此外,它必须是扇区大小的整数倍,因为每个块必须包含整数个扇区。因此在80X86体系结构中,允许块的大小为512,1024,2048和4096字节。
块的大小不是唯一的。
每个块都需要自己的块缓冲区,它是内核用来存放块内容的RAM内存区。当内核从磁盘读出一个块时,就用从硬件设备所获得的值来填充相应的块缓冲区;同样当内核向磁盘写入一个块时,就用相关的块缓冲区的实际值来更新硬件设备上相应的一组相邻字节。

段:
磁盘的每个I/O操作就是在磁盘与一些RAM段缘之相互传送一些相邻扇区的内容。大多数情况下,吸盘控制器直接采用DMA方式进行数据传送。
在DMA方式下,块设备值需要向磁盘控制器发送一些适当的指令就可以触发一次数据传输;数据传输完成控制器就会发送一个中断通知块设备处理程序。
DMA传输方式分为两种,简单的DMA传送方式和分散聚集(scatter-gather)DMA传输方式
简单的DMA传输方式要求RAM中的内存单元必须是连续的。而scatter-gather使得磁盘可以与一些非连续的内存区相互传输数据。
为了使用scatter-gatherDMA传输方式,块设备驱动程序必须能够处理成为段的数据存储单元。一个段 就是一个内存页或内存页的一部分,它们包含一些相邻扇区中的数据。因此,一次分散聚集DMA操作可能同时传送几个段。
注意:块设备不需要知道块、块大小以及块缓冲区。
如果不同的段在RAM中的相应的页框正好是连续的并且在磁盘上相对应的扇区也是相邻的,那么通用块设备层可以合并它们。合并产生的更大的内存区就成为物理段。
Logo

更多推荐