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!)
A20地址线问题的更多相关文章
- 实模式切换到保护模式,为什么要开启A20地址线(系统升级产生的兼容性问题)
[-1]写在前面: 以下部分内容总结于 http://blog.csdn.net/ruyanhai/article/details/7181842 complementary: 兼容性是指运行在前期C ...
- A20地址线科普【转载】
1981 年8 月,IBM 公司最初推出的个人计算机IBM PC 使用的CPU 是Intel 8088.在该微机中地址线只有20 根(A0 – A19).在当时内存RAM 只有几百KB 或不到1MB ...
- 开启A20线(部分译)
开启A20线 在查看或编写操作系统内核时一定会遇到A20线这个问题.本人对此一直都是似懂非懂的,查了些资料,决定弄明白于是有了这篇文章.其中前一部分是翻译一篇外国博文,但光有这篇文章依旧不能清楚地说明 ...
- A20 Gate信号
https://doc.docsou.com/ba8e6b0612d6a989b7cebeaae-5.html Gate A20 Option 功能:设置A20 地址线的控制模式 设定值:Fast 或 ...
- 操作系统开发之——打开A20
我们在上一篇文章提到.怎样制作Bootsect.当然,人总是贪婪的,制作完Bootsect又想着做Setup了,Setup主要工作是打开A20,进入保护模式,等等. 一.介绍A20 这是一个历史性问题 ...
- MIT 6.828 JOS学习笔记3. Exercise 1.2
这篇博文是对Lab 1中的Exercise 2的解答~ Lab 1 Exercise 2: 使用GDB的'si'命令,去追踪ROM BIOS几条指令,并且试图去猜测,它是在做什么.但是不需要把每个细节 ...
- [No000031]操作系统 Operating Systems 之Open the OS!
从打开电源开始… 这神秘的黑色背后发生着什么?… 打开电源,计算机执行的第一句指令什么? 计算模型(图灵机) ⇒ 我们要 关注 指针IP 及其 指向的内容 看看x86 PC (1) 刚开机时CPU 处 ...
- 《Linux内核设计的艺术》学习笔记(六)执行setup.s
参考资料 1. 8259A可编程中断控制器 jmpi , SETUPSEG // 0x90200 到这里,bootsect.s的执行就算结束了.控制权转移到了setup.s文件的手中. setup程序 ...
- boot/head.S
/* * linux/boot/head.S * * Copyright (C) 1991, 1992 Linus Torvalds */ /* * head.S contains the 32-bi ...
随机推荐
- 获取当前应用程序实例(instance:HINSTANCE)(转)
if using MFC AfxGetInstanceHandle(). For console programs, call GetConsoleWindow() to get the HWND t ...
- bit、byte、位、字节、汉字的关系
字节(Byte):通常将可表示常用英文字符8位二进制称为一字节. 一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间. 符号:英文标点2占一个字节,中文标点占两个字节. 1字节( ...
- LeetCode OJ-- 3Sum Closest
https://oj.leetcode.com/problems/3sum-closest/ 给一列数和target,在这一列数中找出3个数,使其和最接近target,返回这个target. 一般思路 ...
- AC日记——琪露诺 洛谷 P1725
琪露诺 思路: 单调队列+dp: 然而劳资不会单调队列,所以,线段树水过; 来,上代码: #include <cstdio> #include <cstring> #inclu ...
- LINUX CP命令直接覆盖不提示按Y/N的方法
refer to: https://blog.csdn.net/qq_36741436/article/details/78732201 cp覆盖时,无论加什么参数-f之类的还是提示是否覆盖,当文件比 ...
- 通用mapper的框架
这两个框架都是一个大神写的.用来做单表的增删改查,爽爽的. 但是复杂的查询还不知道如何用,所以我还按传统的方式 写 service maperr ,写SQL来处理复杂查询,与多表的查询. 它的复杂查 ...
- Interview | Why are manhole covers round and not square or rectangular?
Manholes, which interconnect underground sewerage pipes, and serve as a point of entry for cleaning ...
- 如何让自己的程序支持iPhone5–RetinaImages
我们知道如果想让程序的启动图像能够适应iPhone5(640X1136),那么我们需要把启动的图像命名以“-568h@2x”结尾的图片,那 么是不是程序中用到的所有图片都可以用这样的方式来命名,以适合 ...
- Android OkHttp经验小结
OkHttp应该是目前最完善,也是相当流行的一个底层网络请求库.Google都在用,所以有必要深入了解一下,刚好最近在重构公司项目的网络层,就顺便梳理一下.———–12.29————最近暂时没有时间详 ...
- angular使用canvas操作时报错
最近,用 angular 前端框架为应用登录新增图形验证码认证,由于没有现成的插件,于是便使用canvas+js操作,也是可以正常使用,但是在编译阶段却有个报错: ERROR in src/app/l ...