13.3保护模式内存管理第13章32位微型机中国科学技术大学《微型计算机原理与接口技术》第5版第13章32位微型机的基本工作原理中国科学技术大学13.3保护模式内存管理第13章32位机13.3保护模式下的内存管理中国科学技术大学13.3保护模式内存管理第13章32位机保护模式内存管理在实模式下,80386的段内存管理与8086相同,每个段长度都是64KB,用段基址+偏移量求物理地址。只能访问1MB内存空间。在保护模式下,采用全新的分段分页技术管理内存,能寻址4GB地址空间。采用可变长的分段技术,每段大小:1~232字节(4GB)。分段时还对每段赋予属性和保护信息,进行4级保护。采用分页管理技术,与分段技术相结合,使虚拟存储空间大大超过物理地址,可达到64TB。多任务系统中有了分页功能,还可明显地提高存取数据的效率,并有效利用内存碎片。下面介绍保护模式下的分段分页内存管理技术,主要以80386为例进行讨论。中国科学技术大学13.3保护模式内存管理第13章32位机13.3保护模式下的内存管理13.3.1段内存管理技术13.3.2分页内存管理技术中国科学技术大学13.3保护模式内存管理第13章32位机13.3.1段内存管理技术1.逻辑地址、线性地址和物理地址逻辑地址LogicAddress对段内存空间寻址的地址称为逻辑地址,也叫虚拟地址,逻辑地址可表示为“段选择子:偏移地址”。段选择子:16位,存于CS,DS等段寄存器中,通过它能从GDT或LDT中找到64位段描述符,获得段的全部信息。偏移地址:32位,即有效地址EA,计算方法偏移地址=基址+变址比例因子+位移量•基址:存放于32位通用寄存器中•变址:存放于除ESP外的32位通用寄存器中•比例因子:1,2,4,8•位移量:8位或32位立即数中国科学技术大学13.3保护模式内存管理第13章32位机1.逻辑地址、线性地址和物理地址物理地址PhysicalAddress物理地址是指内存芯片阵列中每个阵列所对应的唯一的地址,32位地址线可直接寻址232=4GB内存单元。线性地址LinearAddress是沟通逻辑地址与物理地址的桥梁,32位CPU的分段部件将逻辑地址空间转换成32位的线性地址。方法:段选择子中的Index指向GDT或LDT中的一个段描述符,从中可读出线性基地址,加到32位偏移地址上,即形成线性地址。中国科学技术大学13.3保护模式内存管理第13章32位机1.逻辑地址、线性地址和物理地址地址转换分段部件先将逻辑地址线性地址。若分页功能禁止,则线性地址就是物理地址;如允许分页,则分页部件再将线性地址转换成物理地址。中国科学技术大学13.3保护模式内存管理第13章32位机2.段描述符共有三类段描述符,用段描述符中的b12位S来区分:S=1,内存段描述符,对应段为代码段、数据段或堆栈段。S=0,系统段描述符和门描述符。内存段描述符内存段描述符都是8字节,分为:段基地址(BaseAddress),段限长(Limit)和段属性(Attribute)等3部分。中国科学技术大学13.3保护模式内存管理第13章32位机1)段基地址基址是32位线性地址A31~A0,指出段的起始位置,可以是32位线性地址(4GB)中的任一个地址。为与80286兼容,在段描述符表中,32位基址分3处存放。2)段限长限长为20位,决定段的可寻址范围,存于2处,也为与80286兼容。要与b23位G结合计算实际限长:G=0,限长高12位为全0;G=1,段限长=描述符中的20位限长×1000H+FFFH。3)段内存属性除G,S外,尚有多种属性,尤其是4位的type属性是程序员必须熟悉的。详见课本。中国科学技术大学13.3保护模式内存管理第13章32位机系统段描述符和门描述符系统段描述符描述有关80386操作系统的表和任务等信息。任务状态段TSS和局部描述符表LDT都看作系统段。1)任务状态段TSS每个任务都有TSS,用在任务切换时保存任务的环境。低位部分由CPU定义,对应一个任务的各种信息,存放各种寄存器值,占用104(0~67H)字节。高位部分由OS创建任务时定义。CPU通过任务状态寄存器TR和TSS描述符来定位内存中的TSS段。8字节的TSS描述符存放在GDT中,定义了任务状态段在内存中的基址、限长和类型。格式中国科学技术大学13.3保护模式内存管理第13章32位机2)门(gate)是一种转换机构。当程序的控制由一个代码段(源代码段)转到另一个目标代码段时,通过门来实现。门设置在目标代码段入口处,控制对该目标代码段访问的权限。门描述符为8字节,格式:4、5字节是门描述符属性,其中TYPE定义门的类型和长度(16/32位)。调用门,段选择子和偏移量指向要调用子程序的目标代码起始地址;任务门只有段选择子,指向GDT中的一个TSS描述符。中断门和陷阱门,选择子和偏移量构成中断处理子程序或陷阱处理程序的入口地址。中国科学技术大学13.3保护模式内存管理第13章32位机13.3保护模式下的内存管理13.3.1段内存管理技术13.3.2分页内存管理技术中国科学技术大学13.3保护模式内存管理第13章32位机13.3.2分页内存管理技术分页内存管理以Page(页)为单位,将内存空间映射到磁盘空间,便于实现虚拟存储器管理,还能提高存取效率,有效利用内存碎片。是80386对8086的主要功能扩充。80386以4KB为1页,4GB内存分成220个页,在被4KB整除的地址(后3位=000H)处分页。分段技术将逻辑地址线性地址CR0的PE=0禁止分页时,线性地址即物理地址;CR0的PE=1允许分页时,分页部件把将线性地址物理地址。中国科学技术大学13.3保护模式内存管理第13章32位机1.页目录与页表80386采用页目录和页表两层表实现分页管理。页表项共有220=1024×1024个,每项4字节。如果只是一级页表,要占4MB内存。采用两级页表,每级10位,2张表只需占(1024项×4字节/项)×2=1024×8=8KB内存空间。32位线性地址32位物理地址中国科学技术大学13.3保护模式内存管理第13章32位机页目录表含210=1024个页目录项,每项4字节。页表含1024个页表项,每项4字节对应4KB(1页)内存。每个页目录项最多可以对应1024个页表项。故整个页目录最多可映射物理地址空间为1024页目录项×1024页表项/页目录项×4KB/页表项=4GB分页机制将32位线性地址分成3部分:1)高10位(b31~22)作页目录索引,指向210=1024个页目录项中的1项。页目录项每项长32位,高20位是页表基址,低12位为其属性。2)中间10位(b21~12)作页表索引,指向1024个页表项中的1项。页表项每项长度也是32位,高20位对应物理地址的高20位,也称页帧(PageFrame),低12位为其属性。3)低12位(b11~0)作页面偏移地址,即物理地址的低12位。利用两层表和CR3寄存器,就可从32位线性地址求得32位物理地址。中国科学技术大学13.3保护模式内存管理第13章32位机2.页目录项和页表项格式即2张表里的内容,都是4字节,格式基本相同:高20位:页帧地址1页物理地址的起始基地址,也就是物理地址的高20位低12位:属性(对各属性位的讨论请参看课本)中国科学技术大学13.3保护模式内存管理第13章32位机3.举例说明线性地址转换成物理地址的过程设系统的线性地址为12345678H,CR3=00008000H,求对应的物理地址。如图,将32位线地址12345678H分成3部分:最高10位0001001000B=048H,作页目录索引号;中间10位1101000101B=345H,作页表索引;最后12位678H,直接作物理地址的低12位。中国科学技术大学13.3保护模式内存管理第13章32位机①查询CR3,得CR3=00008000H,作页目录表物理基址。②取线性地址高10位048H,作为页目录索引号。每个目录项4字节,要将索引号乘以4,即048H×4=120H,才是页目录项的偏移地址。③求页目录项始址的物理地址。其值=CR3中的基址+页目录项的偏址=00008000H+120H=00008120H。中国科学技术大学13.3保护模式内存管理第13章32位机④查页目录项的内容。设(08120H)=00010021H,其中高20位为00010H,它是页表基址的高20位。低12位为属性=021H。⑤线性地址的中间10位=345H,是页表索引号。同样,页表项长4字节,该页表项的偏址为345H4=0D14H。⑥该页表项的物理地址=基地址+偏移量=00010000H+0D14H=00010D14H。中国科学技术大学13.3保护模式内存管理第13章32位机⑦查页表项得(010D14H)=54321021H。其高20位54321H为页帧地址,即该页的基址为54321000H。后12位为属性。⑧求物理地址=页帧+线性地址低12位=54321000H+678H=54321678H。至此,从线性地址求得了物理地址。在保护模式下,对于PentiumPro及以上的处理器,通过物理地址扩展后可以访问36位即64GB的物理地址空间,每页大小可以是4KB、2MB或4MB。