X86的存储器管理.ppt

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CS;SS;DS ES;FS;GS
15
索引
32 1 0
TI RPL 段选择器
TI=0
TI=1
8192项
8192项
说明: 全局描述符表第一 个项目不用,为空 描述符。
全局描述 局部描述
符表
符表
说明:
RPL:请求特权级别,共4级。 RPL=00b时,选择器的请求特权级最高; RPL=11b时,选择器的请求特权级最低。
存储器的分页管理
一 、特点:
1、引入了保护机制,使段大小得以扩充,但段的 使用受到限制。
2 、结合分段机制,引入了虚拟存储器的概念。 3、支持多用户多任务操作系统。
虚拟存储器:
基于存储器分段的结构,把外存作为内存的延 伸进行统一管理所构成的存储器空间。任何时候系 统只需把与正在运行的程序相关的一小部分虚拟地 址空间映射到内存,其余部分仍留在外存上,内存 和外存统一构成虚拟存储空间。是一种能提供比实 际内存大得多的存储器空间技术。
表中最多包含8192个( 213 )描述符,每个描 述符占8个字节。表格限度64KB( 213×23 ) 。
(2)局部描述符表(LDT)
局部描述符表包含的是某一个任务都能访问的 段的描述符。包括代码段,数据段,堆栈段的描述 符,也可包含此任务使用的一些控制描述符。这些 描述符为每一个任务单独所有。每个局部描述符表 构成一个段,也有一个描述符描述,该描述符放在 GDT中。
说明:
系统的GDT和LDT均是一个长度不定的数据结构, 它们各自最少包括一个,最多包括8192个段描述符。 GDT中的第一个描述符为空描述符,一般不用。
4 段选择器
定义:保护方式下,段选择器是一个16位的指向 操作系统定义的段信息的指针。高13位作为索引, 低3位为特征位。 80386/80486CPU 的段选择器有6个:
描述符 保留 可用的16位TSS LDT 16位TSS忙 16位调用门 16位任务门 16位中断门 16位陷阱门 保留 可用的32位TSS 保留 32位TSS忙 32位调用门 保留 32位中断门 32位陷阱门
当DT=0 时,表 示为为 一个特 殊描述 符或门 描述符
说明: 2,5,8-F 用于386 其它用于286
段限量:用来确定段的尺寸。对80286,段限量 为16位无符号数,段的最大尺寸为64KB;对80386 和80486,段限量由上表中20位无符号数和表中粒 度G共同确定。若G设为字节粒状,段限量以字节为 单位,若设为页粒状,段限量以页为单位,一页为 4KB,段的尺寸为4KB-4GB。
G位(1位):粒度位,在80386,80486中,它用 来指定段的单位。
虚拟地址空间由存储器的分段机构和 分页机构进行管理。
线性地址=段基址+偏移量
分段机构将虚拟地址变换为线性地址 分页机构将线性地址变换为物理地址
在保护方式下,一个存储单元的地址也 是由段基地址和段内偏移量组成,但段基地 址并不由段寄存器直接获得。保护方式下专 门有一个8字节的描述符来描述段的基地址、 限量和段的其它属性,而描述符则保存在由 段描述符组成的表格即描述符表中,在描述 符表中取出某段的描述符即可获得该段的所 有信息(包括段地址)。
CPU具体寻址过程如下:
加载段寄存器
查段描述符表
取段描述符
取段基址
线性地址=段基址+偏移量
32位段基址和32位段内偏移量形成的地址称为线性地 址。
寻址过程示意图
加载
选择子 偏移量 32位
32位线性地址
存取权 界限
段基址
段描述符
32位段基址
界限 4GB
2、描述符
(1)在保护虚地址方式下的每一个段都有一个相 应的描述符。 段描述符是描述某一个段的各种信息的特殊的字 段。 段描述符由8个字节组成,包含了该段的32位段基 址和20位段限量及有关属性。
可提供的虚拟存储空间最大为1GB。
(2×213×216=230)
对80386和80486,偏移量为32位, 每个段最大为4GB,
可提供的虚拟存储空间最大为64TB。
(2×213×232=246)
5、描述符表寄存器
是用来保存描述符表(GDT、IDT、LDT)基地址和 限量的寄存器。
描述符表寄存器分为全局描述符表寄存器GDTR、 中断描述符表寄存器IDTR和局部描述符表寄存器LDTR, 结构如下:
分段的好处:
便于程序的编写,逻辑地址使用方便, 灵活。
存储器便于管理,支持程序的动态定位。 防止程序,数据相互覆盖。
二、物理地址的形成
实方式下,程序对存储器的访问采用分段地 址,分段地址由一个段值和一个有效地址偏移量 值组成,又称逻辑地址:
段值:偏移量
段值由段寄存器的内容决定,表示一个物理 段的起始地址,又称段地址
存储段描述符类型
类型
说明
0 只读
1 只读,已访问
2 读/写
3 读/写,已访问
4 只读,向下扩展
5 只读,向下扩展,已访问
6 读/写,向下扩展
7 读/写,向下扩展,已访问
类型
说明
8 只执行
9 只执行,已访问
10 执行/读
11 执行/读,已访问
12 只执行,一致码段
13 只执行,一致码段,已访问
14 执行/读,一致码段
保护方式下的逻辑地址被称为虚拟地址,段地址 可以不在实存储器上。
保护方式下的段寄存器被称为段选择器,其内容 为段选择符(子),虚拟地址由段选择子(16位)和 地址偏移量(32位)组成。
虚拟地址的格式为:
段选择子:地址偏移量
二、保护方式下存储器的分段管理
1、保护方式下的寻址机制
在保护方式下,存储器的寻址机制和实方式 不同。保护方式下的某一个存储单元用虚拟地 址表示,虚拟地址中的选择子为一操作系统定 义的指向有关段信息的一个指针。依据选择子 即可得到该段的段基址。 若存储器启用分页机制,还须经分页机构将 线性地址变换为物理地址。
(2)段描述符的分类
描述符Biblioteka Baidu为两大类,如下图所示:
描述符
段描述符
一般的段描述符 特殊的段描述符
堆栈(地址向下扩展) 数据
非堆栈(地址向上扩展) 代码 TSS描述符
LDT描述符
任务门描述符
门描述符
调用门描述符 中断门描述符
陷阱门描述符
说明: TSS:任务状态段描述符 LDT:LDT描述符门:用 于程序间转移,任务间 转移的一种接口
P位(1位):为存在位。 当P=1时,表示描述符描述的段存在于内存储器中; 当P=0时,表示描述符描述的段不存在于内存储器中。
D位(1位):缺省操作尺寸位,只在80386, 80486中使用。 当D=0时,表示操作数和有效的缺省值为16位; 当D=1时,表示操作数和有效的缺省值为32位。
AVL位(1位):可用位,只在80386,80486中使 用。用来确定是否允许对存储器映象的I/O口实现保 护。
3、描述符表
段描述符表是包含段描述符的表格。有三种段 描述符表:
全局描述符表(GDT) 局部描述符表(LDT) 中断描述符表(IDT)
在整个系统中,全局描述符表和中断描述符表 各只有一个,而局部描述符表有若干个,每一个任 务对应一个。
(1)全局描述符表(GDT)
全局描述符表包含的是每一个任务都能访问的 段描述符。包括操作系统使用的代码段,数据段, 堆栈段的描述符,各任务的TSS段描述符以及系统 中所有任务的、关于LDT的描述符等。
TI:表格指示,和索引配合使用。
当TI=0时,选择器指向的段是系统的全局地 址空间的一部分,此时与高13位索引一起指 向全局段描述表GDT中的一项。
当TI=1时,选择器指向的段是一个特定程序 或任何的局部地址空间的一部分,此时与高 13位索引一起指向局部段描述表LDT中的一项。
在保护方式下,对80286,偏移量为 16位,每个段最大为64KB,
当G=0时,段限量以字节为单位,段上边界为1MB。
当G=1时,段限量以页为单位,段上边界为4GB。
DT位(1位):描述符类型位。 当DT=1时,表示为段描述符;
当DT=0时,表示为一个特殊描述符或门描述符。
DPL位(2位):为描述符特权级域,用来实现保 护而不用于地址生成。4级特权。0特权级最高;3特 权级最低。
段描述符格式
AVL DT
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
基地址(24—31) G D 0
段限量
(16—19)
在80286上,这一字 必须置为0 , 以便向 上兼容
P DPL
类型 基地址(16—23)
基地址(0—15)
段限量(0—15)
域 描述
G 粒度; D 缺省; AVL 可用;
表中最多包含8192个( 213 )描述符,每个描述 符8个字节。表格限度64KB( 213×23 )。
(3)中断描述符表(IDT)
理论上最多包含8192项描述符,每项描述符8 个字节。表格限度64KB,但对32位处理器,最多 只能处理256个中断向量,故中断描述符表最多包 含256项中断描述符。
第五章 存储器管理
1 实方式存储器管理 2 保护方式存储器管理 3 保护及任务切换 4 虚拟8086方式
存储器管理是微处理器提供的对系统存储器资源进 行管理的机制。 目的:方便软件程序对存储器的应用。
8086CPU管理存储器只有一种方式:
实方式
80286CPU管理存储器有两种方式:
实方式
保护虚地址方式
全局描述符表寄存器GDTR
基地址
限量
80286-24位 80386/80486-32位
16位
局部描述符表寄存器LDTR
选择器
基地址
限量
16位
80286-24位
16位
80386/80486-32位
系统启动初始化时,GDT的基址和限量将加载至 全局描述符表寄存器GDTR,执行某一任务时,将加 载能找到该任务的局部描述符表的选择子至局部描述 符表寄存器中。该任务在存储器中的位置由GDT中的 LDT描述符确定。
类型(4位):用来区分不同的段描述符格式。
段类型
当DT=1时,表示为段描述符
ST
ST位的设置决定
如何解释其它域
代码段 (ST=1)
1 CRA
数据段 (ST=0)
0 E WA
可访问的(1=YES) 可读的(1=YES) 一致的(1=YES)
可访问的(1=YES) 可写的(1=YES)
向下扩展(1=YES) (对正常数据E=0)
15 执行/读,一致码段,已访问
数据段
代码段
相容的段寄存器和段类型
段寄存器
只读
DS,ES,FS,GS

SS

CS

段类型
读/写 只执行 执行/读









特殊的段描述符及门描述符格式如下:
类型域值 0 1 2 3 4 5 6 7 8 9 AH BH CH DH EH FH
位设置 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
行到任何程序上,运行的程序不分特权级别。 4 不能实现多任务,是系统复位向保护虚地址
方式过渡的一种方式。
5.2 保护方式存储器管理
系统启动或复位后,首先进入实方式。在实方 式下,初始化GDT和IDT及两级页表,加载CR3和 CR0,使PE位置1,进入保护虚地址方式。保护方 式下存储器管理分为:
存储器的分段管理
80386以上CPU管理存储器有三种方式:
实方式 保护虚地址方式
虚拟8086方式
系统复位后初始化,进入实地址方式。
5.1 实方式存储器管理
一、 存储器的分段结构
软件运行时,指令与数据装入内存中, 指令与数据具有相对独立性,各程序之间也 具有相对独立性,为便于管理,它们各占据 相对独立的内存空间:一个程序可拥有几个 段,不同的程序占据不同的几个段,形成内 存的分段管理结构。
P DPL DT
出现; 描述符特权级; 描述符类型;
说明: 段基址32位 段限量20位 其它12位
段基地址:用来确定段在存储器的起始地址。对 80286,段基地址为24位,段可在16MB线性空间任 何字节处起始;对80386和80486,段基地址为32位, 段可在4GB线性空间任何字节处起始。
起始地址=段值×10H 有效地址偏移量EA,其值为寻址字节距离基 地址(段地址)的距离。最大值为64K,即段的 最大空间。
物理地址=段值×10H+偏移地址
例如:某存储单元的逻辑地址为:1BA4:204E 其实际地址应为:1BA40+204E=1DA8E
三、实方式的特点: 1 只使用地址总线的低20位,寻址空间为1MB。 2 采用分段的存储器结构。 3 无保护机制,存储空间的任何区域都可被运
相关文档
最新文档