在計(jì)算機(jī)的5大部件中, 「內(nèi)存」 和 「磁盤」 都被歸類為 「存儲(chǔ)部件」 。不過,利用 「電流」 來實(shí)現(xiàn)存儲(chǔ)的內(nèi)存,同利用 「磁效應(yīng)」 來實(shí)現(xiàn)存儲(chǔ)的磁盤,還是有差異的。
從存儲(chǔ)容量來看
- 內(nèi)存是**「高速高價(jià)」**
- 磁盤是**「低速廉價(jià)」**
不讀入內(nèi)存就無法運(yùn)行
計(jì)算機(jī)中主要的存儲(chǔ)部分是 「內(nèi)存」 和 「磁盤」 。 「磁盤中存儲(chǔ)的程序,必須要加載到內(nèi)存后才能運(yùn)行。在磁盤中保存的原始程序是無法直接運(yùn)行的」 。這是因?yàn)椋?strong>「負(fù)責(zé)解析和運(yùn)行程序內(nèi)容的CPU,需要通過內(nèi)部程序計(jì)數(shù)器
來指定內(nèi)存地址,然后才能讀出程序」
?存儲(chǔ)在磁盤中的程序需要讀入到內(nèi)存后才能運(yùn)行
?
磁盤緩存
磁盤緩存Disk Cache指的是把從磁盤中讀出的數(shù)據(jù)存儲(chǔ)到 「內(nèi)存空間」 中的方式。這樣一來,當(dāng)接下來需要讀取 「同一數(shù)據(jù)」 時(shí),就不用通過實(shí)際的磁盤,而是從磁盤緩存中把內(nèi)容讀出。
?使用磁盤緩存可以大大改善磁盤數(shù)據(jù)的訪問速度
?
把 「低速設(shè)備」 的數(shù)據(jù)保存到 「高速設(shè)備」 中,需要時(shí)可以直接將其從高速設(shè)備中讀出,這種 「緩存」 的方式在其他情況下也會(huì)用到。
其中一個(gè)實(shí)例就是在Web瀏覽器
中的使用。由于Web瀏覽器
是通過 「網(wǎng)絡(luò)」 來獲取 「遠(yuǎn)程」 Web服務(wù)器
的數(shù)據(jù)并將其顯示出來的。因此,在顯示較大的圖片等文件時(shí),會(huì)花費(fèi)不少時(shí)間。于是,Web瀏覽器
就可以把獲取的數(shù)據(jù) 「暫時(shí)」 保存在 「磁盤」 中,然后在需要時(shí)再顯示磁盤中的數(shù)據(jù)。也就是, 「把低速的網(wǎng)絡(luò)數(shù)據(jù)保存到相對(duì)高速的磁盤中」 。
虛擬內(nèi)存
虛擬內(nèi)存Virtual Memory是指把 「磁盤」 的一部分作為 「假想的內(nèi)存」 來使用。這與磁盤緩存是 「假想的磁盤」 (實(shí)際上是內(nèi)存
)相對(duì),虛擬內(nèi)存是 「假想的內(nèi)存」 (實(shí)際上是磁盤
)。
「通過借助虛擬內(nèi)存,在內(nèi)存不足時(shí)也可以運(yùn)行程序」 。為了實(shí)現(xiàn)虛擬內(nèi)存,就必須把 「實(shí)際內(nèi)存」 (也可稱為 「物理內(nèi)存」 )的內(nèi)容,和磁盤上的虛擬內(nèi)存的內(nèi)容進(jìn)行 「部分置換」 ,并同時(shí)運(yùn)行程序。
?虛擬內(nèi)存的方法有 「分頁(yè)式」 和 「分段式」 兩種。
?
Windows
采用的是 「分頁(yè)式」 。該方式是指, 「把運(yùn)行的程序按照一定大小的頁(yè)P(yáng)age進(jìn)行分割,并以頁(yè)
為單位在內(nèi)存和磁盤間置換」 。
在分頁(yè)式中,把磁盤的內(nèi)容讀出到內(nèi)存稱為Page In
,把內(nèi)存的內(nèi)容寫入磁盤稱為Page Out
。
為了實(shí)現(xiàn)虛擬內(nèi)存功能,Windows
在 「磁盤」 上提供了虛擬內(nèi)存用的頁(yè)文件Page File。該文件由Windows
自動(dòng)做成和管理。
節(jié)約內(nèi)存的編程方式(DLL文件)
「DLL(Dynamic Link Library)文件」 ,是在程序 「運(yùn)行時(shí)」 可以 「動(dòng)態(tài)」 加載Library
(函數(shù)和數(shù)據(jù)的集合)的文件。并且,多個(gè)應(yīng)用可以 「共有同一個(gè)」 DLL文件
。所以, 「通過共有同一個(gè)DLL文件
可以達(dá)到節(jié)約內(nèi)存的效果」 。
假設(shè)我們編寫了一個(gè)具有某些處理功能的函數(shù)MyFunc()
,應(yīng)用A
和應(yīng)用B
都會(huì)使用這個(gè)函數(shù)。如果函數(shù)MyFunc()
是獨(dú)立的DLL文件
,由于同一個(gè)DLL文件
的內(nèi)容在運(yùn)行時(shí)可以被多個(gè)應(yīng)用共有,因此內(nèi)存中存在的函數(shù)MyFunc()
的程序就只有一個(gè)。
?
Windows
的 「操作系統(tǒng)」 本身也是多個(gè)DLL文件
的集合體。?
DLL文件
還有一個(gè)優(yōu)點(diǎn):在不變更可執(zhí)行文件的情況下,只通過升級(jí)DLL文件
就可以更新。
磁盤的物理結(jié)構(gòu)
「磁盤的物理結(jié)構(gòu)是指磁盤存儲(chǔ)數(shù)據(jù)的形式」 。
?磁盤是通過把其物理表面劃分成多個(gè)空間來使用的。
?
劃分的方式有 「扇區(qū)方式」 和 「可變長(zhǎng)方式」 兩種。
- 「扇區(qū)方式」 是指將磁盤劃分為 「固定長(zhǎng)度」 的空間
- 「可變長(zhǎng)方式」 是指把磁盤劃分為 「長(zhǎng)度可變」 的空間
Windows
計(jì)算機(jī)所使用的硬盤,采用的都是 「扇區(qū)方式」 。
扇區(qū)方式中,把磁盤表面分成若干個(gè) 「同心圓的空間」 就是 「磁道」 ,把磁道按照 「固定大小」 (能存儲(chǔ)的數(shù)據(jù)長(zhǎng)度相同)劃分而成的空間就是 「扇區(qū)」 。
?扇區(qū)是對(duì)磁盤進(jìn)行 「物理讀寫」 的最小單位,一般一個(gè)扇區(qū)是512字節(jié)
?
不過,Windows
在 「邏輯方面」 (軟件方面
)對(duì)磁盤就進(jìn)行讀寫的單位是扇區(qū)的整數(shù)倍 「簇」 。根據(jù)磁盤容量的不同,1簇可以是512字節(jié)(1簇=1扇區(qū))、1KB(1簇=2扇區(qū))、2KB、4KB等。
? 「不同的文件是不能存儲(chǔ)在同一簇中的」 ,否則就會(huì)導(dǎo)致只有一方的文件不能被刪除
?
-
cpu
+關(guān)注
關(guān)注
68文章
10873瀏覽量
212020 -
計(jì)算機(jī)
+關(guān)注
關(guān)注
19文章
7510瀏覽量
88078 -
內(nèi)存
+關(guān)注
關(guān)注
8文章
3030瀏覽量
74104 -
計(jì)數(shù)器
+關(guān)注
關(guān)注
32文章
2256瀏覽量
94646
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論