V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
soratadori
V2EX  ›  程序员

请教一个硬盘读写的缓存机制

  •  
  •   soratadori · 2016-09-30 18:40:15 +08:00 · 2130 次点击
    这是一个创建于 2767 天前的主题,其中的信息可能已经有所发展或是发生改变。

    机械硬盘 / USB2.0

    读取一个 800M 的文件,第一次大约需要 25s 左右才能读完,第二次再读几乎瞬间就能读完了,而且换不同的软件来读都能享受到这种“便利”。任务管理器显示内存并没有显示被占用。

    请问这种是什么缓存机制?有什么办法能知道这个缓存具体多大吗?是否可以人为的清楚这种缓存?

    11 条回复    2016-10-02 04:48:27 +08:00
    htfy96
        1
    htfy96  
       2016-09-30 18:42:09 +08:00 via Android
    linux 下可以看到 cache 内存, Windows 我猜应该是实际利用了但是不会计算在内。
    楼主为什么要清除这个缓存?
    soratadori
        2
    soratadori  
    OP
       2016-09-30 18:50:59 +08:00
    @htfy96 因为整个过程在一定几率下会出现一些计算错误,因为有这个缓存的机制存在,事后非常难发现是否出现错误。基本得等这个缓存被覆盖掉才能发现是否出错了
    soratadori
        3
    soratadori  
    OP
       2016-09-30 18:53:47 +08:00
    复现这个“出错”很难,就算复现了也并不好解决,所以希望先找出是否有错误,有错误重新计算一遍就好。
    soratadori
        5
    soratadori  
    OP
       2016-09-30 19:23:54 +08:00
    @htfy96 thanks 好像挺有用的,待我研究下。
    soratadori
        6
    soratadori  
    OP
       2016-10-01 00:10:42 +08:00
    @htfy96

    →_→ 请问下你知道啥是 OVERLAPPED 不,这玩意咋弄出来。 我不太会这些。

    File access sizes, including the optional file offset in the OVERLAPPED structure, if specified, must be for a number of bytes that is an integer multiple of the volume sector size.

    似乎我要读取的话,就必须传入一个这样结构的数据进去,这玩意到怎么弄出来。
    htfy96
        7
    htfy96  
       2016-10-01 00:59:48 +08:00 via Android
    @soratadori 这个我记得是异步读写的时候才要传…同步的时候不用传(?)…你可以查查 CreateFile 文档
    soratadori
        8
    soratadori  
    OP
       2016-10-01 01:44:32 +08:00
    @htfy96
    成功了,原来是我眼神太差+英语不够灵光走到歪路上了。
    Osk
        9
    Osk  
       2016-10-01 10:24:14 +08:00
    system internal suits 里的 RAMMap 和 Cacheset 不知道是不是你需要的
    soratadori
        10
    soratadori  
    OP
       2016-10-01 11:43:36 +08:00
    @Osk
    感谢, RAMMap 很有用
    LGA1150
        11
    LGA1150  
       2016-10-02 04:48:27 +08:00 via Android
    如果是 Win7 系统,打开“资源监视器”,你就能看到有一项“已缓存”的占用
    Win8/10 在任务管理器中就能看到这个“已缓存”
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2988 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 14:30 · PVG 22:30 · LAX 07:30 · JFK 10:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.