序:本文將簡述實模式、保護模式與筆者對操作系統(tǒng)的形象化了解
一、實模式與保護模式
X86 CPU保護模式是最值得深入研究的問題。要搞清楚保護模式需要先了解實模式,實模式與保護模式有古代王權更替的味道。
實模式是8086時代的產物,8086的寄存器都是16位的,其中AX,BX,CX,DX又可以拆分為高8位,與低8位寄存器使用^[1]^。8086有20條地址線,換而言之8086尋址空間有1MB!
8086采用段加偏移的方式進行內存訪問,理論上可以尋遍1MB空間,而其在1MB的空間中沒有訪問限制,不管是內核程序還是用戶程序,這就給程序運行留下了隱患。
若程序A在0x00000x0051空間儲存運行,程序B在0x00800x00ff儲存運行,在特定情況下,程序B向0x0031~0x0070寫入數據,那程序A數據便被覆蓋造成程序A執(zhí)行錯誤。如果程序A是內核的基礎性程序,那代價將是巨大的。
英特爾注意到了該問題的嚴重性,在后續(xù)的80286便推出了保護模式。80286有24條地址線,在保護模式下CPU的段寄存器將不再保存段地址,轉而保存段選擇子,真實的段地址將保存在段寄存器描述符的高速緩存中(24位),當80286進入保護模式將獲得16MB尋址空間。
由于引入了段選擇子,段選擇子記錄了內存的訪問權限,低權限程序將失去訪問高權限內存的資格,增加了系統(tǒng)的安全性與穩(wěn)定性。
80286還是16位處理器,雖然有24根地址線,但由于寄存器還是16位,即使運行在保護模式下段長度也無法超過64KB,加上不久后32位處理器時代來臨,16位保護模式就鮮為人知。
80386是Inter第一款32位產品,其完全兼容了8086處理器,在實模式下80386將寄存器低16位當作8086寄存器使用,在實模式下80386相當于一塊飛快的8086,同時386提供V86模式,在這種模式下可以模擬成多塊8086。80386尋址空間達到了4GB,加上保護模式的應用,造就了386的劃時代意義^[2]^。
二、什么是操作系統(tǒng)
從8086的實模式到32位386的保護模式,從段加偏移的尋址方式到根據段選擇子尋址的過程,我們會愈發(fā)覺得操作系統(tǒng)就像一個廠長,而處理器如同一個智商不高的倉庫管理員。
倉庫管理員的日常工作就是出庫、入庫、貨物移庫、按照各種表格管理貨物,處理器的工作也是這樣的。他手下有AX,CX,DX,BX,SP,BP幾大倉庫,還有ES,CS,SS,DS,SI,DI工人,加上FS,GS兩個臨時工;倉庫門口有一個大黑板,上面是各種標志寄存器的值,管理員手上有張大表格叫GDT(全局描述符表),還有幾個記事本,叫LDT(局部描述符表),每種記事本只能使用特定的筆寫,GDT的筆GDTR,LDT的筆叫LDTR。
操作系統(tǒng)是廠長,現在有一個單子:要向屏幕省輸出一行文字。操作系統(tǒng)下令,將AX,BX等幾個倉庫里面的貨物先挪到空地(棧)上,將一些新貨物(指令、數據)放進去。接著指示貨車將這些貨物運到0x3d4,0x3d5市(屏幕省省會)。貨物運到后,隨車的管理員下來將貨物名單一個接著一個的讀,同時工人將讀出名字的貨物搬下來送給貨主,于是我們就會看到屏幕出現文字了。整個過程處理器只是按操作系統(tǒng)給的指令將貨物調度,至于這些指令、貨物的意義它是不知道的。加減乘除不過是貨物的累積與消除,兩件貨物疊加在一起就是加法,多件貨物疊加就是乘法;有些貨物出倉就是減法;將貨物按5個歸堆,堆數就是商,5個是除數,貨物總量是被除數,如果有些貨物不足一堆,那就是余數。所有東西都是自然而然。
有時候一連來幾個單子(任務)那處理器會拿出GDT和LDT分配每個單子的先后順序。在保護模式還引入了頁管理機制,其作用就是按照各個貨車的貨物大小多少給他們分配落貨地點。而大名鼎鼎的中斷機制不過是廠區(qū)或者廠區(qū)所在地出現意外操作系統(tǒng)根據預案采取處理方法的手段。
-
寄存器
+關注
關注
31文章
5317瀏覽量
120010 -
cpu
+關注
關注
68文章
10825瀏覽量
211151 -
操作系統(tǒng)
+關注
關注
37文章
6738瀏覽量
123190
發(fā)布評論請先 登錄
相關推薦
評論