32位机虚拟内存地址最大0xFFFFFFFF是怎么得出来的?内存大小与地址的对应关系以及计算方法?

文章介绍了内存大小与地址之间的关系,指出1G等于1024MB,即2的30次方字节。在32位的STM32系统中,有4GB的寻址空间,从0x00000000到0xFFFFFFFF。计算内存容量使用公式:内存容量=末地址-首地址+1。并解释了为何2^32等于4GB,以及这个数值在十六进制下的表示形式为FFFFFFFF。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基础
  • 1G=1024MB=1024²KB=1024^3B
  • 1B=8bit
  • 一个内存单元对应一个字节,8个比特位为一个内存地址,内存地址加1就是相差一个字节
  • 计算机内存的最小单位是位bit,基本单位是字节Byte
公式:

内存容量=末地址-⾸地址+1

stm32

32位
内存4G
寻址空间0x0000 0000-0xFFFF FFFF
32位机最大虚拟内存为4GB。

因为2^32Byte = 4GB.

1)2是怎么来的呢?计算机中识别的是0和1二进制数,不是八进制、十进制等,所以是2^32。
2)4GB = 41024 = 4096MB = 40961024 = 4194304KB
= 4194304*1024 = 4294967296Byte = 2^32Byte
3)4294967296 - 1换算成十六进制为:FFFFFFFF,而地址是按十六进制表示的。

在Linux系统中,内存被划分为内核空间和用户空间,两者之间通过虚拟地址物理地址映射来保证隔离性和效率。用户空间从0x***到0xBFFFFFFF,而内核空间从0xC00000000xFFFFFFFF。要理解这两者之间的映射关系,首先要了解虚拟地址是进程在内存中的逻辑地址,而物理地址是硬件上实际的物理内存置。在内核空间,虚拟地址和物理地址通过线性映射实现,其中常量PAGE_OFFSET定义了这两者之间的偏移量,通常是0xC0000000,这意味着内核空间的每个虚拟地址都可以通过加上这个偏移量转换为对应的物理地址。例如,内核空间中的虚拟地址0xC0000000对应于物理地址0x***。这种映射方式简化了内存管理,因为它创建了从虚拟地址空间到物理地址空间的一对一映射。在用户空间,每个进程拥有自己独立的虚拟地址空间,但其地址映射依赖于操作系统提供的分页制。为了深入理解这一过程,建议参考《Linux内核用户空间:虚拟地址物理地址映射解析》这份资料。该资料详细介绍了Linux内核空间和用户空间的内存划分以及它们之间的映射制,这将帮助你全面掌握虚拟地址物理地址之间的映射关系,并理解其在系统安全性和效率方面的重要性。 参考资源链接:[Linux内核用户空间:虚拟地址物理地址映射解析](https://wenku.csdn.net/doc/69hvdofz9k?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

不熬夜,早点睡

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

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

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

打赏作者

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

抵扣说明:

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

余额充值