Windows98虚拟存储技术(1)Inte180386提供的存储管理方式在Inte180386芯片中,包含了存储管理部件MMU(MemoryManagementUnit),由它来提供实现虚拟存储器所需的硬件支持,即请求段表(页表)机制、缺段(页)机构、地址变换机构。其地址变换过程分两步进行,第一步由分段部件将逻辑地址转换为线性地址,并将该地址送分页部件:第二步由分页部件将线性地址变换为物理地址。如果仅用分段存储管理方式,其分页部件将被旁路(失效),此时分段部件送出的线性地址便是物理地址,直接送内存地址寄存器。为了提高分段和分页的地址变换速度,在分段和分页部件中,都配置了高速缓冲存储器,作为快速段表和页表。80386支持分段,也支持分贞,可根据需要构成以下四种存储管理方式:1:不分段也不分贞的存储管理方式
Windows98虚拟存储技术 (1)Intel80386提供的存储管理方式 在Inte180386芯片中,包含了存储管理部件 MMU(Memory Management Unit),由它来提供实现虚拟存储器所需的硬件 支持,即请求段表(页表)机制、缺段(页)机构、地址变 换机构。其地址变换过程分两步进行,第一步由分段部件将 逻辑地址转换为线性地址,并将该地址送分页部件;第二步 由分页部件将线性地址变换为物理地址。如果仅用分段存储 管理方式,其分页部件将被旁路(失效),此时分段部件送 出的线性地址便是物理地址,直接送内存地址寄存器。为了 提高分段和分页的地址变换速度,在分段和分页部件中,都 配置了高速缓冲存储器,作为快速段表和页表。 80386既支持分段,也支持分页,可根据需要构成以下四种存 储管理方式: 1.不分段也不分页的存储管理方式
Windows98虚拟存储技术-12.分页不分段存储管理方式(UNIX/386系统)。3分段不分页存储管理方式4.分段分页存储管理方式(2)分段存储管理1:段描述符表80386为每个用户任务所配置的段表,称为局部描述符表LDT(LocalDescriptorTable)。其中,每个表项为一个段的描述符,共8个字节长。此外,还配置了一张对系统任务都有用的全局描述符表GDT(GlobalDescriptorTable)。在任一时刻GDT和某一个LDT是可被访问的,在分段部件中,还配置了全局描述符表寄存器GDTR和局部描述符表寄存器LDTR。它们都是6个字节长,分别指向当前的GDT和LDT。两个描述符的格式基本上相同。如图所示各字段说明如下:
Windows98虚拟存储技术-1 2.分页不分段存储管理方式(UNIX/386系统)。 3.分段不分页存储管理方式。 4.分段分页存储管理方式。 (2)分段存储管理 1.段描述符表 80386为每个用户任务所配置的段表,称为局部描述符表LDT (Local Descriptor Table)。其中,每个表项为一个段的 描述符,共8个字节长。此外,还配置了一张对系统任务都有 用的全局描述符表GDT(Global Descriptor Table)。在任 一时刻 GDT和某一个LDT是可被访问的,在分段部件中,还配 置了全局描述符表寄存器GDTR和局部描述符表寄存器LDTR。 它们都是6个字节长,分别指向当前的GDT和LDT。两个描述符 的格式基本上相同。如图所示。 各字段说明如下:
Windows98虚拟存储技术-2段的基址:32位,定义了段在4GB线性地址空间中的始址。段界限值:规定了段的最大长度。其单位可以是字节或页(4KB),这取决于粒度单位G。当G为1时,表示段长是以页为单位;当G为0时,表示段长以字节为单位。由于段长为20位,故当G为1时,最大段长为4GB。段的基址15......0段界限值15.....0段基址界限值PDPLSTYPEA段基址GDOO1619...1623...31... 240312319128 71615
Windows98虚拟存储技术-2 • 段的基址:32位,定义了段在4GB线性地址空间中的始址。 • 段界限值:规定了段的最大长度。其单位可以是字节或页 (4KB),这取决于粒度单位G。当G为1时,表示段长是以页 为单位;当G为0时,表示段长以字节为单位。由于段长为20 位,故当 G为1时,最大段长为4 GB。 31 23 19 1615 12 8 7 0 段的基址15.0 段界限值15.0 段基址 G D 0 0 界限值 P DPL S TYPE A 段基址 31. 24 19. 16 23. 16
Windows98虚拟存储技术-32.分段的地址变换机构·段寄存器在80386处理器中,共有6个段寄存器。它们是:代码段寄存器CS、栈段寄存器SS、四个数据段寄存器DS、ES、FS和GS。段寄存器和8086一样仍为16位。在实方式时,段中存放段的基址的高16位。因此,将它左移4位后与偏移量相加,便形成20位的物理地址。但在保护方式下,16位的段寄存器已不足以用来存放32位的段的基址,所以在段寄存器中所存放的是指向描述符表中某个描述符的指针。此时,段寄存器中的TI(1位)用来指示描述符表的类型,即或者指示选择全局描述符表,或者指示选择局部描述符表。RPL(2位)为请求者的特权级。描述符表项索引Index(13位)可用来在8K个描述符中任选其一。·虚地址结构和地址变换
Windows98虚拟存储技术-3 2.分段的地址变换机构 • 段寄存器 在80386处理器中,共有6个段寄存器。它们是:代码段寄存 器CS、栈段寄存器SS、四个数据段寄存器 DS、ES、FS和GS。 段寄存器和8086一样仍为16位。在实方式时,段中存放段的 基址的高16位。因此,将它左移4位后与偏移量相加,便形成 20位的物理地址。但在保护方式下,16位的段寄存器已不足 以用来存放32位的段的基址,所以在段寄存器中所存放的是 指向描述符表中某个描述符的指针。此时,段寄存器中的TI (l位)用来指示描述符表的类型,即或者指示选择全局描述 符表,或者指示选择局部描述符表。RPL(2位)为请求者的特 权级。描述符表项索引Index(13位)可用来在8K个描述符中 任选其一。 • 虚地址结构和地址变换
Windows98虚拟存储技术-4在80386中的虚地址结构如下:段号STI偏移量RPL13位32位1位2位其中,TI为描述符表类型;RPL是请求者特权级;S为段号Index项,用来选择描述符。其前16位实际上是放在段寄存器中的。分段部件中,是将逻辑地址变换为线性地址,在进行地址变换时,首先是从相应的段寄存器中取得段号S,即获得指向段描述符表的指针Index,如果此时TI=O,则从GDT中选择一描述符;否则(TI=1),从LDT中选择一描述符。从所获得的描述符中可得到段的基址,然后将段的基址与偏移量相加,得到线性地址。对于只分段、不分页的存储管理方式,此线性地址就是内存的物理地址;若是既分段、又分页的存储管理方式,则还须将此线性地址送分页部件,再形成物理地址
Windows98虚拟存储技术-4 在80386中的虚地址结构如下: 13位 1位 2位 32位 其中,TI为描述符表类型;RPL是请求者特权级;S为段号Index 项,用来选择描述符。其前16位实际上是放在段寄存器中的。 分段部件中,是将逻辑地址变换为线性地址,在进行地址变换 时,首先是从相应的段寄存器中取得段号S,即获得指向段描 述符表的指针Index,如果此时TI=0,则从GDT中选择一描述 符;否则(TI=1),从 LDT中选择一描述符。从所获得的描 述符中可得到段的基址,然后将段的基址与偏移量相加,得 到线性地址。对于只分段、不分页的存储管理方式,此线性 地址就是内存的物理地址;若是既分段、又分页的存储管理 方式,则还须将此线性地址送分页部件,再形成物理地址。 段号S TI RPL 偏移量