2013-07-10 433 views
1

目前我正在通過操作系統原理通過Galvin本書。我很享受閱讀,但同時我有一個問題。邏輯地址空間在64位和32位操作系統

我可以說,如果我使用64位操作系統,那麼邏輯地址空間(即CPU生成的)可以是64位?即它將能夠映射物理內存中的大量幀。如果我使用32位操作系統,那麼CPU可以生成最大2^32個邏輯地址空間。

這是正確的嗎?

回答

5

排序,但有許多技術性使這些名稱不太有用。

首先,操作系統有兩種不同的大小:地址大小和數據大小。地址大小決定了可用地址空間的大小,數據大小決定了可以在單字操作中使用多少數據。根據我的經驗,操作系統通常以數據大小來標識,這意味着地址大小可能是其他的東西。

以下是一些示例體系結構及其地址和數據大小。如表所示,目前最常見的32位和64位體系結構具有相同的數據和地址大小,這就是爲什麼您的聲明部分正確。請注意,16位模式下的x86處理器的地址大小大於數據大小。這是由於在尋址中使用了額外的段寄存器,這使得架構的限制更少。

 
       Address size  Data size 
x86 16-bit  20 bits   16 bits 
x86 32-bit  32 bits   32 bits 
x86 64-bit  64 bits   64 bits 
ARM 32-bit  32 bits   32 bits 
ARM 64-bit  64 bits   64 bits 

但是,地址大小並不一定表示可以使用多大的邏輯地址空間。可能存在限制將空間限制在較小區域的限制。例如,沒有當前的x86-64處理器支持64位地址空間。相反,他們要求任何地址的高16位是位47的符號擴展,允許地址空間,256 TiB而不是16 EiB。這減少了需要在處理器中使用的地址線的數量,同時允許遠遠超過當前使用的任何人。最後,到目前爲止所做的一切都是參照邏輯地址空間或虛擬地址空間。物理地址空間可以有不同的大小。較新的32位x86系統具有物理地址擴展(Physical Address Extension),該地址擴展允許36位物理地址,並且x86-64系統被限制爲不超過52位物理地址空間,但是這可以進一步受限於存儲器控制器/主板。當邏輯地址空間大於物理地址空間時,它允許整個物理地址空間一次映射到多個地方。當邏輯地址空間較小時,它允許多個完整的地址空間同時存儲在物理內存中。

相關問題