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!)
最新文章
- windows核心编程---第八章 使用内核对象进行线程同步
- PHP与MySQL
- 更改ubuntu下mysql的密码
- Android上使用OpenGLES2.0显示YUV数据
- 使用PHP对数据库输入进行恶意代码清除
- Apriori算法介绍(Python实现)
- mybatis的知识点
- FJOI2017 RP++
- EBS R12 LOG files 位置
- Sightseeing trip POJ - 1734 -Floyd 最小环
- day44-Celery异步分布式
- 扩展方法(深入理解c#)
- Java多线程高级主题
- [六字真言]2.嘛.异常定制和通用.md
- Java基础88 数据库设计的三大范式
- 51Nod1053 最大M子段和V2 二分+DP
- centos7下vi的用法
- Python学习 day10
- spark SQL学习(数据源之parquet)
- Android 异步通信:图文详解Handler机制工作原理
热门文章
- linux(debian)安装USB无线网卡(tp-link TL-WN725N rtl8188eu )
- Java 获取指定日期的方法总结
- Codeforces 785D Anton and School - 2(推公式+乘法原理+组合数学)
- Ruby Time And DateTime之Time in Core
- 查询执行慢的SQL
- 测试Apache服务器及httpd: Could not reliably determine the server's fully qualified domain name解决办法
- cocos2d-x 3.0游戏实例学习笔记 《跑酷》 第三步---主角开跑&;amp;同一时候带着刚体
- OLR
- vs2010 assistx安装教程
- layui-概念-入门-总结