段和页的原理以及之间的关系

段是一块连续的内存区域,它是基本的内存保护单位。描述一个段不但需要段的基址,还需要段长和各种保护信息。所以,采用段描述符来描述段。

段描述符是一个大小为8个字节的数据结构,期一般的格式如下图所示:

段和页的原理以及之间的关系

段和页的原理以及之间的关系

基地址:由地2、3、4、7四个字街组合而成,定义了该段在线性地址空间中的开始位置。基地址可以在0~4GB之间浮动,但最好是16字节对齐。

粒度标志G:G=0时,段以字节为单位;G=1时,段以页(4KB)为单位。

段界限:定义了段的大小,有描述符中的0、1字节和6字节的低4位组成,共20位,它和G一起确定段的大小。G=0时,段以字节为单位,最大段长为1MB;G=1时,段以页(4KB)为单位,最大段长为4GB。

存在标志P:P=0,表示段不在物理内存中;P=1,表示段在物理内存中。

因为要经常使用段描述符,因此需要一种标识它的简单方法,这就是段选择符。它是表示一个段的16 位标识符,它的结构如下图所示:

段和页的原理以及之间的关系

Index:通过该索引可以在描述符表中找到所选择的段描述符。

TI:TI=0,表示描述符表为全局描述符表;TI=1,标识描述符表为局部描述符表。

程序中的逻辑地址由两部分组成:段选择符和偏移量。从逻辑地址到线性地址的转换要经过描述符表:以段选择符为所以呢查找描述符表,得到一个段描述符;从描述符中获得段的基址,再加上偏移量即可得到一个线性地址。转换过程如下图所示:

段和页的原理以及之间的关系

段是一种基本的内存管理机制,他能把处理器的线性地址空间划分为小的地址段。段与段之间是相互独立的,对段的访问要受到严格的检查和保护。段可以再进一步划分成页,分页机制是可选的。分页机制提供了对虚拟内存的最基本的支持,是现代操作系统中内存管理的基础。与段不同,页的大小是固定的,也可以在内存中,也可以在外存上。

处理器的控制寄存器中有三个标志用于控制分页:

CR0中的PG:PG=1,表示启用分页;PG=0,表示不启用分页。这在操作系统初始化时设置。

CR4中的PSE:PSE=1,表示页的大小为4MB或2MB;PSE=0,表示页的大小为4KB。

PAE:PAE=1,表示采用了36位物理地址模式;PAE=0,则没有。

有逻辑地址转换到线性地址需要用到描述符表,而由线性地址转换到物理地址需要用到页目录和页表,一个线性地址被分为三部分:页目录、页表和偏移量。

这就解释了段和页之间的关系。

线性地址转换为物理地址的过程如下图所示:

段和页的原理以及之间的关系

在分页机制中,线性地址转换为物理地址,必须要知道使用的页目录的位置。所以,Intel提供了寄存器CR3,它用来存放当前使用的页目录的物理地址,因此CR3寄存器幼教页目录基址寄存器(PDBR)。


分享到:


相關文章: