当前位置: 首页 > 学科分类 > 物理

物理分页,内存分页和物理分页

  • 物理
  • 2026-04-30

物理分页?物理分页和逻辑分页是数据库中两种不同的分页方式。逻辑分页是在查询结果集中进行分页,即先查询出所有符合条件的记录,然后在内存中进行分页操作,最后返回指定页的数据。而物理分页是从数据库查询指定条数的数据,比如MySQL数据库提供了limit关键字,程序员只需要编写带有limit关键字的SQL语句,数据库返回的就是分页结果 。简单来说,那么,物理分页?一起来了解一下吧。

逻辑分页和物理分页

在计算机领域,操作系统如何管理有限的物理内存以满足运行众多进程的需求?分页技术正是解决这一问题的关键。本文将深入探讨分页的概念、实现机制及其对操作系统内存管理的重要性。

分页是将进程地址空间分割为固定大小的单元,每个单元称为一页。这种技术使得操作系统能够更有效地分配和管理内存资源,确保各进程之间不发生冲突。下面通过一个示意图来直观了解分页机制。

虚拟存储器的概念是分页技术的基石。它提供了一个巨大的、私有的地址空间,使得每个进程都拥有独立的地址范围。虚拟存储器将物理内存分割为大小相等的物理页(Physical Page, PP),而每个进程的地址空间则被组织为虚拟页(Virtual Page, VP)。VP大小固定,通常与PP大小相匹配,例如4KB。

每个VP在虚拟存储器中占用一个连续的字节大小的单元,拥有唯一的虚拟地址。当需要访问特定数据时,操作系统通过虚拟地址映射到物理地址,实现数据的读取或写入。虚拟地址空间由页表管理,页表是一个数据结构,用于保存虚拟页与物理页之间的映射关系。通过页表,操作系统能够快速确定VP对应于哪个物理页。

分页技术的实现涉及到虚拟页面的分类,包括未分配、缓存和未缓存的页面。

逻辑分页

pageHelper分页插件在分页功能上具有简化参数封装、支持多种分页模式、提供灵活的SQL处理能力等优势,但其核心源码未解决count查询的全表扫描问题,需结合业务场景优化。 以下是具体分析:

一、pageHelper分页插件的优势

参数封装简化开发插件将分页所需参数(如pageNum当前页码、pageSize每页数量、total总数等)封装在com.github.pagehelper.page对象中,开发者无需手动计算或硬编码参数,直接通过对象属性获取即可。例如:

count:控制是否执行总条数查询,避免不必要的性能开销。

reasonable:分页合理化,当页码超出范围时自动调整到有效页。

orderBy:支持动态排序,无需在SQL中硬编码排序字段。

支持多种分页模式

物理分页(AbstractHelperDialect):直接通过数据库的LIMIT或ROW_NUMBER()等语法截取数据,仅查询当前页所需数据,减少内存占用。

逻辑分页(AbstractRowBoundsDialect):查询全部数据后通过内存截取,适用于数据量小的场景,但可能引发内存溢出。

逻辑分页和物理分页的区别

Linux内存管理涉及内存大小计算、物理内存分页、MMU(内存管理单元)作用、页表项存储需求及多级页表设计,以下为详细说明

内存大小计算

以32位系统为例,其寻址空间为2^32 = 4,294,967,296 bytes,通过逐步换算可得:

4,294,967,296 bytes ÷ 1024 = 4,194,304 kbytes

4,194,304 kbytes ÷ 1024 = 4,096 M

4,096 M ÷ 1024 = 4G即32位系统理论最大支持4G内存。

物理内存分页机制

物理内存管理采用分页模式,以4G内存为例:

单页大小:通常为4K(4096 bytes)

分页数量计算:4,194,304 kbytes ÷ 4 = 1,048,576个页

MMU(内存管理单元)核心功能

MMU负责虚拟地址到物理地址的转换,其作用类似银行资金管理员:

地址转换流程:所有虚拟地址需经MMU转换为物理地址后才能操作内存

虚拟内存限制:操作系统分配的虚拟内存可能存在无法映射到物理内存的情况(类似空头支票)

页表项存储需求分析

在32位系统中:

单页表项大小:4字节(32位地址需要4字节存储)

单进程映射表空间:1,048,576个页 × 4字节 = 4,194,304 bytes(即4M)

多进程资源消耗:100个进程需400M内存用于存储映射表,显著加剧内存压力

多级页表优化方案

为解决单级页表空间浪费问题,采用三级分页结构:

地址位分配

页偏移:12位(支持4K页内寻址)

页目录索引:10位

页表索引:10位

存储空间计算

页目录表:2^10 × 4字节 = 4K

页表:2^10 × 4字节 = 4K

总空间:4K(页目录) + 4K(页表) = 8K(远小于单级页表的4M)

地址转换流程类比

以新华字典查字为例说明多级页表工作原理:

页目录查询:通过目录确定字所在页码(类似页目录表索引)

页表定位:在指定页码中查找行号(类似页表索引)

偏移计算:根据字与行首的偏移量精确定位(类似页内偏移)

该设计通过空间换时间的方式,在保持寻址能力的同时显著降低内存占用,是Linux内存管理的核心优化技术之一。

文档分页

Word文档中添加下一页的分页符和分节符的主要区别在于功能定位和内容关联性:分页符仅实现物理分页,前后内容仍属同一节;分节符则通过创建独立节实现逻辑分隔,支持差异化页面设置。 具体差异如下:

分页符的功能与特点

物理分页:插入分页符后,当前内容会强制跳转到下一页,但前后文本仍属于同一节。例如在“参考文献”前插入分页符,虽能使其另起一页,但删除前文时“参考文献”仍可能被拉回上一页。

内容连续性:大纲视图中显示分页符位置仅有一个回车符标记,表明前后内容未被逻辑切断。修改前文页码或格式时,后文会自动跟随调整。

适用场景:适合需要单纯分页但无需独立格式设置的场景,如章节内的小节划分。

分节符的功能与特点

逻辑分节:插入“下一页”分节符后,不仅实现分页,还会创建一个独立的新节。例如在“参考文献”前插入分节符,删除前文时该节内容会保持独立,不会回跳。

格式独立性:新节可单独设置页眉页脚、页码格式、纸张方向等。例如分节后可将该节页码重置为“1”,或采用与前文不同的排版样式。

分页

物理分页和逻辑分页是数据库中两种不同的分页方式。逻辑分页是在查询结果集中进行分页,即先查询出所有符合条件的记录,然后在内存中进行分页操作,最后返回指定页的数据。而物理分页是从数据库查询指定条数的数据,比如MySQL数据库提供了limit关键字,程序员只需要编写带有limit关键字的SQL语句,数据库返回的就是分页结果 。

简单来说,逻辑分页是一次性从数据库查询很多数据,然后再在结果中检索分页的数据;而物理分页则是从数据库查询指定条数的数据 。

以上就是物理分页的全部内容,Word文档中添加下一页的分页符和分节符的主要区别在于功能定位和内容关联性:分页符仅实现物理分页,前后内容仍属同一节;分节符则通过创建独立节实现逻辑分隔,支持差异化页面设置。 具体差异如下:分页符的功能与特点物理分页:插入分页符后,当前内容会强制跳转到下一页,但前后文本仍属于同一节。内容来源于互联网,信息真伪需自行辨别。如有侵权请联系删除。

猜你喜欢