我觉得在冯诺依曼体系结构里,CPU和内存是最重要的设备。如果没有CPU和内存,服务器将完全无法运行。 所以继第一阶段分享完了CPU篇之后,今天就开始内存篇。我们以一个最简单的问题开篇,为什么内存地址0x0001和内存地址0x0002之间差的是一个byte,而不是一个bit?

我想你对内存存储的计算已经熟练于心,a变量占用内存多少字节,b变量占用内存多少字节。但是你有没有深入思考过,为什么我们用的存储单位都是字节,而不是比特?可能你会说因为ASCII码的基本编码单位就是字节呀,你还有可能举出很多个原因来说明内存应该以字节进行计算的原因。但那为啥网络带宽都是以bit,而不也用byte来计算的呢?

我们平时好像太过于习以为常,而没有去深想过具体的原因。我今天呢,是想从一个特定的角度去看待这个问题,那就是从内存的硬件物理结构。我们来了解一下内存的物理构造,一般内存的外形图片如图1:

图1 内存外形

如图1所示,一个内存是由若干个黑色的内存颗粒构成的。每一个内存颗粒叫做一个chip,所有的数据都是存在这些chip里的。上面这个内存条有8个chip(正反面各四个)。chip内部构造如图2:

图2 chip内部结构

每一个chip内部,又是由8个bank组成的。在每个bank内部,就是电容的行列二维矩阵结构了,如图3。

图3 bank内部构造

这个矩阵由多个方块状的元素构成,这个方块元素是内存管理的最小单位。要注意的是每一个元素有8个小电容,存储8个bit,也就是一个字节。换句话说,因为在内存物理结构中最小管理单位是元素,一个元素就是8bit。所以操作系统在管理它的时候,自然最小单位也就是字节了

欢迎关注个人公众号“开发内功修炼”,打通理论与实践的任督二脉!

为什么内存为什么是以字节为单位的?相关推荐

  1. 什么表示计算机存储信息的能力以字节为单位,大学计算机基础考试判断.doc

    大学计算机基础考试判断 正确: Internet explorer内置了FTP功能. 在Word编辑的内容中,文字下面有红色波浪下划线表示可能有拼写错误. Novell Netware软件属于网络操作 ...

  2. CPU 以字节为单位编址,而 C 语言指针以指向的数据类型长度作自增和自减。

    切记:CPU 以字节为单位编址,而 C 语言指针以指向的数据类型长度作自增和自减.

  3. mysql int 11 java_mysql中int(11)列的大小(以字节为单位)是多少?

    正如其他人所说,列可以存储的最小/最大值以及以字节为单位的存储量仅由类型而不是长度定义 . 很多这些答案都说 (11) 部分仅影响显示宽度,这不完全正确,但主要是 . int(2) 与 no zero ...

  4. c语言比较函数memcmp,c语言函数memcmp()如何比较内存前n个字节实例源码介绍

    c语言函数memcmp()如何比较内存前n个字节实例源码介绍.引入头文件:#include 定义memcmp()函数:int memcmp (const void *s1, const void *s ...

  5. Linux性能学习(2.3):内存_为什么分配的内存比申请的内存大16个字节

    文章目录 1 验证申请不同内存,系统分配机制 1.1 代码 1.2 测试 1.3 结论 2 为什么会多分配内存 3 为什么会有4字节不可使用 参考资料: https://www.gnu.org/sof ...

  6. mysql int 11 最大多少_types - mysql中int(11)列的大小(以字节为单位)是多少?...

    types - mysql中int(11)列的大小(以字节为单位)是多少? 以字节为单位的mysql中int(11)列的大小是多少? 并且可以存储在此列中的最大值? Gaurav asked 2019 ...

  7. 关于arm处理器 内存编址模式 与 字节对齐方式 (转)

    转自:http://bavon.bokee.com/5429805.html 在x86+Linux上写的程序,在PC机上运行得很好.可是使用ARM的gcc进行交叉编译,再送到DaVinci目标板上运行 ...

  8. C语言 将整数写入内存指定的连续字节单元中

    将整数数组写入0x40003000开始的连续10个字节内存单元中,注意unsigned char *指向一个字节,而int *指向1个字(4个字),但是可以把字中存储的整数放入字节单元中,只要不超过表 ...

  9. 内存分配,任意字节对齐

    有这么一道题目,要求按任意字节对齐分配内存,接口: char * aligned_malloc(int size, int alignment)//size 为分配的内存大小,alignment对齐基 ...

最新文章

  1. TensorFlow图像分类:如何构建分类器
  2. [译] Redux 有多棒?
  3. java GUI界面之JTable详解
  4. cmd命令快速启动、暂停和关闭sql server服务
  5. 受用一生的高效 PyCharm 使用技巧(五)
  6. P2304 [NOI2015] 小园丁与老司机(网络流/上下界网络流)
  7. Python Requests 丨爬虫基础入门
  8. C++——如何理解.h文件和.cpp文件
  9. 剑指offer 二叉树的深度
  10. 清华 | 量化卷积神经网络加速芯片
  11. 「管理数学基础」4.1 模糊数学:模糊现象与模糊集、隶属函数、模糊集的运算、水平截集与分解定理
  12. 用cmd 查看本机的IP地址
  13. Java itext tiff转换pdf
  14. 大数据相关各职位解析
  15. Oracle Toad 导数,麒峰
  16. mount reason give by server:Permission denid
  17. 【ActiveMQ】JMS中间件ActiveMQ详解
  18. 反馈纠错机制在学习中的重要性
  19. 搜狗2019年Q2财报:搜索业务增速领先行业,AI成为新增长引擎
  20. 一堆密密麻麻的字,word怎么看字数?

热门文章

  1. 简单C程序示例及分析
  2. R语言之主成分回归与偏最小二乘xt8.3xt8.4
  3. Linux系统编程之捕捉SIGCHLD
  4. HTML5视频标签 video 的 poster 属性
  5. mysql使用group by查询报错SELECT list is not in GROUP BY clause and contains nonaggregated column.
  6. 安卓开发入门教程!终于有人把安卓程序员必学知识点全整理出来了,附答案
  7. 那么这几天都是自己和工作上的事情比较零零散散
  8. python 读取和保存图片方法
  9. 如何在Windows DOS环境下格式化硬盘
  10. Nomad Consul搭建集群