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

article/2025/9/17 1:26:27

什么是地址总线?

地址总线(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


http://chatgpt.dhexx.cn/article/NFfZaAjP.shtml

相关文章

计算机总线详解(数据总线、地址总线、控制总线)

文章目录 1 概述2 总线分类2.1 数据总线 Data Bus2.2 地址总线 Address Bus2.3 控制总线 Control Bus 3 扩展3.1 常考题3.2 百度百科 - 总线 Bus 1 概述 总线(Bus) 是计算机各种功能部件之间传送信息的 公共通信干线如果说 主板(Mother Boar…

总线之地址总线、数据总线、控制总线

https://www.cnblogs.com/codexlx/p/13252705.html 1.地址总线: CPU是通过地址总线来指定存储单元的,因此总线地址上能传送多少个不同的信息,CPU就可以对多少个存储单元进行寻址 一个CPU有N根地址线,那么可以说这个CPU的地址总线…

CentOS8 arm64架构 鲲鹏服务器上安装zabbix-agent

1、使用系统yum源中自带的资源安装 查看yum中自带的zabbix资源包 sudo yum list |grep zabbix安装 sudo install zabbix40-agent.aarch64 # 填写自己服务器上的资源2、下载资源包安装 获取官网下载地址 zabbix官网下载.aarch64.rpm的资源包,地址 搜索需要的包 …

ARM64(aarch64)下安装tensorflow

首先从Github下载安装包: tensorflow-on-arm 选择合适的版本,例如tensorflow-1.14.0-cp35-none-linux_aarch64.whl 命名规则:cp35代表python3.5,aarch64表示架构信息 wget https://github.com/lhelontra/tensorflow-on-arm/rele…

QEMU启动ARM64 Linux内核

目录 前言前置知识virt开发板ARM处理器家族简介 安装qemu-system-aarch64安装交叉编译工具交叉编译ARM64 Linux内核交叉编译ARM64 Busybox使用busybox制作initramfs使用QEMU启动ARM64 Linux内核 前言 本文介绍采用 qemu 模拟ARM-64bit开发板(针对ARM-32bit的有另一…

centos for arm64

Arm64的centos版本自7.5.1804以后不再和7.4、7.3、7.2等之前的一样直接提供一个rootfs.tar.xz的压缩包,全部变成了ISO的安装文件,因此需要EFI来引导安装,如果Aarch64的cpu用的是uboot就只有干瞪眼了,笔者花了一翻功夫,…

ARM64逆向基础

为什么要学ARM64? android 5.0系统就开始引入Arm64-v8a,它用于支持全新的AArch64架构,这个架构也就是我们要学习的arm64汇编。目前android系统已经发展到anroid 11版本。因此现在主流的apk都是支持AArch64架构。那么我们利用IDA(…

第一章 QEMU虚拟机与ARM64平台搭建

系列文件目录 《ARM64体系结构结构编程与实践》学习与应用记录 第一章 QEMU虚拟机与ARM64平台搭建 文章目录 系列文件目录本章前言一、ubuntu虚拟机安装1.ubuntu20.04镜像下载2.镜像安装3.工具安装 二、代码下载1.git配置2.runninglinuxkernel代码下载3.代码编译 总结 本章前言…

搭建arm64的qemu环境

说明 qemu在调试内核方面还是比较方便、效率的。以前基本上多是用arm32的平台,网上大部分资源也是关于arm32的。现在arm64的也比较普遍了,最近刚好要看一些内核的东西,花了2天的时间搭建了这个环境,希望看到的朋友少走弯路&#…

x86_64(intel64、amd64)和ARM64的区别以及发展

文章目录 区别引用 区别 ARM64架构 ARM 公司研发的,用的是精简指令集(追求节能,低功耗)。通常用于手机、平板等CPU,目前笔记本电脑也会采用ARM64构架的CPU,比如mac m1就是arm64(查看命令:uname…

x86 x64 arm64的区别

x86 x64 arm64的区别 源地址:https://www.cnblogs.com/zhaoqingqing/p/13145115.html 我们常说的高通 865,麒麟990 不是 CPU 是 SoC(System On Chip),SoC 除了 CPU 外,还有 GPU,还有可选的浮…

Python线性方程求解-矩阵左除“\“、右除“/“

目录 1 线性方程组求解方法 2 左除“\”→AxB 3 右除"/"→xAB 4 其它说明 1 线性方程组求解方法 如果AxB,则xA\B,称为左除;如果xAB,则xB/A,称为右除。 式中x为未知数。一般情况下,左除用的系…

Matlab:用矩阵的除法替代逆运算的操作(inv)

在matlab中直接用逆运算常常会提示,建议用矩阵的左除或右除替换,因为inv(A)*b速度更慢且准确度更低。 matlab中部分详细信息:为了求解线性方程组,矩阵的逆主要是理论值。 切勿使用矩阵的逆 ,即 x inv(A)*b 来求解线性…

逆矩阵的概念、应用和求解

目录 逆矩阵的概念 求解逆矩阵 应用例子 可能没有逆矩阵 求解逆-方法1:初等行运算(高斯-若尔当) 求解逆-方法2:余子式、代数余子式和伴随 求解逆-方法3:程序库 逆矩阵的概念 矩阵运算中,…

利用矩阵的逆(伪逆)与除法求解

利用矩阵的逆(伪逆)与除法求解: 对于线性方程组Axb,若其为恰定方程组且A是非奇异的,则求x最明显的方法便是利用矩阵的逆,即xA\b;若不是恰定方程组,则可利用伪逆来求其一个特解。 运用pinv命令…

9、矩阵的简单运算

目录 一、矩阵的加减运算 二、矩阵的乘方运算 1.数与矩阵的乘法 2.矩阵与矩阵的乘法 三、矩阵的除法 四、矩阵的幂运算 五、矩阵元素的查找 六、矩阵元素的排序 七、矩阵元素的求和 八、矩阵元素的求积 九、矩阵元素的差分 一、矩阵的加减运算 进行矩阵加法、减法运…

矩阵的相乘与相除

这里写自定义目录标题 矩阵的数组乘/除及乘方参与除运算的两个矩阵同维时参与运算的矩阵有一个标量时数组乘方的运算规则Matlab的符号计算:Matlab画图 矩阵的数组乘/除及乘方 参与除运算的两个矩阵同维时 运算为矩阵相应的元素相除 参与运算的矩阵有一个标量时 …

矩阵乘法

两个矩阵可以相乘&#xff0c;必须满足的条件是&#xff1a;左边矩阵的列等于右边矩阵的行 如&#xff1a;一个3x4的矩阵和一个4x2的矩阵相乘&#xff0c;得到一个3x2的矩阵&#xff1b; 矩阵乘法函数&#xff1a; mat3 add(mat1 A,mat2 B){mat3 ans; for(int i0;i<s1;i)f…

算法——矩阵算法

目录 一.矩阵快速幂&#xff08;1&#xff09;矩阵定义&#xff08;2&#xff09;加法运算&#xff08;3&#xff09;减法运算&#xff08;4&#xff09;数乘&#xff08;5&#xff09;P3390 【模板】矩阵快速幂 二.矩阵求斐波那契数列三.[一个详解矩阵各种高难应用的博客] 一.…

python中的除法运算_python中矩阵除法运算的三种实现方法

介绍过python矩阵的乘法运算&#xff0c;numpy库中虽然乘法是矩阵运算的主要运算&#xff0c;但是numpy作为python中实现矩阵运算的好工具&#xff0c;也是可以轻松实现除法计算的&#xff0c;本文python中矩阵除法的三种实现方法&#xff1a;1、x/y计算对应元素相除(矩阵点除)…