❶ 一文读懂存储管理之页式、段式、段页式存储及优缺点
内存管理方式分为页式管理、段式管理和段页式管理。页式管理将进程虚拟空间划分为等长页,建立页表实现地址转换,优点是没有外碎片,每个内碎片不超过页大小,但要求硬件支持,增加了系统开销。段式管理按内容或函数关系分段,每个段对应一个二维虚拟空间,便于共享与保护,但会产生碎片。段页式管理结合了两者优点,但复杂性和开销增加,需要额外的硬件支持。
页式管理中,内存空间按页大小划分,通过页表将虚拟地址转换为物理地址。优点是没有外碎片,每个内碎片不超过页大小,但需要硬件支持,如缺页中断和页面淘汰机制,增加了系统成本和开销。
段式管理以段为单位分配内存,每段有自己的名字,支持按段进行共享和保护。优点是便于编写和编译,可以分别处理不同类型的段,但会产生碎片,需要段表管理内存分配与释放。
段页式管理结合了页式和段式管理的优点,为每个段建立页表,实现更细粒度的地址转换。它具有两者的优点,但复杂性增加,需要额外的硬件支持,执行速度可能下降。
在页式、段式和段页式管理中,页表是关键组件之一,负责地址转换,实现虚拟内存与物理内存的映射。页表管理内存分配、释放与页面保护等功能。段表用于段式管理,包含段的信息,如段的大小、起始地址等,用于段的分配和管理。
页式、段式和段页式管理的主要区别在于管理方式和粒度。页式管理以页为单位,提供简洁的内存管理,但可能存在内存浪费。段式管理以段为单位,提供更灵活的内存管理,支持代码共享和保护,但可能产生碎片。段页式管理结合了两者优势,提供更细粒度的管理,但复杂性增加。
总结而言,内存管理方式的选择取决于应用的需求,包括内存使用效率、代码共享与保护的需求,以及系统的复杂性和执行效率。页式管理简洁高效,适用于大部分场景;段式管理提供更灵活的内存管理,支持代码共享和保护,适用于多任务系统;段页式管理结合两者优点,适用于对内存管理有较高要求的应用。