實模式與保護模式

2021-08-31 19:33:02 字數 1635 閱讀 3264

1. x86實模式介紹

x86體系的處理器剛開始時只有20根位址線,定址暫存器是16位。我們知道16位的暫存器可以訪問64k的位址空間,如果程式要想訪問大於64k的記憶體,就需要把記憶體分段,每段64k,用段位址+偏移量的方式來訪問,這樣使20根位址線全用上,最大的定址空間就可以到1m位元組,這在當時已經是非常大的記憶體空間了。

2. 實模式的問題與保護模式的出現

事實上,實模式將整個物理記憶體看成分段的區域,程式**和資料位於不同區域,系統程式和使用者程式並沒有區別對待,而且每乙個指標都是指向實際的實體地址。這樣一來,使用者程式的乙個指標如果指向了系統程式區域或其他使用者程式區域,並修改了內容,那麼對於這個被修改的系統程式或使用者程式,其後果就很可能是災難性的。再者,隨著軟體的發展,1m的定址空間已經遠遠不能滿足實際的需求了。最後,對處理器多工支援需求也日益緊迫,所有這些都促使新技術的出現。

為了克服實模式下的記憶體非法訪問問題,並滿足飛速發展的記憶體定址和多工需求,處理器廠商開發出保護模式。在保護模式中,除了記憶體定址空間大大提高;提供了硬體對多工的支援;物理記憶體位址也不能直接被程式訪問,程式內部的位址(虛擬位址)要由作業系統轉化為實體地址去訪問,程式對此一無所知。至此,程序(程式的執行態)有了嚴格的邊界,任何其他程序根本沒有辦法訪問不屬於自己的物理記憶體區域,甚至在自己的虛擬位址範圍內也不是可以任意訪問的,因為有一些虛擬區域已經被放進一些公共系統執行庫。這些區域也不能隨便修改,若修改就會有出現linux中的段錯誤,或 windows中的非法記憶體訪問對話方塊。

3. 386以上處理器的特點

386處理器有三種工作方式:實模式、保護模式和虛擬8086模式。

實模式只能訪問位址在1m以下的記憶體,稱為常規記憶體,我們把位址在1m 以上的記憶體稱為擴充套件記憶體。

在保護方式下,全部32條位址線有效,可定址高達4g位元組的實體地址空間;擴充的儲存器分段管理機制和可選的儲存器分頁管理機制,不僅為儲存器共享和保護提供了硬體支援,而且為實現虛擬儲存器提供了硬體支援;支援多工,能夠快速地進行任務切換和保護任務環境;4個特權級和完善的特權檢查機制,既能實現資源共享又能保證**和資料的安全和保密及任務的隔離;支援虛擬8086方式,便於執行8086程式。

虛擬8086模式是執行在保護模式中的實模式,為了在32位保護模式下執行純16位程式。它不是乙個真正的cpu模式,還屬於保護模式。

4. 保護模式下的位址轉換

通過採用段位址加偏移量的方式,80386支援的虛擬位址空間可達64t位元組。但由於實際物理記憶體的大小可能會遠小於虛擬位址空間,所以實際上虛擬位址中只有部分才可以真正對映到物理儲存器。同時由於每乙個任務有乙個虛擬位址空間。為了避免多個並行任務的多個虛擬位址空間直接對映到同乙個實體地址空間,還需要使用線性位址空間來隔離虛擬位址空間和實體地址空間。線性位址空間由一維的線性位址構成,線性位址空間和實體地址空間是對等。線性位址也是32位長,定址空間為4g位元組。

在作業系統中,應用程式使用虛擬位址(也即邏輯位址)訪問記憶體,作業系統將虛擬位址轉換為線性位址,然後由處理器將線性位址轉換為實體地址,但是在交由處理器轉換前,作業系統必須設定處理器所需要的相關描述符表和描述符資訊。其實在linux系統中,這在系統啟動時就設定好了,而且是設定後就不會再改動了。

在80386中,通過使用分段管理和分頁管理實現虛擬位址到實體地址的轉換,其中分頁管理是可選的。

實模式與保護模式

實模式與保護模式 1.實模式,又叫實位址模式,cpu完全按照8086的實際定址方法訪問從00000h fffffh 1mb大小 的位址範圍的記憶體,在這種模式下,cpu只能做單任務執行 定址公式為 實體地址 左移4位的段位址 偏移位址,即 實體地址是由16位的段位址和16位的段內偏移位址組成的。2....

實模式與保護模式

實模式 即實位址訪問模式 它是intel公司80286及以後的x86 80386,80486和80586等 相容處理器 cpu 的一種操作模式。實模式被特殊定義為20位位址記憶體可訪問空間上,這就意味著它的容量是2的20次冪 1m 的可訪問記憶體空間 物理記憶體和bios rom 軟體可通過這些位址...

實模式和保護模式

實模式 即實位址訪問模式 它是intel公司80286及以後的x86 80386,80486和80586等 相容處理器 cpu 的一種操作模式。實模式被特殊定義為20位位址記憶體可訪問空間上,這就意味著它的容量是2的20次冪 1m 的可訪問記憶體空間 物理記憶體和bios rom 軟體可通過這些位址...