嵌入式大佬每天學一點知識(一)

2021-09-28 14:45:51 字數 2589 閱讀 4106

大佬部落格是jeancheng,有情趣的自己去看

1.伺服器體系(smp,numa,mpp)與共享儲存器架構(uma和numa)

uma和numa兩種模型是共享儲存型多處理機,均勻儲存器訪問模型可以將記憶體以連續方式組織起來

,傳統的多核運算使用smp模式:將多個處理器與乙個集中的儲存器和io匯流排相連,所有處理器只能訪問同乙個物理儲存器,smp被稱為一致儲存訪問uma結構體系,一致性意味著無論什麼時候,處理器只能為記憶體中的每乙個資料儲存或共享唯一乙個數值。smp可伸縮性有限,在儲存器或io飽和時,增加處理器不能增加效能,amp不同核之間有主從關係,乙個核控制另外乙個核的業務,控制平面或資料平面。

2.numa模型是一種分布純儲存器訪問方式,處理器可以同時訪問不同的儲存器位址,大幅度提高並行性。numa模式下,處理器被劃分為多個節點node,每個節點被分配有的本地儲存器空間,所有節點中的處理器都可以訪問全部的系統物理純儲存器。

區別

smp體系結構:所有的記憶體訪問都傳遞到相同的共享記憶體匯流排,cpu會相互競爭對記憶體匯流排的訪問

numa通過限制任何一條記憶體匯流排上的cpu數量

linux核心需要用一種體系結構無關的方式來表示記憶體,記憶體對一致和非一致記憶體訪問使用相同的資料結構

numa模型中linux記憶體即構

處理器被劃分為node

記憶體被分割為多個區域bank,簇,兩個區域乙個專門給cpu訪問,一塊給外圍裝置板卡的dma去訪問

linux把物理記憶體分為

儲存節點node cpu被劃分為多個節點node,記憶體則被分簇,每個cpu對應乙個本地物理記憶體,即每個cpu-node對應乙個記憶體簇bank

管理區zone 每個物理記憶體節點node被劃分為多個記憶體管理區域,用於表示不同範圍的記憶體,核心可以使用不同的對映方式對映物理記憶體

頁面(page)記憶體被細分為多個頁面幀,頁面是最基本的頁面分配單位

實現1。記憶體分配結點關聯到乙個處理器,核心表示為pg_daya_t例項

系統中每乙個節點被連線到乙個以null結尾的pgdat_list鍊錶中,其中每乙個節點利用pg_data_tnode_next欄位連線到下一節

實現2.接著各個節點又被劃分為記憶體管理區域,乙個記憶體管理區域通過struct zone_struct描述,其被定義為zone_t,用於表示記憶體某個範圍,低端16mb被描述為zone_dma,其中工業體系結構中的isa裝置需要用到它,可以直接對映到普通記憶體閾zone_normal,最後超出核心段的實體地址域zone_highmem,被稱為高階記憶體,是系統中的可用記憶體

實現3.最後頁幀(page frame)代表了系統記憶體的最小單位,堆記憶體中的每個頁都會建立乙個struct page的乙個例項。傳統上把記憶體視為連續的位元組,即位元組陣列,記憶體單元的編號(位址)可作為位元組陣列的索引。分頁管理時,將若干位元組視為一頁,比如4k byte。此時記憶體變為連續的頁,即記憶體為頁組數,每一頁物理記憶體叫頁幀。

在乙個單獨的節點內,任一給定cpu訪問頁面所需的時間都是相同的,然而,對於不同cpu這個時間可能不同,對於每個cpu而言,核心都試圖把耗時節點的訪問次數減少到最小這樣選擇cpu最常引用的核心資料結構的存放位置。

**

1)在linux中引入乙個資料結構struct pglist_data,來描述乙個node,定義在include/linux/mmzone.**件中(這個結構被typedef pg_data_t)

*d對於numa系統來講,整個系統的記憶體由乙個node_data的pg_data_t指標陣列來管理

*杜宇pc這樣的uma系統,使用struct pglist_data contig_page_data,作為系統唯一的node管理所有的記憶體區域(uma

系統中只有乙個node)

2)物理記憶體區域zone

硬體結構限制1.isa匯流排dma處理器只對ram的前16mb進行定址

2.32位計算機cpu不能直接訪問所有物理記憶體因為線性位址空間太小,核心不可能直接對映所有的物理記憶體到線性位址空間

1.zone_dma:這個區包含的頁用來執行dma操作

2.zone_nomal;這個區包含的所有能正常對映的頁

3.zone_highem:這個區包含高階記憶體,頁永久銀蛇到核心位址空間

構建原始碼樹

arch 目錄包括了所有和體系結構相關的核心**。它下面的每乙個子目錄都代表一種linux支援的體系結構。

block 塊裝置io層

crypto 加密api

drivers 目錄中是系統中所有的裝置驅動程式

firmware 使用某些驅動程式所需要的裝置韌體

fs vfs和各種檔案系統,存放linux支援的檔案系統**。如ext3檔案系統

include 編譯核心所需要的大部分標頭檔案

init 核心的初始化**,不是系統的引導**,是研究核心如何工作的好起點

kernel 核心管理的核心**

lib 通用的核心庫**

mm 記憶體管理子系統

net 網路部分

==linux新增系統呼叫總結(核心版本4.4.4)----低水平計算機學狗-----

==vs2017配置opemcv教程----

作業系統作業—

每天學一點(一)

記錄學習內容 js中對於函式的建立,在使用函式表示式和函式宣告相結合時,正確寫法為 var sum function sum a,b console.log sum 1,2 輸出3 若定義的變數和函式名稱書寫不一致,則會產生錯誤。var sum1 function sum2 a,b console....

彙編一點知識

bss段 bss段 bsssegment 通常是指用來存放程式中未初始化的全域性變數的一塊記憶體區域。bss是英文blockstarted by symbol的簡稱。bss段屬於靜態記憶體分配。data段 資料段 datasegment 通常是指用來存放程式中已初始化的全域性變數的一塊記憶體區域。資...

每天學一點6

1.void運算子 作用於任何值都將返回undefined,常用遮蔽超連結的返回值 舉例 鳳凰網 2.window.prompt 彈出乙個輸入對話方塊 語法格式 prompt text defaulttext 引數說明 text 提示資訊 defaulttext 是可選項,是輸入框中預設顯示的文字 ...