(五)磁盤

計算機(jī)中,內(nèi)存和磁盤都屬于存儲設(shè)備。
不同之處:
1.內(nèi)存通過電流實現(xiàn)存儲,一旦斷電,數(shù)據(jù)消失;
磁盤通過磁效應(yīng)實現(xiàn)存儲,如果斷電,數(shù)據(jù)不消失。
2。內(nèi)存高速高價,磁盤低速低價。


存儲程序方式(程序內(nèi)置方式)

即在存儲設(shè)備(磁盤)中存儲程序,需要運(yùn)行程序時,將程序加載到內(nèi)存,再由CPU中執(zhí)行(程序計數(shù)器指定內(nèi)存地址,可以參考第一篇文章)。


磁盤緩存(disque cache)

磁盤緩存,就是將磁盤上讀出的數(shù)據(jù)暫時性存儲在內(nèi)存中。這樣可以大大提高數(shù)據(jù)讀寫的速度。


但是。。。。。。

虛擬內(nèi)存(VM,Virtual Memory)

虛擬內(nèi)存,即把磁盤的一部分劃分作為假象的內(nèi)存使用。這樣就可以運(yùn)行大小大于剩余內(nèi)存空間的程序了。
但是,內(nèi)存和磁盤對數(shù)據(jù)的讀寫速度終究是不同的,不可能真的同時在內(nèi)存和磁盤上運(yùn)行程序。因此,其實際機(jī)制為,在運(yùn)行程序的同時,將內(nèi)存中物理內(nèi)存的內(nèi)容與磁盤中虛擬內(nèi)存的內(nèi)容調(diào)換。通過這樣合理地調(diào)度程序的內(nèi)容,以確保正在進(jìn)行的程序部分置于內(nèi)存中,且大小不超過當(dāng)前內(nèi)存容量,其余部分置于虛存(磁盤)中。

分頁式和分段式

分頁式:將運(yùn)行的程序分割成一系列一定大小的頁(page),并以這些頁為單位在物理內(nèi)存和虛擬內(nèi)存中置換。把從磁盤的內(nèi)容讀到內(nèi)存稱為Page In,把從內(nèi)存的內(nèi)容讀到磁盤稱為Page Out。


Windows操作系統(tǒng)中,使用分頁式虛存。一頁大小是4K。

在編程中節(jié)約內(nèi)存

虛擬內(nèi)存機(jī)制也無法徹底解決內(nèi)存不足的問題。


根本上解決內(nèi)存不足的問題:
1.提高內(nèi)存容量,增加內(nèi)存條。
2.讓存儲的文件變小。

縮小應(yīng)用程序的方法

DLL文件實現(xiàn)函數(shù)共有

DLL(Dynamic Link Library),動態(tài)鏈接庫,在這個文件中集合了一系列函數(shù)和數(shù)據(jù)。運(yùn)行程序時,可以加載此文件,即動態(tài)加載,以便能夠使用DLL文件中集合的函數(shù)和數(shù)據(jù)。容易看到,DLL文件是可以被多個程序公用的,因此可以有效的節(jié)省內(nèi)存。

對比:
靜態(tài)鏈接(Static Link):已經(jīng)有了某個編譯好的函數(shù)F,對每個需要使用它的程序,都使用靜態(tài)鏈接器,將F文件和程序文件鏈接起來,生成一個可執(zhí)行文件。即,有幾個需要使用它的程序,就鏈接幾次。效率低下。

調(diào)用_stdcall文件





磁盤的物理結(jié)構(gòu)

磁盤通過將物理表面劃分為多個空間來提高使用效率。
兩種方式:

扇區(qū)方式
將磁盤劃分為多個固定長度的空間的方式。
磁道:將磁盤表面劃分為多個同心圓的空間。
扇區(qū):磁道上按固定大小(存儲數(shù)據(jù)的長度相同)劃分的空間。






最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容