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

第三章 内存管理 十一、虚拟内存的基本概念

目录

一、传统存储管理

1、缺点

二、局部性原理

1、时间局部性:

2、空间局部性:

三、虚拟内存的定义和特征

1、结构

​编辑

2、定义

3、特征

(1)多次性:

(2)对换性:

(3)虚拟性:

四、如何实现虚拟内存

五、总结


一、传统存储管理

1、缺点

(1)一次性:作业必须一次性全部装入内存后才能开始运行。

这会造成两个问题:

①作业很大时,不能全部装入内存,导致大作业无法运行;

②当大量作业要求运行时,由于内存无法容纳所有作业,因此只有少量作业能运行,导致多道程序并发度下降。

(2)驻留性:一旦作业被装入内存,就会一直驻留在内存中,直至作业运行结束。

事实上,在一个时间段内,只需要访问作业的一小部分数据即可正常运行,这就导致了内存中会驻留大量的、暂时用不到的数据,浪费了宝贵的内存资源。

二、局部性原理

1、时间局部性:

如果执行了程序中的某条指令,那么不久后这条指令很有可能再次执行;

如果某个数据被访问过,不久之后该数据很可能再次被访问。(因为程序中存在大量的循环)

2、空间局部性:

一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也很有可能被访问。

(因为很多数据在内存中都是连续存放的,并且程序的指令也是顺序地在内存中存放的)

三、虚拟内存的定义和特征

1、结构

2、定义

  1. 虚拟内存是一种计算机操作系统的内存管理技术,它将计算机物理内存和硬盘上的空间结合起来,使得进程能够使用超过物理内存容量的内存。
  2. 虚拟内存将进程所需的部分数据和代码存储到物理内存中,而将不经常使用的数据和代码存储到硬盘上,当需要使用这些数据和代码时,再从硬盘上通过页调度等技术交换到物理内存中。
  3. 虚拟内存可以大大提高计算机的运行速度和多任务处理能力。

3、特征

(1)多次性:

无需在作业运行时一次性全部装入内存,而是允许被分成多次调入内存。

(2)对换性:

在作业运行时无需一直常驻内存,而是允许在作业运行过程中,将作业换入、换出。

(3)虚拟性:

从逻辑上扩充了内存的容量,使用户看到的内存容量,远大于实际的容量。

四、如何实现虚拟内存

虚拟内存一般是通过操作系统来实现的,具体的实现方式如下:

  1. 分页系统:将虚拟地址空间划分为固定大小的页面(称为虚拟页面),并将物理内存也分为相同大小的页面(称为物理页面)。当程序访问一个虚拟地址时,操作系统会将其转换为物理地址,并将相关的物理页面调入内存。

  2. 页面置换算法:当内存不足时,需要选择一些不常用的物理页面来释放,以便新的页面可以被调入内存。常用的页面置换算法包括最近最少使用(LRU)、先进先出(FIFO)等。

  3. 页面缓存:操作系统也会使用一些缓存来优化虚拟内存的访问性能。比如,缓存一些常用的页面,以便快速访问;或者使用预读策略,提前将可能用到的页面缓存到内存中。

  4. 交换空间:当物理内存不足时,操作系统会将一部分内存中的页面写回磁盘,并将它们存储在交换空间中。当需要时,可以将这些页面重新调回内存中。

总的来说,实现虚拟内存需要操作系统提供一系列的管理策略和机制,以便能够有效地管理内存,并提供较好的性能和可靠性。

五、总结

http://www.lryc.cn/news/199046.html

相关文章:

  • web前端面试-- http的各个版本的区别(HTTP/0.9、HTTP/1.0、HTTP/1.1、HTTP/2.0、HTTP/3.0)
  • 统计学习方法 隐马尔可夫模型
  • Cypress 与 Selenium WebDriver
  • Leetcode 第 365 场周赛题解
  • 什么是软件测试? 软件测试都有什么岗位 ?软件测试和调试的区别? 软件测试和开发的区别?软件测试等相关概念入门篇
  • VI/VIM的使用
  • 【虹科干货】Redis Enterprise vs ElastiCache——如何选择缓存解决方案?
  • 2.2.2 交换机间相同vlan的通信
  • C的魅力在于指针
  • 【Linux常用命令14】Linux系统监控常用命令
  • Python Watchdog:高效的文件系统监控
  • C++中多态的原理【精华】
  • 亿赛通电子文档安全管理系统 Update.jsp SQL注入
  • 神经网络中的反向传播:综合指南
  • 协同创新、奔赴未来——“华为云杯”2023人工智能创新应用大赛华丽谢幕
  • 介绍Node.js中fs模块 代码和注释。
  • 【QT 读取JSON】 深入浅出 使用QT内置的QJson模块解析Json文件 匠心之作
  • 初识javaweb2 tomcat
  • 使用OPENROWSET :在一个数据库中查询另一个数据库的数据
  • 基于STM32设计的智慧农业管理系统(ESP8266+腾讯云微信小程序)
  • Flutter视图原理之三棵树的建立过程
  • 详细解析冒泡排序,JS如何基本实现的。
  • 如何消除CSDN博文代码中自动添加的行号
  • 定制效果在线定制印刷系统源码 DIY在线定制系统源码 云印刷定制系统源码手机、PC端实时互通
  • 算法|每日一题|同积元组|哈希统计
  • 最新AI创作系统ChatGPT网站H5源码V2.6.4+搭建部署教程+支持GPT4.0+支持ai绘画(Midjourney)/支持Prompt预设应用
  • 最新!两步 永久禁止谷歌浏览器 Google Chrome 自动更新
  • 在Java中线程和进程的区别
  • 【高危安全通告】Oracle 10月月度安全漏洞预警
  • 卷王问卷考试系统SurveyKing,开源调查问卷和考试系统源码