現代intel cpu都有保護模式,實模式這兩種cpu執行模式。當cpu加電,cpu初始化時就執行在是模式下,然後現代作業系統會從實模式跳轉到保護模式!
為什麼需要保護模式?
在最開始程式設計的彙編時代,程式設計師的工作就是讀懂處理器指令,然後用這些指令來寫程式完成工作!乙個程式設計師要寫乙個程式,這個程式包括了驅動cpu,驅動記憶體,驅動磁碟等所有的**,否則就是一顆裸cpu無法執行!後來每乙個程式設計師都覺得這些驅動過程幾乎一樣,所以就開始構寫作業系統,然作業系統來幹這些事情!作業系統(這裡指的是最原始的作業系統,其功能只完成乙個,比如完成計算器功能)寫完之後,後一代的程式設計師要寫程式,還是要讀懂cpu指令,只是不需要再從頭到會驅動所有硬體了!作業系統後來走向商業化,一些程式設計師寫的作業系統拿出來賣,然後其他程式設計師在作業系統的基礎之上來寫程式!這個時候就遇到乙個問題!因為作業系統的編寫所使用的工具(cpu指令)和那些程式設計師所使用的工具(cpu指令)都是一樣的!而且水平也幾乎差不多,所以這個時候的程式設計師就有能力直接修改作業系統的某個指令(操做系統載入在記憶體中,那個時候程式設計師可以通過指令直接修改記憶體裡任何位置的任何資料,從而導致修改了原始作業系統本身),來完成自己所需要的任務(想一想現在的程式設計師有幾個有能力通過彙編直接去修改windows核心呢)!起初,這些修改非常合理。隨著計算機的作業系統的發展,原始作業系統功能逐漸增加,所程式設計師水平的下降,程式設計師隨意修改作業系統指令,就會導致作業系統的崩潰,這種崩潰就如滾雪球一般越來越多,越來越普遍,所以必須要啟用一種機制讓非系統程式設計師不能隨意更改作業系統的指令!這個機制就是保護模式
保護模式是如何起到保護作用的呢?
你想想,如果你是intel cpu設計師,出現這個問題時,你要如何來設計讓其他程式設計師不能在記憶體中隨意修改你的**這種保護機制?
現在你要計算2的20次方是多少,你在你的作業系統下,就需要自己的寫這個演算法的實現,別人用你的系統時也需要去實現這個功能!重構的思想在你腦袋裡胡鵬亂撞。你為什麼不把這種演算法公開給其他程式設計師使用呢?為什麼要浪費精力去重新寫演算法呢?但是你的作業系統**不允許任何人訪問,這又是乙個問題!為了解決這個問題intel 給**段增加了乙個屬性:**是否一致
**一致:允許**段等級相同和**段等級較低的**訪問
**非一致:只有**段等級相同可以訪問
所以就只需要將你的冪計算的數學實現**段設定為**一致,就可以讓許可權較低的**段訪問了!
等級怎麼跳轉?
每個**段都乙個dpl,cpu當前所要執行的指令cs:ip的dpl是多少呢?當然就是指令所在段的dlp!假設cs:ip的指令屬於**段1,而即將要執行的指令是jmp **段2:偏移。那這個時候cpu怎麼執行?**段2有乙個dpl,**段1也有乙個dpl,這個時候cpu當然要比較目前的**段1!實際上每次**段跳轉之後,就會將**段的dpl記錄在cs暫存器的低2位,這個2位被稱為cpl。也就是說cpl實際上就是dpl(**段被載入後dpl的另乙個名字,如果**段沒有被載入,說乙個段的cpl沒有任何意義)。但是這裡有乙個例外:如果要跳轉的**段是一致**段,跳轉過後cpl不會修改為一致**段的cpl,而是保持上乙個段的cpl
cpl和dpl如何比較?
說到比較,就得有乙個比較物件和比較規則,比較目的,不同物件之間的比較意義不是很大——手機比大象小、猩猩比美女黑。。
比較物件:**段的許可權。各自對對應的**段的許可權
比較目的:許可權大小。比較各自**段對應的許可權大小。
比較規則:因為**段有很多種(**段的種類通常是由**段的屬性定義)!所以對於不同的**段,dpl有不同的意義!也就代表了不同的比較規則。皇帝的dpl和太監的dpl肯定代表不同的意義。下面來看一下各種**段的dpl定義
非一致**段(不通過呼叫門訪問):同級許可權——(我是省長,你也必須是省長)!
什麼又是rpl?
網上說rpl是程式設計師乙個意圖,就是程式在編寫時,程式設計師一廂情願的希望某個**段是哪個等級!但是實際在執行過程中,cpu還是要看**段本身的cpl等級!如果rpl等級更低,就用更低的許可權跳轉到目標段,如果更高,就用cpl的許可權跳轉到目標段!我不太理解這樣做有什麼意義,希望有人知道的,能指點我,謝謝!
CPU的實模式與保護模式(簡介)
8086 8088包括 4個16位的資料暫存器,2個16位的指標暫存器,2個16位變址暫存器,分成四組。通用暫存器中,這些暫存器除完成規定的專門用途外,均可用於傳送和暫存資料,可以儲存算術邏輯運算的操作和運算結果。段暫存器能在8086 中實現1m物理空間定址,並可與8080 cpu進行相容。段暫存器...
CPU的實模式和保護模式 一
實模式和保護模式都是cpu的工作模式,而cpu的工作模式是指cpu的定址方式 暫存器大小等用來反應cpu在該環境下如何工作的概念。1.實模式工作原理 實模式出現於早期8088cpu時期。當時由於cpu的效能有限,一共只有20位位址線 所以位址空間只有1mb 以及8個16位的通用暫存器,以及4個16位...
進入保護模式
本文為 每個描述符佔8位元組,下圖中,上面位高32位,下面為低32位 disk boot ata channel 0 first hd cd on channel 0 type of disk image這個選項是vpc,我用2.6.2配置時選vpc無法啟動,得選flat才可以,2.6.0貌似選vp...