本文翻译自: Paging in OS (Operating System)
在操作系统中,分页是一种存储机制,用于以页面的形式将辅助存储器中的进程检索到主存中。
分页背后的主要思想是把每个进程以页面的形式分开,主存也将以页框(frame)的形式被分开。
进程中的一页被存储在主存的一个页框中,这些页会被存储在内存中不同的位置,但是优先级将总是能找到连续的页框。
只有当被需要时,进程中的页面被送入主存。否则它们就会驻留在辅助存储器中。
不同的操作系统定义了不同的页框尺寸,每个页框的大小必须是相同的。考虑到在分页中,页面被映射到页框的事实,页的大小需要与页框的大小相同:
案例:
让我们假设下主存大小16KB,页框的大小是1KB,因此主存将被分成16个页框的集合,每个页框1KB。
系统中分别有4个进程P1、P2、P3、P4,每个进程4KB。每个进程被分成了多个1KB的页面。以至于一个页可以被存进一个页框中。
起初,所有的页框都是空的,因此进程的页将以连续的方式被存入。
页框、页和它们之间的映射如下图所示:
我们现在假设P2和P4在某个时刻被移到了等待状态,现在,8个页框空了出来,因此其他的页能够被加载到空位。大小为8KB的进程P5在等待队列等待。
基于这样的事实,我们在内存中有8个不连续的页框可用,并且分页机制提供了在不同地方存储进程的灵活性。因此,我们可以将P5进程加载到P2、P4进程原来所在的地方。
内存管理单元
内存管理单元(MMU)的目的是把逻辑地址转换成物理地址。逻辑地址是CPU为每个页生成的地址,而物理地址是页框的实际地址,是页将被存储的地方。
当一个页被CPU使用逻辑地址访问时,操作系统需要获得物理地址去物理性的访问这个页。
逻辑地址两部分:
页号
偏移量
OS的内存管理单元需要把页号转换成页框号。