问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

分页式存储管理详解

创作时间:
作者:
@小白创作中心

分页式存储管理详解

引用
CSDN
1.
https://blog.csdn.net/weixin_50998219/article/details/139153004

分页式存储管理是现代操作系统中用于管理内存的重要技术。它允许将程序分割成多个页面,并将这些页面存储在主存中的不同位置,从而实现更有效的内存使用和管理。本文将详细介绍分页式存储管理的基本原理、核心概念以及相关的优化技术。

基本原理

分页式存储管理允许作业存放在若干个不相邻的分区中,既可免去移动内存信息而产生的工作量,又可充分利用主存空间,尽量减少主存碎片

基本概念

  • 页框:主存空间按物理地址分成多个大小相等的区,每个区称为块(又称页框page frame)
  • 页面:程序(作业)按逻辑地址分成多个大小相等的区,每个区称为一个页面(page),大小与页框大小相等
  • 页表:页表是记录逻辑空间(虚拟内存)中每一页在内存中对应的物理块号。但并非每一页逻辑空间都会实际对应着一个物理块,只有实际驻留在物理内存空间中的页才会对应着物理块。
    页表是需要一直驻留在物理内存中的(多级页表除外),另外页表的起址和长度存放在 PCB(Process Control Block)进程控制结构体中。
  • 逻辑地址形式:页号和单元号
  • 页表、作业表和地址转换
    逻辑地址 =页号* 页长 + 单元号 【通过页号查找页表】
    物理地址 =页框号(块号) * 块长 + 单元号

地址转换

  1. 进程访问某个逻辑地址时,分页地址机构自动将逻辑地址分为页号和页内地址
  2. 页号大于页表长度,越界错误
  3. 页表项的地址 p = 页表起始地址 F + 页号 P * 表项大小 S,从而得到对应的物理块号 B
  4. 页和物理块的大小是一致的,所以 页内地址=块内地址
  5. 然后 物理地址 = 物理块号 B * 页大小 L + 页内地址
  6. 根据物理地址读取数据

相联存储器和快表

  • 通常页表存放在主存中,因此按逻辑地址访问某个主存地址内容时,需要涉及二次主存访问,效率较低
  • 相联存储器,一个专用的高速缓冲存储器,用于存放最近被访问的部分页表,是分页式存储管理的重要组成部分。
  • 快表,存放在相联存储器中的部分页表内容
    快表是为了加快虚拟地址到物理地址这个转换过程而存在的。页式存储管理的快表一般存放在 CPU 内部的高速缓冲存储器 Cache。快表与页表的功能类似,其实就是将一部分页表存到 CPU 内部的高速缓冲存储器 Cache。CPU 寻址时先到快表查询相应的页表项形成物理地址,如果查询不到,则到内存中查询,并将对应页表项调入到快表中。但,如果快表的存储空间已满,则需要通过算法找到一个暂时不再需要的页表项,将它换出内存。因为高速缓冲存储器的访问速度要比内存的访问速度快很多,因此使用可以大大加快虚拟地址转换成物理地址。根据统计,快表的命中率可以达到 90%以上。

解决页表规模过大

  • 多级页表
  • 页表可以部分存放在内存中
  • 例,二级页表系统中,一次按逻辑地址的主存访问需要访问三次主存:一次访问页目录、一次访问页表、一次访问具体的数据
  • 反置页表
  • 块号→页号
  • 仅保存调入内存的页面信息

其他

  • 存储空间的分配和去配
  • 主存分配以块为单位
  • 可采用位示图记录主存分配情况(0/1)
  • 或采用链表方式记录主存分配情况
  • 页面共享
  • 代码共享,由于代码中包含指令或数据地址,需要确定统一的页号
  • 页面保护
  • 标志位法,在页表中增加标志位信息
  • 存储保护键法
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号