虚拟存储器(虚拟内存Vitual Memory)

news/2024/10/23 16:17:17/

因为Redis 是基于内存的操作,我们先从内存开始说起。

虚拟存储器(虚拟内存Vitual Memory)

名词解释:主存:内存;辅存:磁盘(硬盘)

计算机主存(内存)可看作一个由M 个连续的字节大小的单元组成的数组,每个字节有一个唯一的地址,这个地址叫做物理地址(PA)。早期的计算机中,如果CPU 需要内存,使用物理寻址,直接访问主存储器。

这种方式有几个弊端:

1、在多用户多任务操作系统中,所有的进程共享主存,如果每个进程都独占一块物理地址空间,主存很快就会被用完。我们希望在不同的时刻,不同的进程可以共用同一块物理地址空间。

2、如果所有进程都是直接访问物理内存,那么一个进程就可以修改其他进程的内存数据,导致物理地址空间被破坏,程序运行就会出现异常。

为了解决这些问题,我们就想了一个办法,在CPU 和主存之间增加一个中间层。CPU不再使用物理地址访问,而是访问一个虚拟地址,由这个中间层把地址转换成物理地址,最终获得数据。这个中间层就叫做虚拟存储器(Virtual Memory)。

具体的操作如下所示:

在每一个进程开始创建的时候,都会分配一段虚拟地址,然后通过虚拟地址和物理地址的映射来获取真实数据,这样进程就不会直接接触到物理地址,甚至不知道自己调用的哪块物理地址的数据。

目前,大多数操作系统都使用了虚拟内存,如Windows 系统的虚拟内存、Linux 系统的交换空间等等。Windows 的虚拟内存(pagefile.sys)是磁盘空间的一部分。

在32 位的系统上,虚拟地址空间大小是2^32bit=4G。在64 位系统上,最大虚拟地址空间大小是多少?是不是2^64bit=1024*1014TB=1024PB=16EB?实际上没有用到64 位,因为用不到这么大的空间,而且会造成很大的系统开销。Linux 一般用低48 位来表示虚拟地址空间,也就是2^48bit=256T。

cat /proc/cpuinfo

address sizes : 40 bits physical, 48 bits virtual

实际的物理内存可能远远小于虚拟内存的大小。

总结:引入虚拟内存,可以提供更大的地址空间,并且地址空间是连续的,使得程序编写、链接更加简单。并且可以对物理内存进行隔离,不同的进程操作互不影响。还可以通过把同一块物理内存映射到不同的虚拟地址空间实现内存共享。

 


http://www.ppmy.cn/news/541678.html

相关文章

虚拟存储器 与虚拟内存详解

在没有虚拟存储器之前 源程序在gcc –o 后生成的文件是可执行目标程序a.out,每条指令都有一个逻辑地址 32位。它存在硬盘上。 要执行时,只需找到该文件,将其装入内存。 装入的方式可以有多种,比如分页,分段等等。但…

虚拟机下的DSM扩展存储空间

step0 DSM客户机关机,在虚拟机设置--硬件--硬盘,扩展...,设置合适的虚拟硬盘vmdk的大小 step1 接下来就是使用新扩展的硬盘来扩展DSM系统中的存储空间,如果熟悉Ubuntu的用户应该对Ubuntu环境下使用GParted图形界面扩展工具比较熟悉…

matlab 扩大虚拟内存方法

matlab 扩大虚拟内存 使用Matlab训练神经网络时,提示"out of memory",于是不得不扩展虚拟内存。 1)查看当前的虚拟内存 在Matlab的命令行中,键入命令:feature (‘memstats’),得到如下结果&am…

磁盘概述、磁盘缓存、虚拟内存及虚拟内存与内存的交换方式

目录 一、认识磁盘 程序不读入内存就无法运行 二、磁盘缓存 三、虚拟内存 四、虚拟内存与内存的交换方式 一、认识磁盘 磁盘和内存都具有存储功能,它们都是存储设备。区别在于,内存是通过 电流 来实现存储;磁盘则是通过 磁记录技术 来实…

虚拟化之——内存虚拟化

转载自: 内存虚拟化(内存地址转换) (qq.com)https://mp.weixin.qq.com/s/A9FtVxzmf2LEPhvR1xm4VQ 前言 操作系统中的内存管理很复杂,涉及到了很多知识,最重要的就是虚拟内存。虚拟内存一方面是用来扩充空间&#xf…

如何扩展虚拟内存

虚拟内存,顾名思义就是虚拟的而不是实际的硬件,是为满足程序的运行要求,扩大可用“内存”空间而设置的。 在系统区根目录下有一个pagefile.sys文件,这就是windows使用的虚拟内存的文件。 通常情况下,使用时都是按照系…

在github上创建个人主页的方法【2023更新版】

01-进入github的网站,链接 https://github.com/ ,然后注册,登陆,注意登陆时设置的用户名(username)就是将来你个人主页的三级域名,所以这里一定要慎重填写username。如下图所示: 02-注册完成后进入个人主…

nmap常用扫描命令

1. nmap扫描一台机器 nmap 192.168.133.672. nmap扫描一台机器,查看打开端口及详细信息 nmap -v 192.168.133.673. nmap 指定端口/端口范围扫描 nmap -p 1-65535 192.168.133.67nmap -p 1-100,135,8080,443 192.168.133.67 <