开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第8天,点击查看活动详情
分段存储管理基本思想
程序地址空间
- 按照程序自身逻辑关系划分成若干个段,每个段都有一个段名和段号
- 段号从0开始
- 每段段内从0开始编址,段内地址连续
逻辑地址
| 段号 | 段内地址 |
|---|
内存地址空间
- 内存空间被动态的划分为若干个长度不相同的区域,称为物理段;
- 每个物理段由起始地址和长度确定。
内存分配
- 以段为单位分配内存,每一个段在内存中占据连续空间;
- 各段之间可以不连续存放。
逻辑地址
空闲块管理
空闲块表(列)
内存分配算法
- 首次
- 最佳
- 最坏
段地址映射
- 地址映射数据结构
- 每一进程有个段表,它的每一个段在段表中占用一个表目;
- 段表一般包括有段的首址、段的长度和存取状态等信息。
- 段表首址指针和段表的长度存放在进程PCB,当前进程的还需装入寄存器。
段地址映射由硬件地址变换机构完成
段地址映射过程为:
- 程序地址送入虚地址寄存器VR中;
- 取出段号S和段内位移W;
- 根据段表首址指针找到段表,查找段号为的表目,得到该段的首地址;
- 把段首地址与段内位移相加,形成内存地址送入MR中,并以此地址访问内存。
存储保护
- 防止越界访问
- 段号、段内地址
- 防止越权访问
快表
和页地址变换一样,段地址变换中,也有两次访问内存的问题,为了加快访问内存的速度也可以采用快速存储器来组成快表
分段与分页技术比较
分段与分页主要有以下差别:
- 页大小是系统固定的,段大小通常不固定。
- 分页是出于系统管理的需要,分段是出于用户应用的需要。
- 一条指令或一个操作数可能会跨越两个页的分界处,而不会跨越两个段的分界处。
- 逻辑地址表示
- 分页是一维的,各个模块在链接时必须组织成同一个地址空间;
- 分段是二维的,各个模块在链接时可以每个段组织成一个地址空间。
- 通常段比页大,因而段表比页表短,可以缩短查找时间,提高访问速度。
这一节是段的入门,要打好基础呀