mtd块设备的读写缓存问题

本文探讨了在对mtd块设备(如nor flash)进行读写操作时,是否存在缓存以及如何影响数据一致性。通过实验,揭示了在写入数据后立即读取时,实际上读取的是块缓存而非设备本身,导致无法直接通过数据一致性来判断设备或驱动的问题。
摘要由CSDN通过智能技术生成

        大家可能都或多或少的了解,对于存储在外存内的文件,当我们对其进行读写时,会通过缓存来对数据进行缓冲。缓存,即用于缓冲作用的内存,本质是内存,作用是缓冲,充分利用文件读写的特点,减少IO通讯。那么,当我们直接去读写mtd块设备时,是否也会有缓存来对数据进行缓冲呢?如果是这样,那么对块设备进行读写一致性测试时,就需要考虑到缓存的情况。

       物皆文件,块设备也是文件,只不过是较特殊的文件而已,那么,对这种文件进行读写,缓存应该也一定是会存在的。于是,我做了一个测试,对块设备文件(这里用于测试的块设备为nor flash)写入4k数据,随后将数据读出,假设设备驱动和设备本身都是正常的,那么写入的数据和读出的数据应该是一致的,如果存在不同,则可认为设备本身或设备驱动存在异常。那么,实际情况如何呢?我在对设备文件调用底层驱动进行真正的写入动作之前,将要写入的4k数据的前10个字节内容进行替换。这样真正写入到设备文件中的数据就不会与预期写入的4k数据内容完全相同。在写入完成之后,对设备文件对应偏移数据进行读取(写入使用write,读取使用read,皆为1对1的系统调用),将读取到的4k数据与写入的4k数据进行比对,这时会发现,数据是一样的,但是此时真正存储在设备文件中的4k数据的前10字节却是被更改过的。因此,写入数据后再读出数据进行比对,通过数据的一致性,是无法判断块设备文件底层驱动或设备本身是否存在问题的。

        那么,我们写入后,再从设备文件中读取数据,此时我们到底

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值