【1】计算机原理-内存模型_计算机内存模型_小鸡岛~的博客-程序员秘密

技术标签: c++  计算机硬件  

一.内存工作模型
目的:帮助软件开发人员理解内存的运行机制,进而解决软件运行过程中遇到的各种实际问题

特点:断电不能防止数据丢失

计算机启动的时候,会把程序从硬盘或者其他存储设备加载到内存
在这里插入图片描述

0x1 理论上最好的内存就是CPU的缓存,读写速度快,是内存速率的几倍。
0x2 但是实际情况是,CPU的缓存结构复杂成本高昂容量也很小,无法大规模应用,所以就只能用一点点,而且缓存还会分为多个级别,每个级别之间的读写速度都有差距,容量也是递减的。
0x3 现在的多核CPU还会给每个核都配备一个缓存

在这里插入图片描述

二.内存是如何工作的呢?

答:0x0 计算机里面有一个晶振部件,会产生周期性的方波
0x1 通过修改这个电波,计算机可以在不同部件之间传输数据
0x2 所以这个频率越高,意味着单位时间内,可以传输的数据也就越多

在这里插入图片描述

0x1 但是实际工作的时候,内存的频率往往也会受到主板的限制。 0x2
所以有这样的情况,一块高频率的内存条,因为主板配置低,结果只能降频来适配主板,使得整体上性能没有任何提升

在这里插入图片描述

三.内存在系统中的角色和作用

0x1 内存是计算机启动时自检的关键部件之一,另外还有CPU,起作用至关重要,绝大部分的计算机系统,如果发现内存错误,是无法运行下去的。因为CPU对其他外设控制,通通都是通过内存来实现的
0x2 我们的键盘,显示器,硬盘、声卡、网卡、风扇等等设备都在内存有映射。
0x3 所谓有映射,是指这些设备的数据,并不会直接给到CPU而是先给到内存的规定位置,然后CPU才能去读取的

在这里插入图片描述

内存地址

线性内存模型:内存是一个以字节为单位的,连续紧密排布存储空间。目前我们所有的内存,都是采用的线性内存模型

在这里插入图片描述

总线

提出问题:数据是如何在计算机的各个部件之间传输的?

答:0x0 总线是计算机各个部件之间传送信息的公共通信干线
0x1 总线不仅仅存在于主板上,还存在于各个部件内部
0x2 CPU内部也有一条总线,用于寄存器、计算单元、控制单元和缓存之间的数据传递

1.数据总线DataBus
2.地址总线AddressBus
3.控制总线ControlBus

总结1:当我们在任何一台机器设备编程时,需要利用我们的抽象能力内存条(手机,笔记本,iPad等)当成一个1
在这里插入图片描述

总结2:
当我们在定义变量常量时,其实就是在向内存申请一块区域来存放我们的数据;
只不过常量内存区域不允许修改,而变量内存区域,允许修改(编译器的角度);
实际上,不管是变量还是常量,甚至是已经编译好的代码,都可以修改(逆向编程的角度)

总结3:
设计数据结构和数据类型时,要先确定要存储的值的范围。然后再根据STL的数据结构的特点去选择合适的数据结构(软件设计中没有银弹!);
写程序不一定是写在Window或MAC下,如果在小米手环上这样的嵌入式设备编程,就需要把内存压榨到极致,这时候数据类型的选择就变得尤为重要。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43468491/article/details/126714001

智能推荐

数学建模专栏 | 第十一篇:MATLAB CUMCM真题求解实例二:优化型_什么是运输矩阵_稳定性与频率补偿的博客-程序员秘密

2003 年的 B 题是典型的优化型问题,这道问题的特色是模型容易建立,但求解比较困难。这道题目在求解方面的难点是模型有交叉,所以当时我们的求解策略是分步求解、逐级优化,采用这种策略后,就可以将复杂的优化问题转化为标准的规划模型进行求解了。在 2...

RabbitMQ安装(无坑)_opt与rabbitmq对应版本_乐大师的博客-程序员秘密

安装依赖文件:  yum install gcc glibc-devel make ncurses-devel openssl-devel xmlto.Erlang安装配置  下载安装包,地址http://www.erlang.org/downloads,我选择的是otp_src_18.3.tar.gz。  然后解压文件:[[email protected] rabbitmq]# tar -xzvf otp_src_18.3.tar.gz[[email protected] rabbitm

计算机专业的黑板报,计算机教室黑板报_火小岚的博客-程序员秘密

计算机教室黑板报随着互联网时代的高速发展,电脑逐渐走进每家每户。那么关于电脑的知识你都知道多少呢?下面来看看小编整理的计算机教室吧!计算机教室黑板报计算机教室黑板报内容一家,一个温馨的词语,我们家里,是一个电器较多的家,其中,我最喜欢,也最高科技的就是电脑了!因为他,带给我们家一些生气!也是它代替了旧一代的电脑!电脑,一身乌黑的衣服,本来不算帅的电脑有了几分帅气,而且又巧妙地装饰了它的外表,电脑是...

gallery的用法_weixin_30387339的博客-程序员秘密

gallery原意为相框的意思,在Android中,可以用它来展示一系列的图片等等。最近编写了自己的适配器,来达到想要的gallery效果。但是在gallery子元素的布局文件中,把ImageView作为最外一层,layout_width和layout_height都不起作用。最后只好在ImageView外面再套一层LinearLayout,并设置它的 layout_width和...

mybatis踩坑:批量插入oracle与mysql的区别_骑鱼看大海的博客-程序员秘密

环境:mybatis+oracle功能需求:做项目时遇到一个需求,需要把几条数据批量插入到数据库。内容:开始做的时候,一下子就想到了<insert id="save"  useGeneratedKeys="false" parameterType="java.util.List">insert into table (ID,IMAGE_URL,STATE,UPDATE_T...

蓝桥杯——快速排序(2018JavaB组第5题9分)_weixin_30868855的博客-程序员秘密

快速排序(18JavaB5,9’)以下代码可以从数组a[]中找出第k小的元素。它使用了类似快速排序中的分治算法,期望时间复杂度是O(N)的。请仔细阅读分析源码,填写划线部分缺失的内容。import java.util.Random;public class Main{ public static int quickSelect(int a[], int l, int r, int...

随便推点

Android平台3D引擎研究4_最老程序员闫涛的博客-程序员秘密

OpenGL ES纹理处理使用OpenGL ES的纹理可以将图片贴到3D模型上,从而生成逼真的3D场景。纹理是以图片文件形式存在的,图片被归一化为(0.0, 0.0)到(1.0, 1.0)的矩形区域,通常一个3D物体具有一个纹理文件即可,每处三角片所使用的纹理可以通过uv坐标

LeetCode 516. Longest Palindromic Subsequence 解题报告_骆小坑的博客-程序员秘密

LeetCode 516. Longest Palindromic Subsequence 解题报告题目描述Given a string s, find the longest palindromic subsequence’s length in s. You may assume that the maximum length of s is 1000..示例Example 1: Input

SqlServer 递归查询树形数据_PPL1998的博客-程序员秘密

一直没有在意过数据库处理树形数据的重要性,直到有一天朋友问起我关于树形数据查询的问题时才发现根本不会,正好这个时候也要用到递归进行树形数据的查询于是在网上查了一圈,语法总结如下参考文献:https://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=ZH-CN&k=k(WITH_TSQL);k(SQL11.SWB.TSQLRE

OpenGL法线贴图_vvc223c的博客-程序员秘密

参考:https://learnopenglcn.github.io/05%20Advanced%20Lighting/04%20Normal%20Mapping/现实中的物体表面并非是平坦的,而是表现出无数(凹凸不平的)细节.例如,砖块的表面。砖块的表面非常粗糙,显然不是完全平坦的:它包含着接缝处水泥凹痕,以及非常多的细小的空洞。如果我们在一个有光的场景中看这样一个砖块的表面,问题就出来了...

HZAU 1206:01字典树求 抑或最大和_calabash_boy的博客-程序员秘密

题意:给出n个数字(n题解:枚举区间右端点 r ,那么左端点 l 一定比 r 小,同时[ l , r ]的抑或和可以表示成 [ 1, r ]xor[ 1 , l-1 ],那么我们枚举一个 r,求出[ 1, r]的和,然后就是查询[1, 1 ][ 1, 2 ] [1 , 3 ]……[1, r-1]中和[1,r]抑或最大的那个值。这个可以通过01字典树完成,然后还要求字典序最小,字典树终点处记一个