SylixOS块设备驱动开发(三)

gewenbin
gewenbin
gewenbin
188
文章
15
评论
2021年1月9日17:17:41 2 961

SylixOS块设备框架

1. 从功能角度

从功能角度,SylixOS块设备框架大致可以分为5个部分:

  • 用户层的APP通过对文件读写来操作块设备。
  • 各种文件通过内核提供的文件系统进行统一的管理。
  • 文件最终是需要保存在存储设备上的,不同的存储设备需要使用不同的通信协议进行数据传输和控制。
  • 不同协议的块设备驱动最终都是以基础块设备驱动为基石的,学好基础块设备驱动是为以后学习SD等设备驱动打好基础。
  • 不同的块设备通过各种不同的接口接入到系统中。

SylixOS块设备驱动开发(三)

2. 从块缓冲角度

由于磁盘的速度低于CPU和内存的速度,所以为了提高系统的整体性能,一般都会在系统中添加磁盘扇区缓冲,将常用的扇区缓存在内存中,这样读写某个扇区就是读写内存,从而提高性能。在SylixOS中,数据在应用程序和设备之间可能会经过4种缓冲区,3次拷贝:

对于超高速设备,引入块缓冲可能会降低整体的性能,比如对于NVMe设备来说,在SylixOS下不使用块缓冲可以达到更好的性能。

  • APP Buffer:应用层buffer,用来保存想要读写的数据。
  • DiskCache Buffer:磁盘缓冲区,保存一个磁盘设备经常需要读写的扇区,大小通常为几十到几百KB。
  • Burst Buffer:每种磁盘都有一个最佳传输的扇区大小,在这个最佳扇区大小传输下,磁盘速度达到最高。在SylixOS下,针对读写可以分别有对应的Burst Buffer,大小一般为几十个扇区大小。
  • 如果设备控制器支持DMA传输的话,在底层驱动中可能还会有驱动自己管理的DMA Buffer。当然有的设备可能直接将Burst Buffer用于DMA传输的缓冲区,在这种情况下需要将Burst Buffer申请为非cache类型或者申请为带cache 类型然后传输时手动刷新或失效cache。

SylixOS块设备驱动开发(三)

这里额外讲述下存储设备最佳猝发大小的概念,存储设备都有一个最佳的猝发传输大小,这个值不同的存储设备都不一定相同,具体大小可以参考设备的相关资料或者进行实际测试得到,亦可以采用经验值。比如 下图所示的是某个平台下的 sata 磁盘在不同的扇区个数下的传输速度,可以看出该 sata 盘的最佳猝发扇区数是 64,当一次传输的扇区数大于 64 时,传输速度基本不会再有太大的提升了。

SylixOS块设备驱动开发(三)

 

gewenbin
  • 本文由 发表于 2021年1月9日17:17:41
  • 转载请务必保留本文链接:http://www.databusworld.cn/9938.html
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

评论:2   其中:访客  2   博主  0
    • liqingquan liqingquan 3

      打卡

      • chen chen 0

        打卡