码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 《缓冲区的理解》


    【一】缓冲区是什么?

    本质:缓冲区本质上就是一块内存空间

    既然是内存空间,那么就会有几个问题,谁申请的?属于谁的?为什么要有缓冲区这个概念?

            你想想,一份数据从cpu寄存器内计算出来,然后需要将这份数据输入到磁盘中,无非有两种方式,一种是直接从cpu内部向磁盘写入,一种是先写入到内存中,然后由内存向磁盘中写入。其实明眼人都能看出来,第一种方式的速度是十分缓慢的,因为相比于cpu的输出速度,磁盘的写入速度是非常慢的,这也就会导致电脑这个设备总体的运行速度变慢,这就是著名的木桶效应,所以由cpu向内存中写入,再由内存打包后同意写入到磁盘中,这种中间虽然多出了一个中间商,但是这种方式确实我们最快的选择了。

            题外话:其实fwrite函数与其理解成为一个写入到文件的函数,不如理解成fwrite是一个拷贝函数,从缓冲区内拷贝文件区外设中。

            这是我们无法证明的,但是我们却可以看到接口,但是如果OS宕机了呢?OS中的数据丢失了呢?比如说银行,这种对数据丢失0容忍的机构,所以他们采取的一般是无缓冲。

    【二】缓冲区刷新策略的问题

            从上文我们知道,一块数据从内存写入到外设中,是一次性一块写入效率高还是将一块数据拆分成多批次写入到外设的效率高呢?我们显而易见,肯定是一次性一块写入的效率最高,因为向外设中写入数据,耗时最长的并不是写入的过程,而是你打开外设的过程。

            缓冲区一定会结合自己的具体的设备,定制自己的刷新策略:

    a.立即刷新——无缓冲

    b.行刷新——行缓冲——显示器——给人看的

    c.缓冲区满——全缓冲——磁盘文件

    当然这是一般情况下的刷新策略,是一般情况就会有特殊情况:

    1.用户强制刷新

    2.进程退出刷新

    【三】缓冲区在哪里?

    缓冲区是被我们封装为struct FILE的一部分,后面会有一篇带小伙伴们专门实现的博客

    【四】文件管理系统

            如果一个文件没有被打开呢???该如何被OS管理,总不能把没有被打开的文件静静的放在磁盘上放着吧!

            其实磁盘上有大量的文件,也是必须要被静态管理的,方便我们随时打开,这就是文件系统。

    以上就是这期的全部内容了,如果觉得写的还行的话,还请动动小手一键三连,如果有啥问题的话还请位于评论区斧正,毕竟码字不易,球球了,兄弟们。

  • 相关阅读:
    跨站脚本攻击(XSS):为什么Cookie中有HttpOnly属性?
    Python 爬取 "王者荣耀.英雄壁纸" 过程中的矛和盾
    C++ 类和对象 (中)
    安装typescript环境并开启VSCode自动监视编译ts文件为js文件
    C#线程的参数传递、获取线程返回值以及处理多线程冲突
    20220924 Windows平台用MinGW编译OpenCV+Contrib静态库(.a)
    聚观早报 | 多款热门游戏停服一天;比亚迪下月在日本开售
    Bug解决:出现C++:internal compiler error: killed(program cc1plus)
    渔业安全生产综合管理指挥系统-航迹数据优化方案
    【LeetCode刷题(数据结构)】:给定一个链表 每个节点包含一个额外增加的随机指针 该指针可以指向链表中的任何节点或空节点 要求返回这个链表的深度拷贝
  • 原文地址:https://blog.csdn.net/wuqin668/article/details/128098268
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号