zoukankan      html  css  js  c++  java
  • [操作系统]关于 Windows 文件访问方式,你可能真的不是很了解

    在 Windows 操作系统下,想要访问文件时,一般有以下三种方式:

    • 不使用文件缓存
    • 使用文件缓存
    • 异步模式

    动动小脑就应该知道,最常用的是「使用文件缓存」这种方式(好吧,小脑是为了保证身体平衡,不是为了思考;
    接下来就说说,在 Windows 操作系统下,当我们以「使用文件缓存」这种方式来访问文件时,操作系统所做的事情.

    使用文件缓存访问:

    • 由 Windows 的 Cache Manager 实现对缓存的控制,读取数据时,进行预取
      • 如果 Cache 满了怎么办?
        Cache Manager 会根据 LRU ( Least Recently Used ,最近最少使用)原则,来清除一些缓存内容
        同时还需要定期更新磁盘内容,让磁盘内容和 Cache 中保持一致(通常是 1 秒更新一次)
    • Write-back 机制:
      • 在对文件进行访问时,会涉及到对文件的一些修改,这就涉及到了对磁盘写数据
        此时,我们不直接对磁盘进行更改,而是只更改 Cache 中的内容,然后由 Cache Manager 决定什么时候将用户所做的更新反映到磁盘上
        • 为什么不直接对磁盘进行更改?
          对任何操作系统来说, I/O 的读写速度永远都是硬伤,如果频繁对磁盘进行 I/O 操作,会使得系统性能降低

    画一个图,能够更直观的看到(请忽略我的画图水平):
    在这里插入图片描述
    如上图,阴影部分表示需要访问的数据.
    数据在磁盘,系统缓存和进程地址空间有 3 份拷贝,通常情况下用户对数据的修改并不直接反映到磁盘上,而是通过 write-back 机制定期更新到磁盘上.

    为了尽可能提高读取速度,我们应该将要存储的数据,尽量放在同一个柱面上.

    以上,就是想要分享的内容
    感谢您的阅读~

  • 相关阅读:
    Premiere Pro 2020 教程(二)
    程序员的10个好习惯(转自四猿外)
    HtmlAgilityPack 抓取页面的乱码处理
    【Python爬虫】 学习笔记 ajax下爬取豆瓣请求第一页
    【Python爬虫】 学习笔记 get请求的方法
    【Python爬虫】 学习笔记 post请求的方法
    【Python爬虫】 学习笔记 post请求的方法(Cookie反爬)
    jQuery选择器实例手册
    弹出模态窗口并传递数值
    java synchronized详解
  • 原文地址:https://www.cnblogs.com/zll-0405/p/12534088.html
Copyright © 2011-2022 走看看