操作系统中的分段2025年5月6日 | 阅读 6 分钟 引言操作系统采用一种称为分段的内存管理技术,该技术将内存划分为各种大小的块。每个称为段的部分都可以分配给一个进程。通过分段来传达用户的进程视角,而不是通过分页。 无需将划分的段存储在集成内存中。不发生链接内存分配,因此不发生内部分区。程序和内存段的总体长度取决于用户软件中该部分的目的。 操作系统中的分段在操作系统中,分段是一种内存管理技术,其中内存被划分为可变大小的部分。每个部分称为段,可以分配给进程。 每个段的详细信息存储在一个称为段表的数据结构中。段表存储在一个(或多个)段中。 段表主要包含段的两个信息
OS 中分段的类型以下是操作系统 (OS) 中分段的类型 ![]() 1. 虚拟内存在此分段变体中使用虚拟内存技术来管理段。通过为内存组织添加另一层抽象,它提高了系统适应不断变化的需求的能力。 2. 简单顾名思义,这是最基本的分段类型。该方法通过对程序进行分段而不利用复杂的内存管理策略,提供了简单而高效的内存组织。 为什么需要分段?到目前为止,我们一直使用分页作为主要的内存管理技术。分页比用户更接近操作系统。它将所有进程划分为页的形式,而不考虑进程可能具有一些需要加载到同一页中的相对部分。 操作系统不关心用户对进程的视图。它可能会将同一个函数划分为不同的页,并且这些页可能不会同时加载到内存中。这会降低系统的效率。 最好采用分段,将进程划分为段。每个段包含相同类型的函数,例如主函数可以包含在一个段中,库函数可以包含在另一个段中。 ![]() 通过段表将逻辑地址转换为物理地址CPU 生成一个逻辑地址,该地址包含两个部分
例如 假设使用 16 位地址,其中 4 位用于段号,12 位用于段偏移量,则最大段大小为 4096,可引用的最大段数为 16。 当程序加载到内存时,分段系统会尝试查找足够大的空间来容纳进程的第一个段,空间信息从内存管理器维护的空闲列表中获取。然后它会尝试为其他段查找空间。一旦为所有段找到足够的空间,就会将它们加载到各自的区域。 操作系统还为每个程序生成一个段映射表。 ![]() 借助段映射表和硬件支持,操作系统可以在程序执行时轻松地将逻辑地址转换为物理地址。 段号被映射到段表。将相应段的界限与偏移量进行比较。如果偏移量小于界限,则地址有效,否则会报错,因为地址无效。 在地址有效的情况下,将段的基址加上偏移量即可获得主内存中实际字的物理地址。 上图显示了在分段情况下如何进行地址转换。 分段的必要性是什么?为了应对分页技术存在的问题,开发了分段。在操作系统中,分页是频繁地将函数或代码块划分为页面,而不考虑相关代码段的可能划分的过程。为了确保相关的代码可用于执行,CPU 在进程运行时必须将多个页面加载到帧中。由于更多的页面被加载到主内存中,分页的效率会降低。 然而,作为一种解决方案,引入了分段。通过将代码分解为离散的模块,可以确保相关的代码段可以分组到单个块中。通过限制将进程加载到主内存所需的页面数量,这种模块化方法通过允许 CPU 只加载必需的组件来提高效率。 区分用户对物理内存的看法和物理内存的实际视图是许多内存管理策略的严重缺陷。分段解决了这个问题,它根据特定需求将用户程序划分为不同的部分,提供了更简化和定制化的内存管理方法。 分段的优点
缺点
结论尽管分段提供了许多优点,但重要的是要记住它也有局限性。分段可能需要升级才能满足现代动态生成内存结构带来的问题,因为管理可变大小的段可能很困难。为了提高内存组织和安全性,许多现代操作系统将分段与分页相结合,或采用其他内存管理策略。 常见问题1. 定义操作系统中的分段。 回答:分段是一种操作系统内存管理技术,用于提高内存利用效率。该方法将程序的地址空间划分为可变大小的块,每个块代表一个逻辑程序单元,如代码、数据或堆栈。与分页等其他内存管理策略中使用的固定大小分区相比,分段可以根据程序的特定需求更灵活地分配内存资源。 2. 如何进行分段? 回答:在分段内存模型中,每个段都有唯一的长度和标识。当程序被放入内存时,操作系统会记录每个段的长度及其基址。当软件访问内存时,它使用一个由段标识和段内偏移量组成的二维地址。操作系统将匹配段的基址与偏移量相加,将此逻辑地址转换为物理地址。 3. 分段的优点和缺点是什么? 回答:分段的优点包括改进的模块化、对动态数据结构的支持以及跨多个进程的有效代码共享。然而,它也带来了新的问题,如内部碎片和外部碎片。内部碎片发生在段内剩余未使用的内存时,而外部碎片发生在整个系统中分散了空闲内存时。 尽管存在这些局限性,分段仍有几个优点,如模块化程序架构和动态数据结构支持。另一方面,安装和管理分段可能比简单的内存管理策略更复杂,并且存在地址转换的开销,这可能会影响系统性能。 4. 分段与分页的区别? 回答:分配非连续存储器的过程或策略称为分页。其主题是划分,具有固定的大小。 另一种非连续存储器分配技术是分段。与分页不同,分段不会将进程随机划分为离散的固定大小单元。它是一种具有各种大小的划分主题。 5. 分段问题的一个例子是什么? 回答:当一家电信公司可能将其客户分为住宅客户和商业客户,每个客户都有自己的一套条款和价格时,就会出现分段问题。 6. OS 分段的目的是什么? 回答:由于整个段同时处于活动状态,并且用户对实际内存的看法与分段相似,因此提高了 CPU 性能。用户可以通过分段将他们的程序划分为模块。 下一个主题分页与分段的区别 |
我们请求您订阅我们的新闻通讯以获取最新更新。