码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 分页存储的原理——非连续存储分配


    文章目录

    • 为什么需要分页存储
    • 分页存储管理的重要概念
    • 如何实现地址转换
    • 如何知道页面在内存中的起始地址?
        • 为什么页表项的页号是隐含的

    为什么需要分页存储

    在这里插入图片描述

    • 我们发现我们的连续分配内存在支持多道程序的时候,会出现一些问题
      • 固定分区 会产生大量的内部碎片,还可能存在进程太大,放不进去
      • 动态分区:会产生大量的外部碎片,虽然可以通过紧凑技术来处理,但是紧凑的时间代价很高

    在这里插入图片描述

    • 将我们的进程拆分成一个个部分,再把这三个部分分别放到分区中,这些分区不要求连续
    • 思想:把内存拆分为一个个相等的小分区,再按照分区的大小把进程拆分成一个个小部分,把进程的一个个小部分放到内存的一个个分区

    分页存储管理的重要概念

    • 页框
      • 也就是我们将内存空间分为一个个相等的分区的一个基本单位
    • 页面
      • 将用户进程的地址空间分为一个个与页框大小相等的一个个区域
      • 各个页面不必须要连续存放,也不必按照先后顺序来,因为分页就是为了实现不连续存储

    如何实现地址转换

    在这里插入图片描述

    • 在我们的连续分配内存中,第三中的动态装入方式,我们装入内存的时候,进程中的地址是逻辑地址,在真正需要运行的时候,利用重定位寄存器来将对应的逻辑地址到物理地址的转换
    • 而我们的分页存储也是采用动态装入方式

    在这里插入图片描述

    • 从逻辑地址到物理地址的转换
      • 我们要知道我们对应的逻辑地址 所在的页面是哪个 在所在页面的相对位置
      • 所在页面在内存中哪个页框,和对应的物理地址——通过页表知道

    为什么页面大小一般设为2的整数次幂?

    在这里插入图片描述

    • 因为我们的地址在计算机中是以二进制存储的,所以将页面的大小设置为2的次方字节
      • 这样计算机很容易得到对应的页面,和页内地址

    如何知道页面在内存中的起始地址?

    在这里插入图片描述

    • 把这种数据结构称为页表,操作系统为每个进程建立一个页表
    • 进程的没一页对应一个页表项
      • 每个页表项有页号和块号组成——形参内存的页框到进程的页面的映射

    为什么页表项的页号是隐含的

    在这里插入图片描述

    • 因为我们的页表中页表项是按顺序连续地存放在内存中,所以该页表在内存的起始地址是X,那么X* 3 * M的地址一定存着我们M号页对应的页表项
    • 所以我们的页表项不需要存储对应的页号信息,只需要存在对应的块号就行
  • 相关阅读:
    华为云HECS云服务器docker环境下安装nacos
    基本语法(三)
    Windows上使用client-go远程访问安装在本地WMware上的Linux虚拟机里的minikube
    【Vue】路由vue-Router
    【torch.nn.init】初始化参数方法解读
    终于知道Kafka为什么这么快了!
    SpringBoot项目打包与运行
    深度学习_12_softmax_图片识别优化版代码
    自动控制原理3.5---线性系统的稳定性分析
    关于使用STM32CubeMx配置串口出现的一些问题
  • 原文地址:https://blog.csdn.net/qq_50985215/article/details/127651435
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号