内容纲要
本课时修改两个bug,一个xfile_read,一个xfile_write。
主要内容
总结来讲,无论是xfile_read还是xfile_write,其Bug出现的原因都是相同的:在连续多扇区读写时,越过了缓冲池直接读写存储设备。
xfile_read
在读取时,直接越过缓冲池读取,可能读取的部分数据为存储设备中老数据,而非缓存池中的最新数据。
最简单的解决方法:直接回写指定扇区范围内的脏数据至磁盘。
xfile_write
在写入时,直接越过缓冲池写,导致写入存储设备中的数据为新数据,而缓存池中的数据却未更新。
最简单的解决方法:写存储设备之后,将缓存池中的相应地址范围内的数据丢弃。
可以考虑另一种方案,即写存储设备时,同时将缓存池中相应范围内的数据缓存进行更新。有兴趣可自行实现。