2012-09-11 25 views
0

嗨,人們,我想知道有關操作系統用於可擴展RAM的尋址方案。讓我們考慮一個例子來說明這一點。用於可擴展RAM的尋址方案?

「如果我們對計算機有32位體系結構,那麼這意味着我們有一個32位長的計算機地址,這相當於2^32個可尋址內存位置大約4GB的數據。」

但是,如果我們添加另一個4GB的主內存(現在有8GB RAM),那麼計算機如何解決額外的主內存位置,因爲額外的數量超過了32位地址的範圍,即2^32。

任何人都可以對這個問題提出一些看法。

+1

您正在尋找[Physical Address Extension](http://en.wikipedia.org/wiki/Physical_Address_Extension),也稱爲PAE。 SO用於編程相關問題;所以你的問題可能會被關閉作爲脫離主題。 –

+0

這不是題目。 PAE是指令集體系結構的一部分,硬件和程序員之間的接口。如果你在裸機上編程,你必須知道這種類型的東西。 –

回答

0

基本上,你不能只處理32位的8GB。在任何使用32位的時間點上,您只能從4G內存位置中進行選擇。

一個流行的解決方法是在page tables中使用大於32位的物理地址。這允許操作系統定義程序能夠訪問哪個8GB的子集。但是,這個子集永遠不能超過4GB。 x86 PAE就是一個例子,但是others也是一樣的。

通過此解決方法,操作系統本身可以通過更改自己的頁表來訪問整個8GB。例如。要訪問內存位置,首先必須通過更改頁表將內存位置映射到其自己的地址空間,然後才能開始訪問內存位置。當然這是非常麻煩的(至少可以這麼說)。如果操作系統的某些部分沒有考慮這種類型的內存擴展,那麼它也可能導致問題,設備驅動程序就是一個典型例子。

這個問題並不新鮮。 8位計算機如Commodores C64使用bank switching訪問超過64KB的16位地址。早期的PC使用expanded memory來解決640KB的限制。 Right Thing(TM)當然需要轉向更大的地址,然後才能訴諸醜陋的解決方案。