A20地址线问题
【0】README
text description from Zhaojiong’s perfect analysis of Linux kernel .
【1】A20地址線問題(干貨來了)
1981年8月,IBM公司最初推出的個人計算機IBM PC 使用的CPU 是 Intel 8088。在該微機中地址線只有20根(A0~A19)。在當時內存 RAM 只有幾百 KB 或不到1MB時,20 根地址線已足夠用來尋址這些內存 。其所能尋址的最高地址是 0xffff:0xffff,也即0x10ffef=0xffff * 10h + 0xffff。對于超出0x100000(1M)的尋址地址將默認地環繞到 0x0ffef (取模)。當IBM公司于 1985年 引入AT機時,使用的是 Intel80286 CPU,具有24根地址線,最高可尋址16MB,并且有一個與 8088 完全兼容的實模式運行方式。然而,在尋址值超過 1MB時,它卻不能像 8088那樣實現地址尋址的環繞。但 當時已經有一些程序是利用這種地址環繞機制進行工作的。為了實現完全的兼容性, IBM 公司發明了使用一個開關來 開啟或禁止 0x100000地址比特位。由于在當時的8042 鍵盤 控制器上恰好有空閑的端口引腳,于是便使用了該引腳來作為與門控制這個地址比特位。該信號被稱為A20。如果它為零, 則比特20 及以上地址都被清除。從而實現兼容性。
由于在機器啟動時,默認條件下,A20地址線都是禁止的,所以os 必須使用適當的方法來開啟它。
【1】如何開啟A20地址線?
對A20信號線 進行控制的常用方法是通過設置 鍵盤控制器的端口值。有些os 將A20的開啟和禁止作為實模式和 保護模式之間進行切換的標志過程中的一個部分。由于鍵盤的控制器速度很慢, 因此就不能使用鍵盤控制器對A20 線來進行操作。為此引進了一個A20 快速門選項(fast gate A20),它使用 IO 端口 0x92來處理 A20 信號線,避免了使用慢速的鍵盤控制器是操作方式。
(Bingo!)
總結
- 上一篇: 个人怎么抢注被删除的域名(个人怎么抢注被
- 下一篇: 特权级概述(哥子就想知道CPU是如何验证