c语言 请求页式存储管理,操作系统-页式内存管理

2023-11-07

页式内存管理上

A.段式内存管理

1.指的是一段连续的内存空间

2.段式内存管理-程序的各个部分相对独立(数据段,代码段),早期x86处理器无法通过一个寄存器访问所有内存单元,解决早期程序运行的重定位问题

段式内存管理的应用,在x86系列的处理器中,硬件对段式内存管理进行了直接支持;另外,段式内存管理也可以使用纯软件实现,内存单元地址=段首地址+段内偏移地址

B.段式内存管理在C语言中的实现

1.数组的本质:一片连续的内存

2.数组名:数组的起始内存地址

3.数组的元素的访问

4.第i个元素

Q:操作系统只使用段式内存管理是否足够?--需求

软硬件技术的发展

1.硬件技术:计算器部件独立化(硬件接口相同,可任意组装),计算机配置差异化(各部件硬件参数不同)

2.软件技术:应用程序处理的问题越来越复杂,应用程序运行需要的资源越来越多(物理内存可能无法满足)

此时出现的问题是,当应用程序的规模越大时,会导致多数时候无法全部加载进入内存,会出现问题,需要提出方法进行解决

C.解决方案-按段加载(局部性原理)

只将当前程序运行需要的段加载进内存,当某个段不再需要使用时,立即从内存中移除。但是按段加载会带来一些其它的问题,比如段的大小不确定,可能大于实际的物理内存,段加载需要具体的长度信息,导致效率不高。

由此提出的新的解决方法-内存分页

1.页指的是固定大小的内存片(4KB)

2.每一个内存由多个页组成

3.页是进行内存管理的基本单位

01bffd7283073fe68d74afea30389440.png

D.进阶虚拟存储技术

1.实模式下所使用的是物理地址空间

2.保护模式下所使用的是偏移地址空间

3.不同应用程序所使用的内存空间的分离采用分页管理

4.程序运行需要的内存大于实际物理内存时分页加载

进阶虚拟存储技术(内存分页的意义)

虚拟内存空间(逻辑地址):程序在执行时内部使用的内存空间

物理内存空间(物理地址):物理机器所配置的实际内存空间,逻辑地址需要进行转换才能得到对应的物理地址

E.页式内存管理中的地址

地址=页号+页内偏移

逻辑地址=逻辑页号+页内偏移

物理地址=物理页号+页内偏移

地址转换时仅变更页号即可,页内偏移不变

逻辑地址到物理地址的映射

84ad6967518987e6cb91fe53f7497606.png

页式内存管理中的关键操作

1.页请求-访问一个逻辑地址时,对应的页不在内存中,从外存中将目标页加到内存中,之后更新页表

2.页交换-页请求时发现物理内存不足,需要将暂时不用的页移除,首先决定并选择需要移除的页;将选中页中的所有数据写入外存,更新页表,重新进行页请求

4b5a9488e63c407e96c41b5523ebffcf.png

小结

1.内存分段能够解决一定问题,但无法保证程序的移植性

2.根据程序运行的局部性原理,可进一步对内存进行分页

3.页指的是固定大小的内存片(4KB)

4.页的引入使得程序的逻辑地址于内存的物理地址彻底分离

5.操作系统的内存管理是以页为基本单位完成的

页式内存管理下

通过之前的介绍出现一些需要注意的问题

1.操作系统如何管理实际的物理内存

2.页表与不同任务有怎样的关系

3.页表对任务的意义是什么

4.页表交换时如何选择需要替换的内存页

5.页表具体是如何构成的

A.操作系统如何管理实际的物理内存

页框与页面

页框:物理内存空间中的页

页面:逻辑内存空间中的页

操作系统对物理内存的管理-首先操作系统必须知道物理内存的使用情况,然后建立结构对物理内存进行管理,结构记录包括页框是否可用,被谁使用;最后为具体的应用程序分配页表

feb94219f2dbf818ed497fee1e6d14de.png

B.页表与不同任务有怎样的关系

每个任务都有专属的页表,页表是任务上下文的一部分

93c410b2eff34d167a51f6f33aa63811.png

C.页表对任务的意义是什么

1.页表机制能够保证任务无法意外的访问或破坏其它任务的内存

2.页表是虚拟内存空间与物理内存空间的分界线

3.因为页表的存在,各个任务才具备相同且独立的内存空间

4.页表是虚拟内存通往物理内存的唯一通道

6c086ce1bbcbb7a5376fb83b26b4fa14.png

D.页交换时如何选择需要替换的内存页

在进行替换时的原则是:对不再使用的内存页进行替换

1.FIFO页交换算法-将最先进入内存的页移除

2.LRU页交换算法-将当前使用最少的页从内存移出

FIFO页交换算法原理

8ab99ededd40f1d8aaea416b58eeef26.png

LRU页交换原理

79f85dd8b961d260fb05f1014194c13e.png

LRU页交换算法原理-访问计数的更新方式

1.每个时间周期将所有页框的访问计数减1

2.当某个页面被访问时,RW将被访问计数加1

3.访问计数最小的页面是最近未被使用的页

E.页表具体是如何构成的

1.页表的本质是一个映射表

2.虚拟内存空间的每一页映射到一个页框

3.页表可以看作做一维整形数组

单级页表

1.每一个任务都有页表

2.单级页表大小固定

3.根据程序云的局部性原理-多数情况下,页表为稀疏状态,单级页表会浪费大量内存资源

5fd686b75834013048df005a2edd2222.png

二级页表

1.把页号分为两段:页目录+二级页号

2.如果下级页表的所有表项为空,那么页目录为空

bf358f475d3a85d72ee05977c942f620.png

二级页表示例-假设当前需要访问虚拟页为0x52,则,页目录为0x5,二级页号为0x2。所以:对应的页框号为0x31

ddb18a6cbed911a359359ec72e336531.png

小结

1.操作系统通过页框表对物理内存进行管理

2.每个任务都有自己专属的页表,任务通过页表使用物理内存

3.需要页置换时,通过规则选择短期内不再使用的页进行置换

4.单级页表能够快速映射对应的页框,但造成内存浪费

5.二级页表将页号分为两部分:页目录+二级页号

6.二级页表需要通过一次寻址才能映射到对应的页框

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c语言 请求页式存储管理,操作系统-页式内存管理 的相关文章

随机推荐

  • Sonar Java默认扫描规则

    规则如下 equals should not be used to test the values of Atomic classes equals 方法不应该用在原子类型的数据上 如 AtomicInteger AtomicLong At
  • MCDF实验——Lab4

    在之前的Lab3中 通过一个初具规模的MCDT的验证环境 学习到 验证环境按照隔离的观念 应分为硬件DUT 软件验证环境 和处于信号媒介的接口interface 对于软件验证环境 需要经历建立阶段 build 连接阶段 connect 产生
  • 浅谈项目售前调研

    一 概述 说到软件项目的售前调研工作 可能还得先谈谈售前顾问这个重要的角色 在IT软件行业 售前顾问位于职业金字塔顶端 是项目开发 实施人员与销售人员间的纽带和桥梁 在销售人员眼中 售前顾问扮演的是技术专家的角色 而在项目实施和开发人员眼中
  • 中兴网络设备交换机路由器查看日志命令方法

    描述 中兴网络设备交换机路由器查看日志命令方法 命令 show logfile
  • 小程序如何实现本地去水印

    自媒体时代 很多人都进行伪原创 但是有些视频本身就有水印的 这个时候我们怎么办 很多人都不懂这个方法 所以导致很多人不会使用 一般都是电脑操作 那我们就没有办法了吗 今天介绍的就是小程序如何实现本地去水印 我们也知道FFmpeg命令 去掉视
  • 波形分析软件 android,新版 PicoScope 软件提供更出色的波形分析和功能 – 免费获取!...

    全球领先的 PC 示波器制造商 Pico Technology Ltd 发布了 PicoScope 软件 6 11 7 版 此版本的 PicoScope 可为研发新一代电气和电子技术的工程师 科学家 技术人员和研究人员提供重要的新功能 本文
  • wifi感知---csi技术

    CSI在WiFi研究领域指Channel State Information 也就是通过接收到的WiFi信号来估计WiFi信号的传播信道长什么样子 它表征了一系列影响的综合 例如散射 衰落 能量随着距离的衰减 目前人们可以从CSI里提取到很
  • C#文件读写小案例

    目录 1 驱动器管理类 2 目录管理类 3 文件管理类 4 路径管理类 5 FileStream类读取文件 6 StreamReader类读取文件 7 使用FileStream类写入文件 用FileStream类写入文件可以指定要写入的位置
  • 逐个版本分析鬼火引擎

    这段时间做手游的cocos2dx的学习 和做web开发的项目 感觉很没劲 还是得研究引擎 我看到有个人的博客直接分析鬼火引擎0 1版本 这个方法不错 两万行左右代码 sourceforge里面有各个版本的代码 这样 正好可以循序渐进地进行
  • Maven导包及打包

    Maven是什么 Maven是一个跨平台的项目管理工具 作为Apache组织的一个颇为成功的开源项目 其主要服务于基于Java平台的项目创建 依赖管理和项目信息管理 是一个自动化构建工具 maven是Apache的顶级项目 解释为 专家 内
  • org.springframework.web.bind.annotation 注解详解

    处理request RequestBody RequestHeader RequestMapping RequestParam RequestPart CookieValue PathVariable 传送门 处理response Resp
  • Python算法教程:强连通分量

    强连通分量 strongly connected components SCCs 是一个能让有向路径上所有节点彼此到达的最大子图 Kosaraju的查找强连通分量算法 def strongly connected components gr
  • Windows下 VS2015编译RocksDB

    Windows下 VS2015编译RocksDB VS2015编译RocksDB RocksDB 是一个来自 facebook 的可嵌入式的支持持久化的 key value 存储系统 也可作为 C S 模式下的存储数据库 但主要目的还是嵌入
  • unity Input.GetAxis()函数

    开发手册上有相关解释 但说得很不清楚 看完也不懂 下面给出详细的解释 根据输入设备 参数分为两类 一 触屏类 1 Mouse X 鼠标沿屏幕X移动时触发 2 Mouse Y 鼠标沿屏幕Y移动时触发 3 Mouse ScrollWheel 鼠
  • Kaldi语音识别学习记录-----编译安装

    语音识别领域的开源框架有CMUSphinx HTK Kaldi等等 而目前仍然比较活跃 且工程价值较高的就数Kaldi 很多从事语音方面的公司 都使用该框架训练自己的语音识别能力 由于其内部代码逻辑较为复杂 故这里一步一步来解读 了解语音识
  • Git的安装下载基本操作与使用,git上传远程仓库gitee配置操作流程,git一站式教程

    目录 一 git的安装 gitee官网直通车 git官网 git安装流程 二 git配置与提交giee远程仓库操作方法与命令 三 本地项目导入仓库 分支操作 拷贝远程仓库 最常用 比如下载别人的仓库代码 一 git的安装 gitee官网直通
  • 2020美赛F题

    2020美赛F题 待补充 先来翻译 翻译最好用谷歌翻译 别问 问就是谷歌 研究人员确定了几个岛国 例如马尔代夫 图瓦卢 基里巴斯和 由于海平面上升 马绍尔群岛有可能完全消失 什么 岛国的土地消失后 岛上的人口会发生什么事情或应该发生什么事情
  • 对meta标签的再次认识

    META标签用来描述一个HTML网页文档的属性 例如作者 日期和时间 网页描述 关键词 页面刷新等 指定字符集 向搜索引擎说明网页的关键词 告诉搜索引擎你的站点的主要内容 告诉搜索引擎你的站点的制作的作者 响应式页面
  • 【stm32】手把手用cubemx配置血氧传感器(MAX30102)

    一 前言 网上流传血氧传感器的代码有好几个版本 听说这个不准 那个不准的 突然间我看到了一篇好文章 大概是自己用软件测试测量结果是否准确 秀的我头皮发麻呀 外部中断触发 本文将通过他的例程来手把手教大家如何配置 本文适合小白 只讲如何应用
  • c语言 请求页式存储管理,操作系统-页式内存管理

    页式内存管理上 A 段式内存管理 1 指的是一段连续的内存空间 2 段式内存管理 程序的各个部分相对独立 数据段 代码段 早期x86处理器无法通过一个寄存器访问所有内存单元 解决早期程序运行的重定位问题 段式内存管理的应用 在x86系列的处