本文共 786 字,大约阅读时间需要 2 分钟。
在前面的博客中提到了连续分配方式。 本文主要是描述离散分配方式中的基本分页式存储管理。
为什么引入?
在连续分配方式中,内存分配之后会产生大量的“碎片”,虽然在可重定位分区分配方式中引入了“紧凑”的思想,但是会花费很多开销。 如果可以将一个进程离散的装入到许多不同的分区中,就没有那些麻烦了,于是离散分配方式的思想就产生了。
如果离散分配方式的基本单位是页,就称为分页存储管理方式;还有一种基本单位是段,称为分段式存储管理方式,这里先不介绍。
1) 页面和物理块
分页存储管理是将一个进程的逻辑地址空间分成若干个大小相等的片,称为页面或页,把内存空间分成与页面相同大小的若干个存储块,称为(物理)块或页框(frame),也同样为它们加以编号。在为进程分配存储空间的时候,以块为单位将进程中的若干页放入可不相邻接的物理块中。由于进程的最后一页经常装不满一块而形成了不可利用的碎片,称之为“页内碎片”。
2) 页面大小
在分页系统中的页面其大小应适中,且页面的大小应该是2的幂,通常为512B-8KB。每个页面的大小是固定的,由系统决定。
它含有两部分:前一部分为页号 P,后一部分为位移量 W(或称为页内地址)。 地址空间最多允许有1M页。
逻辑地址到页号和页内偏移量的转换:
页号=[ 逻辑地址 / 页面大小 ]
页内偏移量=[ 逻辑地址 MOD 页面大小 ]
页表的作用是实现从页号到物理块号的地址映射。
页表中的每一个页表项包含两个字段,一个是页号,另一个是块号。
逻辑地址到物理地址映射过程:
首先用页表长度和页号大小进行比较,如果页号大于或等于页表长度,则出现地址越界错误;
若没有出现越界错误,则先用页表始止与页号和页表项长度的乘积相加,可以得到该页表项在页表中的位置;然后在从页表项中读取到物理块号。
转载地址:http://owhai.baihongyu.com/