内存地址与内存空间

摘要:
CPU是通过地址总线来指定存储单元的。地址总线决定了cpu所能访问的最大内存空间的大小。    内存地址只是一个编号,代表一个内存空间寻址空间寻址空间一般指的是CPU对于内存寻址的能力。误区诊断来看看开头基本概念这里。

概览

  1. 基本概念
  2. 进入误区
  3. 误区诊断
  4. 总结

基本概念

  • 什么是位?    
  • 什么是字节?

位表示的是二进制位,一般称为比特,即0或1,是计算机存储的最小单位;

字节是计算机中数据处理的基本单位;

计算机中以字节为单位存储和解 释信息,规定一个字节由八个二进制位构成,即1个字节等于8个比特。

1Byte=8bit

  • 地址总线?

内存地址与内存空间第1张

(1)CPU是通过地址总线来指定存储单元的。

(2)地址总线决定了cpu所能访问的最大内存空间的大小。

(3)地址总线是地址线数量之和。

  • 内存地址?

是一种用于软件及硬件等不同层级中的数据概念,用来访问电脑主存中的数据。

内存地址与内存空间第2张    

内存地址只是一个编号,代表一个内存空间

  • 寻址空间

寻址空间一般指的是CPU对于内存寻址的能力。通俗地说,就是能最多用到多少内存的一个问题。数据在存储器(RAM)中存放是有规律的 ,CPU在运算的时候需要把数据提取出来就需要知道数据存放在哪里 ,这时候就需要挨家挨户的找,这就叫做寻址,但如果地址太多超出了CPU的能力范围,CPU就无法找到数据了。 CPU最大能查找多大范围的地址叫做寻址能力 ,CPU的寻址能力以字节为单位 ,如32位寻址的CPU可以寻址2的32次方大小的地址也就是4G,这也是为什么32位的CPU最大能搭配4G内存的原因 ,再多的话CPU就找不到了。

误区时刻

前方高能,请谨慎驾驶!接下来进入“误区时刻”,什么鬼?

内存地址与内存空间第3张

不着急,我们慢慢往下看,跟着我的思路,落入我的陷阱!哈哈....

内存地址与内存空间第4张      

按照上图,8位的cpu地址总线的宽度是8,即8位占1字节;16位cpu地址总线的宽度为20(cpu内部有个加法计算器,将16位宽度通过加法计算器加到20位),即16位占2字节;32位的cpu地址总线宽度为32,即32位占4字节。有没有问题???好,没有问题我们继续!

地址总线宽度为8,可以表示多少个地址呢?2^8=256个,这么多地址那么所占内存为256 * 1(所占字节)= 256Byte;对不对?好,继续;

地址总线宽度为20,可以表示多少地址呢?2^20=65536个,这么多地址所占内存为65536 * 2(所占字节) = 2M;  地址总线宽度为32,可以表示多少地址呢?2^32=4294967296个,这么多地址所占内存为65536 * 4(所占字节)= 16G;

有没有问题?好,我们看下官方的数据;

Intel公司早期的CPU产品的地址总线和地址寄存器的宽度为20位,即CPU的寻址能力为2^20=1024*1024字节=1024K字节=1M字节;286的地址总线和地址寄存器的宽度为24位,CPU的寻址能力为2^24=1024*4*1024*4B=4*1024*4KB=16M;386及386以上的地址总线和地址寄存器的宽度为32位,CPU的寻址能力为2^32=4096M字节=4G字节。

是不是要上天?16G的内存!!!

内存地址与内存空间第5张

哪里的问题?

接下来,我们来找找误区。

误区诊断

来看看开头基本概念这里【内存地址只是一个编号,代表一个内存空间】。什么意思?

我们这块内存空间存储的是什么?是这个编号吗?

显然不是,而是这个编号代表这块空间,这款空间会随编号的位数改变吗?变成2个字节,4个字节?大错特错!一个内存地址所代表的永远是1个字节,内存的每一个字节都有为一个个编号,16位,32位只是这个编号的长短,不会影响内存的最小单元大小,仅仅是个编号。唯一影响的是所能表示的个数。

所以这个16位的cpu,所有表示的地址个数是2^20 =1048576个,一个地址所指大小1个字节 ,也就是1M;

32位的cpu,所有表示的地址个数是2^32 = 4294967296个,一个地址所指大小1个字节 ,也就是4G;

总结

  内存地址只是一个编号,代表一个内存空间;

  内存地址所执行的内存单元大小就是1字节,跟内存地址位数无关;

  内存空间大小就是寻址能力,即能访问到多少个地址

免责声明:文章转载自《内存地址与内存空间》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【转】递归函数时间复杂度分析Linux每日小技巧---统计服务器IP连接数下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

jmeter参数化-函数助手—CSVRead

函数助手:csvread 使用场景:不同的测试数据,做批量并发请求时,可以使用。利用函数从文件里面读取数据,我们这里只讲解csv的,TxT格式的可以自己去尝试 步骤:1:准备好csv格式的数据2:准备好接口,还是注册接口:参数有 mobilephone以及pwdhttp://地址/futureloa/mvc/api/member/register3:调用...

docker发现端口是tcp6的 导致无法访问前端

最近偶尔发现一个比较奇怪的现象,netstat 查看监听的服务端口时,却只显示了 tcp6 的监控, 但是服务明明是可以通过 tcp4 的 ipv4 地址访问的,那为什么没有显示 tcp4 的监听呢? 以 sshd 监听的 22 端口为例: # netstat -tlnp | grep :22 tcp 0 0 0.0.0.0:22...

《内核源码情景分析》(浙大)笔记

内核源码情景分析笔记 背景 1.1 x86寻址 1.2 C in Linux 1.3 Assembly in Linux 为什么要汇编 GNU 386汇编 存储管理 2.1 内存管理基本框架 2.2 地址映射全过程 2.3 常见数据结构 2.4 越界访问 2.5 用户堆栈的扩展 2.6 物理页的使用和周转 2.7 物理页面分配 2.8 页面...

linux内核内存分配(三、虚拟内存管理)

        在分析虚拟内存管理前要先看下linux内核内存的具体分配我開始就是困在这个地方。对内核内存的分类不是非常清晰。我摘录当中的一段: 内核内存地址==================================================================================================...

VxWorks固件分析方法总结

VxWorks固件分析方法总结 最近研究基于VxWorks系统的iot设备的固件分析方法,将学习心得记录于此,以备将来的查询需要。 1.VxWorks是什么? VxWorks是美国WindRiverSystem公司(风河公司)推出的一个RTOS(实时操作系统),凭借良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌入式实时操作系统领域占据一席之地...

Nginx基础06:location语法

location语法:表示uri方式定位 基础语法有三种: location = pattern{}  精准匹配 location pattern{}  一般匹配 location ~ pattern{} 正则匹配 location正则表达式: "~ xxx":匹配访问的请求的URL中必须包含"xxx" "~* xXx":匹配忽略后面"xXx"是否大...