2014-04-12 86 views
4

我參加了一門操作系統課程,其中教師提到32位/秒64位體系結構。32位/秒64位體系結構 - 虛擬地址空間

我的理解與我的架構類的不同之處在於,32位v/s 64位表示ALU可以執行計算的CPU字大小,寄存器大小和大小。

指導員說:「今天使用64位體系結構,所以進程的虛擬地址空間大小爲64位。」

我想問32位v/s 64位是否也表明進程的虛擬地址空間大小是否爲32位v/s 64位?如果不是,虛擬地址空間大小是否與架構類型(32位/ 64位)有關。

+0

那麼,我們呢?我們是誰?這不是很具體。 –

+0

對不起,我正在編輯它。 – Jake

+0

@DavidHeffernan我編輯了這個問題。 – Jake

回答

4

不可以。即使您有64位體系結構,虛擬地址空間也需要小於虛擬可尋址空間總量,以便爲操作系統提供操作空間。

每個進程分配的空間大小取決於操作系統。 64位體系結構表明,與32位體系結構相比,操作系統將爲進程使用更大的默認進程空間。它取決於OS分配多少默認進程空間。在Windows 64位中,進程的默認虛擬地址空間爲8 TB(在64位字節可尋址系統上共有2^24個可尋址太字節),32位只有2 GB(4 GB可尋址總)。另一個剩餘的內存是爲32位系統中的操作系統保留的(不確定爲什麼該進程在64位系統中被限制到這樣一個相對較低的數量)。

在32位架構的這些默認值can be changed on Windows(在Linux上通過一些其他的方法,我敢肯定)在任何地方之間的2 GB - GB 3,但最後GB必須始終保留用於操作系統。

這並不意味着該進程在64位體系結構中必須是64位。 64位操作系統可以通過兼容模式在64位體系結構上運行32位進程。正如John Saunders指出的,有一些64位體系結構可以使用32位處理器來運行32位進程,而無需兼容模式;這方面的一個例子是英特爾的安騰處理器。

32位體系結構允許通過使用Physical Address Extensions(PAE)擴展進程的內存空間以使用全部4 GB的內存,儘管Windows PAE允許64至128 GB的物理內存,具體取決於處理器。

這意味着一個單個 32位進程可能'看到'高達4 GB的主存PAE但不超過。據我所知,在可預見的未來,任何進程都不會在接近2^64字節的地方使用,所以PAE不適用於64位系統。


所有的東西超出了你的問題的範圍:

虛擬地址空間的存在使得操作系統可以分配更多的進程空間給每個進程比實際可用。它也存在允許通過Virtual Machine Monitor(VMM)保護進程空間並啓用虛擬化。利用VMM保護進程空間可以實現虛擬化指令集架構。這使得人們可以在Windows上的VM上運行Linux(請注意,處理器硬件&操作系統都必須支持虛擬化才能實現這一點)。

超過32位的64位體系結構優勢最常見/最簡單的例子是超過4 GB RAM /主內存的系統。一個32位系統只能使用高達4 GB的物理/主存/ RAM與PAE,但64位系統可以輕鬆地允許進程在不需要任何PAE的情況下處理更多的內存。請記住,2^32位= 4 * 1024 * 1024 * 1024 = 4GB。 32位地址空間中的每個位表示字節可尋址系統中的1 字節

+1

'32位地址空間中的每一位代表一個字節可尋址系統中的1個字節。「 - 這是理解存儲器尋址方案的關鍵。這是許多人不會提及的最基本的概念。很高興你將它列入你的答案。 – RBT

0

由於32位與64位體系結構的限制來自您可以存儲在32位cpu寄存器中以訪問地址的數字的最大大小。儘管內存可能在那裏,但您需要將指向內存的地址值存儲在用於彙編命令(push,mov,pop,store)的寄存器中以便將值存儲在這些內存位置中。一個64位寄存器可以存儲2^64個不同的值 - 一個非常大的數字(16位exbibytes),32位只能存儲2^32個數值= 4GB。

相關問題