x86-2-保護模式
作業系統負責電腦上的所有軟體和硬體的管理,它可以百分百操作電腦的所有內容。但是,作業系統上編寫的用戶程式卻應當有所限制,只允許用戶程式訪問屬於自己程式的內容,不然整個生態就很惡劣了,想像下你手機上的的微信被惡意軟體給修改了,給你的所有好友群發黃色廣告,你難受嗎。
但是在之前8086CPU的工作模式也就是實模式的工作模式下,程式對軟硬體的訪問非常自由,沒有任何限制,我們隨隨便便就可以修改記憶體上的數據,即使這個記憶體的範圍不在我們程式的數據段里。這就和我們前面所想違背了。
在多用戶、多任務時代,記憶體會有多個用戶(應用)程式在同時使用。為了使它們彼此隔離,防止因某個程式的編寫錯誤或者崩潰而影響到作業系統和其他用戶程式,保護模式就誕生了。
因此,保護模式大概上就是將作業系統和應用程式之間,應用程式與應用程式之間進行隔離和保護的一種CPU工作模式。
保護模式如何進行隔離和保護:
要知道保護模式如何進行隔離和保護,我們首先要明白特權級。
特權級:
在保護模式下,每個程式都有一個特權級。intel的CPU特權級採用了0,1,2,3四種特權級,許可權有高到低,也就是0級許可權最高,3級最低。一般來說作業系統的特權級為0,用戶程式的特權級最低為3。其中Windows只採用了0和3,也就是經常俗稱的0環和3環。
特權級為0的程式擁有最高的許可權,可以和實模式一樣全方位操作電腦。其它特權級就許可權依次往下。
除非使用特定的辦法,否則不同特權級之間的程式不能隨便互相訪問。
如何進行隔離和保護:
程式是由段組成的,每個程式包含了許多段,包括作業系統也是由段組成的。
作業系統會登記每個程式的段,包括段的起始地址,長度等等,如果一個程式的特權級低,那麼它只能訪問自己的段,無法訪問其它程式的段。