当前位置:网站首页>虚拟内存原理与技术
虚拟内存原理与技术
2022-08-05 02:32:00 【rainbow_lucky0106】
“虚拟内存”(虚拟页式存储管理方案):一种内存管理的技术方式,在电脑的物理内存不够用时把一部分硬盘空间作为内存来使用。虚拟内存顾名思义,就是虚构的内存地址空间。
原理:被分隔成多个物理内存碎片,还有部分暂时储存在外部磁盘储存器上,在需要时进行数据交换。
工作原理
程序执行的原理
操作系统为每个进程提供了一个假象:它拥有属于自己的大量的私有内存,可以有巨大的连续地址空间放入自己的代码和数据。用户程序中访问的地址都是虚拟地址,需要经过操作系统和硬件的协同工作将这个虚拟地址翻译为物理地址,找到想要的信息。
现代计算机系统都配有高速可随机访问存储器,称为主存储器、物理内存或者直接称为内存。内存是用于存放代码和数据的硬件,它是处理器能直接寻址的存储空间,存取速率快。内存的承载实体通常是随机存取存储器(RAM),CPU可以直接与RAM交换数据。RAM在工作状态下,可以随时从任何一个指定的地址写入(存入)或读出(取出)信息。
CPU通常生成一个虚拟地址(VA)来访问主存,这个虚拟地址被加载到内存之前,需要先查表转换成物理地址(PA),最终CPU间接的访问了内存的这个物理地址(PA)。
程序被执行前需要先将程序放到内存中才能被CPU处理。
程序运行时会将保存在硬盘上的程序复制到RAM内存(载入内存),然后CPU执行内存中的程序代码。如果执行的程序占用内存很大或很多,或同时执行多个程序,就会导致内存消耗殆尽。从而导致程序执行异常或崩溃。
虚拟内存工作原理
进程在运行时的地址空间实际上是一层逻辑抽象的连续地址。当进程开始运行时,先将一部分程序装入内存,另一部分暂时不需要实际物理内存的暂时留在外存,暂不分配实际物理内存;当要执行的指令不在内存时,由系统自动完成将它们调入内存的工作。
(内存管理:自动交换技术)当没有足够的内存时,系统自动选择部分内存(暂不执行的程序)空间,将其中原有的内容交换到磁盘(硬盘)上,并释放其所占用的实际物理内存供其他进程使用。这样做的结果使程序的运行丝毫不受影响,使程序在运行中感觉到拥有一个不受内存容量约束的、虚拟的、能够满足自己需求的存储器。
- 页面置换算法:参看《操作系统》。
虚拟内存给予应用程序强大的能力,应用程序可以创建和销毁内存片,应用程序可以将内存片映射到磁盘文件中,应用程序可以与其它进程共享内存。
作用
替代物理内存的部分工作来运行程序,电脑就可以运行更多的程序,同时执行更多的任务。
虚拟内存并不是内存的后备那么简单,很多时候Win会利用虚拟内存执行一些特定的操作,提升内存的命中率和系统的稳定,尤其是一些比较吃内存的软件,如Photoshop、3Dmark,以及一些3D游戏等,在运行时也会需要虚拟内存。
缺点
但是频繁换入换出仍然是性能的瓶颈。为了减缓换入换出带来的影响,增加可用物理内存和增加外存的访问速度是两种可选方案。
特点
- 价格低廉、容量大。虚拟内存实际是硬盘的空间,其相同空间的价格要比物理内存低廉。
- 运行效率低。硬盘传输的速度要比内存传输速度慢的多。
- 断电后数据丢失。和物理内存一样,在突然断电后,虚拟内存中的数据就会丢失,不具有硬盘(外部存储器)断电的保存功能。
系统空间设置
我们可以自己使用电脑的实际情况来不断调整设置电脑虚拟内存的大小,设置的过小就会不够用,设置的过大就会产生过多的碎片,影响电脑运行速度。
建议:电脑实际物理内存的1.5倍到3倍之间。也可以让Windows来自动分配管理虚拟内存,它能根据实际内存的使用情况,动态调整虚拟内存的大小。
边栏推荐
- Domain Driven Design - MDD
- mysql tree structure query problem
- shell语句修改txt文件或者sh文件
- Greenplum Database Fault Analysis - Why Does gpstart -a Return Failure After Version Upgrade?
- Apache DolphinScheduler新一代分布式工作流任务调度平台实战-中
- View handler 踩坑记录
- 从零到一快速学会三子棋
- 意识形态的机制
- Matlab map with color representation module value size arrow
- DAY23: Command Execution & Code Execution Vulnerability
猜你喜欢
01 [Foreword Basic Use Core Concepts]
nodeJs--封装路由
Live preview | 30 minutes started quickly!Look at credible distributed AI chain oar architectural design
LPQ(局部相位量化)学习笔记
云原生(三十二) | Kubernetes篇之平台存储系统介绍
LPQ (local phase quantization) study notes
matlab绘制用颜色表示模值大小的箭头图
Gantt chart is here, project management artifact, template is used directly
RAID disk array
SuperMap iDesktop.Net之布尔运算求交——修复含拓扑错误复杂模型
随机推荐
KingbaseES V8 GIS data migration solution (2. Introduction to the capabilities of Kingbase GIS)
HOG feature study notes
云原生(三十二) | Kubernetes篇之平台存储系统介绍
The 20th day of the special assault version of the sword offer
LeetCode使用最小花费爬楼梯----dp问题
力扣-二叉树的前序遍历、中序遍历、后序遍历
【存储】曙光存储DS800-G35 ISCSI各映射LUN给服务器
.Net C# Console Create a window using Win32 API
OpenGL 工作原理
iNFTnews | 对体育行业和球迷来说,NFT可以带来什么?
Jincang database KingbaseES V8 GIS data migration solution (3. Data migration based on ArcGIS platform to KES)
C语言实现简单猜数字游戏
行业案例|世界 500 强险企如何建设指标驱动的经营分析系统
Domain Driven Design - MDD
Industry case | insurance companies of the world's top 500 construction standards can be used to drive the business analysis system
Regular expression to match a certain string in the middle
基于左序遍历的数据存储实践
.Net C# 控制台 使用 Win32 API 创建一个窗口
mysql树状结构查询问题
后期学习计划