内存|内存的概念、内存的作用、内存的物理结构及内存使用

这篇具有很好参考价值的文章主要介绍了内存|内存的概念、内存的作用、内存的物理结构及内存使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


Part1:什么是内存?

内存是硬件,是用于存放数据的硬件。

程序执行前需要先放到内存中才能被CPU处理。

内存是与CPU沟通的桥梁,计算机中所有程序的运行都要依靠内存,内存对计算机的影响非常大。


Part2:内存的作用

内存又被称为主存,用于存放CPU中的运算数据以及硬盘等外部存储设备交换的数据。

CPU一般会把需要运算的数据调到主存中进行运算,运算完后CPU将结果再传出来。


Part3:内存的物理结构

内存内部由各种集成(IC)电路组成。

它的种类很庞大,但主要分为三种存储器:

1. 随机存储器RAM

内存中最重要的一种,表示既可以从中读取数据,也可以写入数据。
当机器掉电时,数据就会丢失。

2. 只读存储器ROM

ROM一般只能用于数据的读取,不能写入。
是当机器掉电时,数据不会丢失。

3. 高速缓冲存储器Cache

Cache 分为一级缓存 L1 Cache、二级缓存 L2 Cache、三级缓存 L3 Cache
这些数据位于内存和CPU之间,是一个读写速度比内存更快的存储器。
当CPU向内存中写入数据时,这些数据也会被写入高速缓冲存储器中。
当CPU再次需要读取这些数据时,这些数据也会从高速缓存中读取这些数据。
如果 Cache 中没有,CPU会去读内存中的数据。

一级缓存拓展知识:

一级缓存L1 Cache是离CPU最近的,由于一级缓存的技术难度和制造成本最高,提升容量所带来的技术难度和成本增加非常大,所带来的性能提升却不明显,所以一级缓存L1 Cache的容量是最小的。
一般来说,一级缓存可以分为一级数据缓存(Data Cache,D-Cache)和一级指令缓存(Instruction Cache,I-Cache
二者分别用来处理数据和对这些这些数据的指令进行及时解码,而且二者可以同时被CPU访问,减少了争用Cache所造成的冲突,提高了处理器效能。
目前大多数CPU的一级数据缓存和一级指令缓存具有相同的容量。

内存的IC元件上有地址信号、数据信号、电源信号以及控制信号,通过引脚来传递这些信号,进行数据的读写。

地址信号的引脚数量决定了内存可以存放的数据。
例如:有10个地址线,表示可以指定2^10个地址。

数据信号的引脚数量决定每次可以输入输出的数据的多少。
例如:有8个数据线,表示每一次可以输入输出8 bit数据。

控制信号主要有写信号WR和读信号RD
WR1时表示写;当RD1时表示读。


Part4:内存的使用

先想象一个场景:
有一栋名叫内存的楼,楼内有很多叫做内存单元的房间,它们都有自己的门牌号

计算机将内存划分为一个个小的内存单元,同时对其编号,这样就能有效管理内存。

在空间划分实践中,一个内存单元的大小为1字节

每个内存单元都有编号(内存编号),内存编号可以称为地址,在C语言中也称为指针

内存编号 = 内存单元的地址 = 指针

Tips:一个字节是八个比特,相当于八个二进制位,两个十六进制位

如果要访问一个内存单元,需要依托 内存编号/内存单元的地址/指针,那么 内存编号/内存单元的地址/指针 是如何产生的呢?或者说到底是怎么样来命名的呢?

32为机器为例,这个物理机器有32根地址线,如果电脑的地址线通电,就会有电信号(高电平或低电平)
这些电信号会转化为数字信号(01
因此:[一根地址线] 产生 [一个电流信号(高/低电平)] 转化 [一个数字信号(0/1)]
32根地址线合在一起就会有32bit的二进制序列,这样话电信号转化为数字信号有2^32种二进制序列。
定义一个二进制序列为一个内存单元的编号/内存单元的地址/指针,因此这样下来总共有2^32个地址,就可以管理2^32个内存单元,即2^32个字节(4GB)的内存空间。

内存|内存的概念、内存的作用、内存的物理结构及内存使用

对于C语言时通过指针去使用内存的,通过使用指针可以对任意内存地址进行读写。

另外C语言中的数据类型所占的字节数都是整数,没有小数,这是因为数据在内存中是以字节为单位进行读取。

不同的数据类型具有不同的字节数,这也决定了读取该种数据类型时要读取几个字节。

例如:数组在内存中是连续排列的形式,而链表在内存中就不是连续排列的形式。


总结

本文简单介绍了内存的概念、作用、物理结构以及使用,内存远不止如此,后续文章会逐步深入讲解。
未完待续...文章来源地址https://www.toymoban.com/news/detail-414657.html

到了这里,关于内存|内存的概念、内存的作用、内存的物理结构及内存使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Redis项目 PART1

    第一部分:含注册登入+商户查询(使用缓存) 使用redis而不用传统的session的原因(session共享问题):每个tomcat中都有一份属于自己的session,假设用户第一次访问第一台tomcat,并且把自己的信息存放到第一台服务器的session中,但是第二次这个用户访问到了第二台tomcat,那么在第

    2024年02月16日
    浏览(30)
  • Java 中反射的概念、作用和特点,在什么情况下使用反射及使用实例

    反射(Reflection)是 Java 的一种特性,它可以让程序在运行时获取自身的信息,并且动态地操作类或对象的属性、方法和构造器等。通过反射功能,可以让我们在不知道具体类名的情况下,依然能够实例化对象,调用方法以及设置属性。 反射的作用有以下几点: 运行时探查类

    2024年02月06日
    浏览(37)
  • 计算机网络 Part1

    目录 计算机网络的一些术语: 计算机网络的重点: 整体结构以及HTTP部分一些问题: TCP以及UDP相关的问题: DNS以及网络安全相关的问题: 1. OSI七层模型的每一层分别是什么?对应的协议有哪些? 传输层协议和网络层协议有什么区别?   HTTP协议为什么设计为无状态的? H

    2024年02月12日
    浏览(29)
  • SwiftUI 布局协议 - Part1

    今年 SwiftUI 新增最好的功能之一必须是布局协议。它不但让我们参与到布局过程中,而且也给了我们一个很好的机会去更好的理解布局在 SwiftUI 中的作用。 早在2019年,我写了一篇文章 SwiftUI 中 frame 的表现 ,其中,我阐述了父视图和子视图如何协调形成最终视图效果。那里描

    2024年02月05日
    浏览(33)
  • Part1:使用 TensorFlow 和 Keras 的 NeRF计算机图形学和深度学习——计算机图形学世界中相机的工作原理

    是否有一种方法可以仅从一个场景多张不同视角的照片中捕获整个3D场景? 有。 NeRF:将场景表示为用于视图合成的神经辐射场中(NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis),Mildenhall等人(2020)的论文解答了这个问题。NeRF的更简单实现赢得了 TensorFlow社区聚光

    2024年02月07日
    浏览(34)
  • Leetcode with Golang 滑动窗口 Part1

    滑动窗口的定义: 滑动窗口这一个技巧主要运用于处理数组问题上,一般用于“子串”问题。精髓是,维护一个里面装着元素的“窗口”,在将新元素装进“窗口”的同时,根据题意,把不符合题意的元素踢出“窗口”。 滑动窗口的模板: 接下来看几道题目: Leetcode 209.长

    2024年01月19日
    浏览(29)
  • Python八股文:基础知识Part1

    1. 不用中间变量交换 a 和 b 这是python非常方便的一个功能可以这样直接交换两个值  2. 可变数据类型字典在for 循环中进行修改 这道题在这里就是让我们去回答输出的内容,这里看似我们是在for循环中每一次加入了都在list中加入了一个字典,然后字典的键值对的value每次都加

    2024年04月12日
    浏览(21)
  • 当代软件工程师技术面试准备Part1

    当代软件工程师技术面试准备Part1 一. 编码 - Leetcode     LeetCode 是一个在线的编程练习平台,专注于帮助程序员提升他们的编程技能。该平台提供了大量的算法和数据结构问题,涵盖了各种难度级别,从简单到困难。LeetCode的主要目标是帮助程序员准备技术面试,特别是在软

    2024年02月03日
    浏览(38)
  • C/C++文件操作(细节满满,part1)

    个人主页: 仍有未知等待探索_C语言疑难,数据结构,PTA-CSDN博客 专题分栏: C语言疑难_仍有未知等待探索的博客-CSDN博客 目录 一、引言  二、什么是文件  1、程序文件 2、数据文件 3、文件名  4、文件路径  1.相对路径 2.绝对路径 三、文件的打开和关闭  1、文件操作的大体流

    2024年02月08日
    浏览(26)
  • 【UE4 RTS】11-HUD functionality Part1

    本篇实现了将游戏状态中的游戏时间和游戏日期通过蓝图接口的方式传递给控件蓝图,并且正确显示,另外还实现了控件蓝图界面上切换12小时和24小时制的游戏时间显示方式。 一、显示游戏日期 1. 打开蓝图接口“RTS_GameTime_IF” 添加一个新函数,命名为“SetGameClock”  添加函

    2024年02月12日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包