段式存储管理
进程分段
把进程按逻辑意义划分为多个段,每段有段名,长度不定,进程由多段组成
例:一个具有代码段、数据段和堆栈段的进程
段式内存管理系统的内存分配
- 以段为的单位装入,每段分配连续的内存
- 到那时段和段之间不要求响铃
段式系统的虚拟地址
段式虚拟地址VA包含段号S和段内偏移W
VA:(S, W)
段式地址的映射基址
段表(SMT,Segment Memory Table)
记录每段在内存中映射的位置
段号S:段的编号(唯一的)
段长L:该段的长度
基地址B:该段在内存中的首地址
段式地址映射过程
由逻辑地址VA分离出(S, W)
查询段表
- 检索段号S, 查询该段及地址B和长度L
物理地址MA = B + W
段表的扩充
基本字段:段号,长度,基址
扩展字段:中断位,访问位,修改位,R/W/X
段的共享
- 共享段在内存中只有一份存储
- 共享段被多个进程映射到各自段表
- 需要共享的模块可以设置为段都的段
段式系统的缺点
- 段需要连续的存储空间
- 段的最大尺寸收到内存大小的限制
- 在辅存中管理可变尺寸的段的比较困难
段式系统vs页式系统
地址空间的区别
- 页式系统:一维地址空间
- 段式系统:二位地址空间
段与页的区别
- 段长可变,页面大小固定
- 段的划分有意义,页面无意义
- 段方便共享,页面不方便共享
- 段用户可见,页面用户不可见
- 段偏移有一处,页面偏移无溢出
段页式存储管理
在段式存储管理中结合页式存储管理计时
在段中划分页面
段页式系统的地址构成:段号 页号 页内偏移
- 逻辑地址:段号S,页号P和页内偏移W
- 内存按页划分,按页装入
段页式地址的映射机构
同时采用段表和页表实现地址映射
- 系统为每个进程建立一个段表
- 系统为每个段建立一个页表
- 段表给出每段的页表及地址以及页表长度(段长)
- 页表给出每页对应的页框