物理内存管理:非连续内存分配

本文深入探讨了非连续内存分配的两种主要方法——段式和页式存储管理。介绍了段的概念,逻辑地址与物理地址的转换,并详细阐述了页表、TLB(快表)和多级页表的工作机制。同时,讨论了反置页表、大地址空间问题及页寄存器的优劣。最后,提到了段页式存储管理在内存共享中的应用。
摘要由CSDN通过智能技术生成

非连续分配需要解决的问题

如何实现虚拟地址和物理地址的转换?

  • 软件实现(灵活,开销大)
  • 硬件实现(够用,开销小)

非连续分配的硬件辅助机制

如果选择非连续分配中的内存分块大小?

  • 段式存储管理(segmentation)
  • 页式存储管理(paging)

段式存储管理

1,段的概念

  • 段表示访问方式和存储数据等属性相同的一段地址空间。
  • 对应一个连续的内存“块”。
  • 若干个段组成进程逻辑地址空间。

2,段访问:逻辑地址由二元组(s,addr)表示。

  • s 段号
  • addr 段内偏移

在这里插入图片描述


段页式管理总体框架图(参照《Intel® 64 and IA-32Architectures Software Developer ’s Manual – Volume 3A》3.2 节)
在这里插入图片描述

页式存储管理

页帧(帧,物理页面,Frame,Page Frame)

  • 把物理地址空间划分为大小相同的基本分配单位。
  • 一页大小为2的n次方,如512,4096(常用),8192。

页面(页,逻辑页面,Page)

  • 把逻辑地址空间也划分为相同大小的基本分配单位。
  • 帧和页的大小必须相同。

页面到页帧

  • 逻辑地址到物理地址的转换
  • 页表(关键中间人
  • MMU(内存管理单元)/TLB(快表(Translation Look-aside Buffer))

物理内存被划分成大小相等的帧
内存物理地址的表示:二元组(f,o)。

  • f 帧号(F位,共有2^F个帧
  • o 帧内偏移(S位,每帧有2^S字节)
    物理地址 = f * 2^S + o
    在这里插入图片描述

实例(物理)地址计算

在这里插入图片描述

实例(逻辑)地址计算

在这里插入图片描述
逻辑地址空间的页号是连续的,物理地址空间的帧号不一定连续。

在这里插入图片描述

页表关联(中间人)

在这里插入图片描述

页表

PTBR(Page Table Base Register)寄存器:存储页表基址
在这里插入图片描述

页式存储管理机制的性能问题

在这里插入图片描述

快表(Translation Look-aside Buffer,TLB)—利用缓存机制(caching)

缓存近期访问的页表项

  • TLB使用关联存储(associative memory)实现,具备快速访问性能。
  • 如果TLB命中,物理页号可以很快被获取。
  • 如果TLB未命中,对应的表项被更新到TLB中。
    在这里插入图片描述

多级页表—间接访问(Indirection)

在这里插入图片描述
P1,P2,P3,P4都作为偏移,PTBR寄存器作为基址

二级页表实例

CR3寄存器存储着PTBR寄存器地址。

在这里插入图片描述

反置页表

基于Hash映射值查找对应页表项中的帧号。

  • 进程标识与页号的Hash值可能有冲突。
  • 页表项中包括保护位,修改位,访问位和存在位等标识。
    在这里插入图片描述

反置页表的Hash冲突(举例)

在这里插入图片描述

大地址空间问题?

在这里插入图片描述

页寄存器(Page Registers)

在这里插入图片描述

页寄存器的优劣

在这里插入图片描述

页寄存器中的地址转换

在这里插入图片描述

段页式存储管理

在段式存储管理基础上,给每个段加上一级页表。
在这里插入图片描述

段页式存储管理中的内存共享

通过指向相同的页表基址,实现进程间的段共享(共用页表)。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值