动态ram依靠什么存储信息_处理器内存系统1(ROM,RAM,数据存储顺序)

本篇文章主要介绍处理器中存储器:ROM和RAM以及数据在内存中的存储顺序:大/小端(Little/Big Endian)。


只读存储器(ROM)

ROM(Read Only Memory)用来存储和保存数据。ROM数据不能随意更新,但是在任何时候都可以读取。即使是断电,ROM也能够保留数据。此内存主要用来放置使用者所开发之程序,eg. Bios,boot,而其性质乃属于不常更动或永不变动之资料,微控制器之动作便是依据储存于此区之程序指令运作。

ROM有很多种,例如PROM,EPROM,EEPROM,具体可百度。


随机存取存储器(RAM)

RAM(Read-Write Memory)亦称为读/写内存,是与CPU直接交换数据的内部存储器,也叫内存。它可以随时读写,而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储媒介, 当电源关闭时RAM不能保留数据。

RAM 可以进一步分为静态RAM(SRAM)和动态内存(DRAM)两大类。静态RAM(Static RAM/SRAM):SRAM速度非常快,不需要刷新电路即能保存数据,是目前读写最快的存储设备了,但是集成度较低,多用于CPU的一级缓存,二级缓存(L1/L2 Cache);动态RAM(Dynamic RAM/DRAM),DRAM保留数据的时间很短(需要内存刷新电路,每隔一段时间,刷新充电一次,否则数据会消失),速度也比SRAM慢,不过它还是比任何的ROM都要快.

若其地址总线位32位,则RAM大小为2^32bits。


大/小端模式

存储器中对数据的存储是以字节(Byte)为基本单位的,因此,字(Word)和半字(Half-Word)在存储器中就有两种次序,分别称为:大端模式(Big Endian)和小端模式(Little Endian)。

大段模式:低地址存放高字节数据。

小端模式:低地址存放低字节数据。

例如一个 int 型变量中存放一个数值是 0x12345678的数据:

大端模式:

c332a0f01e74a490c81af502db512b5b.png

小端模式:

664d2fb3e06cf3c5e307eee8ed8130bb.png

一般地,ARM处理器均默认为小端模式。

知道了大小端模式的概念,怎样用C语言写段代码判断一个CPU是大端模式还是小端模式应当如何做呢 ?要用C语言实现就要用到联合体(union)。联合体union中的存放顺序是所有成员都从低地址开始存放,利用该特性可获得处理器对内存采用Little Endian还是Big Endian模式的读写。

采用union来判断,具体代码如下:

int CheckEndian(void){union check{int  word;char half;} Endian;Endian.Word=1;if(1 == Endian.half)return Little_Endian;else return Big_Endian;
}

另外关于共用体与结构体:

结构体和共用体的区别在于结构体的各个成员会占用不同的内存,互相之间没有影响;而共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员。
结构体占用的内存大于等于所有成员占用的内存的总和(成员之间可能会存在缝隙),共用体占用的内存等于最长的成员占用的内存。共用体使用了内存覆盖技术,同一时刻只能保存一个成员的值,如果对新的成员赋值,就会把原来成员的值覆盖掉。

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

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

相关文章

python中row的用法_关于Python中openpyxl使用iter_rows()的方法

之前已经对iter函数的用法有过讲解,记忆遗忘的小伙伴可以重新回顾一遍。今天就iter函数的拓展,讲讲openpyxl中导入iter_rows()的方法。 当我们使用以下代码: import openpyxl as op ms = op.load_workbook(mtest.xlsx) ws = ms.active op.worksheet.Worksheet.iter_rows() 然…

市直系统推荐市级以上表彰的_推荐市级以及以上教学方面表彰的细则

推荐市级以及以上教学方面表彰的细则为了客观、公正、合理地评价教师的德、才表现和工作实绩,用制度来激励、督促全体教职工提高政治和业务索质,认真履行好自身工作职责。避免人为因素,增强评优的透明度,有利于调动广大教职工工作…

react全局状态管理_react状态管理redux

Redux(上)结合阮老师的技术博客,将自己吸收到的内容做了个整理:曾经有人说过这样一句hua : 如果你不知道是否需要Redux,那就是不需要它。从组建层面考虑,什么样子的需要redux;某个组件的状态需要共享,某个状…

edges2shoes数据集下载_edges2cats

edges2cats是一款十分有趣味的生成猫咪的游戏,在这款游戏是以多种不同的图形相结合,来生成你所想要生成的画面,游戏的玩法非常的有趣,感兴趣的可以试玩哦!edges2cats游戏怎么玩 玩法介绍首先清除画面,根据你…

单片机机器周期怎么计算公式_单片机定时器周期计算公式

定时器是单片机的重要功能模块之一,在检测、控制领域有广泛应用。定时器常用作定时时钟,以实现定时检测,定时响应、定时控制,并且可以产生ms宽的脉冲信号,驱动步进电机。定时和计数的最终功能都是通过计数实现&#xf…

mac 下mysql工具_mysql之工具的使用总结(mac版本)

13.mysql Mac终端操作12.MySql在Mac上的安装与配置详解;11.mac下安装mysql5.7.18,连接出现Access denied for user rootlocalhost (using password: YES)13.mysql Mac终端操作1.启动mysql :brew services start mysql2.登陆mysql : mysql -u…

sqoop同步时间戳到mysql_在sqoop导入中使用24小时时间戳

我想从使用自由格式查询的oracle导入数据,并且需要以24小时格式存储时间戳。在sqoop导入中使用24小时时间戳sqoop import --connect jdbc:oracle:thin:(server credntials) \--username ***** --password ***** \--query "select emp_uid, emp_name, salary, t…

mysql权限系统的工作原理_Mysql权限系统工作原理

MySQL权限系统保证所有的用户可以严格地做他们假定被允许做的事情。当你连接一个MySQL服务器时, 你的身份由你从那连接的主机和你指定的用户名来决定,系统根据你的身份和你想做什么来授予权限。MySQL在认定身份中考虑你的主机名和用户名字,是…

mysql日志文件的类型和作用_Mysql日志文件和日志类型介绍_MySQL

日志文件类型MySQL有几个不同的日志文件,可以帮助你找出mysqld内部发生的事情:日志文件记入文件中的信息类型错误日志记录启动、运行或停止mysqld时出现的问题。查询日志记录建立的客户端连接和执行的语句。更新日志记录更改数据的语句。不赞成使用该日志…

ruby mysql 驱动_windows下Rails安装MySql驱动的配置

1.安装ruby这我就不废话了,安装很简单,网上资料也很多。安装完后再环境变量path里加入D:ruby\bin(视你的安装路径了)安装完后在命令行输入ruby -v, 会显示版本号,表示安装成功,我的版本号是1.8.62.安装rails我建议去官…

cross join 一张表没有值关联不出来数据_你是否还在对left join、right join和join有困扰呢?...

说到SQL,很多人可能用了挺久,但依然有个问题一直困扰着,那就是 left join、 join、 right join和 inner join等等各种 join的区别。网上搜,最常见的就是一张图解图,如下:接下来就来实际自己动手实验&#x…

MySQL如何修改表的储存方式_修改mysql默认存储引擎的方法

修改mysql默认存储引擎的方法,供大家学习参考。先来了解一下mysql存储引擎:mysql服务器采用了模块化风格,各部分之间保持相对独立,尤其体现在存储架构上。存储引擎负责管理数据存储,以及mysql的索引管理。通过定义的AP…

前端判断是否安装桌面应用_前端开发人员的桌面应用神器 Electron

01为什么用 JavaScript 来开发桌面应用?曾经的 JavaScript 脆弱、简陋、甚至有被边缘化的危险,不过 JavaScript 在经过了两次飞跃后(以 V8 为首的 JavaScript 引擎和 Node.js 的问世),不再受人欺负,早已升级…

mysql 导出csv 多列_从包含300多列的csv,txt或xls文件创建MySQL表

你可以用一些langague C ,PHP解析txt文件......然后构建一个请求并执行它。PHP和PDO :: module将使这个最简单。我不知道某个程序是否已经完成这项工作。这是一个解决方案。如果您选择这样做并遇到麻烦,欢迎您。每个stackoverflow成员都会帮助您。编辑&a…

mysql error 1594_【MySQL】解决mysql的 1594 错误-阿里云开发者社区

对于主从架构的mysql,当发生主机断电或者其他原因异常crash的时候, slave的容易发生读取binlog出错的问题,最常见的是show slave status \G;Master_Log_File: mysql-bin.000029Read_Master_Log_Pos: 3154083Relay_Log_File: relay-bin.000478Relay_Log_Pos: 633Rel…

mysql innodb文件_MySQL的InnoDB文件介绍

MySQL一个显著的特点是其可插拔的存储引擎,因此MySQL文件分为两种,一种是和MySQL数据库本身相关 的文件,一种是和存储引擎相关的文件。本文主要介绍和InnoDB存储引擎相关的文件。表空间文件InnoDB在存储上也模仿了Oracle的设计,数…

python中与label类似的控件是_python中tkinter的使用(控件整理)(一)

1、使用tkinter.Tk() 生成主窗口(windowtkinter.Tk()):window.title(标题名)修改框体的名字,也可在创建时使用className参数来命名;window.resizable(0,0)框体大小可调性,分别表示x,y方向的可变性;1表示可变,0表示不可…

jdbc dao 工具类mysql_Java基于JDBC实现事务,银行转账及货物进出库功能示例

本文实例讲述了Java基于JDBC实现事务,银行转账及货物进出库功能。分享给大家供大家参考,具体如下:1. 转账业务转账必须执行2个sql语句(update更新)都成功的情况下,提交事务,如果有一个失败,则2个都回滚事务…

冒险岛单机版mysql_冒险岛单机版

这款《冒险岛单机版》经验是盛大冒险岛的100倍?最新盛大地图及BOSS,甚至包括盛大没有地图BOSS及现金装备,地图包括新加坡,马来西亚,台湾,可口可乐城,闹鬼宅邸,暹罗等等?。25驾坐骑&#xff0c…

python与html5搭建聊天室_html5 websocket 新版协议聊天室 服务端(python版)

网上找了很多代码都是旧版协议的,研究了很久终于弄清楚了 现在发个用新版协议写的服务端代码出来(这个代码是从网上旧版协议改过来的)最要就是握手协议和发送接受字符的方式变了# incodingutf-8import socketimport structimport hashlibimport threading,randomimp…