内存与内存地址

原创 2017年01月03日 14:38:57

      上节讲到cpu如何通过总线与存储器交互,存储器由那些部分构成呢?

      cpu直接与内存进行交互。内存是计算机中的重要部件,与之对应的是外存。

      "内存(Memory)也被称为内存储器,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。只要计算机在运行中,CPU就会把需要运算的数据调到内存中进行运算,当运算完成后CPU再将结果传送出来,内存的运行也决定了计算机的稳定运行。 内存是由内存芯片、电路板、金手指等部分组成的。"

       “我们平常使用的程序,如Windows操作系统、打字软件、游戏软件等,一般都是安装在硬盘等外存上的,但仅此是不能使用其功能的,必须把它们调入内存中运行,才能真正使用其功能,我们平时输入一段文字,或玩一个游戏,其实都是在内存中进行的。就好比在一个书房里,存放书籍的书架和书柜相当于电脑的外存,而我们工作的办公桌就是内存。通常我们把要永久保存的、大量的数据存储在外存上,而把一些临时的或少量的数据和程序放在内存上,当然内存的好坏会直接影响电脑的运行速度。”

       一台PC机装有多个存储器芯片,从读写上分为:随机存储器(RAM)和只读存储器(ROM)。随机存储器关机后存储的内容丢失;只读存储器只能读取不能写入,关机后内容不丢失。

      内存一般采用半导体存储单元,包括随机存储器,只读存储器,高速缓存。

      其中RAM是最重要的存储器。

      说了这么多,来讲讲第一节我们一笔带过的内存地址,这是个很重要的知识点。

      CPU通过地址总线寻找存储器中的内存是通过内存地址,通过向内存地址交换数据也即从内存中读取或写入数据。存储器芯片在物理上是独立的器件,但是都具有以下的共同特点:

  •     都通过总线与CPU相连
  •     通过控制总线与CPU进行读写操作

   也就是说他们都是内存,CPU都把他们当做内存进行直接的读/写操作。

  CPU把这些内存当做一个总的逻辑内存空间,便于统一操作和管理,一视同仁。从地址总线的角度来说,为每个内存都分配内存地址空间,方便CPU进行寻址操作,对于CPU来说直接面对的是地址总线而不是内存空间。



       所有的物理存储器被看做一个由若干存储单元组成的逻辑存储器,每个物理存储器都有属于自己的不与其他存储器冲突的逻辑地址段,即地址空间。

       CPU在这段地址空间读写数据,实际上也就是在实际的物理内存中读写数据,二者其实是等价的。之所以引入逻辑存储器的原因:一是为了便于地址总线寻址;而也是方便管理众多的独立的内存。

        因此内存空间的大小受地址总线的宽度限制,在上一节中我们描述了一个8条地址总线的cpu与16条地址总线的cpu在传输数据上的差别与优劣对比。可以看出16条地址总线的传入效率是优于8条地址总线的。

        在地址总线上。拥有条数多的地址总线的CPU往往能够提供更多的逻辑地址来分配给实际的内存空间,而条数少的地址总线的CPU如果往往面临资源紧张的状况。

          下图展示了8086PC机内存地址的地址空间分配的基本情况:

     

从地址0~9FFFF的内存单元中读取数据,实际上就是在读取主存储器的数据;向地址A0000~BFFFF的内存单元中写数据,就是向显存中写入数据;思考下:向地址C0000~FFFFF的内存单元写入数据89D3的正确性。

答案是:不正确,因为ROM是只读存储器,因此不能够写入数据。


2015-01-16(内存地址_堆栈).part3

  • 2015年12月04日 21:41
  • 70MB
  • 下载

Linux内存地址映射

  • 2015年12月20日 20:50
  • 815KB
  • 下载

BIOS加载MBR到内存地址0x7C00的由来

为嘛BIOS将MBR读入0x7C00地址处(x86平台下) http://www.douban.com/note/249471773/ 2012-11-27 14:03...

Java的Object.hashCode()的返回值到底是不是对象内存地址?

java的Object.hashCode()返回的到底是不是对象的内存地址?相信大家都曾对此问题有所怀疑,本文通过实验探究 和 ART(Android Runtime)、OpenJDK的源码分析为大家...

查找内存地址的强大软件

  • 2012年09月10日 04:29
  • 6.2MB
  • 下载

intel内存地址转换

  • 2017年03月17日 22:06
  • 756KB
  • 下载

内存地址空间为何用十六进制表示(pamp分析基础)

内存地址空间与十六进制。 1应用场景:pamp 在gdb 或者pmap查看内容的时候经常出现 如下  0x8462960,0x8462960含义 wang@ubuntu:~/study/code$...

2015-01-16(内存地址_堆栈).part2

  • 2015年12月04日 21:34
  • 70MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:内存与内存地址
举报原因:
原因补充:

(最多只允许输入30个字)