歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Linux0.11內核--A20地址線

Linux0.11內核--A20地址線

日期:2017/3/1 10:24:03   编辑:Linux編程

1981 年 8 月,IBM 公司最初推出的個人計算機 IBM PC 使用的 CPU 是 Intel 8088。在該微機中地址線只有 20 根(A0 – A19)。在當時內存 RAM 只有幾百 KB 或不到 1MB 時,20 根地址線已足夠用來尋址這些內存。其所能尋址的最高地址是 0xffff:0xffff,也即 0x10ffef。對於超出 0x100000(1MB)的尋址地址將默認地環繞到 0x0ffef。當 IBM 公司於 1985 年引入 AT 機時,使用的是 Intel 80286 CPU,具有 24 根地址線,最高可尋址 16MB,並且有一個與 8088 完全兼容的實模式運行方式。然而,在尋址值超過 1MB時它卻不能象 8088 那樣實現地址尋址的環繞。但是當時已經有一些程序是利用這種地址環繞機制進行工作的。為了實現完全的兼容性,IBM 公司發明了使用一個開關來開啟或禁止 0x100000 地址比特位。由於在當時的 8042 鍵盤控制器上恰好有空閒的端口引腳(輸出端口 P2,引腳 P21),於是便使用了該引腳來作為與門控制這個地址比特位。該信號即被稱為 A20。如果它為零,則比特 20 及以上地址都被清除。從而實現了兼容性。

由於在機器啟動時,默認條件下,A20 地址線是禁止的,所以操作系統必須使用適當的方法來開啟它。但是由於各種兼容機所使用的芯片集不同,要做到這一點卻是非常的麻煩。因此通常要在幾種控制方法中選擇。

對 A20 信號線進行控制的常用方法是通過設置鍵盤控制器的端口值。這裡的 setup.s 程序(138-144行)即使用了這種典型的控制方式。對於其它一些兼容微機還可以使用其它方式來做到對 A20 線的控制。

有些操作系統將 A20 的開啟和禁止作為實模式與保護運行模式之間進行轉換的標准過程中的一部分。由於鍵盤的控制器速度很慢,因此就不能使用鍵盤控制器對 A20 線來進行操作。為此引進了一個A20 快速門選項(Fast Gate A20),它使用 I/O 端口 0x92 來處理 A20 信號線,避免了使用慢速的鍵盤控制器操作方式。

對於不含鍵盤控制器的系統就只能使用 0x92 端口來控制,但是該端口也有可能被其它兼容微機上的設備(如顯示芯片)所使用,從而造成系統錯誤的操作。

還有一種方式是通過讀 0xee 端口來開啟 A20 信號線,寫該端口則會禁止 A20 信號線。

Copyright © Linux教程網 All Rights Reserved