什么是數(shù)據(jù)訪問局部性?內(nèi)存映射文件的原理是通過數(shù)據(jù)訪問局部性的原理來提高性能。時間局部性意味著最近被訪問的存儲單元很可能稍后被再次訪問;空間局部性意味著正被訪問的存儲單元附近的位置很可能稍后被訪問,這個很好理解,以一段常見的代碼為例:for(i0;一、空間局部性和時間局部性的策略是什么?當(dāng)一個進(jìn)程運(yùn)行時,程序的執(zhí)行往往呈現(xiàn)高度的局部性,包括時間局部性和空間局部性。
高速緩沖存儲器識別位于主存儲器中的重復(fù)指令和數(shù)據(jù),并將它們復(fù)制到其存儲器中。CPU訪問更快的高速緩存,而不是為相同的指令和數(shù)據(jù)重復(fù)訪問緩慢的主內(nèi)存。高速緩存,有時稱為CPU內(nèi)存,通常運(yùn)行在高性能SRAM內(nèi)存模塊上。CPU可以訪問更快的高速緩存來運(yùn)行對性能敏感的操作。高速緩沖存儲器通常集成在主板下或不同的芯片上,并通過總線與CPU互連。
空間局部性:程序一旦訪問某個存儲單元,附近的存儲單元也會很快被訪問,即程序在某個時間段內(nèi)訪問的地址可能集中在某個范圍內(nèi),因?yàn)橹噶罨驍?shù)據(jù)通常是按順序存儲的。時間局部性是通過將近期使用的指令和數(shù)據(jù)保存到緩存中來實(shí)現(xiàn)的??臻g局部性通常通過使用大型高速緩存并將預(yù)取機(jī)制集成到高速緩存控制邏輯中來實(shí)現(xiàn)。
多級存儲是一種拓?fù)浣Y(jié)構(gòu)。為了緩解主存儲器讀寫速度慢,不能滿足CPU運(yùn)行速度的需要,同時也為了解決主存儲器容量小,容納不下更多程序和數(shù)據(jù)的問題,多級存儲系統(tǒng)被廣泛應(yīng)用于當(dāng)前的計(jì)算機(jī)系統(tǒng)中。它的應(yīng)用基于程序操作的局部性原則。為了解決這個矛盾:一方面,它需要更低的比特價格和更大的容量;另一方面,它對計(jì)算機(jī)性能的要求很高,需要價格昂貴、相對較小但速度較快的內(nèi)存。
擴(kuò)展數(shù)據(jù):在分層數(shù)據(jù)存儲結(jié)構(gòu)中,存儲設(shè)備一般包括磁帶庫、磁盤或磁盤陣列,磁盤根據(jù)性能可以分為FC磁盤、SCSI磁盤、SATA磁盤等,而閃存存儲介質(zhì)(非易失性隨機(jī)存取存儲器(NVRAM))由于性能更高,也可以作為分層數(shù)據(jù)存儲結(jié)構(gòu)中的更高一級。通常,磁盤或磁盤陣列等高成本高速設(shè)備用于存儲頻繁訪問的重要信息,而磁帶庫等低成本存儲資源用于存儲訪問頻率較低的信息。
3、如何對mmap區(qū)域的數(shù)據(jù)進(jìn)行加鎖如果內(nèi)存映射文件將所有文件讀入內(nèi)存,那么“內(nèi)存映射文件”與直接從文件中讀取數(shù)據(jù)并加載到內(nèi)存中沒有任何區(qū)別,內(nèi)存映射文件沒有任何意義。內(nèi)存映射文件的原理是通過數(shù)據(jù)訪問局部性的原理來提高性能。什么是數(shù)據(jù)訪問局部性?從統(tǒng)計(jì)學(xué)上來說,如果你讀取文件中某個地方的數(shù)據(jù),那么在你之前讀取的地址附近,你接下來讀取數(shù)據(jù)的概率要比在較遠(yuǎn)的地方讀取數(shù)據(jù)的概率高。
或許不幸的是,你讀取的數(shù)據(jù)不在操作系統(tǒng)預(yù)取的范圍內(nèi),但這是極少數(shù)情況。在大多數(shù)情況下,您接下來要讀取的數(shù)據(jù)已經(jīng)在內(nèi)存中了。此時,操作系統(tǒng)不需要再次訪問磁盤,直接從內(nèi)存返回。雖然這比一次把所有數(shù)據(jù)讀入內(nèi)存略遜一籌,而且100%的數(shù)據(jù)都可以訪問,但我們以非常經(jīng)濟(jì)的代價(可能只有原始數(shù)據(jù)的10%內(nèi)存)取得了近乎完美的性能(性能可能和完全讀取內(nèi)存有10%的差別)。
4、計(jì)算機(jī)組成原理中的局部性原理是什么?Time locality表示最近訪問的存儲單元以后很可能再次被訪問;空間局部性意味著正被訪問的存儲單元附近的位置很可能稍后被訪問。這個很好理解,以一段常見的代碼為例:for(i0;。