页式管理
从页式管理开始,到之后的段式管理,都与之前的分区管理不同,最大的区别就在于一个是分区管理是连续存储,二这两种方式可以非连续。
实现原理
首先是必要概念:
物理块:将物理存储空间划分为大小相等的若干存储块,每块大小为2的整数次幂,总大小在4KB-1GB之间。
页面:将进程的逻辑地址空间划分成的与物理块大小相同的若干片。
页表:存放于主存中,记录进程的逻辑页与主存中的物理块的对应关系,实现从页号到物理块号的地址映射,每一页对应一个表目,页表的长度和页表的主存起始地址存放于PCB中。
在进程分配内存时,以块为单位,将进程的多个页分别装入可以不连续的块中,逻辑地址空间占用m位,每一页大小为2的n次方个地址单元,所以页内位移号占用n个单位,剩下m-n个位表示页号。用页号去页表中寻找对应的项,由此找到物理块号,再加上本身带的页内偏移量,就可以得到物理地址。
动态地址变换
上图为基础地址变换的图示,首先强调的是页式存储管理的逻辑地址是一维的,和段式存储管理的二维不一样,尽管有页号与页内地址两个量,但是这个分离是由硬件做的,一开始是在一起的,而段式存储管理中,地址分离是我们来做的。
因为分