页式非连续分配方式。其出发点打破了程序装入的整体性和存储分配的连续性允许进程逻辑地址空间不必分布在内存的一段连续空间中,而是可以分布在若干非连续的内存块中。即内存分配时,以页为单位,并按用户进程包含的页数多少进行分配,逻辑上相邻的页面在内存中不一定相邻,即用户进程不一定要分配连续的物理内存块。每一个进程就需要页表对其进行管理。当进程要访问某个逻辑地址中的数据时,启动地址变换机制。地址变换机制首先将逻辑地址分为两部分:页号P和页内偏移量W,用页号P与页表长度寄存器的内容进行比较。
如果P大于等于页表长度,则表示访问地址超过了进程地址空间。
系统发出一个地址越界中断。
如果访问地址没有越界,则根据页表起始地址寄存器的内容得到页表在内存的首地址。
根据页号P在也表中查找对应的物理块号。若页表中无此页号。
则产生一个地址越界中断。
若页表中有此页号,则可得到对应的物理块号。
转换成可以访问的内存物理地址:物理地址=物理块号*页面长度+页内偏移。
系统提供了一对硬件寄存器来支持页表的查找和保护机制:页表始地址寄存器、页表长度寄存器。对程序的逻辑地址空间进行分页是由操作系统自动完成的。分页管理方式从系统管理角度出发,以页面为单位来分配内存,由于每个页面较小,就很好的解决了内存碎片的问题,提高了内存空间利用率。分页机制需要硬件支持,没有根除碎片,页面太少,即页长,是由机器的地质结构决定的,即硬件决定了操作系统中页面的大小,现代操作系统都采用页面置换技术来从逻辑上扩展内存,但页长太小也降低了页面换入换出的效率。
地址线从16位增长到32位后,单级页表机制显然不实用,随后出现了二级页表和多级页表机制。Linux中,版本2.6.11.1以后使用了4级页表机制。