zoukankan      html  css  js  c++  java
  • 简单了解:在内存中的数据

    内存原理

    开启电源,启动BIOS,CPU工作,调用内存,内存跟硬盘索要资源
    当你点击一个文件的时候数据经过数据总线传达到CPU,CPU发送指令到内存,内存那里会跟硬盘沟通,问他有没有这个东西,他说有,你就会看到这个文件夹里面是什么东西。
    (Xee:RAM 是随机存取存储器,它的特点是易挥发性,即掉电失。--妈蛋,难怪一断电,我的东西没保存,就找不到了--
    既然内存是用来存放当前正在使用的(即执行中)的数据和程序,那么它是怎么工作的呢?我们平常所提到的计算机的内存指的是动态内存(即DRAM),动态内存中所谓的“动态”,指的是当我们将数据写入DRAM后,经过一段时间,数据会丢失,因此需要一个额外设电路进行内存刷新操作。具体的工作过程是这样的:一个DRAM的存储单元存储的是0还是1取决于电容是否有电荷,有电荷代表1,无电荷代表0。但时间一长,代表1的电容会放电,代表0的电容会吸收电荷,这就是数据丢失的原因。刷新操作定期对电容进行检查,若电量大于满电量的1/2,则认为其代表1,并把电容充满电;若电量小于1/2,则认为其代表0,并把电容放电,藉此来保持数据的连续性。)

    数据在内存中始终是以二进制形式存放的。数值是以补码表示的。
    整型:
    一个正数的补码和其原码的形式相同。而负数的补码方式是将其绝对值的二进制形式“按位求反再加1”
    实型:
    在内存中占4个字节,是按照指数形式存储的,实型数据分为小数部分和指数部分,分别存放!计算机用二进制表示小数部分,用2的幂次来表示指数部分!
    字符型:
    在内存中字符的存储实际上是把字符相对应的ASCII代码放到存储单元中的。而这些ASCII代码值在计算机中也是以二进制形式存放的。这个与整型的存储很相似。因此这两类之间的转换也比较方便!

    字符数据在内存中的存储形式及使用方法
    系统在表示一个字符型数据时,并不是将字符本身的形状存入内存,而只是将字符的ASCII码存入内存。在内存中所有的数据又是以二进制的形式存放的。所以上面的例子中'x'和'y'在内存中的表示如下:
    'x'、'y'的ASCII码为120、121。而120、121的二进制形式为1111000、1111001。
    所以'a'、'b'在内存中的表示为 1111000、1111001。

    为什么计算机内存,硬盘能存储数据,请简单描述一下

    硬件技术是不断发展的,所以,只能说下基本原理:磁碟的表面有很多微小的小颗粒,能够被磁化。利用消磁和磁化原理来标识数据。
    1字节,有8位二进制,一个字节能表示 255 个值(0000 0000 ~ 1111 1111 )
    程序要执行,首先将文件加载到内存中。
    内存的每一个区域是有内存地址的,一个内存单元为一个字节。
    程序加载内存中,就会占用一部分区域,这一部分区域就是使用内存单元的范围来标识的。

    内存的存储原理

    内存,英文名为RAM(Random Access Memory),全称是随机存取存储器。主要的作用就是存储代码和数据供CPU在需要的时候调用。但是这些数据并不是像用木桶盛水那么简单,而是类似图书馆中用有格子的书架存放书籍一样,不但要放进去还要能够在需要的时候准确的调用出来,虽然都是书但是每本书是不同的。对于内存等存储器来说也是一样的,虽然存储的都是代表0和1的代码,但是不同的组合就是不同的数据。让我们重新回到书和书架上来。
      如果有一个书架上有10行和10列格子(每行和每列都有0~9编号),有100本书要存放在里面,那么我们使用一个行的编号和一个列的编号就能确定某一本书的位置。如果已知这本书的编号36,那么我们首先锁定第3行,然后找到第6列就能准确的找到这本书了。
      在内存中也是利用了相似的原理现在让我们回到内存上,对于它而言数据总线是用来传入数据或者传出数据的。因为存储器中的存储空间是如果前面提到的存放图书的书架一样通过一定的规则定义的,所以我们可以通过这个规则来把数据存放到存储器上相应的位置,而进行这种定位的工作就要依靠地址总线来实现了。
      对于CPU来说,内存就像是一条长长的有很多空格的“线”,每个空格都有一个唯一的地址与之相对应。如果CPU想要从内存中调用数据,它首先需要给地址总线发送地址数据定位要存取的数据,然后等待若干个时钟周期之后,数据总线就会把数据传输给CPU。当地址解码器接收到地址总线送来的地址数据之后,它会根据这个数据定位CPU想要调用的数据所在的位置,然后数据总线就会把其中的数据传送到CPU。
      CPU在一行数据中每次只是存取1个字节的数据。回到实际中,通常CPU每次需要调用64bit或者是128bit的数据(单通道内存控制器为64bit,双通道为128bit)。如果数据总线是64bit的话,CPU就会在一个时间中存取8个字节的数据,因为每次还是存取1个字节的数据,64bit总线将不会显示出来任何的优势,工作的效率将会降低很多。这也就是现在的主板和CPU都使用双通道内存控制器的原因。
    没有人告诉你,生活会是这样:你工作无趣,你袋里没钱,你的爱情总是昙花一现;妈妈警告过你,会有这样的日子但她没有告诉你,世界将让你屈服。但是,别怕,有我在你身边,谁让我们是friends呢……
  • 相关阅读:
    C#学习笔记---基础入门(二)
    微软Hololens设备 浅分析
    phpstorm 破解方法
    iOS 审核被拒,日志中找不到苹果返回的creashlog的解决办法
    flutter学习之添加第三方应用
    MAC flutter初步学习
    python Django 连接数据库失败的解决方法
    Python之学习菜鸟教程踩的坑
    Python学习之环境搭建
    tableView reload 不闪动方法
  • 原文地址:https://www.cnblogs.com/ChandlerVer5/p/4229948.html
Copyright © 2011-2022 走看看