2020年(VR虚拟现实)第三章x86的虚拟存储系统
- 格式:doc
- 大小:301.00 KB
- 文档页数:9
(VR虚拟现实)第三章x86的虚拟存储系统
第三章x86的虚拟存储系统
Linux操作系统当前主要在Intel80386、80486和Petium系列机器上运行,它们统称为x86机器。x86具有两种存储器管理模式:实地址模式和受保护的虚地址模式,后者简称保护模式。在实地址模式下,CPU只能寻址1MB的内存空间。在保护模式下,x86提供了实现虚拟存储的硬件机制,它是操作系统实现多进程(多进程)存储管理以及提供存储保护的硬件基础。
§3.180386的虚拟地址空间
x86的系统结构中专门设置了用于实现虚拟存储技术的硬件机制,即分页和分段机制。各个进程的存储区域彼此隔离,每个进程都可以独立使用自己的虚拟地址空间,从而保证了进程的信息安全。
一.x86的地址转换机制
程序代码和数据都是存放在内存储器中,内存储器又称物理存储器,物理存储器是CPU可以直接访问的存储空间。80386机器的地址总线为32位,由它确定的物理地址空间的范围可达232字节,即4G字节。
指令中访问存储空间的地址称为逻辑地址,由逻辑地址确定的存储空间称为逻辑地址空间。x86的逻辑地址为48位,由它确定的逻辑地址空间可达64T字节。
逻辑地址必须转换成物理地址后才能访问物理存储器。在x86中逻辑地址由分段机制把逻辑地址转换成线性地址。再由分页机制把线性地址转换成物理地址。
二.80386的虚拟地址空间
x86把虚拟地址空间分成性质不同的两部分:全局地址空间和局部地址空间。全局地址空间是系统中所有的进程共享的地址空间,通常存放操作系统资源和数据。局部地址空间由各个进程使用,用于存储进程各自的代码和数据等。x86分段机制对虚拟地址空间实行分段管理,把虚拟地址空间分成大小不同的存储段。一个段的空间最大可达232字节,即4GB。64TB 的虚拟地址空间最多可以分为16K个段。其中全局地址空间和局部地址空间最多可以各有8K个段,称为全局段和局部段。
§3.2段描述符表
一.段描述符表
在分段存储管理中,使用段描述符表记录各个进程使用的段空间位置、大小和有关属性。段描述符表的表项称为段描述符。每个段描述符的长度为8字节。对应全局段和局部段,系统提供全局描述符表GDT和局部描述符表LDT。GDT以由所有的进程共享,系统中只有一个
GDT。LDT用于描述进程的各个局部段。每个进程都有属于它的LDT,即系统中有多少个进程就有多少个LDT。
系统的GDT和各个
进程的LDT都存放
在线性地址空间的
特定区域内。
二.全局描述符表GDT
GDT在线性地址空间中的位置是由全局描述符表寄存器
GDTR的值确定的。GDTR寄存器的长度为48位:
4716150
GDTR 表基址表限
GDT中一般包括三种不同种类的描述符。
●系统内核代码段和数据段的描述符
●进程状态段(TSS)的描述符
●LDT描述符,每个进程的LDT描述符
在GDT中的位置,记录在该进程TSS
段的一个16位的位域中,该位域的值
称为LDT选择符。
三.局部描述符表LDT
在多进程操作系统中,对于一个进程的代码段和数据段的描述和定义是由局部描述符表LDT 完成的。每个进程都有自己的LDT,它存放在该进程独立的虚拟地址空间中。一个进程的LDT 中至少包括3个描述符。
NULL
用户代码段描述符
用户数据段描述符
当进程LDT的定位是局部描述符表寄存器LDTR
和相应的LDTR高速缓存实现的:
LDTR寄存器LDTR高速缓存
1504716150
选择符(16位) LDT表基址(32位) 表限(16位)
LDTR是指出当前进程的LDT描述符在全局描述符表GDT中的位置。在进程切换时,系统从当前进程的TSS中取出LDT选择符的值,装入LDTR寄存器内。LDT的表限为16位,由它确定的最大地址空间为216,即64K字节。每个描述符的长度为8字节,一个LDT最多可以拥有8K个描述符。每个描述符对应一个局部段,所以系统中一个进程最多可以有8K个局部段。
§3.3逻辑地址向线性地址的转换
一.线性地址空间
每个进程必须有自己独立的存储空间,这个由进程使
用的存储空间就是线性地址空间,线性地址空间仍是
虚拟存储空间。通过分段机制把每个进程在逻辑地址
空间的代码段和数据段映射到进程的线性地址空间。
除此之外,操作系统本身也必须映射到进程的线性地
址空间中。
进程的线性地址空间被
分成系统区和用户区。系统区用于存放操作系统的代码、数据和各种全局数据结构。用户区
用于存放进程的代码、数据、堆栈以及进程的各种数据结构 二.逻辑地址向线性地址的转换
在程序指令中使用的逻辑地址格式如下所示。 4732310
选段符
段内偏址
16bit32bit
把逻辑地址中的选段符装入段寄存器中,把段内偏址通用寄存器中,经过分段机制的转换后成为32位线性地址在保护模式下,x86的段寄存器CS 、DS 、SS 、ES 、FS 和GS 称为选段符寄存器。
16位64位段描述符高速缓存寄存器 选段符段描述符
寄存器访问权限段基址段限
C S
D S S S
E S
F S
G S
程序人员可见程序人员不可见,其值由MPU 透明装入 §3.4选段符与段描述符 一.选段符
选段符的作用是确定所选段的段描述符在段描述符表中的位置。 153210
RPL:请求特权级,即访问者的特权级,分为0、1、2、3 四级,0级最高,3级最低。Linux 中仅使用两个级 别,0级为内核级,3级为用户级。