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

【哈工大_操作系统理论】L2223 多级页表与快表段页结合的实际内存管理

L3.3 多级页表与快表

一页大小是4K,最大的浪费其实就是一页都空着,所以最大浪费是4K。则为了避免浪费,页大小必须小一些。

1、问题:需要很大内存空间存放页表

  • 一般内存大小为4G,页大小为4K,则有1M个页表象(一百多万个,太大了)。
  • 每个页表象一般需要4个字节,则每个页表占4M大小。假设100个进程,则需要400M内存。
  • 实际上,程序虽然分为多个页,但并不是每个程序都很大包含很多页,却并不是每个页的逻辑地址都使用,则并不是每个页都需要有表象。并不是每个页表都要包含这1M个页表象,引出第一种方法。

2、第一种方法:只存放用到的页

  • 失败-因为页号不连续,导致每次需要比较查找页号以找到对应页框号,需要额外多次访问页表,效率低
  • 既要页号连续,又要让页表占用内存少 -> 多级页表

3、多级页表

原本1M个表象,每个表象4字节,需要4M的空间来存储页表。而现在:

  • 页目录号需要2^10个,每个4字节,需要4K

  • 其中只有3个目录占用,只需要3个页号目录,每个页号目录也是2^10,则目录指向的页表象是4K,三个则12K

  • 所以总共需要16K
    在这里插入图片描述

  • 多级页表提高了空间效率,降低了时间效率。每增加一级都要多访问一次内存

4、快表

TLB:相连快速存储,属于寄存器,存放在CPU中

  • 记录最近使用的页号;

  • 若不在TLB中,则再去查多级页表(快表+多级页表)
    在这里插入图片描述

  • TLB命中率越高越好,即TLB越大越好,但很昂贵,需要折中


L3.4 段页结合的实际内存管理

  • :用户程序通过分段管理虚拟内存(程序员希望用段)
  • :操作系统通过分页管理物理内存,高效利用内存(物理内存希望用页)

1、段面向用户,页面向硬件

用户程序 -> 分段存放到虚拟内存 -> 每段再分页存放到物理内存

  • 虚拟内存:无非就是割出了一段地址空间来存放段程序
  • 逻辑地址 -> 虚拟地址 -> 物理地址
    在这里插入图片描述

2、重定位(地址翻译)

段地址翻译 + 页地址翻译
在这里插入图片描述

3、实际的段、页式内存管理

  1. 在虚拟内存中割出一块区域(分配虚存)

  2. 建立段表,映射到虚拟内存
    在这里插入图片描述

  3. 在物理内存中找到空闲区域(分配内存)

  4. 建立页表

  • linux0.11中设计多个进程共用同一个页表,因为每个进程虚拟地址互不重叠,而使用32位虚拟地址前20位为页目录和页号,则页目录和页号不同,所以用同一套页表映射后物理地址是不同的
    在这里插入图片描述

  • 右移22位,得到页目录号,每个页目录号占4字节,所以乘4得到页目录号地址,则右移20位。(但是需要与一下,把后面两位清零,实现效果才一样)
    在这里插入图片描述

  • 在子进程位置创建一章(页目录号)

  • 在子进程的章上新建节(页号)get_free_page
    在这里插入图片描述

  • 把父进程这一节内容拷贝到子进程这一节上
    在这里插入图片描述

  1. 重定位具体使用内存
  • 通过内存管理单元 MMU 硬件实现地址自动转换
    在这里插入图片描述

http://www.mrgr.cn/news/52604.html

相关文章:

  • React1-基础概念
  • 【c++篇】:初识c++--编程新手的快速入门之道(二)
  • 【C++】—— list迭代器
  • 看《米小圈日记魔法》突破写作困境一点也不难!
  • 【文心智能体 | AI大师工坊】如何使用智能体插件,完成一款购物类智能体的开发,来体验一下我的智能体『科技君Tom』
  • Vue 3 和 Vue 2区别
  • 学习 Flutter 的最佳路线图
  • Matlab中HybridFcn参数的用法
  • mysql--数据表的操作
  • memset的用法
  • [论文阅读]Stealing Machine Learning Models via Prediction APIs
  • Java集合常见知识总结(上)
  • Luogu P1528 切蛋糕 || SCOI2005 栅栏
  • es索引库操作和使用RestHignLevelClient客户端操作es
  • C++笔记之静态多态和动态多态
  • HarmonyOS NEXT 应用开发实战(六、组件导航Navigation使用详解)
  • laravel清除不同缓存
  • 基于Leaflet和SpringBoot的全球国家综合检索WebGIS可视化
  • 洛谷P3478 [POI2008] STA-Station(换根dp)
  • 【AI知识】距离度量和相似性度量的常见算法