当前位置:网站首页>什么是缓冲区(buffer),什么是缓存(cache)
什么是缓冲区(buffer),什么是缓存(cache)
2022-08-05 11:49:00 【qq_42533216】
什么是缓冲区(buffer),什么是缓存(cache)
缓冲区
缓冲区是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区。缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区。
为什么要引入缓冲区
我们为什么要引入缓冲区呢?
比如我们从磁盘里取信息,我们先把读出的数据放在缓冲区,计算机再直接从缓冲区中取数据,等缓冲区的数据取完后再去磁盘中读取,这样就可以减少磁盘的读写次数,再加上计算机对缓冲区的操作大大快于对磁盘的操作,故应用缓冲区可大大提高计算机的运行速度。
又比如,我们使用打印机打印文档,由于打印机的打印速度相对较慢,我们先把文档输出到打印机相应的缓冲区,打印机再自行逐步打印,这时我们的CPU可以处理别的事情。现在您基本明白了吧,缓冲区就是一块内存区,它用在输入输出设备和CPU之间,用来缓存数据。它使得低速的输入输出设备和高速的CPU能够协调工作,避免低速的输入输出设备占用CPU,解放出CPU,使其能够高效率工作。
缓冲区的类型
缓冲区 分为三种类型:全缓冲、行缓冲和不带缓冲。
缓存(cache)
cache是一个非常大的概念。
一、CPU的Cache
CPU的Cache,它中文名称是高速缓冲存储器,读写速度很快,几乎与CPU一样。由于CPU的运算速度太快,内存的数据存取速度无法跟上CPU的速度,所以在cpu与内存间设置了cache为cpu的数据快取区。当计算机执行程序时,数据与地址管理部件会预测可能要用到的数据和指令,并将这些数据和指令预先从内存中读出送到Cache。一旦需要时,先检查Cache,若有就从Cache中读取,若无再访问内存,现在的CPU还有一级cache,二级cache。简单来说,Cache就是用来解决CPU与内存之间速度不匹配的问题,避免内存与辅助内存频繁存取数据,这样就提高了系统的执行效率。
二、磁盘的Cache
磁盘也有cache,硬盘的cache作用就类似于CPU的cache,它解决了总线接口的高速需求和读写硬盘的矛盾以及对某些扇区的反复读取。
三、浏览器的Cache
浏览器缓存(Browser Caching)是为了节约网络的资源加速浏览,浏览器在用户磁盘上对最近请求过的文档进行存储,当访问者再次请求这个页面时,浏览器就可以从本地磁盘显示文档,这样就可以加速页面的阅览,并且可以减少服务器的压力。这个过程与下载非常类似,不过下载是用户的主动过程,并且下载的数据一般是长时间保存,游览器的缓存的数据只是短时间保存,可以人为的清空
四、Cache的大小
同样cache也有大小,例如现在市面上购买的CPU的cache越大,级数越多,CPU的访问速度越快。cache在很多方面都有应用,就不一一列举了。
缓存(cache)与缓冲(buffer)的主要区别
Buffer的核心作用是用来缓冲,缓和冲击(对输出设备的冲击,包括磁盘、打印机、显示器)。比如你每秒要写100次硬盘,对系统冲击很大,浪费了大量时间在忙着处理开始写和结束写这两件事嘛。用个buffer暂存起来,变成每10秒写一次硬盘,对系统的冲击就很小,写入效率高了,日子过得爽了。极大缓和了冲击。
Cache的核心作用是加快取用的速度(加快读取速度,包括CPU读内存、内存读磁盘、用户通过浏览器请求资源)。比如你一个很复杂的计算做完了,下次还要用结果,就把结果放手边一个好拿的地方存着,下次不用再算了。加快了数据取用的速度。
简单来说就是buffer偏重于写,而cache偏重于读。
有时候大家要好好理解这些专有名词字面上的意思,对理解这些概念有好处,缓冲:缓解冲击,缓存:临时存储
边栏推荐
- Support Vector Machine SVM
- Wingide 快捷键
- 碘乙酰胺在Desthiobiotin-Iodoacetamide试剂中的作用?
- 冬日里,28℃的爱情
- UDP communication
- Qt::qcustomplot 和 qchart数据填充相关
- Go compilation principle series 9 (function inlining)
- Gao Zelong attended the Boao Global Tourism Ecology Conference to talk about Metaverse and Future Network Technology
- 【HMS core】【FAQ】Health Kit、Ads kit、push Kit典型问题合集5
- .NET in-depth analysis of the LINQ framework (6: LINQ execution expressions)
猜你喜欢
动手学深度学习_GoogLeNet / Inceptionv1v2v3v4
163_技巧_Power BI 一键批量建立自定义字段参数
No developers, received a job to develop an IoT system, do you want to do it?
Go 语言快速入门指南: 基本类型
硅谷来信:快速行动,Facebook、Quora等成功的“神器”!
详细剖析 Redis 三种集群策略
【HMS core】【FAQ】Health Kit、Ads kit、push Kit典型问题合集5
Visit GOPS Long Zhi booth, Forrester's latest report: "the Forrester Wave: the fourth quarter of 2021 enterprise service management report
shell编程流程控制练习
高泽龙出席博鳌全球旅游生态大会 讲元宇宙与未来网络科技
随机推荐
普通二本毕业八年,京东就职两年、百度三年,分享大厂心得
不是吧?还有人不会定位线上MySQL慢查询问题?
Go 语言 strings 库常用方法
字节秋招二面把我干懵了,问我SYN报文什么情况下会被丢弃?
2-2.基金的投资交易与结算
790. 数的三次方根
A woman is the most beautiful life in the world
STM32H743IIT6学习笔记02——USART
分布式事务解决方案
swig 语法介绍
Qt::qcustomplot 和 qchart数据填充相关
Go Quick Start Guide: Basic Types
JS 从零手写实现一个call、apply方法
Cesium.js点线面绘制
2022杭电多校联赛第六场 题解
2022 极术通讯-基于安谋科技 “星辰” STAR-MC1的灵动MM32F2570开发板深度评测
Go compilation principle series 9 (function inlining)
碘乙酰胺在Desthiobiotin-Iodoacetamide试剂中的作用?
手把手教你定位线上MySQL慢查询问题,包教包会
【分享】代码编程习惯:在多参数的方法的情况下需要对方法整理-即最多参数的方法为主要实现