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

什么是地址总线?

地址总线(Address Bus ;又称位址总线)属于一种电脑总线(一部份),是由CPU或有DMA能力的单元,用来沟通这些单元想要存取(读取/写入)电脑内存元件/地方的实体位址。

换而言之,就是cpu能够访问内存的范围。

我们平时所说的计算机是32位,64位,指的是计算机的CPU中寄存器的最大存储长度,如果寄存器中最大存储32bit的数据,就称之为32位系统。在计算机中,数据一般都是在硬盘,内存和寄存器之间进行来回存取。CPU通过3种总线把各组成部分联系在一起:地址总线,数据总线和控制总线。地址总线的宽度决定了CPU的寻址能力,也就是CPU能达到的最大地址范围。内存是通过地址来管理的,CPU想从内存中的某个地址空间上存取一个数据,CPU就需要在地址总线上输出这个存储单元的地址。假如地址总线的宽度是8位,能表示的最大地址空间就是256字节,能找到内存中最大的存储单元是255这个格子(从0开始)。即使内存条的实际空间是2G字节,CPU也没法使用后面的内存地址空间。如果地址总线的宽度是32位,那么能表示的最大地址就是2的32次方,也就是4G字节的空间。

举例说明︰装了32位的win7系统,明明内存条86,可是系统只识别了3.8G ,装了64位,才能识别到8g。

32位能表示/访问4,294,967,296 bit

换算一下就是:

bit4,294,967,296
kbit4,194,304
mbit4,096
gbit4

我们可以使用指令来查看树莓派的内存有多大,cat /proc/meminfo

如图所示,32位的树莓派,949M约1G内存大小。

在这里插入图片描述

什么是物理地址?

存储器里以字节为单位存储信息,为正确地存放或取得信息,每一个字节单元给以一个唯一的存储器地址,称为物理地址(Physical Address),又叫实际地址或绝对地址。

什么是虚拟地址?

虚拟地址是Windows程序时运行在386保护模式下,这样程序访问存储器所使用的逻辑地址称为虚拟地址,是基于算法的地址(软件层面的假地址)。

三者的作用

虚拟地址 (virtual address): CPU启动保护模式后,程序运行在虚拟地址空间中。注意,并不是所有的“程序”都是运行在虚拟地址中。CPU在启动的时候是运行在实模式的,Bootloader以及内核在初始化页表之前并不使用虚拟地址,而是直接使用物理地址的。

如果CPU寄存器中的分页标志位被设置,那么执行内存操作的机器指令时,CPU(准确来说,是MMU,即Memory Management Unit,内存管理单元)会自动根据页目录和页表中的信息,把虚拟地址转换成物理地址,完成该指令。

在这里插入图片描述

我们的32位树莓派物理内存约1G,CPU可以识别的范围是约4G,假设你的程序在磁盘超过1个G,物理地址不够用,大概率运行不起来或者崩掉,此时就需要虚拟地址来帮助我们扩大虚拟的容量(准确说是映射),将我们的物理地址通过分页机制(页表mmu)映射到虚拟地址,我们写的代码都是操控的虚拟地址,上层应用程序都是运行在虚拟地址中的。


参考:https://blog.csdn.net/qq_55299368/article/details/118875855

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

石子君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值