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 ...
随机推荐
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---6
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下: <Linux命令行与shell脚本 ...
- hdu 4985(模拟)
Little Pony and Permutation Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (J ...
- log4j(一)
一.基础知识 Log4j有三个重要组件:Logger-日志信息的级别,appenders-日志信息的输出目的地,layouts-日志信息的输出格式. Logger-日志信息的级别:level 是日志记 ...
- 使用nginx实现的灰度发布思路研究(待实践)
灰度发布也叫 A/B 测试,原理是一套系统在实现了负载均衡,全国节点都部署了系统之后,可以在新功能上线后,让一小部分用户先使用,从中收集使用信息来做对比和发现bug,及时调整,最终分发到全国的节点. ...
- Android中的多线程断点续传
Android多线程断点下载的代码流程解析: 运行效果图: 实现流程全解析: Step 1:创建一个用来记录线程下载信息的表 创建数据库表,于是乎我们创建一个数据库的管理器类,继承SQLiteOpen ...
- dedecms 调取当前栏目的链接和 栏目名称
<a href="{dede:field name='typeurl' function=”GetTypeName(@me)”/}" target="_blank& ...
- C语言对文件的读写操作以及处理CSV文件的方法
#include <stdio.h> #define F_PATH "d:\myfile\file.txt" int main(void) { FILE *fp = N ...
- matlab修改文件名和删除某类文件
matlab修改多级文件夹路径下的文件名: % %%%%%%%%%%%%%%批量修改文件名一级文件夹 \路径下直接为文件 % close all;clear all;clc; % path='G:\1 ...
- 2017.2.9 开涛shiro教程-第十章-会话管理(一)
原博客地址:http://jinnianshilongnian.iteye.com/blog/2018398 根据下载的pdf学习. 第十章 会话管理(一) 10.1 会话 shiro提供的会话可以用 ...
- <LeetCode OJ> 83. Remove Duplicates from Sorted List
83. Remove Duplicates from Sorted List Total Accepted: 94387 Total Submissions: 264227 Difficulty: E ...