1. 程式人生 > >實模式與保護模式

實模式與保護模式

虛擬存儲器 有效 偏移 進程 代碼 訪問權限 描述符 兼容 ont

1. 實模式,又叫實地址模式,CPU完全按照8086的實際尋址方法訪問從00000h--FFFFFh1MB大小)的地址範圍的內存,在這種模式下,CPU只能做單任務運行;尋址公式為:物理地址=左移4位的段地址+偏移地址,即:物理地址是由16位的段地址和16位的段內偏移地址組成的。 2.保護模式,又叫內存保護模式,尋址采用32位段和偏移量,最大尋址空間4GB,在這種模式下,系統運行於多任務,設計這種模式的原因和好處是:保護模式增加了尋址空間,增加了對多任務的支持,增加了段頁式尋址機制的內存管理(分段機制使得段具有訪問權限和特權級,各應用程序和操作系統的代碼和核心是被保護的,這也是多任務支持的實現關鍵和保護這個名字的由來)。尋址過程為:物理地址=由段地址查詢全局描述符表中給出的段基址+偏移地址,即:物理地址由影像寄存器中的基址加上16位或者32位的偏移組成。

==============================================

1:實模式 CPU啟動的時候的模式 這時候就相當於一個速度超快的8086 不能使用多線程 不能實現權限分級 還不能訪問20位以上地址線,也就是說只能訪問1M內存(!!!) 2:保護模式 操作系統接管CPU. 會使CPU進入保護模式. 這時候可以發揮80x86的所有威力.. 包括權限分級.內存分頁.等等等等各種功能 ============================================
1.虛擬8086模式是運行在保護模式中的實模式,為了在32位保護模式下執行純16位程序。它不是一個真正的CPU模式,還屬於保護模式。
2.保護模式同實模式的根本區別是進程內存受保護與否。可尋址空間的區別只是這一原因的果。 實模式將整個物理內存看成分段的區域,程序代碼和數據位於不同區域,系統程序和用戶程序沒有區別對待,而且每一個指針都是指向"實在"的物理地址。這樣一 來,用戶程序的一個指針如果指向了系統程序區域或其他用戶程序區域,並改變了值,那麽對於這個被修改的系統程序或用戶程序,其後果就很可能是災難性的。為 了克服這種低劣的內存管理方式,處理器廠商開發出保護模式。這樣,物理內存地址不能直接被程序訪問,程序內部的地址(虛擬地址)要由操作系統轉化為物理地 址去訪問,程序對此一無所知。至此,進程(這時我們可以稱程序為進程了)有了嚴格的邊界,任何其他進程根本沒有辦法訪問不屬於自己的物理內存區域,甚至在 自己的虛擬地址範圍內也不是可以任意訪問的,因為有一些虛擬區域已經被放進一些公共系統運行庫。這些區域也不能隨便修改,若修改就會有: SIGSEGVlinux 段錯誤);非法內存訪問對話框(windows 對話框)。
CPU啟動環境為16位實模式,之後可以切換到保護模式。但從保護模式無法切換回實模式
3.事實上,現在的64位奔騰4處理器,擁有三種基本模式和一種擴展模式,
a)基本模式:
****保護模式:純32位保護執行環境。
****實模式:純16位無保護執行環境。
****系統管理模式:當SMI引腳為有效進入系統管理模式,首先保存當前的CPU上下文。它有獨立的地址空間,用來執行電源管理或系統安全方面的指令。
b)擴展模式:****IA-32e模式,64位操作系統運行在該模式。該模式有兩種子模式: 1**兼容模式:該模式下,64位操作系統運行在32位兼容環境,能正常運行1632位應用程序就像基本的保護模式一樣,訪問32位地址空間,但不能 運行純16位實模式程序(就是不能運行虛擬86模式程序了)。
2**64位模式:在該模式下,處理器完全執行64位指令,使用64位地址空間和64操作數,運行1632位程序必須切換到兼容模式。
IA-32e子模式的切換完全基於代碼段寄存器。這樣一來,運行在IA-32e模式中(64位)的OS完全可以無縫的運行所有163264為應用程序,通過設置32位後的CS
80386開始,cpu有三種工作方式:實模式,保護模式和虛擬8086模式。只有在剛剛啟動的時候是real-mode,等到linux操作系統運行起來以後就運行在保護模式。 實模式只能訪問地址在1M以下的內存稱為常規內存,我們把地址在1M 以上的內存稱為擴展內存。 在保護模式下,全部32條地址線有效,可尋址高達4G字節的物理地址空間; 擴充的存儲器分段管理機制和可選的存儲器分頁管理機制,不僅為存儲器共享和保護提供了硬件支持,而且為實現虛擬存儲器提供了硬件支持; 支持多任務,能夠快速地進行任務切換和保護任務環境; 4個特權級和完善的特權檢查機制,既能實現資源共享又能保證代碼和數據的安全和保密及任務的隔離; 支持虛擬8086方式,便於執行8086程序。

實模式與保護模式