当前位置: 首页 > news >正文

【OS笔记24】:存储管理3-分页管理-页表与快表

文章目录

    • 5.4 分页管理
        • 分区管理的缺点回顾:
      • 5.4.1 页的划分技术
      • 5.4.2 相关数据结构 (静态分配)
        • 1. 页表
        • 2. 空闲页面(块)表
      • 5.4.3 逻辑地址的形式
      • 5.4.4 页式地址转换
      • 5.4.5 快表和页表构造
        • 两次访存问题
        • 快表

5.4 分页管理

为了解决分区管理带来的种种问题,引入了更为先进和灵活的分页管理技术。

分区管理的缺点回顾:
  • 外部碎片问题:如果连续的空闲区不能满足进程需求,则即使整个内存中所有空闲分区之和大于进程所需的空间,进程仍不能装入内存。
  • 内存利用率不高:存在碎片现象(内部或外部),导致内存空间浪费。
  • 难以实现虚拟存储:要求程序连续存放,无法使有限的内存运行较大、较多的程序。

5.4.1 页的划分技术

分页管理的基本思想是将内存空间和进程空间都进行“离散化”处理。

  • 物理内存划分:系统把内存2^n(2的整数次幂)划分成大小相同、位置固定的若干个存储块,称为页面 (Page Frame)页框
  • 逻辑空间划分:进程的逻辑地址空间也按同样的大小 (2^n) 划分成若干相等的部分,每一部分称为一个页 (Page)
  • 分配原则:进程以为单位分配内存。一个进程的多个页可以被存放在不相邻的物理页面中。
  • 分配和回收方式
    • 静态分配:作业装入时,一次性将其所有页都装入内存。
    • 动态分配 (请求页式):作业运行时,根据需要动态地调入页。

5.4.2 相关数据结构 (静态分配)

1. 页表

为了将进程离散的页与内存中离散的页面对应起来,系统为每个进程建立一张页表

  • 作用:指出逻辑地址空间中的页号 (Page Number) 与其在主存中对应的页面号 (Frame Number) 的对应关系。
  • 构成:由 页号页面号 组成。
  • 关键每个进程都拥有一张页表,它是虚拟地址(逻辑地址)到物理地址转换的依据。

在这里插入图片描述

2. 空闲页面(块)表
  • 作用:记载内存中当前所有空闲的页面
  • 归属:整个操作系统统一维护一张空闲页面表。

在这里插入图片描述

图片描述:该图直观地展示了分页机制。左侧是进程的逻辑地址空间(被划分为第0页、第1页…),中间是该进程的页表,页表中的每一项都指向右侧主存空间中的一个物理页面。箭头清晰地表明,逻辑上连续的页(如第0、1、2页)可以被映射到物理上不连续的页面(如第5、7、9号页面)。

5.4.3 逻辑地址的形式

在分页系统中,进程的逻辑地址被划分为两部分:

  • 逻辑地址 = 页号 (P ) + 页内地址 (d)

在这里插入图片描述

  • 页号 (P ): 用于在页表中查找对应的物理页面。页号部分的位数决定了一个进程最多可以拥有多少个页。例如,图中有20位页号,则总共有 2^20 = 1M 个页。
  • 页内地址 (d): 也称为位移量 (Offset),表示该地址在所在页的起始位置开始的偏移量。页内地址的位数决定了页的大小。例如,图中有12位页内地址,则页的大小为 2^12 = 4K

5.4.4 页式地址转换

为了在非连续的内存区域中正确地执行进程,操作系统(在硬件支持下)必须完成从逻辑地址到物理地址的转换。

  • 虚拟地址 (逻辑地址) = (页号, 页内地址)
  • 物理地址 (绝对地址) = (页面号, 页内地址)
  • 关键:地址转换的核心就是通过页表将逻辑页号转换为物理页面号,而页内地址部分在转换过程中保持不变

为了完成转换,CPU中需要有控制寄存器来存放当前运行进程的页表信息:

  • 页表始址:存放当前进程的页表在内存中的起始地址。
  • 页表长度:存放当前进程的页表大小(即总页数)。

在这里插入图片描述
在这里插入图片描述

图片描述:该图详细描绘了地址转换的硬件执行流程。

  1. CPU产生一个逻辑地址,如(页号2, 页内地址452)
  2. 硬件首先检查页号的合法性:将页号2与页表长度寄存器中的值3比较,因为 2 < 3,地址合法。
  3. 硬件根据页表始址寄存器的值1k和页号2,计算出页表项在内存中的地址,并从中取出对应的页面号。图中显示,页号2对应的页面号是8
  4. 将获取到的页面号8与原逻辑地址中的页内地址452组合,形成最终的物理地址。
  5. 最终物理地址的计算公式为:物理地址 = 页面号 * 页面大小 + 页内地址。例如:8 * 1KB + 452 = 8192 + 452 = 8644

5.4.5 快表和页表构造

两次访存问题

从上述地址转换过程可以看出,不加优化的分页系统存在一个严重性能问题:

  • 执行一次访存操作至少要访问主存两次
    1. 第一次:访问内存中的页表,以确定所取数据或指令的物理地址。
    2. 第二次:根据转换得到的物理地址真正地存取数据或指令
快表

为了提高存取速度,硬件上通常设置一个专用的高速缓冲寄存器组,我们称之为快表 (TLB)

  • 本质:一个用于存放页表一部分内容的高速缓存 (Cache)。
  • 工作流程
    1. 进行地址转换时,硬件先查找快表
    2. 快表命中 (Hit):如果在快表中找到所需页号,则直接获得对应的页面号,地址转换极快完成。
    3. 快表未命中 (Miss):如果快表中找不到所需页号,则再去查询内存中的页表(慢速路径),并将查询到的该页表项写入快表中(通常会替换掉一个旧的条目)。
  • 优势:快表的地址转换是非常快的,因为是硬件并行比较。利用程序的局部性原理,大部分地址访问都能在快表中命中,从而基本克服了两次访问主存的缺点。

在这里插入图片描述

这是一个更复杂的地址转换流程图。逻辑地址中的页号p被同时送到快表进行并行查找,并与页表长度l进行比较。如果p在快表中,直接得到页面号p’;如果不在,则通过常规的查页表方式获取p’,并将其更新到快表中。最终,p’与页内地址d组合成物理地址。

http://www.dtcms.com/a/573713.html

相关文章:

  • 城乡和住房建设厅网站首页深圳网站建站的公司
  • 湖湘杯网络安全技能大赛参与形式
  • 网站怎么上传模板优化设计七年级上册英语答案
  • C++-19-类和对象
  • 深度学习_原理和进阶_PyTorch入门(2)后续语法2
  • C++ 中string的用法
  • 山东卓商网站建设公司做网站的广告词
  • uView2开发APP实现悬浮按钮
  • 让人做网站需要注意什么条件绍兴建设公司网站
  • OCSSA-VMD-Transformer-LSTM-Adaboost轴承故障诊断MATLAB代码实现
  • 工业园区废水除重金属镍
  • 自动化深度研究智能体-deep research实战
  • 制作网站培训学校网站建设优化服务方案模板
  • 计算机操作系统:文件保护
  • 卸载——通用方法
  • 【Java】异常
  • 底层视觉及图像增强-项目实践-细节再<十六-5,如何用AI实现LED显示画质增强:从经典到实战-再深挖>:从LED大屏,到手机小屏,快来挖一挖里面都有什么
  • 如果做一个网站网站开发采用的技术方案说明
  • 吉安市规划建设局网站重庆五号线金建站
  • BST平衡二叉树相关
  • Spring Boot3零基础教程,事态感知API doOnXXX,笔记111
  • 个人性质网站唐尧文化 网站建设工作总结
  • JDBC - 数据库连接池
  • R 包中的生命周期触发函数全解析
  • 华为WATCH D2 WATCH GT6:秋季来临,尊爱老人的智能守护
  • LangChain RAG 完整流程实战解析
  • 镇江建设质量监督站网站移动app网站模板
  • 【论文精读】SV3D:基于视频扩散模型的单图多视角合成与3D生成
  • 视频融合平台EasyCVR级联失败问题排查:请求上级播放后,视频为何无法打开?
  • 哪个网站能下载gif品牌红酒的网站建设