偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

原理講解有緩沖I/O與無(wú)緩沖I/O的區(qū)別

存儲(chǔ) 存儲(chǔ)軟件
當(dāng)你學(xué)習(xí)Unix高級(jí)編程時(shí)會(huì)遇到不帶緩沖的I/O函數(shù),比如open、read、write、lseek、close等等,那這與帶緩沖的I/O有什么區(qū)別????

當(dāng)你看完這篇文章若是不能理解什么是帶緩沖的I/O與無(wú)緩沖的I/O的區(qū)別,隨意噴!!!

當(dāng)你學(xué)習(xí)Unix高級(jí)編程時(shí)會(huì)遇到不帶緩沖的I/O函數(shù),比如open、read、write、lseek、close等等,那這與帶緩沖的I/O有什么區(qū)別????

我們得先說(shuō)說(shuō)什么是高速緩沖存儲(chǔ)器,先別急慢慢看,看不懂算我輸?。?!這個(gè)東東對(duì)整個(gè)計(jì)算機(jī)性能的提升有很大的幫助,具體就涉及到兩個(gè)器件的運(yùn)行速度了,也就是cpu與內(nèi)存的運(yùn)行速度,想想也知道兩個(gè)不同器件的運(yùn)行速度肯定不一樣,最基本的硬件架構(gòu)都不一樣。那這就有一個(gè)問(wèn)題產(chǎn)生了,cpu的速度大于內(nèi)存的,那要是cpu不挺的往內(nèi)存的某一個(gè)地址寫(xiě)數(shù)據(jù),由于內(nèi)存的速度跟不上,那數(shù)據(jù)就會(huì)被覆蓋了,所以解決方案就是在cpu與內(nèi)存之間加一個(gè)高速緩沖存儲(chǔ)器,高速緩沖存儲(chǔ)器的速度介于cpu與內(nèi)存之間,那就好辦事了,cpu先把數(shù)據(jù)放在這個(gè)存儲(chǔ)器上,然后內(nèi)存向存儲(chǔ)器取數(shù)據(jù),然后發(fā)送到其他地方,在這段時(shí)間里,內(nèi)存向存儲(chǔ)器取的數(shù)據(jù)不會(huì)因?yàn)閏pu速度過(guò)快直接被覆蓋,而是放在了高速緩沖存儲(chǔ)器上,帶內(nèi)存再次取數(shù)據(jù)時(shí)間就夠了?。?!

同樣的道理用在磁盤(pán)上,比如你寫(xiě)了一個(gè)進(jìn)程,這個(gè)進(jìn)程不挺的向磁盤(pán)寫(xiě)數(shù)據(jù),若是進(jìn)程發(fā)送的數(shù)據(jù)過(guò)快,磁盤(pán)在寫(xiě)的過(guò)程中就極有可能會(huì)被新的數(shù)據(jù)所覆蓋,所以就出現(xiàn)了所謂的磁盤(pán)高速緩存來(lái)做緩沖,它其實(shí)是內(nèi)存的一部分,也就是我們所說(shuō)的內(nèi)存條的一部分,當(dāng)做緩沖,這就是它的實(shí)際的物理意義:就是內(nèi)存的一部分。那這有什么好處???想想也知道好處大得很,說(shuō)說(shuō)原理,有個(gè)概念叫局部性原理。局部性原理包含很多的局部性,比如時(shí)間的局部性,就是說(shuō)進(jìn)程A在t0時(shí)刻訪問(wèn)磁盤(pán)的某一地址,在t0+t1時(shí)刻又來(lái)訪問(wèn),就叫時(shí)間的局部性。若是訪問(wèn)的次數(shù)特別多,訪問(wèn)的時(shí)間的間隔特別短,那么進(jìn)程A就要不挺的訪問(wèn)磁盤(pán),就好比出家門(mén)玩的時(shí)候,你忘記帶某一東西,你回去拿,忽然發(fā)現(xiàn)又忘記帶了,這個(gè)時(shí)候你肯定想要是有人幫我拿了,在送的路上就好了不必在回家,同樣的道理在進(jìn)程A與磁盤(pán)之間,若是頻繁訪問(wèn)某一地址,通過(guò)磁盤(pán)高速緩存來(lái)把數(shù)據(jù)存起來(lái)后方便以后在訪問(wèn),更何況現(xiàn)在是變成了進(jìn)程A直接與磁盤(pán)高速緩存(或者說(shuō)內(nèi)存)之間的訪問(wèn)了,這不更快了嗎?。?!所以一般出現(xiàn)一個(gè)某一個(gè)特定扇區(qū)的I/O請(qǐng)求時(shí),這個(gè)請(qǐng)求會(huì)先查看所要訪問(wèn)的數(shù)據(jù)在不在緩存里面,在就訪問(wèn),不在就把這個(gè)扇區(qū)的數(shù)據(jù)先拷貝到緩存里面,然后在訪問(wèn)緩存里面的數(shù)據(jù)。

是不是感覺(jué)又理解了一點(diǎn)操作系統(tǒng)的小知識(shí),我們繼續(xù)說(shuō)?。?!那上面這些與I/0有無(wú)緩沖有什么聯(lián)系???

對(duì)于帶緩沖的I/O通過(guò)一個(gè)叫緩沖區(qū)高速緩存最為緩存,其實(shí)它就是磁盤(pán)高速緩存。若是用戶(hù)進(jìn)程要訪問(wèn)某一個(gè)設(shè)備,注意不一定是磁盤(pán),任何一個(gè)設(shè)備,由于每個(gè)I/O設(shè)備都與一個(gè)特殊文件相關(guān)聯(lián),而文件由文件系統(tǒng)所管理,所以對(duì)文件的I/O操作,就相當(dāng)于對(duì)設(shè)備的操作了;而文件放在磁盤(pán)上,而且磁盤(pán)高速緩存(內(nèi)存的一部分)又是被用來(lái)作為磁盤(pán)的緩存,所以某一設(shè)備(文件)的緩存可以是磁盤(pán)高速緩存(內(nèi)存的一部分)其中的一部分?。。∪缦聢D所示:

原理講解有緩沖I/O與無(wú)緩沖I/O的區(qū)別

這里可以是任意的設(shè)備

這個(gè)緩沖區(qū)就是磁盤(pán)高速緩存(內(nèi)存的一部分)其中的一部分的緩存。某一進(jìn)程通過(guò)文件系統(tǒng)接口向設(shè)備對(duì)應(yīng)的文件寫(xiě)數(shù)據(jù),文件系統(tǒng)把數(shù)據(jù)先存在緩存器中,然后發(fā)送到設(shè)備驅(qū)動(dòng)程序控制設(shè)備。設(shè)備由所對(duì)應(yīng)的控制器(可以簡(jiǎn)單的理解為寄存器)所管理,學(xué)過(guò)單片機(jī)的都知道,簡(jiǎn)單往寄存器寫(xiě)數(shù)據(jù)就能控制設(shè)備了,比如串口,只要會(huì)了串口,藍(lán)牙不在話(huà)下?。。∪羰前芽刂破骼锩娴募拇嫫饔成涞絻?nèi)存(也就是所謂I/O映射),再加上磁盤(pán)高速緩存是內(nèi)存的一部分,那不就是數(shù)據(jù)在內(nèi)存之間變化了,速度就更快了!??!

而對(duì)于無(wú)緩沖的I/O就沒(méi)有其中的緩沖了,也就是進(jìn)程通過(guò)DMA直接與I/O設(shè)備交換數(shù)據(jù)了,但是執(zhí)行無(wú)緩沖的I/0被鎖定在內(nèi)存,不能被換出,那么這部分內(nèi)存不能用了,信息交流的就少了不少,導(dǎo)致整個(gè)系統(tǒng)的性能有所下降,但是這是進(jìn)程執(zhí)行I/O最快的方法了!??!

責(zé)任編輯:武曉燕 來(lái)源: 今日頭條
相關(guān)推薦

2020-08-07 08:03:37

IONetty

2012-05-14 11:53:44

IO虛擬化

2024-03-05 18:24:52

I/O聚合優(yōu)化存儲(chǔ)

2010-05-11 13:36:50

Unix標(biāo)準(zhǔn)

2011-01-14 09:25:28

LinuxIO機(jī)制

2013-05-28 10:08:41

IO輸出

2012-06-25 10:53:32

Google IO大會(huì)

2025-06-16 09:46:06

2017-01-19 19:14:20

Linux重定向命令

2020-06-10 08:28:51

Kata容器I

2011-03-29 16:14:04

Cacti硬盤(pán)監(jiān)控

2021-02-22 17:06:58

Linux改動(dòng)代碼

2020-06-03 17:30:42

LinuxIO

2020-12-11 11:04:07

NettyIO

2011-01-27 13:52:11

Android 3.0I\O大會(huì)

2011-05-24 10:27:18

GoogleAndroidChrome

2023-06-26 07:39:10

2017-03-25 21:33:33

Linux調(diào)度器

2022-04-23 16:30:22

Linux磁盤(pán)性能

2015-08-10 14:39:46

Java 操作建議
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)