x86保护模式内存管理

时间:2016-09-24 13:59:10

标签: memory memory-management x86 segment protected-mode

我是x86 cpu的新手。

我在x86中阅读了有关受保护模式的内存管理的所有资料。

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

我相信我理解cpu访问内存时的许多步骤。 :选择器寄存器是段描述符表的索引,描述符表的条目是段的基础,线性地址是段的基数和32位偏移的加法。

但是,令我困惑的是,在我看来,在上述所有步骤完成之前,CPU无法知道它将在第一时间访问哪个内存地址。如果CPU想要访问特定的内存地址,它必须知道选择器值和偏移量。但我的问题是它是如何知道的? CPU知道的唯一信息是它想要访问的内存地址吗?

当CPU只知道输出(存储器地址)时,CPU如何知道输入(选择器值,偏移量)?

1 个答案:

答案 0 :(得分:0)

......来自

  • 微处理器实时时钟或定时器芯片,
  • 称为“时钟信号”的周期函数'
  • by Memory Controller Hub
  • 高级配置和电源接口(ACPI)
  • ROM ,芯片内部的非易失性存储器(RealMode Memory Map)
  • 本地描述符表(LDT)是x86架构中受保护模式下使用的内存表,包含内存段描述符:从线性内存开始,大小,可执行性,可写性,访问权限,实际存在于记忆中等。
  • 中断描述符表,是x86架构用于实现中断向量表的数据结构。处理器使用IDT来确定对中断和异常的正确响应。
  • Intel 8259 是一款可编程中断控制器(PIC),专为Intel 8085和Intel 8086微处理器而设计。最初的部分是8259,后来的A后缀版本向上兼容并可与8086或8088处理器一起使用。 8259将多个中断输入源组合成一个到主机微处理器的单个中断输出,将系统中可用的中断级别扩展到处理器芯片上的一个或两个级别之外

您还缺少真实模式

看看DOS_Protected_Mode_Interface&虚拟控制程序接口

定时器芯片如何控制CPU的复位线? 另请参阅Google Patents中的OSCILLATOR CIRCUIT WITH SIGNAL BUFFERING AND START-UP CIRCUITRY

real time clock

CPU'开始'执行存储在主板上ROM中地址为FFFF0的代码 例行测试中央硬件,搜索视频ROM ...

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

  

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

BIOS detect RAM怎么样?另请参阅串行存在检测,开机自检(POST)

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

  

当CPU复位时,BIOS开始POST。 CPU尝试执行的第一个存储单元称为复位向量。在硬重启的情况下,北桥会将此代码获取(请求)指向位于系统闪存上的BIOS。对于热启动,BIOS将位于RAM中的适当位置,北桥将复位向量调用指向RAM

这个重置向量是什么?

  

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

关于北桥

  

北桥或主桥是PC主板上核心逻辑芯片组架构中的两个芯片之一,另一个是南桥。与南桥不同,北桥通过前端总线(FSB)直接连接到CPU

来源:

" 80386程序员参考手册" (PDF)。英特尔。 1990.第10.1节复位后的处理器状态
 " 80386程序员参考手册" (PDF)。英特尔。 1990.第10.2.3节第一条指令,