第3章 内存管理(2)

news2024/11/16 13:29:50

3.2虚拟内存管理

3.2.1 传统内存和虚拟内存对比

传统内存虚拟内存
一次性:全部装入内存才能运行多次性:仅装入当前需要的数据
驻留性:作业装入内存,运行时一直驻留内存对换性:暂时用不到的数据换出外存
虚拟性:逻辑上扩充内存
作业过大无法装入,作业过多也无法装入
需要添加请求调页功能和页面置换功能

3.2.2 请求分页管理

  • 1.页表格式
页号物理块号状态位[是否在内存]访问字段[最近是否访问]修改位[标记是否修改]外存位置
  • 2.缺页中断
    页面不在内存,产生缺页中断(异常/内中断),操作系统处理完后,重新执行被中断的指令一条指令可以产生多次缺页中断
    ①请求调页 ②页面置换 ③修改新增表项

  • 3.地址变换
    在这里插入图片描述
    发生缺页:①查块表 (没中) ②查慢表 (没中) ③调入页 (修改慢表,同时加入块表)


3.2.3页框分配

  • 1.驻留集:进程的物理块的集合

    • 过大:多道程序并发下降
    • 过小:缺页频繁
  • 2.内存分配策略

    • 1.固定分配局部置换:开始时分配全部内存,运行期间不变。
    • 2.可变分配全局置换:开始时分配部分内存,运行期间缺页使用任意空闲物理块。[缺页分配新物理块]
    • 2.可变分配局部置换:开始时分配部分内存,运行期间缺页使用进程拥有的空闲物理块。
  • 3.调入时机

    • 1.预调页策略:由局部性原理,调入连续几个页面。【在首次调入使用】
    • 2.请求调页策略:缺页才调入内存。【运行期间使用】
  • 4.何处调入

    • 对换区充足::先将进程相关文件放入对换区,再调入内存
    • 对换区不足:不会修改的文件从对换区调入,被修改的文件调出时 写入对换区
    • UNIX方式:进程相关的文件放入文件区,被换出的放在对换区

3.2.4 页面置换算法

  • 1.最佳(OPT)置换算法 【无法实现】:换出不再使用的页面或最长时间不会使用的页面。
  • 2.先进先出(FIFO)页面置换算法【实现简单,性能差,唯一可能出现Belady异常】:淘汰最先进入内存页面
  • 3.最近最久未使用(LRU)置换算法【需要专门硬件实现排序,性能好,但实现困难,性能最接近OPT】:换出最久没有使用的页面
  • 4.时钟(CLOCK)置换算法
    • 1.简单版:【访问位】
      • ①寻找访问位为0的,所经过的都置为0
      • ②第二轮一定可以找到
    • 2.改进版【访问位,修改位】
      • ①第一轮找(0,0),不做任何修改
      • ②第二轮找(0,1),经过的将访问位置为0
      • ③第三轮找(0,0),不做任何修改
      • ④第四轮找(0,1)
      • 总结:①未访问,未修改②未访问,被修改③被访问,未修改④被访问,被修改

3.2.5 抖动和工作集

  • 1.抖动:频繁换入换出。主要原因:频繁访问的页面数目大于进程拥有的物理块数
  • 2.工作集:驻留集大小应该大于等于工作集,否则发生抖动

3.2.6 内存映射文件【系统调用】

  • 1.方便访问文件数据
    • 传统文件访问:①open打开文件 ②seek移动读写指针 ③read读入多少数据 ④write 写回磁盘
    • 内存映射文件:①open打开文件 ②mmap文件映射到虚拟地址 ③访问内存一样访问数据 ④操作系统完成文件读入读出 ⑤OS自动写回被修改文件
  • 2.方便进程共享文件
    • 不同进程将虚拟存储映射到同一个物理块。
      在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1643292.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

3.10设计模式——Template Method 模版方法模式(行为型)

意图 定义一个操作中的算法骨架,而将一些步骤延迟到子类中,Template Method 使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。 结构 AbstractClass(抽象类)定义抽象的原语操作,具体的子类将重定…

贪吃蛇(下)游戏的实现

感谢大佬的光临各位,希望和大家一起进步,望得到你的三连,互三支持,一起进步 个人主页:LaNzikinh-CSDN博客 文章目录 前言一.蛇和食物的打印二.游戏的运行逻辑三.结束游戏 (善后工作)四.游戏的测…

MacBook Pro 原生安装 Ubuntu 24.04 ARM 版

趁着休假整理家里闲置的设备,看到了一台许久不用的 M2 芯片的 MacBook Pro,想着或许应该把它改造成 ARMv64 的 CI/CD 构建机,于是就有了这篇文章。 本篇文章适用于 M1、M2 全系列的设备,包括:MacBook Air、MacBook Pr…

JVM笔记2--垃圾收集算法

1、如何确认哪些对象“已死” 在上一篇文章中介绍到Java内存运行时的各个区域。其中程序计数器、虚拟机栈、本地方法栈3个区域随着线程而生,随线程而灭,栈中的栈帧随着方法的进入和退出而有条不紊的执行着入栈和出栈操作。每个栈帧中分配多少内存基本上…

OpenCV多张图片堆叠显示

OpenCV实现多张图片堆叠显示 程序思路效果代码 程序思路 读取两张或多张图片;获取图片尺寸;选择多张图片中较大的宽度和高度建立画布;合并图片到画布; 效果 代码 import cv2 import numpy as np# 读取两张图片 img1 cv2.imrea…

【软件开发规范篇】JAVA后端开发编程规范

作者介绍:本人笔名姑苏老陈,从事JAVA开发工作十多年了,带过大学刚毕业的实习生,也带过技术团队。最近有个朋友的表弟,马上要大学毕业了,想从事JAVA开发工作,但不知道从何处入手。于是&#xff0…

Endnote X9 20 21如何把中文引用的et al 换(变)成 等

描述 随着毕业的临近,我在写论文时可能会遇到在引用的中文参考文献中出现“et al”字样。有的学校事比较多,非让改成等等,这就麻烦了。 本身人家endnote都是老美的软件,人家本身就是针对英文文献,你现在让改成等等&a…

Fetch的概述和基本使用

03 【Fetch的概述和基本使用】 1.XMLHttpRequest缺点 浏览器提供了原生的AJAX实现类XMLHttpRequest,基于该类实例,我们可以实现在网页上发送AJAX请求到服务端。 但是XMLHttpRequest的设计并不完美,主要体现在以下几个方面: HT…

贪吃蛇(上)Win32API

感谢大佬的光临各位,希望和大家一起进步,望得到你的三连,互三支持,一起进步 个人主页:LaNzikinh-CSDN博客 文章目录 前言一、Win32 API二、地图的绘制和初始化总结 前言 贪吃蛇(也叫做贪食蛇)游…

Noir Dark Mode for Safari:夜间浏览的舒适伴侣

Noir Dark Mode for Safari是一款实用的浏览器插件,它使夜间浏览网页变得更加轻松和舒适。通过自动为访问的每个网站添加暗色模式,Noir减少了用户在暗光环境下浏览网页时可能产生的眼睛疲劳。 Noir的自定义功能允许用户根据自己的喜好调整暗色模式的设置…

配电室智能巡检机器人

近年来,生产过程高度自动化,各工矿企业关键场所需定期巡检维护。但目前巡检主要靠人工,既耗时费力效率又低,且受环境等因素影响,巡检难以全面规范,隐患或问题易被忽视。在此情况下,如何利用现有…

IoTDB 入门教程 基础篇③——基于Linux系统快速安装启动和上手

文章目录 一、前文二、下载三、解压四、上传五、启动六、执行七、停止八、参考 一、前文 IoTDB入门教程——导读 二、下载 下载二进制可运行程序:https://dlcdn.apache.org/iotdb/1.3.1/apache-iotdb-1.3.1-all-bin.zip 历史版本下载:https://archive.…

Linux Systemd基础教程

一、什么是systemd? systemd是Linux系统的一套基本构建模块。它提供了一个系统和服务管理器,作为PID 1运行并启动系统的其余部分。 systemd提供积极的并行化功能,使用套接字和D-Bus激活来启动服务,提供按需启动守护进程&#xf…

金属表面粗糙度对信号的影响

在进行PCB的传输线设计时,如果希望仿真结果更加贴合于实际的效果,就需要考虑很多的附加因素,比如,真实的叠构参数、介电常数、损耗角正切值、蚀刻因子、金属表面粗糙度、玻纤效应等,在常规的信号仿真中,前三…

Git系列:如何为不同的Git仓库设置不同的配置项?

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

如何配置X86应用程序启用大地址模式(将用户态虚拟内存从2GB扩充到3GB),以解决用户态虚拟内存不够用问题?(项目实战案例解析)

目录 1、概述 2、为什么不直接将程序做成64位的? 3、进程内存不足导致程序发生闪退的案例分析 3.1、问题说明 3.2、将Windbg附加到程序进程上进行动态调试 3.3、动态调试的Windbg感知到了中断,中断在DebugBreak函数调用上 3.4、malloc或new失败的…

新手去做抖音小店,这七点千万别忽视!建议收藏!

大家好,我是电商小V 今天咱们就来详细的说一下新手操作抖音小店的几个通病,想要去做抖音小店的小伙伴千万要注意,一定要避免,不要踩坑, 第一点:新手刚去做抖音小店不赚钱的主要原因不是因为你选择了大类目&…

从零开始Hadoop安装和配置,图文手把手教你,定位错误(已部署成功)

文章目录 时间急的可以看速成,虚拟机和配置方法已给出,提供下载的为一台主节点一台分结点的虚拟机下载,只需进行ip地址更换即可 [现成Hadoop配置,图文手把手交你](https://blog.csdn.net/weixin_52521533/article/details/1328627…

7.string

目录 学库一定会看文档 1.Member functions string介绍 2.迭代器iterator 1.正向迭代器 2.反向迭代器 3.反向const 4.反向const 3.容量capacity 0.size(),capacity(),max_size(),length() 1.扩容机制(vs和Linux g对比) 2.clear(&a…

从电商系统认识数据与数据的存储

相信各位读者一年不知道要多少次通过电商App浏览和购买商品。既然大家对电商系统都比较熟悉,我将以电商系统作为研究对象,进一步聊聊数据与数据存储的相关内容。 比如我们在某平台搜索“文件系统”这个关键字,想看看这方面的书籍。当我们输入…