記憶體的理解

2021-08-11 03:44:30 字數 871 閱讀 7897

1、在s5pv210中執行的linux系統上,執行應用程式時:所有的應用程式的**和資料都在dram,所以這種結構就是馮諾依曼結構;

2、在微控制器中,程式**燒寫在flash中,然後程式在flash中原地執行,程式所涉及到的資料(全域性變數、區域性變數)不能放在flash中,必須放在ram中,這種結構就是哈佛結構。

3、在gcc中,常量也是儲存在記憶體中,大部分微控制器中,常量是儲存在flash中的,也就是**段。

4、記憶體對齊不是邏輯的問題,是硬體的問題。對齊訪問很配合硬體,所以效率高,非對齊訪問和硬體本身不搭配,效率不高。

5、c語言中的資料型別的本質含義是:表示乙個記憶體格仔的長度和解析方法。

6、記憶體的編址單位是位元組。

7、陣列大小必須定義時給出,而且一旦確定不能更改。

8、c語言是面向過程的,但是c語言寫出的linux系統是物件導向的。

9、分配空間給區域性變數a用的意思就是,將這4位元組的棧記憶體的記憶體位址和我們定義的區域性變數名a給關聯起來。

10、因此c語言中,定義區域性變數時如果未初始化,則其值是隨機的,因為棧記憶體是反覆使用的。區域性變數在棧中本來是無法初始化的,c語言中的方法是先定義區域性變數,再賦值。c語言定義區域性變數時不要太多或太大。

11、作業系統兩個很重要內容為:記憶體管理與程序排程。

12、*calloc(size_t nmemb, size_t size) // nemb個單元,每個單元size個位元組。如要申請10個int 元素,calloc(10, sizeof(int));

13、資料結構是為了配合一定的演算法;為了處理具體問題,演算法的實現依賴於相應的資料結構,演算法基於數學。

14、linux核心在字元裝置驅動管理時,使用了雜湊表(hash table,雜湊表),所以字元裝置驅動的很多特點都和雜湊表的特點有關。

記憶體的理解

棧的記憶體 2.1 執行時自動分配和自動 棧是自動管理的,程式設計師不需要手動干預,方便簡單。2.2 反覆使用 棧內存在程式中其實就是一塊空間,程式反覆使用這一塊空間。乙個執行緒中作業系統會給你分配一款空間,作為你的棧。都是以k為大小。每個棧有乙個棧指標,這個棧指標是作業系統來管理的。2.3 髒記憶...

記憶體顆粒的理解

由於工藝上的原因,這個陣列不可能做得太大,所以一般記憶體晶元中都是將記憶體容量分成幾個陣列來製造,也就是說存在記憶體晶元中存在多個邏輯 bank,隨著晶元容量的不斷增加,邏輯bank數量也在不斷增加,目前從32mb到1gb的晶元基本都是4個。晶元組本身設計時在乙個時鐘週期內只允許對乙個邏輯bank進...

記憶體池的理解

掌握記憶體管理對於c c程式設計師的重要性。使用記憶體池的優點有 降低動態申 請記憶體的次數,提公升系統效能,減少記憶體碎片,增加記憶體空間使用率。記憶體池的分類 一 不定長記憶體池 優點 不需要為不同的資料建立不同的記憶體池,缺點是分配出去的記憶體池 不能 到池中 代表有apr pool,obst...