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