分段分页
在操作系统中,分段分页提供了更好的性能和CPU利用率,因为它结合了分段和分页的过程。分段被称为一种内存管理技术,其中内存被划分为可以分配给进程的段。这些段的长度可能不固定,并且不一定以连续的方式存储。段表保存与段和进程相关的所有详细信息。生成逻辑地址,该地址通过参考段表由CPU转换为物理地址。此表包含有关段的两个字段,它们是基地址和限制。基地址或段基地址表示段的基地址,该地址保存段的初始物理地址,而限制表示段的长度。
根据进程如何划分为段以及将其定位在内存区域中的方式,分段可以分为虚拟分段和简单分段。分页是从辅助存储器将进程提取到内存中的一种技术。这里,每个进程都被划分为相等大小的页面,这些页面存储在非连续的内存位置。
分段分页
当虚拟地址空间很大、页面在主内存中占用更多空间以及某些映射的地址可能无效时,分页存在缺点。为了克服此内存空间问题,使用分段分页来减小页表的大小。在这种技术中,实际内存被划分为段,而这些段又被划分为固定大小的页面。存储在内存中的输入程序或程序被划分为四个段,例如代码、数据、堆栈和堆段。此程序可以被划分为多个段,这些段位于段表内。
实现分段分页需要段表寄存器和页面映射表。虚拟地址被划分为三个部分,例如段号、页号和偏移量。段号指的是相应的段表,内存单元使用该表。分段表保存页表的基地址和限制。每个表项都指向页表位置,该位置又映射到段内的某个页面。
下图将清楚地显示使用分段表的映射。
物理地址
当程序开始执行过程时,CPU将为其生成逻辑地址。此地址包含两个字段:段号及其偏移量。段偏移量的值应小于限制。此逻辑地址转换在帧地址的帮助下发生,该地址可以从段表中获取。现在,页表将指向段在主内存中所在的帧。逻辑地址是段号+页号及其偏移量的组合。
简单来说,程序最初被划分为多个段,每个段都有一个相关的段表用于映射目的。此表存储页表的地址。最后,页表具有帧地址,该地址指向主内存的位置。
优点
由于页面大小固定,因此避免了外部碎片。
它减少了内存的使用,并且分配过程更简单。
段表恰好有一个条目映射对应于一个段。
通过将分段与分页结合使用,可以减小页表的大小。
缺点
存在内部碎片。
与分页相比,存储和访问的复杂性更高。
它需要使用硬件资源。
内存访问时间较长,因为遵循顺序转换过程。
页表以连续的方式存储在内存中。
在当今使用的现代操作系统中,由于页表大小和段表大小的变化,也可能发生外部碎片。
结论
内存碎片是分页和分段过程中一个主要问题。为了解决这些问题,将分段和分页两种技术结合起来映射物理地址。分段技术用于将进程划分为称为段的较小模块,并将相关数据组合成单个段以加载到内存中。划分模块的大小取决于输入进程的长度和类型。维护段表以存储有关段及其任务的信息。每个段在段表内都有一个关联的条目,并且页表映射到相应的段及其帧。CPU 使用此帧地址将逻辑地址或虚拟地址转换为物理地址,以定位已划分的段。