2016-09-24 63 views
0

我是x86 cpu的新手。x86保护模式内存管理

我读到关于x86保护模式的内存管理的所有材料。

的材料是英特尔®64和IA-32架构软件开发人员手册卷3A,系统编程指南,第1部分

我相信我明白了很多步骤设置CPU访问内存。 :选择器寄存器是段描述符表的索引,描述符表的条目是段的基址,线性地址是段的基址和32位偏移的加法。

但是,什么我'迷惑的是,它似乎对我来说,CPU可以不知道哪个内存地址也将在第一时间访问,直到上述的所有步骤完成。如果CPU想要访问特定的内存地址,它必须知道选择器的值和偏移量。但我的问题是如何知道? CPU知道的唯一信息就是它想访问的内存地址吗?

如何CPU知道输入(选择数值,偏移量)已经当它只知道输出(内存地址)?

+2

GDT地址是一个线性地址,否则CPU会产生我相信你指的循环性问题。如果那不是你问的,你能更精确吗? –

回答

0

...通过

  • 微处理器实时时钟或定时器芯片,
  • 称为 '时钟信号'
  • 通过内存控制器中枢周期函数
  • 高级配置和电源接口(ACPI)
  • ROM,芯片内的非易失性存储器(RealMode Memory Map)
  • 的局部描述符表(LDT)是在保护模式下和含有存储器段描述符x86架构中使用的存储器表中:开始线性存储器,尺寸,执行可否,可写性,访问特权,在存储器实际存在等
  • 中断描述符表,是所使用的x86架构来实现中断向量表的数据结构。 IDT被处理器用来确定对中断和异常的正确响应。
  • 英特尔8259是被设计为Intel 8085和8086英特尔微处理器可编程中断控制器(PIC)。最初的部分是8259,稍后的A后缀版本向上兼容,可用于8086或8088处理器。 8259将多个中断源的输入到一个单一的中断输出到主机微处理器,延伸在一个系统中可用的各个中断级超出处理器芯片上找到的一个或两个级别

还缺少实模式

外观也DOS_Protected_Mode_Interface &虚拟控制程序接口

如何定时器CPU芯片控制复位线?OSCILLATOR CIRCUIT WITH SIGNAL BUFFERING AND START-UP CIRCUITRY见从谷歌专利

real time clock

的CPU“开始”地址执行存储在ROM主板上的代码FFFF0 的例行检验中心的硬件,搜索视频ROM ...

所以..是不是该CPU“开始”,因为电源线是“开始”

电源信号被发送到主板,由处理器定时器芯片接收信号,该芯片控制到处理器的复位线。

BIOS detect RAM怎么样?也参见串行存在检测,加电自检(POST)

BIOS是在实模式下运行的16位程序

的BIOS开始其POST当CPU被复位。 CPU尝试执行的第一个内存位置称为重置向量。在硬重启的情况下,北桥将该代码提取(请求)指向位于系统闪存上的BIOS。对于热启动,BIOS将位于RAM的适当位置,并且北桥将复位向量呼叫指向RAM

这个复位向量是什么?

复位向量是默认位置的中央处理单元将去寻找第一指令它将复位后执行。 复位向量是一个指针或地址,CPU应该在其能够执行指令后立即开始。 该地址位于非易失性存储器的一部分中,初始化为包含启动CPU操作的指令,作为引导包含CPU的系统的第一步。
8086处理器的复位向量位于物理地址FFFF0h(16 MB以下1 MB)。复位时CS寄存器的值为FFFFh,复位时IP寄存器的值为0000h,以形成分段地址FFFFh:0000h,映射到物理地址FFFF0h。

关于北桥

北桥或主桥是在PC主板上的核心逻辑芯片组架构两个芯片中的一个,另一个是南桥。

“80386程序员参考手册”(PDF):与南桥,北桥经由前端总线(FSB)

源头直接连接到CPU。英特尔。 1990.第10.1节复位后的处理器状态
“80386程序员参考手册”(PDF)。英特尔。 1990年。第10.2节。3第一条指令,