如何减少内存碎片的产生——页

内存碎片在计算机内存管理中是一个重要问题,影响系统性能。
页机制的设计旨在减少这种碎片化。


1 页的设计目的

内存碎片是计算机内存管理中的一个重要问题。碎片化的内存会导致内存利用率降低,并影响系统性能。页(Page)机制的设计旨在减少内存碎片的产生,其主要目标包括:

  1. 内存分配的高效管理:通过将内存分割成固定大小的页,简化内存分配和释放的过程。
  2. 减少外部碎片:固定大小的页能够有效地减少外部碎片,因为每个内存块(页框)都是相同大小,易于管理。
  3. 内存保护和隔离:页机制提供了内存保护和隔离,防止进程间的内存污染。
  4. 支持虚拟内存:页机制是虚拟内存实现的基础,使得操作系统能够高效地管理物理内存和磁盘交换空间。

2 进程块和主存块的对应关系

在页机制下,虚拟内存被划分为固定大小的页,而物理内存被划分为相同大小的页框(Page Frame)。进程块(虚拟页)与主存块(物理页框)的对应关系如下:

  • 虚拟页:进程的虚拟地址空间被划分为多个固定大小的虚拟页。
  • 物理页框:物理内存被划分为多个相同大小的物理页框。
  • 映射关系:页表(Page Table)记录了每个虚拟页与物理页框的映射关系。虚拟页可以映射到任意的物理页框,不必是连续的。

这种对应关系使得进程可以灵活地使用物理内存,避免了大块内存分配时可能产生的碎片问题。

3 页、页框、页表

3.1 页(Page)

  • 页是虚拟内存中的基本单位,通常大小为4KB。
  • 每个进程的虚拟地址空间被划分为多个页。

3.2 页框(Page Frame)

  • 页框是物理内存中的基本单位,与页大小相同。
  • 物理内存被划分为多个页框。

3.3 页表(Page Table)

  • 页表是用于记录虚拟页到物理页框映射关系的数据结构。
  • 每个进程都有自己的页表,包含多个页表项(Page Table Entry, PTE)。
  • 每个页表项包含物理页框地址和一些控制信息(如有效位、读写权限等)。

4 逻辑地址到物理地址的转换

4.1 转换过程

  1. 逻辑地址分解

    • 逻辑地址(虚拟地址)被分为两部分:页号(Page Number)和页内偏移量(Page Offset)。
    • 页号用于查找页表,页内偏移量用于确定页内的具体位置。
  2. 查找页表

    • CPU 使用当前进程的页表基地址和页号查找页表中的对应项。
    • 页表项(PTE)包含物理页框的地址和控制信息。
  3. 生成物理地址

    • 如果页表项有效,CPU 将物理页框地址和页内偏移量组合,生成最终的物理地址。
    • 如果页表项无效,会触发页面错误,操作系统处理错误(如从磁盘加载页面到内存)。

4.2 具体示例

假设一个简单的 32 位系统,使用 4KB 页大小,虚拟地址结构如下:

  • 页号:高 20 位
  • 页内偏移量:低 12 位
虚拟地址: 	[ 页号	| 页内偏移量	]
        	[ 20位	|    12位	]

多级页表结构可能如下:

一级页表: 页号高10位
二级页表: 页号低10位
页内偏移量: 12位

4.3 图示

Page_Table
Virtual_Address
一级页表
二级页表
物理页框地址
虚拟地址
页号
页内偏移
物理地址

通过这种页机制和转换过程,操作系统能够高效地管理内存,减少内存碎片,提高系统性能和稳定性。


参考资料

封面

来自 DALL-E-3
在这里插入图片描述

  • 19
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

__Witheart__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值