原理讲解有缓冲I/O与无缓冲I/O的区别

栏目: 后端 · 发布时间: 7年前

内容简介:当你看完这篇文章若是不能理解什么是带缓冲的I/O与无缓冲的I/O的区别,随意喷!!!当你学习Unix高级编程时会遇到不带缓冲的I/O函数,比如open、read、write、lseek、close等等,那这与带缓冲的I/O有什么区别????我们得先说说什么是

当你看完这篇文章若是不能理解什么是带缓冲的I/O与无缓冲的I/O的区别,随意喷!!!

当你学习Unix高级编程时会遇到不带缓冲的I/O函数,比如open、read、write、lseek、close等等,那这与带缓冲的I/O有什么区别????

我们得先说说什么是 高速缓冲存储器, 先别急慢慢看,看不懂算我输!!!这个东东对整个计算机性能的提升有很大的帮助,具体就涉及到两个器件的运行速度了,也就是cpu与内存的运行速度,想想也知道两个不同器件的运行速度肯定不一样,最基本的硬件架构都不一样。那这就有一个问题产生了,cpu的速度大于内存的,那要是cpu不挺的往内存的某一个地址写数据,由于内存的速度跟不上,那数据就会被覆盖了,所以解决方案就是在cpu与内存之间加一个 高速缓冲存储器, 高速缓冲存储器的速度介于cpu与内存之间,那就好办事了,cpu先把数据放在这个存储器上,然后内存向存储器取数据,然后发送到其他地方,在这段时间里,内存向存储器取的数据不会因为cpu速度过快直接被覆盖,而是放在了 高速缓冲存储器 上,带内存再次取数据时间就够了!!!

同样的道理用在磁盘上,比如你写了一个进程,这个进程不挺的向磁盘写数据,若是进程发送的数据过快,磁盘在写的过程中就极有可能会被新的数据所覆盖,所以就出现了所谓的 磁盘高速缓存 来做缓冲,它其实是内存的一部分,也就是我们所说的内存条的一部分,当做缓冲,这就是它的实际的物理意义:就是内存的一部分。那这有什么好处???想想也知道好处大得很,说说原理,有个概念叫 局部性原理。局部性原理包含很多的局部性,比如时间的局部性,就是说进程A在t0时刻访问磁盘的某一地址,在t0+t1时刻又来访问,就叫时间的局部性。 若是访问的次数特别多,访问的时间的间隔特别短,那么进程A就要不挺的访问磁盘,就好比出家门玩的时候,你忘记带某一东西,你回去拿,忽然发现又忘记带了,这个时候你肯定想要是有人帮我拿了,在送的路上就好了不必在回家,同样的道理在进程A与磁盘之间,若是频繁访问某一地址,通过 磁盘高速缓存来把数据存起来后方便以后在访问,更何况现在是变成了进程A直接与磁盘高速缓存(或者说内存)之间的访问了,这不更快了吗!!! 所以一般出现一个某一个特定扇区的I/O请求时,这个请求会先查看所要访问的数据在不在缓存里面,在就访问,不在就把这个扇区的数据先拷贝到缓存里面,然后在访问缓存里面的数据。

是不是感觉又理解了一点操作系统的小知识,我们继续说!!!那上面这些与I/0有无缓冲有什么联系???

对于带缓冲的I/O通过一个叫 缓冲区高速缓存 最为缓存,其实它就是 磁盘高速缓存。 若是用户进程要访问某一个设备,注意不一定是磁盘,任何一个设备,由于每个I/O设备都与一个特殊文件相关联,而文件由文件系统所管理,所以对文件的I/O操作,就相当于对设备的操作了;而文件放在磁盘上,而且 磁盘高速缓存(内存的一部分)又是被用来作为磁盘的缓存,所以某一设备(文件)的缓存可以是磁盘高速缓存(内存的一部分)其中的一部分!!!如下图所示:

原理讲解有缓冲I/O与无缓冲I/O的区别

这里可以是任意的设备

这个缓冲区就是 磁盘高速缓存(内存的一部分)其中的一部分的缓存。 某一进程通过文件系统接口向设备对应的文件写数据,文件系统把数据先存在缓存器中,然后发送到设备驱动程序控制设备。设备由所对应的控制器(可以简单的理解为寄存器)所管理,学过单片机的都知道,简单往寄存器写数据就能控制设备了,比如串口,只要会了串口,蓝牙不在话下!!!若是把控制器里面的寄存器映射到内存(也就是所谓I/O映射),再加上 磁盘高速缓存 是内存的一部分,那不就是数据在内存之间变化了,速度就更快了!!!

而对于无缓冲的I/O就没有其中的缓冲了,也就是进程通过DMA直接与I/O设备交换数据了,但是执行无缓冲的I/0被锁定在内存,不能被换出,那么这部分内存不能用了,信息交流的就少了不少,导致整个系统的性能有所下降, 但是这是进程执行I/O最快的方法了!!!


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Pro HTML5 and CSS3 Design Patterns

Pro HTML5 and CSS3 Design Patterns

Michael Bowers / Apress / 2011-11-15 / GBP 35.50

Pro HTML5 and CSS3 Design Patterns is a reference book and a cookbook on how to style web pages using CSS3 and HTML5. It contains 350 ready--to--use patterns (CSS3 and HTML5 code snippets) that you ca......一起来看看 《Pro HTML5 and CSS3 Design Patterns》 这本书的介绍吧!

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具