高速缓存与缓冲区

1. 磁盘高速缓存(Disk Cache)

操作零碎中运用磁盘高速缓存技巧来进步磁盘的I/O速度,对高速缓存复制的拜访要比原始数据拜访更为高效。例如,正在运转的过程的指令既存储在磁盘上,也存储在物理内存上,也被复制到CPU的二级和一级高速缓存中。
不外,磁盘高速缓存技巧分歧于平日意义下的介于CPU与内存之间的小容量高速存储器,而是指应用内存中的存储空间来暂存从磁盘中读出的一系列盘块中的信息。因而,磁盘高速缓存在逻辑上属于磁盘,物理上则是驻留在内存中的盘块。
高速缓存在内存平分为两种方式:一种是在内存中开拓一个独自的存储空间作为磁速缓存,巨细固定;另一种是把未应用的内存空间作为一个缓沖池,供恳求分页零碎和磁盘I/O时共享。

2. 缓冲区(Buffer)

在装备治理子零碎中,引入缓冲区的目标次要有:

  • 紧张CPU与I/O装备间速度不婚配的矛盾。
  • 增加对CPU的中缀频率,放宽对CPU中缀呼应工夫的限制。
  • 处理根本数据单位巨细(即数据粒度)不婚配的成绩。
  • 进步CPU和I/O装备之间的并行性。

其完成办法有:

  • 釆用硬件缓冲器,但因为本钱太高,除一些症结部位外,普通不釆用硬件缓冲器
  • 釆用缓冲区(位于内存区域)。

依据零碎设置缓冲器的个数,缓冲技巧可以分为:

1) 单缓冲

在装备和处置机之间设置一个缓冲区。装备和处置机交流数据时,先把被交流数据写入缓冲区,然后需求数据的装备或处置机从缓冲区取走数据。
如图5-5所示,在块装备输出时,假定从磁盘把一块数据输出到缓冲区的工夫为T,操作零碎将该缓冲区中的数据传送到用户区的工夫为M,而CPU对这一块数据处置的工夫为 C。因为T和C是可以并行的,当T>C时,零碎对每一块数据的处置工夫为M十T,反之则为M+C,故可把零碎对每一块数据的处置工夫表现为Max(C, T)+M。


图5-5  单缓冲任务表示图

2) 双缓冲

依据单缓冲的特色,CPU在传送工夫M内处于闲暇形态,由此引入双缓冲。 I/O装备输出数据时先装填到缓冲区1,在缓冲区1填满后才开端装填缓冲区2,与此同时处置机可以从缓冲区1中掏出数据放入用户过程处置,当缓冲区1中的数据处置完后,若缓冲区2已填满,则处置机又从缓冲区2中掏出数据放入用户过程处置,而I/O装备又可以装填缓冲区1。双缓冲机制进步了处置机和输出装备的并行操作的水平。
如图5-6所示,零碎处置一块数据的工夫可以粗略地以为是MAC(C, T)。假如C<T,可使块装备延续输出(图中所示状况);假如C>T,则可使CPU不用等候装备输出。关于字符装备,若釆用行输出方法,则釆用双缓冲可运用户在输出完第一行之后,在CPU履行第一行中的敕令的同时,用户可持续向第二缓冲区输出下一行数据。而单缓冲状况下则必需等候一行数据被提取终了才可输出下一行的数据。


图5-6  双缓冲任务表示图

假如两台机械之间通讯仅设置装备摆设了单缓冲,如图5-7(a)所示。那么,它们在任一时辰都只能完成双方向的数据传输。例如,只许可把数据从A机传送到B机,或许从B机传送到A 机,而毫不许可单方同时向对方发送数据。为了完成双向数据传输,必需在两台机械中都设置两个缓冲区,一个用做发送缓冲区,另一个用做接纳缓冲区,如图5-7(b)所示。


图5-7  双机通讯时缓冲区的设置

3) 轮回缓冲

包括多个巨细相等的缓冲区,每一个缓冲区中有一个链接指针指向下一个缓冲区,最初一个缓冲区指针指向第一个缓冲区,多个缓冲区组成一个环形。
轮回缓冲用于输出/输入时,还需求有两个指针in和out。对输出而言,起首要从装备接纳数据到缓冲区中,in指针指向可以输出数据的第一个空缓冲区;当运转过程需求数据时,从轮回缓冲区中取一个装满数据的缓冲区,并从此缓冲区中提取数据,out指针指向可以提取数据的第一个满缓冲区。输入则正好相反。

4) 缓冲池

由多个零碎公用的缓冲区构成,缓冲区按其运用情况可以构成三个队列:空缓冲队列、装满输出数据的缓冲队列(输出队列)和装满输入数据的缓沖队列(输入队列)。还应具有四种缓冲区:用于收留输出数据的任务缓冲区、用于提取输出数据的任务缓冲区、 用于收留输入数据的任务缓冲区及用于提取输入数据的任务缓冲区,如图5-8所示。


图5-8  缓冲区的任务方法

当输出过程需求输出数据时,便从空缓冲队列的队首摘下一个空缓冲区,把它作为收留输出任务缓冲区,然后把输出数据输出个中,装满后再将它挂到输出队排队尾。当盘算过程需求输出数据时,便从输出队列获得一个缓冲区作为提取输出任务缓冲区,盘算过程从中提取数据,数据用完后再将它挂到空缓冲队列尾。当盘算过程需求输入数据时,便从空缓冲队列的队首获得一个空缓冲区,作为收留输入任务缓冲区,当个中装满输入数据后,再将它挂到输入队排队尾。当要输入时,由输入过程从输入队列中获得一个装满输入数据的缓冲区,作为提取输入任务缓冲区,当数据提取完后,再将它挂到空缓冲队列的队尾。

3. 高速缓存与缓冲区的比照

高速缓存是可以保管数据拷贝的高速存储器,拜访高速缓存比拜访原始数据更高效速度更快。其比照见表5-1。

表5-1 高速缓存弛缓冲区的比照

  高速缓存 缓冲区
相反点 多是介于高速装备和低速装备之间
差别 寄存数据 寄存的是低速装备上的某些数据的复制数据,也就是高速缓存上有的低速装备下面必定有 寄存的是低速装备传递给高速装备的数据(或许是高速装备传送给低速装备的数据),而这些数据在低速装备(或许高速装备)却纷歧定有备份,这些数据在从缓存区传送到髙速装备(或许低速装备)
目标 高速缓存寄存的是高速装备常常要拜访的数据,假如高速装备要拜访的数据不在高速缓存中,高速装备就需求拜访低速装备 高速装备和低速装备的通讯都要经由缓存区,高速装备永远不会直接去拜访低速装备
时间: 2024-10-22 16:58:33

高速缓存与缓冲区的相关文章

CS考研_统考大纲

序号 政治 外语 业务课一 业务课二 1 (101)思想政治理论 (201)英语一 (301)数学一 (408)计算机学科专业基础综合 以上是计算机全国统考考试科目,三门公共课非统考基本也都是这三个,大家如果看到非统考的科目如果是三个1,就可以直接来参考我这里列出的大纲了!所以在此,我就直接列出最近的2015年考研这四个的考试大纲: 政治101: Ⅰ.考试性质 思想政治理论考试是为高等院校和科研院所招收硕士研究生而设置的具有选拔性质的全国招生考试科目,其目的是科学.公平.有效地测试考生掌握大学本

计算机操作系统学习笔记_13_I/O管理 --I/O核心子系统

h1 { margin-bottom: 0.21cm; }h1.western { font-family: "Liberation Sans",sans-serif; font-size: 18pt; }h1.cjk { font-family: "微软雅黑"; font-size: 18pt; }h1.ctl { font-family: "AR PL UMing CN"; font-size: 18pt; }h2.western { fon

803计算机学科基础综合

803计算机学科基础综合 一. 考查目标 计算机学科基础综合考试涵盖数据结构.计算机组成原理.操作系统和计算机网络等学科专业基础课程.要求考生比较系统地掌握上述专业基础课程的基本概念.基本原理和基本方法,能够综合运用所学的基本原理和基本方法分析.判断和解决有关理论问题和实际问题. 二.考试形式和试卷结构 1.试卷满分及考试时间 本试卷满分为150分,考试时间为180分钟. 2.答题方式 答题方式为闭卷.笔试. 3.试卷内容结构 数据结构 45分 计算机组成原理 45分 操作系统 35分 计算机网

写数据到文件,并同步到磁盘

fwrite    应用层缓冲区--->c库高速缓存 fflush    c库高速缓存--->内核缓冲区 fsync    内核缓冲区--->圆盘 fileno  将文件句柄指针转换为文件描写叙述符 使用方法实例(redis中的文件写入代码片段) /* Returns 1 or 0 for success/failure. */ static size_t rioFileWrite(rio *r, const void *buf, size_t len) { size_t retval;

(转)JAVA内存模型

(原本准备把内存模型单独放到某一篇文章的某个章节里面讲解,后来查阅了国外很多文档才发现其实JVM内存模型的内容还蛮多的,所以直接作为一个章节的基础知识来讲解,可能该章节概念的东西比较多.一个开发Java的开发者,一旦了解了JVM内存模型就能够更加深入地了解该语言的语言特性,可能这个章节更多的是概念,没有太多代码实例,所以希望读者谅解,有什么笔误来Email告知:[email protected],本文尽量涵盖所有Java语言可以碰到的和内存相关的内容,同样也会提到一些和内存相关的计算机语言的一些

重做日志管理

重做日志是对用户的DML和DDL操作所做的记录,它是保证数据库安全的一种重要手段.当用户执行DML或DDL命令时,数据库服务器将生成重做日志,并将其记录在重做日志文件中.为了保证重做日志文件的安全,需要对它们进行归档. 如果数据库出现故障,可以利用重做日志文件和归档日志文件进行实例恢复或者介质恢复.无论是重做日志文件还是归档日志文件,都是以二进制的形式记录重做日志的.用户如果需要了解这些文件的内容,就需要对它们进行分析,将日志信息转化为文本形式.下面主要内容包括重做日志文件的管理.归档日志文件的

java内存模型及分块

转自:http://www.cnblogs.com/BangQ/p/4045954.html 1.JMM简介 2.堆和栈 3.本机内存 4.防止内存泄漏 1.JMM简介 i.内存模型概述 Java平台自动集成了线程以及多处理器技术,这种集成程度比Java以前诞生的计算机语言要厉害很多,该语言针对多种异构平台的平台独立性而使用的多线程技术支持也是具有开拓性的一面,有时候在开发Java同步和线程安全要求很严格的程序时,往往容易混淆的一个概念就是内存模型.究竟什么是内存模型?内存模型描述了程序中各个变

【现代操作系统】笔记 3

CPU调度 定义:控制.协调进程对CPU的竞争,即按一定的调度算法从就绪队列中选择一个进程,把CPU使用权转交.若没有就绪进程,则安排一个空闲系统进程或者idle进程 系统场景: N个就绪进程,等待CPU 多个CPU 决策(给哪个进程分配哪个CPU) 解决问题: 调度算法.调度时机.如何调度(切换) 进程切换工作内容:(对原来运行进程各种状态的保持和对新进程状态的恢复) 切换全局页目录以加载新的地址空间-->切换内核栈和硬件上下文 上下文切开销: 直接开销(内核完成切换所用的CPU时间,包括保持

oracle 内存结构详解

Oracle 内存结构 与 Oracle 实例关联的基本内存结构包括: 系统全局区 (SGA):由所有服务器和后台进程共享.SGA 中存储的数据示例包括高速缓存的数据块和共享 SQL 区域. 程序全局区 (PGA):各个服务器进程和后台进程专用,每个进程都有一个 PGA. SGA 是共享内存区,包含实例的数据和控制信息,由以下各项组成: 数据库缓冲区高速缓存:用于缓存从磁盘检索到的数据块 重做日志缓冲区:用于缓存重做信息,直到其可以写入磁盘为止 共享池:用于缓存可在用户间共享的各种结构 大型池: