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

Demo與操作系統(tǒng)介紹
評(píng)論