計算機(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ù)的長度相同)劃分的空間。







