2009年1月21日 星期三

Memory mode

Real mode:20位元的記憶體任址空間(1M), 可以直接存取BIOS常式及週邊硬體,沒有保護功能。
Protected mode:可存取到4G的空間,而且擁有分段,分頁,保護機制,會將每個段的重要訊習記錄在特定的table中(GPT,LDT,IDT...),包括存取權限,段的特權級資訊,達到保護功能,例如我們可以在一個segment的訊習描敘中,設定是否可寫,可讀或可被執行等限定,來保護每個segment不同的功能。除此之外,還有GPTR, LDTR, IDTR, TR 4個記憶體管理暫存器,指定記憶體分段管理的"系統表之基底位址"再配合訊習記錄中的segment大小,來保護每個segment 的獨立(如果存取大於偏移位置的空間,會產生異常)。 以上是分段的用途。至於分頁的最大用途是讓記憶體空間要比電腦實際記憶體容量更大(虛擬記憶體),而分頁的硬體設備(實作方法),是使用一小塊的實體記體(RAM or ROM)來存配置空間表,加上外部儲存空間(硬碟)來存放真正的
Data,達到虛擬記憶體的擴大法。
System management mode(big real mode) (SMM):由1M大小擴大到4G的存取空間(A20的開啟(bios)),但沒有保護模式的保護機制,也沒有分頁功能。
補充:所謂的SMM是指觸發SMI(system manage interrupt)後,CPU register 設定mode切換,讓CPU進入SMM模式,處理例外事件。
Virtual 8086 mode:在保護模式機制下,模擬出real mode,達到直接存取BIOS常式及週邊硬體。
Intel 64: (IA-32e) supports a 64-bit programming environment, 有兩種模式,(1)64bit 模式:支援64bit的os和軟體(2)相容模式:讓傳統的軟體可以和64bit的os和軟體共存。
--------------------------------------------------------------

不管是IA-32或intel 64架構,在power-up和reset的一開始,都是跑real mode,透過控制cpu register 及 flage來控制mode的切換。
CR0(cpu 內部register)中的保護控制位(Bit0:PE(protection enalbe) Bit31:PG(Paging))
PE:保護模式和真實模式的切換,如果保護模式要含有分頁機制,則PE和PG都要被set
PG:如果沒有分頁機制,邏輯位址對應的線性位址,就是記憶體上的實體位址。