## 2.1 存储器组织和段
物理存储器在80386系统下被组织成一个8位的字节序列。每个字节含有一个唯一的地址,从0到最大值2\*\*32 -1(4G)。
然而,80386的程序与物理地址空间是相互独立的。这意味着写程序时可以不用关心有多少物理存储器,指令和数据在物理存储器中是如何存放的。
对应用程序可见的存储器组织模型是由系统软件设计者来决定的。80386的体系结构给予了设计者为每个任务选择一种模式的自由。存储器组织模型可以是下面几种:
+ “平坦”地址空间是由最多4G字节组成的单个数组。
+ 段地址空间可以由16,383个线性地址空间组成,每个4G。
两种模式均可以提供存储器保护。不同的任务可以使用不同的存储器组织模型。设计者使用存储器组织模型的准则和系统程序员使用什么方式来实现在第II部分-系统编程中讨论。
### 2.1.1 “平坦”模式
在“平坦”模式下,应用程序可以使用232(4G)字节的数组。尽管存储器可以是4G字节,但通常它们要小的多;处理器通过第5章介绍的地址变换将4G空间映射到物理存储器。应用程序不需要知道这些细节。
指向平坦地址空间的指针是一个32位序列数,从0到232 -1。单独编译模块的重定位由系统软件来做(例如,链接器,定位器,绑定器,加载器)。
### 2.1.2 段模式
在段模式下,应用程序可以使用更大的地址空间(称为逻辑地址空间)多达246(64T)字节的数组。尽管存储器可以是4G字节,但通常它们要小的多;处理器通过第5章介绍的地址变换将64T的地址空间映射到物理存储器(最多4G)。应用程序不需要知道这些细节。
应用程序可以把逻辑地址空间看作是16,383个一维子空间的集合,每个都有指定的长度。每个线性子空间被称作段。段是连续地址空间的一个单位。段大小可以从一个字节到最多232 字节(4G)。
这个地址空间的一个完整指针由两部分组成(见图2-1):
1.16位段选择符,标识一个段。
2.32位偏移,段内偏移地址。
在程序执行期间,处理器用段选择符和段的起始物理地址联系起来。单独编译的模块通过改变段基地址在运行时重定位。段大小是可变的;因此,段可以和它里面的模块大小相同。
- 第一章 80386介绍
- 1.1 该手册的组织结构
- 1.2 其他文献
- 第二章 编程基本模型
- 2.1 存储器组织和段
- 2.2 数据类型
- 2.3 寄存器
- 2.4 指令格式
- 2.5 操作数选择
- 2.6 中断和异常
- 第4章 系统寄存器
- 4.1 系统寄存器 (System Registers)
- 4.2 系统指令 (System Instructions)
- 第五章 内存管理
- 5.1 分段地址转换(Segment Translation)
- 5.2 分页地址转换(Page Translation)
- 5.3 混合分段和分页地址转换(Combining Segment and Page Translation)
- 第六章 内存管理
- 6.1 为什么要保护(Why Protection?)
- 6.2 80386保护机制概述(Overview of 80386 Protection Mechnaisms)
- 6.3 段级保护(Segment-Level Protection)
- 6.4 页级保护(Page-Level Protection)
- 6.5 混合分页和分段保护(Combining Page and Segment Protection)
- 第7章 多任务(Multitasking)
- 8.1 I/O 寻址(I/O Addressing)
- 7.1 任务状态段(Task State Segment)
- 7.3 任务寄存器(Task Register)
- 7.4 任务门描述符(Task Gate Descriptor)
- 7.5 任务切换(Task Switching)
- 7.6 任务链(Task Linking)
- 7.7 任务寻址空间(Task Address Space)
- 第8章 输入 输出
- 8.2 I/O 指令(I/O Instructions)
- 8.3 保护和I/O(Protection and I/O)
- 第9章 异常和中断(Exceptions and Interrupts)
- 9.1 识别中断(Identifying Interrupts)
- 9.2 允许和禁止中断(Enabling and Disabling Interrupts)
- 9.3 同时发生的中断和异常的优先级(Priority Among Simultaneous Interrupts and Exceptions)
- 9.4 中断描述符表(Interrupt Descriptor Table)
- 9.5 IDT 描述符(IDT Descriptors)
- 9.6 中断任务和中断子程序(Interrupt Tasks and Interrupt Procedures)
- 9.7 出错码(Error Code)
- 9.8 异常条件(Exception Conditions)
- 9.9 异常总结(Exception Summary)
- 9.10 出错码总结(Error Code Summary)
- 第10章 初始化(Initialization)
- 10.1 复位后处理器状态(Processor State After Reset)
- 10.2 实模式初始化(Software Initialization for Real-Address Mode)
- 10.3 切换到保护模式(Switching to Protected Mode)
- 10.4 保护模式初始化(Software Initialization for Protected Mode)
- 10.5 初始化示例
- 10.6 TLB测试
- 第十四章 80386实地址模式
- 14.1 物理地址构成
- 14.2 寄存器和指令
- 14.3 中断和异常处理
- 14.4 进入和离开实地址模式
- 14.6 实地址模式异常
- 14.7 与8086的不同
- 14.8 与80286实地址模式的不同