關於計算機外存和記憶體中的儲存結構解析
我們的計算機中能夠儲存資料的東西有記憶體,外存等等
記憶體的讀寫速度優於外存很多很多,但是由於其成本高的特點,一般只適用於做短時儲存讀取,也就是說,當我們的電腦關閉的時候,記憶體中的資料就全部消失了。與之相比,外存也就是磁碟,是致力於實現資料持久化技術的
瞭解過一些硬體的人應該知道,我們的磁碟是由很多個個圓形磁軌組成的,每個磁軌上又分成很多個小塊,用來儲存資料,如下圖所示:
因為小塊的數量很多很多,再加上為了便於理解,我們可以將這些資料儲存單元抽象為下圖這樣的平面矩形分塊:
到現在為止,我們將基本的資料儲存模型建立完畢了,下面我們來比較一下記憶體和外存中儲存結構的差異
外存
假設我們有一段資料,大小需要佔滿3個格子,那麼我們在外存中應該如何選擇格子來儲存呢?
假如我們直接選擇相鄰的3個格子來儲存資料,如下圖棕色區域所示:
這樣,我們當讀取這段資料的時候,直接通過第一個棕色格子的地址,就可以找到這段資料把它讀出來,這不是挺好的嗎?
但是,當我們儲存了很多資料之後,我們就發現了問題所在了
假設我們又儲存了一段大小為4個格子的資料,儲存了一段大小為兩個格子的資料,儲存了大小為7個格子的資料,儲存了大小為1個格子的資料,儲存了大小為8個格子的資料
用一種顏色代表一段資料,可以看到,我們的磁碟儲存容量已經被佔滿了:
這時,我們想要刪除綠色的和藍色的資料,如圖:
刪除之後,按理說我們的磁碟已經空出了三個格子的空間,可以儲存大小為三個格子的資料了,但是由於我們是順序儲存,所以上面的兩個格子和下面的一個格子連不到一起,意味著我們只能再存進去兩個格子的資料和一個格子的資料,並不能存進去三個格子的。
也就是說,如果按照順序儲存,用到最後,我們的磁碟只能存入比較小的資料了,明明容量充足,卻沒法存進去大的資料,豈不是很難受?
有人可能要說了,我們可以通過刪除之後把後面的資料移到前面來填補上前面的格子來達到,就像玩電腦遊戲裡的整理揹包一樣。但是如果這樣的話,我們每次刪除一個數據都要把這個資料後面的資料向前移動(更改資料的儲存地址),這樣對效能的影響非常嚴重,所以,顯然,我們的磁碟不是用這種方式來儲存資料的,而是用下面這種:
這就是磁碟的儲存方式——鏈式儲存,這種方式能最大限度的利用磁碟的空間。
記憶體
上述的鏈式儲存方式雖然最大限度地利用了磁碟的儲存空間但是畢竟在增刪改查的資料操作上的速度不如順序儲存,對於記憶體來說,因為它的讀寫速度非常非常快,因此我們上述的每次刪除之後的重新整理的速度也非常快,因此我們的記憶體使用的是順序儲存方式,這樣不會速度很慢,而且也方便了增刪改查的操作。