簡介
地址空間(address space)表示任何一個計算機實體所占用的記憶體大小。比如外設、檔案、伺服器或者一個網路計算機。地址空間包括物理空間以及虛擬空間(邏輯地址空間) 。在計算機中,由於記憶體空間較小,對於邏輯地址空間很大的作業,記憶體無法滿足其需要的空間要求。一般是從邏輯上擴充地址空間,而不是擴充物理地址空間。擴充邏輯空間是指擴充源程式的相對地址空間。在記憶體中解決擴充邏輯空間問題一般是基於程式局部性原理。
有關術語
地址空間
我們把程式中有符號名組成的空間稱為地址空間。源程式經過彙編或編譯後再經過連結編輯程式加工形成的程式的裝配模組,及轉換為相對地址編址的模組,它是以0為基址順序進行編址的。相對地址也稱為邏輯地址或虛擬地址,把程式中由相對地址組成的空間叫做邏輯地址空間。相對地址空間通過地址再定位機構轉換到絕對地址空間,絕對地址空間也叫物理地址空間。
物理地址
存儲器存儲單元的真實地址叫物理地址,又叫絕對地址。物理地址是可識別的,實際存在的。記憶體儲器的存儲單元按它的排列順序規定一個編號,這個編號就是該存儲單元的物理地址。中央處理機按這個地址號即可訪問該存儲單元。
物理地址的編號一般都是按二進制數字從小到大編排的。例如,一個4K位元組的記憶體儲器,各個位元組單元的地址編號是:000000000000~111111111111 (212=4 096)當記憶體儲器容量很大時,地址編號就很大。在計算機指令中一般給出相對地址 (又叫邏輯地址),經定址變換後,得到物理地址。參見“邏輯地址”及“定址方式”。
物理地址通常是指記憶體儲器中的地址編號。計算機的外存儲器物理地址如磁碟機的地址是以圓柱號、磁軌號、扇區號來劃分的。
邏輯地址
在計算機體系結構中是指應用程式角度看到的記憶體單元(memory cell)、存儲單元(storage element)、網路主機(network host)的地址。 邏輯地址往往不同於物理地址(physical address),通過地址翻譯器(address translator)或映射函式可以把邏輯地址轉化為物理地址。
局部性原理
早在 1968 年,Denning.P 就曾指出:程式在執行時將呈現出局部性規律,即在一較短的時間內,程式的執行僅局限於某個部分;相應地,它所訪問的存儲空間也局限於某個區域。他提出了下述幾個論點:
(1) 程式執行時,除了少部分的轉移和過程調用指令外,在大多數情況下仍是順序執行的。該論點也在後來的許多學者對高級程式設計語言(如 FORTRAN 語言、PASCAL 語言)及 C 語言規律的研究中被證實。
(2) 過程調用將會使程式的執行軌跡由一部分區域轉至另一部分區域,但經研究看出,過程調用的深度在大多數情況下都不超過 5。這就是說,程式將會在一段時間內都局限在這些過程的範圍內運行。
(3) 程式中存在許多循環結構,這些雖然只由少數指令構成,但是它們將多次執行。
(4) 程式中還包括許多對數據結構的處理,如對數組進行操作,它們往往都局限於很小的範圍內。
局限性還表現在下述兩個方面:
(1) 時間局限性。如果程式中的某條指令一旦執行,則不久以後該指令可能再次執行;如果某數據被訪問過,則不久以後該數據可能再次被訪問。產生時間局限性的典型原因是由於在程式中存在著大量的循環操作。
(2) 空間局限性。一旦程式訪問了某個存儲單元,在不久之後,其附近的存儲單元也將被訪問,即程式在一段時間內所訪問的地址,可能集中在一定的範圍之內,其典型情況便是程式的順序執行。
虛擬存儲器
虛擬存儲器是指具有請求調入功能和置換功能,能從邏輯上對記憶體容量加以擴充的一種存儲器系統。其邏輯容量由記憶體容量和外存容量之和來決定,其運行速度接近於記憶體速度,而每位的成本卻又接近於外存。可見,虛擬存儲技術是一種性能非常優越的存儲器管理技術,故被廣泛地套用於大、中、小型和微型機器中。
虛擬存儲器具有多次性、對換性和虛擬性三大主要特徵。
多次性
多次性是指一個作業被分成多次調入記憶體運行,亦即在作業運行時沒有必要將其全部裝入,只需將當前要運行的那部分程式和數據裝入記憶體即可;以後每當要運行到尚未調入的那部分程式時,再將它調入。多次性是虛擬存儲器最重要的特徵,任何其它的存儲管理方式都不具有這一特徵。因此,我們也可以認為虛擬存儲器是具有多次性特徵的存儲器系統。
對換性
對換性是指允許在作業的運行過程中進行換進、換出,亦即,在進程運行期間,允許將那些暫不使用的程式和數據,從記憶體調至外存的對換區(換出),待以後需要時再將它們從外存調至記憶體(換進);甚至還允許將暫時不運行的進程調至外存,待它們重又具備運行條件時再調入記憶體。換進和換出能有效地提高記憶體利用率。可見,虛擬存儲器具有對換性特徵。
虛擬性
虛擬性是指能夠從邏輯上擴充記憶體容量,使用戶所看到的記憶體容量遠大於實際記憶體容量。這是虛擬存儲器所表現出來的最重要的特徵,也是實現虛擬存儲器的最重要的目標。值得說明的是,虛擬性是以多次性和對換性為基礎的,或者說,僅當系統允許將作業分多次調入記憶體,並能將記憶體中暫時不運行的程式和數據換至盤上時,才有可能實現虛擬存儲器;而多次性和對換性又必須建立在離散分配的基礎上。