【Note】數據存儲地常規小結


BY《程序是怎樣跑起來的》

一、內存——利用電流存儲(高速高價)
  1. 物理機制
    內存IC=電源+地址信號(IC引腳)+數據信號(IC引腳)+控制信號(IC引腳)
    通過對內存指定地址(address),進行數據讀寫。

一內存IC有m個數據引腳,n個地址引腳:
則該內存IC可存放2^n個數據,每個數據值爲m位數,每個數據m/8字節。
若現需QB大的內存,則用上述內存組裝,共需Q2nm8\frac{Q}{2^n*\frac{m}{8}}個。
【tips:內存有多大,表明內存可存放多少字節的數據,與地址引腳數息息相關。而若以程序員角度,還需關注變量數據類型,因不同數據類型的字節長度不同。】

  1. 分類:
    (1)ROM【Read Only Memory】:只能用於讀取的內存;
    (2)RAM【Random Access Memory】:可被讀取和寫入的內存,分爲需經常刷新(refresh)以保存數據的DRAM【Dynamic RAM】,和不需刷新電路即能保存數據的SRAM【Static RAM】。

  2. 數組——高效使用內存的基礎
    (1)含義:數組指多個同樣數據類型的數據在內存中連續排列的形式。
    (2)組內區分:通過連續的編號區分,編號又稱索引(index)。
    (3)操作:指定索引後,可對該索引所對應地址的內存進行讀寫操作,索引和內存地址的變換工作由編譯器自動實現

注意!此處區別於CPU,CPU是通過基址寄存器和變址寄存器來指定內存地址。

(4)數組和內存物理構造一樣。

  1. 數據結構
    (1)棧&隊列:不通過指定地址和索引對數組的元素進行讀寫。

%%需要臨時保存計算過程中的數據、連接在計算機上的設備或者輸入輸出的數據時,都可用此結構使用內存,因不需指定地址和索引。
%%棧的原意是“乾草堆積如山”,乾草堆積成山後,最後堆的乾草會被最先抽取出來。
%%隊列常以環狀緩衝區(ring buffer)的方式實現。

(2)鏈表:易插入、刪除。
(3)二叉查找樹:高效地對數組數據進行檢索,是由鏈表構造發展而來的表現形式,故也易插入、刪除。

Q1:高級編程語言中的數據類型表示的是什麼?
A1:佔據內存區域的大小和存儲在該內存區域的數據類型。例如,C語言數據類型中的short類型,表示佔據2字節的內存區域,並且存儲整數。

Q2:在32位內存地址的環境中,指針變量的長度是多少位?
A2:32位。指針指的是用於存儲內存地址的變量。

Q3:與物理內存有相同構造的數組的數據類型長度是多少?
A3:1字節。物理內存是以字節位單位進行數據存儲的。

二、磁盤——利用磁效應電流存儲(低速廉價)
  1. 磁盤存儲的程序,必須加載到內存後才能運行。
    程序要加載到內存後纔開始運行
  2. 磁盤緩存加快磁盤訪問速度
    磁盤緩存【disk cache】:指把從磁盤中讀出的數據存儲到內存空間中的方式。此舉可減少訪問實際磁盤次數,因此大大改善磁盤數據訪問速度。
    磁盤緩存

緩存原理:把低速設備數據保存在高速設備中,需要時將其從高速設備中讀出。
實例:Web瀏覽器中的使用,Web瀏覽器通過網絡獲取遠程Web服務器數據並將其顯示出來,對於大文件花費很多時間,故可把獲取的數據暫時保存在磁盤中,後在需要時再顯示磁盤數據。即把低速的網絡數據保存到相對高速的磁盤中。

  1. 虛擬內存(virtual memory)
    (1)含義:把磁盤一部分作爲假想內存使用。

磁盤緩存:假想磁盤,實際上是內存;
虛擬內存:假想內存,實際上是磁盤。

(2)用法:因CPU只能執行加載到內存中的程序,故必須把實際內存(或稱物理內存)的內容和磁盤上的虛擬內存內容進行部分置換(swap),並同時運行程序。
(3)方法:
i)分頁式:Windows,不考慮程序構造下,將運行的程序按一定大小的頁(page)進行分割,以頁爲單位在內存和磁盤間進行置換。

Page In:磁盤內容讀入內存;
Page Out:內存內容寫到磁盤。
page file:頁文件,Windows在磁盤上提供虛擬內存用的文件,由Windows自動做成和管理,文件大小即虛擬內存大小,通常是實際內存的1~2倍容量。

ii)分段式:把要運行的程序分割成以處理集合及數據集合等爲單位的段落,再以分割後的段落爲單位在內存和磁盤間進行數據置換。

  1. 節約內存的編程方法
    (1)通過DLL文件實現函數共有
    i)含義:DLL(Dynamic Link Library)文件,是在程序運行時可以動態加載Library(函數和數據的集合)的文件。
    ii)注意:多個應用可共有一個DLL文件,以共有達到節約內存效果。
    iii)優點:節約內存;在不變更EXE文件的情況下,只通過升級DLL文件就可更新。

Windows的os本身是多個DLL文件的集合體。

浪費內存
節約內存
(2)調用_stdcall 減小程序文件大小
i)含義:標準調用(standard call略稱)。

stdcall

  1. 磁盤物理結構——磁盤存儲數據的形式
    (1)物理表面劃分方式:扇區方式、可變長方式。

扇區方式:將磁盤劃分爲固定長度的空間,Windows的硬盤、軟盤皆用此法;
可變長方式:把磁盤劃分爲長度可變的空間。

(2)扇區劃分
磁道:磁盤表面分成若干個同心圓的空間;
扇區:磁道按照固定大小(能存儲的數據長度相同)劃分而成的空間,是對磁盤物理讀寫的最小單位
磁盤物理結構

Windows中使用的磁盤,一般1個扇區是512個字節。邏輯方面(軟件方面)對磁盤進行讀寫的單位是扇區整數倍簇。磁盤容量越大,簇容量越大。軟盤中,1簇=1扇區,硬盤中不然。

不管硬盤軟盤,不同的文件不能存儲在同一個簇中,否則會導致只有一方的文件不能被刪除。因此,不管多小的文件,都會佔用1簇空間。故,所有文件都會佔用1簇的整數倍的磁盤空間。

若減少簇的容量,磁盤訪問次數會增加,導致讀寫文件的時間變長。因此,若簇容量過小,磁盤的整體容量也會減少。

扇區和簇的大小,由處理速度和存儲容量的平衡來決定。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章