内存分页与分段

1.分段

分段本是由于8086是16位总线,为寻址20位内存地址而增加的。在32位操作系统中,分段依然有用。

1.1 段描述符 描述该段的安全属性,为一个64位长的值。

1.2 段描述符表 表中存放段描述符。

1.3 段寄存器 存放段描述符表的索引值,用于段选择子。

1.4 gdtr 该寄存器指向全局描述符表(gdt),gdt中保存操作系统使用的代码段,堆栈段等段描述符,及各个任务的ldt,gdt的内容不随任务的切换而切换。48位。

1.5 ldtr 该寄存器指向局部描述符表(ldt),ldt中保存当前任务所使用的代码段,数据段,堆栈段等的段描述符。ldt随任务的切换而切换。16位。

1.6 所有寄存器中cr3(保存当前也目录地址)中地址为物理地址,其他都为线性地址。

2 分页

2.1 如果没有分页机制,则由分段寻址方式计算出的地址即为物理地址。

2.2 分页机制为程序提供了4G的连续地址空间。

2.3 每个页占据4k,则4G的地址空间需要4G/4K = 1M个页。每个页需要4个字节来描述其物理基地址。这样则需要4M的地址空间存放页信息。

2.4 操作系统将每1024个页分成一组,组成一个页表,页表项中保存该页的物理基地址。则最多有1024个页表。

2.5 页表目录中有1024个项,每个项占用4个字节,项的内容为页表的地址。

 

分页和分段的主要区别


段是信息的逻辑单位,用户可见,长度可变
页是信息的物理单位,用户透明,长度固定
段式:若干独立的逻辑空间构成进程的非连续逻辑空间,二维地址空间
页式:一维地址空间
段式:物理空间不连续,但段内连续
页式:物理空间不连续

你可能感兴趣的:(内存分页与分段)