## 實模式和保護模式程序員
### 實模式
時間短,通常沒法感知
CPU復位(reset)或加電(power on)的時候就是實模式啓動,這個時候處理器是以實模式工做,不能實現權限分級,也不能訪問20位以上的地址線,也就是隻能訪問1M內存(2^18bits, 18位地址線)
以後通常就是加載OS模塊,進入保護模式
8086地址線是20位,寄存器是16位,採用:物理地址= 段地址<<4 + 偏移
從8086發展來的32位處理器地址線擴展到32位,有4GB尋址空間
在保護模式下,系統計算地址的時候是按照對1MB求模進行——Wrap-Around技術
windows
### 保護模式
#### 起源
最開始的程序尋址是:段+偏移,這樣的好處是程序員指定的地址就是物理地址,物理地址對程序員可見
這樣帶來的問題是:
1. 沒法支持多任務
2. 程序的安全性沒法獲得保證
安全
在windows的舊版本中,電腦時不時死機/藍屏,這其實就是由於內存被破壞致使的。
由於在實模式中,將物理內存當作分段的區域,程序代碼和數據位於不區域,系統程序和用戶程序區別對待,而指針是任意的,若是用戶程序指針指向了系統程序或其餘用戶程序區域,並改變了區域的數據,就會形成破壞,致使程序/系統崩潰
在保護模式下,所有32條地址線有效,4G尋址空間,存儲器分段管理機制和分頁管理機制等,不只爲存儲器共享和保護提供了硬件支持,並且爲實現虛存提供硬件支持。支持多任務,能快速進行任務切換和保護任務環境。
保護模式出現的緣由是:**保護進程地址空間**,這樣產生了一個結果——兩種模式下的程序尋址方式發生了變化
#### 保護模式下的尋址方式和工做原理
地址一樣是段+偏移,可是段的概念發生根本變化數據結構
段變成了一個索引,指向一個數據結構——全局描述符GDT(或是LDT),它定義了段的起始地址,界限、屬性等。spa
GDT做用是提供段氏存儲機制指針
在實模式中:段地址並不是真正的物理地址,<<4+offsetorm
在保護模式中,段地址是32位線性地址,若是未開啓分頁功能,該線性地址就是物理的地址索引
From PPT:進程
l 實模式就是用基地址+偏移量就能夠直接拿到物理地址的模式內存
n 缺點:不安全
l 保護模式:不能直接拿到物理地址的模式
n 須要地址轉換
n 從80386開始,是現代OS主要模式