1.基本原理
- 内存被划分成大小固定相等的块(Frame 帧、页框、主存块),且块相对比较小。
- 每个进程装入时被分成同样大小的页(Page)一页装入一帧
- 整个进程被离散装入到多个不连续的帧
下面来看一个分页存储管理的例子
2.页面长度
页面的尺寸(页面长度)由计算机系统的硬件决定。
对于某台具体的机器来说,只能规定一种尺寸。
目前流行的页面尺寸是1 KB到4KB之间,但也有一些 机器不在此范围内。
比如,小型机IBM AS/400的页面尺寸为512个字节。
3.记录内存使用情况的数据结构
位示图: 整个系统一张,记录内存使用情况
位示图的使用:
分配时,查位示图,找空闲帧: k=i*L+j
回收时,i= [k/L] //整除
j= k MODL //取余
由帧号可知位示图中字号和位号
设字号i、位号j、帧号k取值均从0开始,字长记为L,一个0/1位对应一个帧的空闲/占用。
4.记录每个进程分页及占用内存情况的数据结构
- 为了保证程序的正确运行,分页管理机制应为每个进程建立一个数据结构——页表PT(Page Table)。
- 页表中登记进程各页面对应的帧号,供地址映射使用。
页表:每个进程一张PT, 记录本进程分页及占用帧的情况
5.页面分配算法
- 计算请求者需要的总帧数N。
- 查位图,若找不到足够的空闲帧,编制分配失败报告返回。
- 索取一个空闲页表PT。
- 从位图中找出N个为0位,计算出对应的帧号,填入PT。
- 位示图中将这些位改为1。
- 将PT起始地址填入进程的PCB中。
- 结束。
6.地址划分
- 进程装入之前,逻辑地址是一维的
- 进程装入之后,逻辑地址分为两维
高端地址部分 作为页号
低端地址部分 作为页内的偏移量(即页内地址)
若机器的地址码是16位,页面长度是1KB,则地址划分结果:低10位是页内地址,高6位是页号。
这样的地址结构,允许一个进程的页面总数达64页。
7.地址重定位
8.分页式存储管理中的地址形式
9.地址保护
10.页面共享
总结
- 离散存储,利于大进程装入
- 只有很少的页内碎片,提高内存利用率
- 位示图、页表;动态地址重定位
- 页面共享不易实现