動態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.pswp.cn/news/530174.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/530174.shtml
英文地址,請注明出處:http://en.pswp.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…