4--3
存储管理的离散分配方式
基本分页存储管理方式
作业逻辑地址空间有M大,就需要向内存申请一个M大的连续区域。
分页的目的是更细粒度的处理空间,减少粗放管理的浪费或开销问题。
离散分配内存:
作业规定大小划分成小份;内存也按同样大小划分成小份
作业的任一小份可分散放入内存任意未使用的小份
注:分页方式下,内存的使用率高,浪费少。但不是绝对没有碎片(进程的最后一页不总是能占满一个物理块)
1.几个概念
(1)页面:内存划分成多个小单元,每个单元K大小,称(物理)块。作业也按K单位大小划分成片,称为页面。
- 物理划分块的大小=逻辑划分的页的大小
- 页面大小要适中。
太大,(最后一页)内碎片增大,类似连续分配的问题。
太小的话,页面碎片总空间虽然小,提高了利用率,但每个进程的页面数量较多,页表过长,反而又增加了空间使用。
(2)页表:
为了找到被离散分配到内存中的作业,记录每个作业各页映射到哪个物理块,形成的
页面映射表,简称页表。
每个作业有自己的页表
页表的作用:页号到物理块号的地址映射
2.地址的处理
若要执行某作业的一条指令,其相对地址是24B (设10B一页,页表如下),其物理地址到底是多少呢?
1)分析其所在的页和偏移得:2号页(页号从0开始) ,偏移4B处是该条指令
2)查页表找页面对应的块(2号页保存在6号物理块)
3)找物理块6,向下偏移4B,找到要执行的指令。取出执行即可。
4)计算上就是求商(页号)及取余(偏移量)的过程
页表:
0 #3
1 #4
2 #6
3 #9
以上过程是在地址变换机构里完成的!!!!
但是 页面大小做除法不方便 所以引入新的方法(分析地质找特点)
逻辑地址空间分析
设一分页系统,页面大小为8B(设8条指令)
一个大小为 32B 的作业分配内存
8B对应一页 ,1B对应左侧1行,因此是2的3次方,可以用3位表示即图中的后三位