1. 程式人生 > >CPU 真實模式 保護模式 和虛擬8086模式

CPU 真實模式 保護模式 和虛擬8086模式

保護模式同真實模式的根本區別是程序記憶體受保護與否。可定址空間的區別只是這一原因的果。真實模式將整個實體記憶體看成分段的區域,程式程式碼和資料位於不同區域,系統程式和使用者程式沒有區別對待,而且每一個指標都是指向"實在"的實體地址。這樣一來,使用者程式的一個指標如果指向了系統程式區域或其他使用者程式 區域,並改變了值,那麼對於這個被修改的系統程式或使用者程式,其後果就很可能是災難性的。為了克服這種低劣的記憶體管理方式,處理器廠商開發出保護模式。這 樣,實體記憶體地址不能直接被程式訪問,程式內部的地址(虛擬地址)要由作業系統轉化為實體地址去訪問,程式對此一無所知。

至此,程序有了嚴格的邊界,任何其他程序根本沒有辦法訪問不屬於自己的實體記憶體區域,甚至在自己的虛擬地址範圍內也不是可以任意訪問的,因為有一些虛擬區域已經被放進一些公共系統執行庫。這些區域也不能隨便修改,若修改就會有: SIGSEGV(linux 段錯誤);非法記憶體訪問對話方塊(windows 對話方塊)。

CPU啟動環境為16位真實模式,之後可以切換到保護模式。但從保護模式無法切換回真實模式 。