目录
分段存储管理的逻辑
名词解释
逻辑地址到物理地址的转换
快表机构
分段存储管理的优点
分段与分页的对比
地址结构
段的共享与保护
分页、分段的优缺点分析
分段存储管理的逻辑
分段存储管理的核心思想是将程序按照其逻辑关系划分为若干个段,每个段都有一个段名,并且每段从0开始编址。这种划分方式使得内存分配以段为单位进行,每个段在内存中占据连续空间,但各段之间可以不相邻。这种设计允许程序的各个部分独立地进行内存分配和管理。
名词解释
- 段号的位数:决定了每个进程最多可以分几个段。
- 段内地址位数:决定了每个段的最大长度是多少。
- 段表:
- 段表项(长度相同):
- 段号(隐含):从0开始。
- 段的内存起始地址(基址):指向该段在内存中的起始位置。
- 段长:表示该段的长度。
- 段表项(长度相同):
逻辑地址到物理地址的转换
逻辑地址到物理地址的转换过程如下:
- 段表寄存器:存放段表在内存中的起始地址F和段表长度M。这些信息存放在进程控制块(PCB)中,当进程被调度时,操作系统内核会将F和M放到段表寄存器中。
- 步骤:
- 根据逻辑地址得到段号S和段内地址W。
- 判断段号是否越界。如果S≥M,则产生越界中断,否则继续执行。
- 查询段表,找到对应的段表项,段表项的存放地址为F+S*段表项长度。
- 检查段内地址是否超过段长。如果W≥C,则产生越界中断,否则继续执行。
- 计算得到物理地址:段基址b+段内地址W。
- 访问目标内存单元。
快表机构
为了提高地址转换的效率,可以引入快表机构。快表是一种缓存机制,它存储最近访问的段表项,从而减少对主存段表的访问次数。
分段存储管理的优点
- 便于实现共享:两个作业的段表中相应表项指向被共享段的同一物理副本实现。
- 可重入代码:不能被修改的代码称为纯代码或可重入代码(不属于临界资源),这样的代码是可以共享的。
分段与分页的对比
-
分页:
- 优点:内存分配简单,易于实现。
- 缺点:不方便按照逻辑模块实现信息的共享和保护。如果段长过大,为其分配很大的连续空间会很不方便。另外,段式管理会产生外部碎片。
-
分段:
- 优点:很方便按照逻辑模块实现信息的共享和保护。
- 缺点:如果段长过大,为其分配很大的连续空间会很不方便。另外,段式管理会产生外部碎片(可以使用“紧凑”技术解决,但需要较大的时间代价)。
地址结构
地址结构由段号S和段内偏移量W组成。段表每个进程都有一张映射逻辑地址空间和物理地址空间的段表,每个段表项对应进程的一段。段号(隐含)+段长+本段在主存中的始址。
段的共享与保护
- 共享:通过两个作业的段表中相应表项中指向被共享的段的同一个物理副本实现。
- 保护:存取控制保护+地址越界保护。例如,用户进程由主程序、两个字程序、栈和一段数据组成,于是可以把这个用户进程划分为5段,每段从0开始编址,并给每段分配一段连续的地址空间,但段与段之间可以不连续。
分页、分段的优缺点分析
-
分页:
- 优点:内存分配简单,易于实现。
- 缺点:不方便按照逻辑模块实现信息的共享和保护。如果段长过大,为其分配很大的连续空间会很不方便。另外,段式管理会产生外部碎片。
-
分段:
- 优点:很方便按照逻辑模块实现信息的共享和保护。
- 缺点:如果段长过大,为其分配很大的连续空间会很不方便。另外,段式管理会产生外部碎片(可以使用“紧凑”技术解决,但需要较大的时间代价)。