Linux的記憶體管理的一些總結

2021-05-22 04:43:47 字數 835 閱讀 4936

1. kmalloc:

在arm平台上, kmalloc是以cache line的位元組數對齊的,比如cortex a8, a15是64bytes 對齊,

而cortex a9則是32bytes 對齊。

2. 如何知道系統中可用的memory

the free memory is memfree + buffers + cached + swapfree

3. 記憶體分配的原則:

linux的記憶體區域分為: dma zone, normal zone, highmem zone (可選)

這3個zone對核心而言的優先順序是: dma zone > normal zone > highmem zone

當記憶體分配發生時:

如果指定的gfp flag是__gfp_dma, 則從dma zone裡面分配,不能

從其它2個zone裡面分配。

如果指定的gfp flag是___gfp_highmem則從highmem zone

裡面分配,當highmem裡沒有足夠的記憶體時, 可以從另外2個zone裡面分配。

如果沒有特別的flag指定,則從normal zone裡面分配,當normal zone裡面沒有

足夠記憶體時,可以從dma zone裡面分配。

不同的系統,記憶體引數可能需要調整,如:lowmem_reserve_ratio, min_free_kbytes等值。

(/proc/sys/vm/)

如下資料可以參考:

專案管理的一些總結

注 很久沒有寫過什麼。一是因為專案忙,另外乙個是因為自己覺得自己的那點東西還只是一些粗淺的認識。這陣總算稍微有些時間來總結一下自己的感受和收穫。打理一下自己的思緒,準備下乙個專案的挑戰了。學而時習之。現在我們需要 做而常思之。做之前思如何做,做之後思得失。只有這樣才能進步,才能在時間的流水裡感覺到自...

一些記憶體管理API

釋放頁面塊,釋放的頁面塊從 page 開始,個數等於2的order次方個 void free pages struct page page,unsigned int order 以 gfp mask 分配方式,分配2的order次方個連續的物理頁 unsigned long get free pag...

關於記憶體管理思考方式的一些學習總結

談到記憶體管理首先想到的是 引用計數 這個名稱,但真正正確客觀的去思考這個問題,應該先理解以下幾點 下面我們看一下物件操作對應的 物件方法 oc方法 生成並持有的物件 alloc new copy mutablecopy等方法 持有的物件 retain方法 釋放物件 release方法 廢棄物件 d...