【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!)

最新文章

  1. windows核心编程---第八章 使用内核对象进行线程同步
  2. PHP与MySQL
  3. 更改ubuntu下mysql的密码
  4. Android上使用OpenGLES2.0显示YUV数据
  5. 使用PHP对数据库输入进行恶意代码清除
  6. Apriori算法介绍(Python实现)
  7. mybatis的知识点
  8. FJOI2017 RP++
  9. EBS R12 LOG files 位置
  10. Sightseeing trip POJ - 1734 -Floyd 最小环
  11. day44-Celery异步分布式
  12. 扩展方法(深入理解c#)
  13. Java多线程高级主题
  14. [六字真言]2.嘛.异常定制和通用.md
  15. Java基础88 数据库设计的三大范式
  16. 51Nod1053 最大M子段和V2 二分+DP
  17. centos7下vi的用法
  18. Python学习 day10
  19. spark SQL学习(数据源之parquet)
  20. Android 异步通信:图文详解Handler机制工作原理

热门文章

  1. linux(debian)安装USB无线网卡(tp-link TL-WN725N rtl8188eu )
  2. Java 获取指定日期的方法总结
  3. Codeforces 785D Anton and School - 2(推公式+乘法原理+组合数学)
  4. Ruby Time And DateTime之Time in Core
  5. 查询执行慢的SQL
  6. 测试Apache服务器及httpd: Could not reliably determine the server's fully qualified domain name解决办法
  7. cocos2d-x 3.0游戏实例学习笔记 《跑酷》 第三步---主角开跑&同一时候带着刚体
  8. OLR
  9. vs2010 assistx安装教程
  10. layui-概念-入门-总结