3. 分段存储管理
段式存储管理的主要动机:
- 方便编程:能根据名字来访问程序段和数据段
- 信息保护、共享、动态增长
- 共享是以信息的逻辑单位为基础的。页是存储信息的物理单位,段是信息的逻辑单位。
- 动态链接
分段地址空间
- 一个段可定义为一组逻辑信息,每个作业的地址空间是由一些分段构成的(由用户根据逻辑信息的相对完整来划分),每段都有自己的名字(通常是段号),且都是一段连续的地址空间(段内连续,段间不要求连续),首地址为0。
段表
-
每个进程都有一张段表,记录了该段在内存中的始址和长度
-
段表保存在内存中(段表内有段号、段长、基址/始址【物理地址】)
-
段表的基址及长度由段表寄存器给出
-
访问一个字节的数据/指令需访问内存2次(段表1次,内存1次)
逻辑地址由段号和段内偏移量组成
地址变换过程【王道P178】
- 依次检查段号和段内地址不越界
分段管理的优缺点
- 优点:
- 易于实现段的共享,对段的保护也十分简单。
- 更好地支持动态的内存需求
- 缺点:
- 处理机要为地址变换花费时间;要为段表提供附加的存储空间。
- 为满足分段的动态增长和减少外碎片,要采用内存紧凑的技术手段。
- 在辅存中管理不定长度的分段比较困难(交换)。
- 分段的最大尺寸受到主存可用空间的限制。
段保护:存取控制保护、地址越界保护
段共享
-
段共享通过两个作业的段表中相应表项指向被共享的段的同一个副本来实现
与页式管理优缺点对比
- 分页的作业的地址空间是单一的线性地址空间,分段作业的地址空间是二维的。
- “页”是信息的“物理”单位,大小固定,由系统决定。“段”是信息的逻辑单位,其长度不定,由用户编写的程序决定。
- 分页对用户不可见,分段对用户可见
- 分段更容易实现信息的共享与保护
4. 段页式管理:分段+分页
基本思想:用分段方法来分配和管理虚拟存储器;用分页方法来分配和管理实存储器。
实现原理
-
段页式存储管理是分段和分页原理的结合,即先将用户程序分成若干个段(段式) ,并为每一个段赋一个段名,再把每个段分成若干个页(页式) 。
-
用分段方法来管理和分配用户地址空间,用分页方法来管理物理存储空间
-
其地址结构由段号、段内页号、页内位移三部分所组成。
-
系统中设段表和页表,均存放于内存中。读一字节的指令或数据须访问内存3次。为提高执行速度可增设TLB
-
每个进程一张段表,每个段一张页表。
-
段表含段号、页表始址/页表存放的物理块号和页表长度。页表含页号和块号
利用段表和页表实现地址映射
段页式存储管理的地址变换【王道P180】
实例:X86的段页式地址映射