虚拟地址、虚拟内存、物理地址、物理内存

article/2025/9/30 8:33:23

虚拟地址、虚拟内存、物理地址、物理内存

    • 物理内存和虚拟内存
    • 虚拟地址、物理地址

物理内存和虚拟内存

物理内存

  • 物理内存时有限的,当有多个进程要执行的时候,假设都要给4G内存,很显然你内存小一点,这很快就分配完了,于是没有得到分配资源的进程就只能等待。当一个进程执行完了以后,再将等待的进程装入内存。这种频繁的装入内存的操作是很没效率的
  • 由于指令都是直接访问物理内存的,那么我这个进程就可以修改其他进程的数据,甚至会修改内核地址空间的数据,这是我们不想看到的

虚拟内存

  • 通过 虚拟内存 可以让程序可以拥有超过系统物理内存大小的可用内存空间。另外,虚拟内存为每个进程提供了一个一致的、私有的地址空间,它让每个进程产生了一种自己在独享主存的错觉(每个进程拥有一片连续完整的内存空间)
  • 使用虚拟寻址,CPU需要将虚拟地址翻译成物理地址,这样才能访问到真实的物理内存。 实际上完成虚拟地址转换为物理地址转换的硬件是 CPU 中含有一个被称为 内存管理单元(Memory Management Unit, MMU)的硬件。MMU 需要借助存放在内存中的页表来动态翻译虚拟地址,该页表由操作系统管理。

虚拟地址、物理地址

首先,我们打开一个进程发一个指令,会生成一个虚拟地址,该虚拟地址中有虚拟页号和页偏移量,由虚拟页号和MMU中的页表寄存器(表示页表在主存当中的起始位置)做一个偏移,就可以找到与这个虚页号对应的页表项在主存当中的物理地址,如果有效位为1的话,表示当前主存有这个页,那么我们就将这个页表项取出来,也就是知道了物理页号,再用这个物理页号与虚拟地址中的页内偏移相拼接,这样就得到物理地址。这样实现了虚拟地址向物理地址转化的过程。

如果有效位为0的话,表示要的页不在主存中,这个时候产生一个缺页异常,请求操作系统将所需要页调换进主存。之后返回产生缺页异常的进程,再次进行虚实地址的转化。
在这里插入图片描述
在这里插入图片描述


http://chatgpt.dhexx.cn/article/08FKf0I4.shtml

相关文章

虚拟地址空间【详解】 虚拟地址空间是什么 | 为什么要有虚拟地址空间

目录 一、什么是虚拟地址空间 / 虚拟地址空间是如何被设计的 1.先看一下linux空间分布 I.示意图: II.验证: 2. 在已知Linux内存分布之后,我们来看一个奇怪的现象 I.代码 : II. 输出: III.思考,引出--虚拟内存(虚拟地址空间&#xff0…

虚拟地址转物理地址

概述 CPU是如何利用页目录和页表 等数据结构将一个32位的虚拟地址翻译为32位的物理地址的。其过程可以概括为如下步骤。 ① 通过CR3寄存器定位到页目录的起始地址,正因如此,CR3寄存器又称为页目录基地址寄存器(PDBR)。取线性地址…

虚拟地址与物理地址

虚拟地址 恰如其名,这个地址是虚拟的,与具体环境是解耦的,这样可以是程序员在编写程序时只需要关注代码逻辑本身,而不需要考虑地址分配。这些虚拟地址并不是真正运行在机器上的内存地址,每个程序的虚拟地址都是独立存在…

虚拟机ip地址

文章仅为自己在建立虚拟机过程中遇到的问题进行记录。 虚拟机查看IP地址输入 ip address 即可查看; 新建虚拟机的时候会遇到输入ip addr出现没有看到ip地址,例如如下情况时: 每个人上图可能会有不同显示,例如我的就是以eno16777…

浅谈虚拟地址转换成物理地址(值得收藏)

这里,我们讲解一下Linux是如何将虚拟地址转换成物理地址的 一、地址转换 在进程中,我们不直接对物理地址进行操作,CPU在运行时,指定的地址要经过MMU转换后才能访问到真正的物理内存。 地址转换的过程分为两部分,分段…

虚拟地址

虚拟地址 虚拟地址是程序运行在保护模式下,这样程序访问存储器所使用的逻辑地址称为虚拟地址。 那为什么需要虚拟地址呢 我们要说到寻址方式 寻址:根据指令内容确定操作数地址的过程,称为寻址 在16位的cup或者8086cpu的时候,他…

虚拟地址如何访问到物理地址

环境:32bit CPU 一、通过二级页表映射的方式访问物理地址 1、取一级页表的基地址Abase1 2、取虚拟地址的前12bit[31:20]地址O1 3、计算得到新地址Apgd(Abase1&0xFFFFF000)O1,此地址是PGD页表上的地址,取此地址中的数据Abase2 4、取虚拟地…

总线地址、物理地址、虚拟地址

1、总线地址 地址总线(Address Bus)是一种计算机总线,是CPU或有DMA能力的单元,用来沟通这些单元想要访问(读取/写入)计算机内存组件/地方的物理地址。 其实就是CPU能够访问内存的范围。 CPU寻找外部的内…

虚拟地址空间和物理地址空间

1.概念 物理地址:物理地址空间是实在的存在于计算机中的一个实体,在每一台计算机中保持唯一独立性。我们可以称它为物理内存;如在32位的机器上,物理空间的大小理论上可以达到2^32字节(4GB),但如果实际装了512的内存&a…

Linux虚拟地址空间

目录 父子进程地址相同的变量值不同问题运行结果 Linux下进程虚拟地址空间分布什么是虚拟地址空间?进程直接访问物理内存(无虚拟空间)再述虚拟地址空间!虚拟地址空间结构体是如何区域划分?解答最初的问题延伸问题: 一个pid变量怎…

虚拟地址空间

对于每一个进程都会对应一个虚拟地址空间,对于32位的操作系统(其指令的位数最大为32位,因此地址码最多32位),虚拟地址空间的大小为B即0~4GB的虚拟地址空间,其中内核空间为1GB,如下所示&#xff…

逻辑地址、物理地址、虚拟地址

文章目录 物理地址(physical address)虚拟地址(virtual memory)逻辑地址(logical address)线性地址(linear address)或也叫虚拟地址(virtual address)地址转换 物理地址(physical address) 用于内存芯片级的单元寻址,与处理器和CPU连接的地址总线相对应。 虽然可以…

CPU中虚拟地址、逻辑地址(有效地址)、线性地址、物理地址

虚拟地址、逻辑地址(有效地址)、线性地址、物理地址 1、虚拟地址2、逻辑地址(有效地址)3、线性地址4、物理地址5、总结 1、虚拟地址 在实模式下,虚拟地址是指由程序产生的由段选择符和段内偏移地址组成的地址。经过CPU…

虚拟地址和物理地址

1、地址概念 物理地址:物理内存就是真实的内存,CPU的地址线可以直接进行寻址的内存空间大小。比如在32位平台下,寻址的范围是2^32也就是4G,并且这是固定的。在实际的应用中,很多的应用程序都比较大,计算机…

Linux操作系统~什么是虚拟地址?深度剖析进程地址空间

目录 1.所以进程的地址空间是什么呢? 2.mm_struct内部有什么? 3.虚拟地址空间与物理内存如何关联 页表 4.为什么设计这样一个进程地址空间,不让程序直接访问内存 Q:为什么子进程修改值以后,地址还是相同&#xf…

初识虚拟地址空间

物理地址和虚拟地址 物理寻址:CPU访问存储器的最原始方法就是直接用物理地址(Physical Address, 可简称PA)。物理地址是唯一的。 虚拟寻址:CPU通过生成一个虚拟的地址来访问内存,在访问前会把虚拟地址转化为物理地址…

虚拟地址空间,虚拟文件系统

1、虚拟地址空间 1、概念与原因 虚拟地址空间是一个抽象的概念,在IBM中,这样说道:它存在,但你看不见,就是虚拟的。虚拟地址空间就是这样一个东西。(注意区分虚拟内存与虚拟地址空间) 虚拟地址空…

彻底搞懂虚拟内存,虚拟地址,虚拟地址空间

程序经过编译后,变成了可执行的文件,可执行文件主要包括代码和数据两部分,代码是只读的,数据则是可读可写的。 可执行文件由操作系统加载到内存中,交由CPU去执行,现在问题来了,CPU怎么去访问代…

使用POI导出Excel(并使用公式)

使用POI导出Excel(并使用公式) 使用java直接生成Excel并填充数据 可以参考POI官方文档,就是对Sheet,row,cell,Formula等操作, https://poi.apache.org/components/index.html 这种方式也可以生成…

poi导出excel日期格式问题

POI导出Excel的时候有时需要日期格式,在筛选时是这样的 private XSSFWorkbook wb null; String dateFormat "yyyy-MM-dd";//或者"yyyy/MM/dd"格式,"yyyy/M/d"这样的格式不会自动补0 public void setCell(int index,Date value,bool…