一个过程被划分为Segment。程序被划分成的块不一定都是相同大小的块称为段。分段为用户提供了分页不提供的过程视图。这里用户的视图被映射到物理内存。
细分的类型有:
- 虚拟内存分段——
每个进程被分成许多段,并不是所有的段都驻留在任何一个时间点。 - 简单细分——
每个进程被分成许多段,所有段都在运行时加载到内存中,但不一定是连续的。
分段中的逻辑地址和物理地址之间没有简单的关系。一个表存储有关所有这些段的信息,称为段表。
段表——将二维逻辑地址映射为一维物理地址。它的每个表条目都有:
- 基址:它 包含段驻留在内存中的起始物理地址。
- 限制:它指定段的长度。
二维逻辑地址到一维物理地址的转换。
CPU产生的地址分为:
- 段数(s):表示段所需的位数。
- 段偏移量 (d):表示段大小所需的位数。
细分的优势——
- 没有内部碎片。
- 与分页中的页表相比,段表消耗的空间更少。
分段的缺点——
- 随着进程从内存中加载和移除,空闲内存空间被分解成小块,从而导致外部碎片。