X86的存储器管理.ppt
04第2章2 80X86存储器管理
18
改变段寄存器的内容就可将对应段设置到内存的任 何地方。 何地方。 段与段之间可以独立、相连、也可以重叠。 段与段之间可以独立、相连、也可以重叠。
举例1 举例1:已知当前各个段寄存器中内容为 (CS)=2000H CS) 2000H (DS)=41B0H DS) 41B (SS)=3000H SS) 3000H (ES)=4A00H ES) 00H
25
8086
内部
AH BH CH DH AL BL CL DL SP BP SI DI
16
∑
20 16
器
存器
CS DS SS ES IP 内部暂存器
输入/输出 输入 输出 控制电路
外 部 总 线
ALU
存器
部 控制电路
1 2 3 4 5 6
8
部
EU)
部
BIU)
00000H 01000H 64K 64K程序 段寄存器 CS DS SS ES 0100H 2100H 4600H A000H 64K 64K堆栈 46000H 21000H
1 0 0 1 0 0 0 1 0 1 0 0 1 0 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 01000H 01000H 01001H 01001H 01002H 01002H 01003H 01003H ( 01000H ) = 9F H ( 01001H ) = 26 H ( 01002H ) = 1E H ( 01003H ) = 0D7H
00000H 01000H 4K程序
段寄存器
64K 64K数据
CS DS SS
0100H 0200H 0280H 2K数据 100H 100H堆栈
第二章 80X86微处理器PPT课件
1
31
EAX EBX ECX EDX ESP EBP ESI EDI
EIP EFLAGS
15
0
AH AL AX BH BL BX CH CL CX DH DL DX
SP BP SI DI
IP FLAGS
CS DS ES SS FS GS
❖ 堆栈的操作特点:
❖ 实模式下的堆栈为16位宽(字宽),堆栈操作指令(PUSH 指令或POP指令)对堆栈的操作总是以字为单位进行。 即要压栈(执行PUSH指令)时,先将SP的值减2,然后 将16位的信息压入新的栈顶; 要弹栈(执行POP指令)时, 先从当前栈顶取出16位的信息,然后将SP的值加2。可 概括为: “压栈时, 先修改栈指针后压入”, “弹 栈时, 先弹出后修改栈指针”。
8
FFFFFH
FFFF0H FFFEFH
专用区
通用区
00400H 003FFH
00000H
专用区
实模式下存储器地址空间
9
❖ 为什麽要采用存储器“分段”技术?
实模式下CPU可直接寻址的地址空间为220=1M字节 单元。CPU需输出20位地址信息才能实现对1M字节单 元存储空间的寻址。但实模式下CPU中所使用的寄存 器均是16位的,内部ALU也只能进行16位运算,其寻 址范围局限在216=65536(64K)字节单元。为了实现对 1M字节单元的寻址,80x86系统采用了存储器分段技 术。 ❖ 各个逻辑段在实际的存储空间中可以完全分开,也可
堆栈的结构:
❖ 堆栈是在存储器中实现的,并由堆栈段寄存器SS和堆栈
指针寄存器SP来定位。SS寄存器存放堆栈段的段基值,
x86中内存管理寄存器
一、内存管理寄存器处理器提供了4个内存管理寄存器(GDTR、LDTR、IDTR和TR),用于指定内存分段管理所用系统表的基地址,如图4-2所示。
处理器为这些寄存器的加载和保存提供了特定的指令。
有关系统表的作用请参见4.2节"保护模式内存管理"中的详细说明。
(点击查看大图)图4-2 内存管理寄存器GDTR、LDTR、IDTR和TR都是段基址寄存器,这些段中含有分段机制的重要信息表。
GDTR、IDTR和LDTR用于寻址存放描述符表的段。
TR用于寻址一个特殊的任务状态段(Task State Segment,TSS)。
TSS中包含着当前执行任务的重要信息。
(1)全局描述符表寄存器GDTRGDTR寄存器中用于存放全局描述符表GDT的32位的线性基地址和16位的表限长值。
基地址指定GDT表中字节0在线性地址空间中的地址,表长度指明GDT表的字节长度值。
指令LGDT和SGDT分别用于加载和保存GDTR寄存器的内容。
在机器刚加电或处理器复位后,基地址被默认地设置为0,而长度值被设置成0xFFFF。
在保护模式初始化过程中必须给GDTR加载一个新值。
(2)中断描述符表寄存器IDTR与GDTR的作用类似,IDTR寄存器用于存放中断描述符表IDT的32位线性基地址和16位表长度值。
指令LIDT和SIDT分别用于加载和保存IDTR寄存器的内容。
在机器刚加电或处理器复位后,基地址被默认地设置为0,而长度值被设置成0xFFFF。
(3)局部描述符表寄存器LDTRLDTR寄存器中用于存放局部描述符表LDT的32位线性基地址、16位段限长和描述符属性值。
指令LLDT和SLDT分别用于加载和保存LDTR寄存器的段描述符部分。
包含LDT表的段必须在GDT表中有一个段描述符项。
当使用LLDT指令把含有LDT表段的选择符加载进LDTR时,LDT段描述符的段基地址、段限长度以及描述符属性会被自动地加载到LDTR中。
当进行任务切换时,处理器会把新任务LDT的段选择符和段描述符自动地加载进LDTR中。
《存储器管理》课件
个人电脑的存储管理还需要注意 防止数据丢失和保护个人隐私等
问题。
数据中心的存储管理
数据中心需要存储大量的数据,如网站内容、数据库 、邮件等,因此需要建立高效、可靠、可扩展的存储
系统。
数据中心的存储管理通常采用高性能的硬件设备和软 件技术,如分布式存储系统、云存储等,以提高存储
效率和可用性。
数据中心的存储管理还需要考虑数据备份、容灾和安 全等方面的问题,以确保数据的安全性和完整性。
内存寻址
通过内存寻址方式,计算机能够定位到主存储器中的 特定地址,进而读取或写入数据。
数据组织
主存储器中的数据通常以一定方式进行组织,如按字 节、字或块为单位。
主存储器的管理策略
1 2
分区管理
将主存储器划分为不同的区域,以便于管理和维 护。
内存分配
根据程序运行的需求,为主存中的程序分配内存 空间。
空间管理
为了充分利用磁盘空间,文件系统通常会采用一些空间管理技术,例如块分配、碎片整理和垃圾回收等 。这些技术能够有效地管理磁盘空间,提高磁盘利用率。
05
存储器管理的技术发展
分布式存储系统
01
分布式存储系统是一种将数据 存储在多个物理节点上的存储 方式,通过节点之间的网络连 接实现数据的共享和访问。
存储器分类
按用途
主存储器(内存)、辅助存储器(外存,如硬盘、光盘等)、缓冲存储器(如 CPU中的缓存)
按存储介质
半导体存储器(RAM、ROM、Flash等)、磁表面存储器(磁盘、磁带等)、 光学存储器(光盘等)
存储器管理的重要性
提高存储器的利用率
通过合理的存储器管理,可以避免存 储空间的浪费,提高存储器的利用率 。
《80X86微机原理与接口技术》课件第4章
A0~ A9 CS R/ W
D
图4-5 1K×1 SRAM
如果要组成8位字长的存储体,例如2K×8位,则也使用矩 阵排法。它的16 384个基本电路排成128×128的矩阵,11条地 址线分成行选7条、列选4条。行线地址译码器输出128条,选 择X0~X127中的1行;列线地址译码器输出16线,选择Y0~Y15 中的1列。列按8位分组,每一行的128个基本电路被分成16组, 每组8个基本电路。当有1列被选中有效时,该列128×8个基本 电路的列端Y 均为1。当11位地址信息出现在译码器输出端时, 行选择线和列选择线同时为1的8个基本电路被选中。每个基本 电路有1条数据线,共有8条数据线能和外界交换数据。图4-6 画出了2 K字×8位/字的存储器电路图。
E2PROM使用电擦除,只要在不同的引脚加不同的电压 就可以实现全片或字节的擦除与重写,且能在线进行,因此 它可以作非易失性RAM使用,比EPROM方便得多,但其价高、 集成度不如EPROM。Flash Memory是一种可取代E2PROM的 快速电擦除非易失性ROM,且可作非易失性RAM使用。它的 结构和E2PROM相同,但擦除和写入速度极快,整体擦除约需 1 s,而E2PROM需15~20 min。编程写入时,以Flash Memory 28F256(32 KB×8)为例,整个芯片编程只需0.5 s,且擦除次数 可达10万次。
第 4 章 内部存储器
4.1 存储器的分类 4.2 随机存取存储器RAM 4.3 只读存储器ROM 4.4 Cache 和SB SRAM 4.5 内存条和EDO DRAM、SDRAM、RDRAM 4.6 存储器与8086/8088 CPU之间的连接 4.7 存储器与80386/80486和Pentium CPU之间的连接 4.8 存储器容量与地址编号之间的关系
x86内存管理机制
7 5 4 3 2 1 0
G D 0 AVL¶ ½ Ï 16~19Î 6 ÎçÞ » Ã Ê ¨Ï Ö Ú ·Î È Þ ×½
Îù· » ¶ » Ö 0~23Î
ÎçÞ ¶ ½ Ï 0~15Î »
段描述符(1)
7 6 5 4 S 3
访问权限字节
P
DPL
2 1 0 ED R E A C W
P位:P=0,段不在内存中 P=1,段在内存中
– 存储空间保护
• 提供权限管理支持
虚实地址转换机制-多级页表
context VA Index0 seg Index1 page Index2 offset Index3 DRAM
Context BaseReg
PA
上下文表
段表
页表
• Index:选择子/选择符,表(or段)的索引 • 表项(Entry):描述子,表(or段)的基址,并包括权限、访问位、 dirty位等
全局描述符表寄存器GDTR(1)
例:(GDTR)=0010 0000 0FFFH,求GDT在物理存 储器中的起始地址,结束地址,表的大小,表中可 以存放多少个描述符? 解:GDT的起始地址为0010 0000H 结束地址为 0010 0000H+0FFFH=0010 0FFFH 表的大小为 0FFFH+1=4096字节 表中可以存放 4096/8=512个描述符
– 优先级调度:低优先级可被高优先级中断
• 实时系统
• 任务运行环境的保护
– 用户程序context切换:寄存器、指针、数据区等,使 用堆栈或内存 – OS区要保护:使用分层分级权限管理
80386的保护环
应用程序 常规扩展 系统服务 内核 级别0 级别1
计算机操作系统-存储器管理 ppt课件
ppt课件
10
4.1 程序的装入和链接
2. 可重定位装入方式 在多道程序环境下,目标模块的起始地址通常从 0开始,程序中的其他地址都是相对于起始地址 计算的。因此应采用可重定位装入方式,根据内 存的当前情况,将装入模块装入到内存的适当位 置。
注意:在采用可重定位装入方式将装入模块装入 内存后,会使装入模块中的所有逻辑地址与实际 装入内存的物理地址不同。
系统区(OS)
用户区 内存
ppt课件
21
4.2 连续分配方式
连续分配方式,是指为一个用户程序分配一个连 续的内存空间。
单一连续分配
固定分区分配
动态分区分配
可重定位分区分配
ppt课件
22
4.2.2 固定分区分配
1. 原理 将内存用户空间划分为若干个固定大小的区域,在每个分区中 只装入一道作业,便可以有多道作业并发执行。当有一空闲分 区时,便可以再从外存的后备作业队列中,选择一个适当大小 的作业装入该分区,当该作业结束时,可再从后备作业队列中 找出另一作业调入该分区。
ppt课件
13
4.1 程序的装入和链接
4.1.2 程序的链接
程序经过编译后得到一组目标模块,再利用链接程序 将目标模块链接,形成装入模块。 根据链接时间的不同,把链接分成三种: 1、静态链接:在程序运行前,将目标模块及所需的库 函数链接成一个完整的装配模块,以后不再拆开。 2、装入时动态链接:指将用户源程序编译后所得的一 组目标模块,在装入内存时,采用边装入边链接的链 接方式。 3、运行时动态链接:指对某些目标模块的链接,是在
分区分配中的数据结构 分区分配算法 分区分配及回收操作
ppt课件
26
4.2.3 动态分区分配
《存储器管理》PPT课件
地址转换过程是:
CPU获得的逻辑地址首先与下限寄存器 的值相加,产生物理地址;然后与上限寄存 器的值比较。 1、若大于上限寄存器的值,产生“地址越界” 中断信号,由相应的中断处理程序处理; 2、若不大于上限寄存器的值,则该物理地址 就是合法地址,它对应于内存中的一个存储 单元。
案例分析
【例3-1】在某系统中采用固定分区分配管理 方式,内存分区(单位字节)情况如图3-10a所 示。现有大小为1KB、9KB、33 KB、121KB 的多个作业要求进人内存,试画出它们进入 内存后的空间分配情况,并说明内存浪费有 多大?
内存的在系统中的地位
CPU
内存
I/O 系统
外设
内存在计算机系统中的地位
3.1.1 存储体系
存储器存取 时间减少 存储器存取 速度加快 每位存储器 成本增加 存储器容量 减少 外 存 高速缓存器
程序和数据 可以被CPU 直接存取 内 存
程序和数据必 须先移到内存, 才能被CPU访问
三级存储器结构
存储器管理
单一连续分配仅适用于 单道程序设计环境,处 理机、主存都不能得到 充分的利用。
操作系统
32 KB
作业 分配给用户作 业的空间 未用
64 KB
1 60 KB
浪费
单一连续分配
特点:
( 1 )管理简单。它把主存分为两个区,用户区一 次只能装入一个完整的作业,且占用一个连续的 存储空间。它需要很少的软硬件支持,且便于用 户了解和使用。 ( 2 )在主存中的作业不必考虑移动的问题,并且 主存的回收不需要任何操作。 ( 3 )资源利用率低。不管用户区有多大,它一次 只能装入一个作业,这样造成了存储空间的浪费, 使系统整体资源利用率不高。 (4)这种分配方式不支持虚拟存储器的实现。
计算机操作系统 第6章 存储器管理ppt课件
入重定位存放器。当CPU取一条访问内存的指令时,地址变
换硬件逻辑自动将指令中的相对地址与重定位存放器中的值
相加,再根据和值作为内存的绝对地址去访问该单元的数据。
6.1.4 地址重定位-6
重定位存放器
0:
100:LOAD 1,(2500)
2500:365 2600:
10000:
10000
10100: LOAD 1,(2500) +
可变式分区的分配和释放的根本思想是:在分配时,首先 找到一个足够大的空闲分区,即这个空闲区的大小比作业要 求的要大,系统那么将这个空闲分区分成两部分:一部分成 为已分配的分区,剩余的部分仍作为空闲区。在回收撤除作 业所占领的分区时,要检查回收的分区能否与前后空闲的分 区相领接,假设是,那么加以合并,使之成为一个延续的大 空间。
?PCB中与该管理配套的参数
6.2.3 动态/可变式 (Dynamic Partitioning)分区分配
思想: 可变式分区是指在作业装入内存时,从可用的内存中划 出一块延续的区域分配给它,且分区大小正好等于该作业的 大小。可变式分区中分区的大小和分区的个数都是可变的, 而且是根据作业的大小和多少动态地划分,因此又称为动态 式分区。这种存储管理技术是固定式分区的改良,既可以获 得较大的灵敏性,又能提高内存的利用率。
存储维护:设置基址界限存放器对。
6.2.2 固定分区(Fixed Partitioning)分配
思想:固定式分区是在作业装入之前,内存就被划分成假设干 个分区。划分任务可以由系统管理员完成,也可以由操作系 统实现。然而一旦划分完成,在系统运转期间不再重新划分, 即分区的个数不可变,分区的大小不可变,所以,固定式分 区又称为静态分区。 这种分区方式普通将内存的用户区域划分成大小不等的分区, 以顺应不同大小的作业的需求。 管理机构:系统有一张分区阐明表,每个表目阐明一个分区的 大小、起始地址和能否已分配的运用标志。分区阐明表和内 存分配图如下所示。
《X86指令系统》课件
使用优化编译器可以改善程序的执行效率和性能,如循环展开、向量化和代码优化。
CPU缓存优化
通过合理地利用CPU缓存,可以减少缓存失效,提高程序的访问速度和执行效率。
多核并行优化
利用多核处理器的并行性能,可以将计算任务分解为多个并行子任务,从而提高程序的执行 效率。
X86架构发展
8086
2 浏览器
现代浏览器使用X86架构来执行JavaScript和其他浏览器功能,以提供快速和流畅的用户体 验。
3 游戏引擎
许多游戏引擎使用X86架构来实现图形渲染、物理模拟和游戏逻辑等关键功能。
8086是Intel公司推出的一款16位 微处理器,是X86指令系统的基 础。
Pentium
Pentium是Intel公司推出的一系列 高性能微处理器,对X86架构进 行了多项改进。
x86-64
x86-64是X86指令系统的64位扩展, 提供更大的寻址空间和更高的计 算性能。
应用实例
1 操作系统
X86架构广泛应用于各种操作系统,如Windows、Linux和Mac OS。
多线程程序中,线程之间 需要同步访问共享资源, 以避免竞争条件和数据不 一致。
内存管理
1
页式内存管理
2
页式内存管理是X86架构中常用的内存管
理方式,将内存划分为固定大小的页面。
3
内存模型
X86架构使用分段式内存模型,将内存划 分为逻辑段,每个逻辑段有自己的访问 权限和地址空间。
分段式内存管理
分段式内存管理是X86早期采用的一种内 存管理方式,将内存划分为逻辑段,每 个逻辑段有自己的访问权限和地址空间。
《X86指令系统》PPT课 件
存储器管理.完美版PPT
8
2、基本概念
名空间:程序中由自定义的符号名构成的集合。 地址空间:程序中用来访问信息所用地址单元的集 合。其中的地址被称为逻辑地址(相对地址/程序地 址/虚地址),通常是以0为基址进行顺序编址。 存储空间:物理存储器中全部物理存储单元的集合。 每个存储单元都有它自己的编号,该编号被称为物 理地址(绝对地址/内存地址/实地址)。 一个程序只有从地址空间装入到存储空间后才能运 行。
成若干个目标模块。 链接:链接程序 由链接程序(Linker)将编译后形成的一组
目标模块,以及它们所需要的库函数链接在 一起,形成装入模块。 装入:装入程序 由装入程序(Loader)将装入模块复制到内 存中。
7
库
主
链接程序
汇编 编译
子1
子2 目标模块
主
库 装入程序
子1 子2
装入模块
主 库 子1 子2
操作系统等系统软件占用系统区,用户区用来存放用
户程序,存储管理主要是针对内存用户区的管理。
4
2、 存储器管理的功能
地址变换 内存的分配与回收 内存的保护与共享 内存的扩充
5
第二节 程序的装入和链接
从源程序到程序执行 基本概念 程序的装入 程序的链接
6
1、从源程序到程序执行
编译:编译程序 由编译程序(Compiler)将用户源代码编译
前
后
向
向
指 N个字节 指 针 可用 针
N
N
+ +
2
2
0
0
空闲链表结构
22
分区分配算法
FF首次适应算法:空闲分区按起址递增次序排列, 从头开始直至找到第一个满足要求的空闲分区。 特点:内存低端会留下小的空闲区,高端有大的空 闲区;每次查找从低址开始,会增加查找开销。
x86中内存管理寄存器(GDTR、LDTR、IDTR和TR)
x86中内存管理寄存器收藏一、内存管理寄存器处理器提供了4个内存管理寄存器(GDTR、LDTR、IDTR和TR),用于指定内存分段管理所用系统表的基地址,如图4-2所示。
处理器为这些寄存器的加载和保存提供了特定的指令。
有关系统表的作用请参见4.2节"保护模式内存管理"中的详细说明。
(点击查看大图)图4-2 内存管理寄存器GDTR、LDTR、IDTR和TR都是段基址寄存器,这些段中含有分段机制的重要信息表。
GDTR、IDTR和LDTR用于寻址存放描述符表的段。
TR用于寻址一个特殊的任务状态段(Task State Segment,TSS)。
TSS中包含着当前执行任务的重要信息。
(1)全局描述符表寄存器GDTRGDTR寄存器中用于存放全局描述符表GDT的32位的线性基地址和16位的表限长值。
基地址指定GDT表中字节0在线性地址空间中的地址,表长度指明GDT表的字节长度值。
指令LGDT和SGDT分别用于加载和保存GDTR寄存器的内容。
在机器刚加电或处理器复位后,基地址被默认地设置为0,而长度值被设置成0xFFFF。
在保护模式初始化过程中必须给GDTR加载一个新值。
(2)中断描述符表寄存器IDTR与GDTR的作用类似,IDTR寄存器用于存放中断描述符表IDT的32位线性基地址和16位表长度值。
指令LIDT和SIDT分别用于加载和保存IDTR寄存器的内容。
在机器刚加电或处理器复位后,基地址被默认地设置为0,而长度值被设置成0xFFFF。
(3)局部描述符表寄存器LDTRLDTR寄存器中用于存放局部描述符表LDT的32位线性基地址、16位段限长和描述符属性值。
指令LLDT和SLDT分别用于加载和保存LDTR寄存器的段描述符部分。
包含LDT表的段必须在GDT表中有一个段描述符项。
当使用LLDT指令把含有LDT表段的选择符加载进LDTR时,LDT段描述符的段基地址、段限长度以及描述符属性会被自动地加载到LDTR中。
汇编语言程序设计第2章 80 x86计算机组织结构.ppt
220 =1,048,576 = 1M
则8086/8088最大可用的存储空间为1M字节。
South china normal university
• 存储器由若干存储单元构成,存储单元的最小 单位是字节。
• 将所有的存储单元按顺序编号,即每一个字 节有一个唯一的编号,这些编号称为存储单 元的地址(也称为物理地址)。
South china normal university
• 若CPU要存取某个存储单元的内 容,则首先提供该存储单元的 地址,然后按地址选中对应的 存储单元,就可以对单元内容 进行存取操作。
外部设备
在微机系统中最常用的外部设备有: • 键盘 • 显示器 • 打印机 • 外部存储器等
CPU与外部设备交换信息是通过I/O接口电 路来完成的。
South china normal university
2.2 80X86CPU的寄存器 通用寄存器 控制寄存器 段寄存器
South china normal university
South china normal university
• IBM PC机及其 兼容机的存储 器系统主要分 为3个主要部 分:程序暂驻 区 (TPA) 、 系 统内存区和扩 展 存 储 区 (XMS)
South china normal university 图2-2 IBM PC机及其兼容机的存储器映像
South china normal university
1. 数据寄存器 (AX、BX、CX、DX)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
P DPL DT
出现; 描述符特权级; 描述符类型;
说明: 段基址32位 段限量20位 其它12位
段基地址:用来确定段在存储器的起始地址。对 80286,段基地址为24位,段可在16MB线性空间任 何字节处起始;对80386和80486,段基地址为32位, 段可在4GB线性空间任何字节处起始。
说明:
系统的GDT和LDT均是一个长度不定的数据结构, 它们各自最少包括一个,最多包括8192个段描述符。 GDT中的第一个描述符为空描述符,一般不用。
4 段选择器
定义:保护方式下,段选择器是一个16位的指向 操作系统定义的段信息的指针。高13位作为索引, 低3位为特征位。 80386/80486CPU 的段选择器有6个:
CS;SS;DS ES;FS;GS
15
索引
32 1 0
TI RPL 段选择器
TI=0
TI=1
8192项
8192项
说明: 全局描述符表第一 个项目不用,为空 描述符。
全局描述 局部描述
符表
符表
说明:
RPL:请求特权级别,共4级。 RPL=00b时,选择器的请求特权级最高; RPL=11b时,选择器的请求特权级最低。
全局描述符表寄存器GDTR
基地址
限量
80286-24位 80386/80486-32位
16位
局部描述符表寄存器LDTR
选择器
基地址
限量
16位
80286-24位
16位
80386/80486-32位
系统启动初始化时,GDT的基址和限量将加载至 全局描述符表寄存器GDTR,执行某一任务时,将加 载能找到该任务的局部描述符表的选择子至局部描述 符表寄存器中。该任务在存储器中的位置由GDT中的 LDT描述符确定。
表中最多包含8192个( 213 )描述符,每个描 述符占8个字节。表格限度64KB( 213×23 ) 。
(2)局部描述符表(LDT)
局部描述符表包含的是某一个任务都能访问的 段的描述符。包括代码段,数据段,堆栈段的描述 符,也可包含此任务使用的一些控制描述符。这些 描述符为每一个任务单独所有。每个局部描述符表 构成一个段,也有一个描述符描述,该描述符放在 GDT中。
保护方式下的逻辑地址被称为虚拟地址,段地址 可以不在实存储器上。
保护方式下的段寄存器被称为段选择器,其内容 为段选择符(子),虚拟地址由段选择子(16位)和 地址偏移量(32位)组成。
虚拟地址的格式为:
段选择子:地址偏移量
二、保护方式下存储器的分段管理
1、保护方式下的寻址机制
在保护方式下,存储器的寻址机制和实方式 不同。保护方式下的某一个存储单元用虚拟地 址表示,虚拟地址中的选择子为一操作系统定 义的指向有关段信息的一个指针。依据选择子 即可得到该段的段基址。 若存储器启用分页机制,还须经分页机构将 线性地址变换为物理地址。
存储段描述符类型
类型
说明
0 只读
1 只读,已访问
2 读/写
3 读/写,已访问
4 只读,向下扩展
5 只读,向下扩展,已访问
6 读/写,向下扩展
7 读/写,向下扩展,已访问
类型
说明
8 只执行
9 只执行,已访问
10 执行/读
11 执行/读,已访问
12 只执行,一致码段
13 只执行,一致码段,已访问
14 执行/读,一致码段
3、描述符表
段描述符表是包含段描述符的表格。有三种段 描述符表:
全局描述符表(GDT) 局部描述符表(LDT) 中断描述符表(IDT)
在整个系统中,全局描述符表和中断描述符表 各只有一个,而局部描述符表有若干个,每一个任 务对应一个。
(1)全局描述符表(GDT)
全局描述符表包含的是每一个任务都能访问的 段描述符。包括操作系统使用的代码段,数据段, 堆栈段的描述符,各任务的TSS段描述符以及系统 中所有任务的、关于LDT的描述符等。
当G=0时,段限量以字节为单位,段上边界为1MB。
当G=1时,段限量以页为单位,段上边界为4GB。
DT位(1位):描述符类型位。 当DT=1时,表示为段描述符;
当DT=0时,表示为一个特殊描述符或门描述符。
DPL位(2位):为描述符特权级域,用来实现保 护而不用于地址生成。4级特权。0特权级最高;3特 权级最低。
TI:表格指示,和索引配合使用。
当TI=0时,选择器指向的段是系统的全局地 址空间的一部分,此时与高13位索引一起指 向全局段描述表GDT中的一项。
当TI=1时,选择器指向的段是一个特定程序 或任何的局部地址空间的一部分,此时与高 13位索引一起指向局部段描述表LDT中的一项。
在保护方式下,对80286,偏移量为 16位,每个段最大为64KB,
虚拟地址空间由存储器的分段机构和 分页机构进行管理。
线性地址=段基址+偏移量
分段机构将虚拟地址变换为线性地址 分页机构将线性地址变换为物理地址
在保护方式下,一个存储单元的地址也 是由段基地址和段内偏移量组成,但段基地 址并不由段寄存器直接获得。保护方式下专 门有一个8字节的描述符来描述段的基地址、 限量和段的其它属性,而描述符则保存在由 段描述符组成的表格即描述符表中,在描述 符表中取出某段的描述符即可获得该段的所 有信息(包括段地址)。
分段的好处:
便于程序的编写,逻辑地址使用方便, 灵活。
存储器便于管理,支持程序的动态定位。 防止程序,数据相互覆盖。
二、物理地址的形成
实方式下,程序对存储器的访问采用分段地 址,分段地址由一个段值和一个有效地址偏移量 值组成,又称逻辑地址:
段值:偏移量
段值由段寄存器的内容决定,表示一个物理 段的起始地址,又称段地址
CPU具体寻址过程如下:
加载段寄存器
查段描述符表
取段描述符
取段基址
线性地址=段基址+偏移量
32位段基址和32位段内偏移量形成的地址称为线性地 址。
寻址过程示意图
加载
选择子 偏移量 32位
32位线性地址
存取权 界限
段基址
段描述符
32位段基址
界限 4GB
2、描述符
(1)在保护虚地址方式下的每一个段都有一个相 应的描述符。 段描述符是描述某一个段的各种信息的特殊的字 段。 段描述符由8个字节组成,包含了该段的32位段基 址和20位段限量及有关属性。
第五章 存储器管理
1 实方式存储器管理 2 保护方式存储器管理 3 保护及任务切换 4 虚拟8086方式
存储器管理是微处理器提供的对系统存储器资源进 行管理的机制。 目的:方便软件程序对存储器的应用。
8086CPU管理存储器只有一种方式:
实方式
80286CPU管理存储器有两种方式:
实方式
保护虚地址方式
80386以上CPU管理存储器有三种方式:
实方式 保护虚地址方式
虚拟8086方式
系统复位后初始化,进入实地址方式。
5.1 实方式存储器管理
一、 存储器的分段结构
软件运行时,指令与数据装入内存中, 指令与数据具有相对独立性,各程序之间也 具有相对独立性,为便于管理,它们各占据 相对独立的内存空间:一个程序可拥有几个 段,不同的程序占据不同的几个段,形成内 存的分段管理结构。
段限量:用来确定段的尺寸。对80286,段限量 为16位无符号数,段的最大尺寸为64KB;对80386 和80486,段限量由上表中20位无符号数和表中粒 度G共同确定。若G设为字节粒状,段限量以字节为 单位,若设为页粒状,段限量以页为单位,一页为 4KB,段的尺寸为4KB-4GB。
G位(1位):粒度位,在80386,80486中,它用 来指定段的单位。
(2)段描述符的分类
描述符分为两大类,如下图所示:
描述符
段描述符
一般的段描述符 特殊的段描述符
堆栈(地址向下扩展) 数据
非堆栈(地址向上扩展) 代务门描述符
门描述符
调用门描述符 中断门描述符
陷阱门描述符
说明: TSS:任务状态段描述符 LDT:LDT描述符门:用 于程序间转移,任务间 转移的一种接口
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
存储器的分页管理
一 、特点:
1、引入了保护机制,使段大小得以扩充,但段的 使用受到限制。
2 、结合分段机制,引入了虚拟存储器的概念。 3、支持多用户多任务操作系统。
虚拟存储器:
基于存储器分段的结构,把外存作为内存的延 伸进行统一管理所构成的存储器空间。任何时候系 统只需把与正在运行的程序相关的一小部分虚拟地 址空间映射到内存,其余部分仍留在外存上,内存 和外存统一构成虚拟存储空间。是一种能提供比实 际内存大得多的存储器空间技术。
起始地址=段值×10H 有效地址偏移量EA,其值为寻址字节距离基 地址(段地址)的距离。最大值为64K,即段的 最大空间。
物理地址=段值×10H+偏移地址
例如:某存储单元的逻辑地址为:1BA4:204E 其实际地址应为:1BA40+204E=1DA8E