码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 请求分页内存管理模式


    文章目录

    • 请求分页需要的基本功能
    • 页表机制——基本分页表和请求分页表的区别
    • 缺页中断机构
        • 当要访问的页面状态位为0
        • 当内存有空闲块时的处理
        • 当内存中没有空闲块的处理
        • 缺页中断的类型
    • 地址变换机构

    请求分页需要的基本功能

    在这里插入图片描述

    • 跟基本分页管理一样也需要 页表机制
    • 因为不是所有的内容都在内存,所以可能发生缺 页 ——缺页中断机构
      • 页面置换
      • 请求调页
    • 也需要地址变换

    页表机制——基本分页表和请求分页表的区别

    在这里插入图片描述

    • 组成
      1. 页号——因为是连续存储,所以可以隐藏
      2. 内存块号——跟基本分页机制一样,需要知道我们的具体物理内存地址
      3. 状态位——用来标记是否调入内存
      4. 访问字段——这个是给我们置换算法参考的,比如记录最进被访问了几次,或者上次访问的时间
      5. 修改位——页面调入内存是否被修改过,因为如果被修改,最后我们存储在外存,也需要将对应的数据修改
      6. 外存地址——因为可能不在内存,需要将对应外存的内容调入内存,最后执行完,调出内存,放到对应的外存等

    缺页中断机构

    当要访问的页面状态位为0

    在这里插入图片描述

    当内存有空闲块时的处理

    在这里插入图片描述

    • 修改对应的内存块号和状态位,然后将外存的数据调入到内存的内存块中

    当内存中没有空闲块的处理

    image-20221103163546035

    • 如果内存中没有空闲块,则由页面置换算法选择一个页面淘汰,然后改页面在内存期间被修改过,则要将其写回外存,如果没有被修改过,就不需要写回外存
    • 然后修改对应两个的页表项

    缺页中断的类型

    在这里插入图片描述

    • 我们的缺页中断是一个内中断,而且是属于故障的层次,因为这种中断可以被故障处理程序修复(操作系统将缺页的数据调入内存)

    地址变换机构

    在这里插入图片描述

    image-20221103165213243

    • 首先根据逻辑地址得到我们的页号和页内地址

    • 然后根据我们的页号和我们的寄存器中的页表长度来判断是否越界

    • 先去检查快表,快表中是否有对应的数据,如果有,直接从快表中获得对应的内存块

    • 如果快表中没有,我们就根据页号和对应快表的始址来找到对应的页表项

    • 根据页表项的状态位来判断我们需要的数据是否在内存中

      • 如果不在内存中,我们就需要启动对应的缺页中断

      • 启动我们的中断需要的步骤image-20221103170848026

      • 从外存中找到对应的缺页,判断内存是否满了

        • 如果内存满了,就需要对应的置换算法将某一页换出,如果这一页在内存中被修改了,需要写回外存
      • 启动I/O将缺页写入内存,然后修改对应的页表项信息

    • 我们需要的页在内存中,然后修改对应的快表,修改对应的修改位和访问位

    • 根据我们的内存块的物理地址和页内偏移量找到对应的内存单元

  • 相关阅读:
    如何实现与FDA保持邮件通信安全加密?
    微服务下怎么做权限管理
    时序分析 48 -- 时序数据转为空间数据 (七) 马尔可夫转换场 python 实践(下)
    代码风格总结
    基础-MVP标定-H矩阵变换算子
    一种基于区块链的物联网架构设计
    刷题记录:牛客NC15447wyh的问题
    Ansible-常用模块
    SynthText流程解读 - 不看代码不知道的那些事
    用Java包com.sun.net.httpserver下面的类实现一个简单的http服务器demo
  • 原文地址:https://blog.csdn.net/qq_50985215/article/details/127674459
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | 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号