对RAM和ROM的理解

什么是RAM、ROM?

RAM(Random Access Memory)随机存取存储器

ROM(Read Only Memory)只读存储器

先记住一件事

RAM断电将失去数据

ROM断电仍会保留数据

RAM、ROM、Flash、内存条、硬盘、SD卡到底怎么归类?

我们先来看下计算机的原理和计算机的需求

计算机原理很简单

        输入数据 -> 处理 -> 输出数据

示例一 加法计算器

        输入:加数、被加数

        程序:加法计算

        输出:得到结果

示例二 颜色显示器

        输入:红色的值、绿色的值、蓝色的值

        程序:三个值拼接

        输出:合成的颜色

上面两个示例,其中的程序是需要计算机记住的,这样计算机每次开机,就不用重新编写程序。

输入和输出是计算机临时保存的数据,关机后不需要保存。

计算机的需求

是要可以保存数据(临时保存和永久保存)

最早的计算是如何保存数据的?

是在纸上打孔,这应该就算是ROM吧

后来用电路来保存数据就出现了RAM和ROM

ROM

最早的电路ROM是用半导体,也就是二极管三极管等,要么通要么不通,不通基本就是把半导体烧坏掉,烧录应该也是这么来的。比如一个阵列的二极管,一开始都是导通的,烧入0101,就有通有不通的,也就保存了数据。只能写一次所以叫只读存储器。而现在很多ROM都是可以多次写入的,但是也是有极限的。

RAM

而RAM是类似下图的电路结构,在通电的情况下是可以通过逻辑保存当前数据的。

假设上面或非门的下引脚是0,那么R为1时,Q为0,当R变成0时,Q就会变成1。

显然,输出会受输入的影响。

接下来,我们分析锁存器电路。

R = 1 S = 0 Q = 0 Q' = 1时

当R改变时,Q不受影响,以此完成了锁存功能。

R = 1 S = 0 Q = 0 Q' = 1 假如是初始状态

S = 0  R无论0或1  Q都是0

当改变S=1 R=0,Q会从0变到1

如果Q原来是1,Q会从1变到1

当改变S=0 R=1,Q会从1变到0

如果Q原来是0,Q会从0变到0

当改变S=0 R=0,Q会原来是什么还是什么

下面是真值表

 

 S=1 R=0 输出1

 S=0 R=1 输出0

 S=0 R=0 锁存

这就是RAM,但当断电则锁存的数据不复存在。

结论

当断电时仍能保存数据就是ROM的一种

当断电无法保存数据就是RAM的一种

ROM虽然叫只读存储器,只不过随着技术的发展只读存储器已经可以多次擦写了。

数据存储的技术越来越多,所以分类确实模棱两可。

所以如果非要说 Flash、内存条、硬盘、SD卡 是RAM还是ROM。那就看掉电是不是还能保存数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/18603.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

国网技术学院MySQL课堂练习

一、数据库的安装和配置 在虚拟机中安装WINDOWS7操作系统 正常安装,查询安装教程即可安装必备组件和MYSQL5.7数据库 正常安装,查询安装教程即可修改my.ini配置文件中关于character_set的相关设置 直接补下面的代码即可,作用为设置默认的内…

SpringBoot集成Flowable工作流

SpringBoot集成Flowable工作流 Flowable是什么?一、添加依赖二、flowable配置三、定义流程文件1.使用流程文件定义工作流2.idea使用插件来定义流程图1.安装插件2.创建bpmn文件并画流程图3.右击流程用模型设计器打开文件 四、测试controller Flowable是什么&#xff…

数据结构 - 线性表(C语言版)

线性表分为顺序表和单链表 线性表的操作主要是查询、插入、删除 1、顺序表 首先,定义一个顺序表的结构体 #define MAX_SIZE 10 typedef struct {int data[MAX_SIZE];int length; }SqList, * PsqList;创建一个顺序表 //创建顺序表 void createSqList(PsqList pSq…

【Excel】csv乱码

原因 CSV用UTF-8编码 Excel用ANSI编码 解决 1 创建一个新的Excel 2 数据 > 从文本/CSV 3 选择文件 4 选择 文件原始格式 和 分隔符 (根据自己文件进行选择,如果不知道编码,可以一个一个的试,直到不出现乱码)

CCLINK转MODBUS-TCP网关cclink利modbus区别

大家好,今天我们要聊的是生产管理系统中的CCLINK和MODBUS-TCP协议,它们的不同使得数据互通比较困难,但远创智控YC-CCLK-TCP网关的出现改变了这一切。 1, 远创智控YC-CCLK-TCP是一款自主研发的CCLINK从站功能的通讯网关&#xff…

Blender初学者入门:做一个魔方

文章目录 安装和使用基本操作物体属性材质 安装和使用 由于Blender是开源免费的,所以可直接在官网下载,正常安装,没有坑点。 在打开Blender后,创建新文件,选择General,就会得到一个立方体,而界…

hadoop -Unable to start failover controller. Parent znode does not exist

Unable to start failover controller. Parent znode does not exist 问题描述 今天使用星环的TDH集群时,HDFS服务宕掉,在后台查看namenode 始终起不来 kubectl get pod -o wide | grep hdfs 如上图,k8s pod 起来又crash 掉,然后…

手机外壳缺陷视觉检测软硬件方案

单独使用一种光源效果图 同轴光会出现亮度不够的情况;回形面光因为光源中间的圆孔会使图像有阴影,造成图像效果不均衡,所以不采用单独光源打光 使用同轴回形面光源效果图 回形光源照亮产品要寻找的边缘,同轴光源起到补光的作用&a…

【学会动态规划】第 N 个泰波那契数(1)

目录 动态规划怎么学? 1. 题目解析 2. 算法原理 1. 状态表示 2. 状态转移方程 3. 初始化 4. 填表顺序 5. 返回值 3. 代码编写 4. 空间优化 写在最后 动态规划怎么学? 学习一个算法没有捷径,更何况是学习动态规划, 跟…

vue2 若依项目,使用plotly.js-dist图表库,将数据图表一键导出为图片

此代码适用的场景是一个页面有多个数据图表。 首先需要拿到你生成数据图表的数据, 然后赋值给一个数组,数组需要在data定义,还需要去重。 // 检查是否有相同的parameter值const hasDuplicate this.toImageArr.some(iiem > iiem.paramete…

C++万字自学笔记

[TOC] 一、 C基础 C的IDE有CLion、Visual Studio、DEV C、eclipse等等&#xff0c;这里使用CLion进行学习。 0. C初识 0.1 第一个C程序 编写一个C程序总共分为4个步骤 创建项目创建文件编写代码运行程序 #include <iostream>int main() {using namespace std;cout…

【SpringBoot_Error】关于SpringBoot项目中经常出现yml/xml识别不到的问题

Problems 关于关于SpringBoot项目中经常出现yml/xml识别不到的问题 Solution 在pom.xml文件的<build></build>标签中添加如下代码&#xff1a; > <build><resources><!--检测mapperxml&#xff0c;本项目数据访问层的SQL xml文件放在Java包…