※ 本文為 swallow.bbs. 轉寄自 cd.twbbs.org 更新時間: 2013-02-06 16:25:06
看板 P_acon
作者 標題 [認真]OS2期末整理(3)
時間 Thu Jun 21 09:45:50 2012
GFP_NOIO & GFP_NOFS
GFP_NOFS IO和mm要記憶體,mm表示記憶體不足
┌─┐───→ ┌─┐ 所以要把IO的一些記憶體寫出去(swap out)
│mm│ │IO│ 這樣會變成兩邊都在等對方做事
└─┘ ←───└─┘
GFP_NOIO
GFP_NOFS:代表不允許執行任何file system調用
GFP_NOIO:代表不允許任何IO初始化
--
buddy system
why:
因為希望krl很有效率,所以希望不要太常更改mmu的maping方式
更改cache和TLB就會變得沒效率
和周邊IO溝通的時候,一定是拿連續的實體記憶體
改善best fit、first fit等演算法
algorithm:
配置時會把可配置的記憶體一直對半分,直到剛好可以裝入要求的記憶體大小
(ex: 要求30k就會切到32k的大小在放進去)
其他切出來但是沒分配到的區間就納入記憶體串列管理
歸還時會先檢查可用的記憶體串列中是否有相鄰的節點
如果有就把兩邊合併起來變成較大的記憶體節點
--
kmalloc
處理的速度很快,因為不會清理所配置到的記憶體,記憶體會保留先前的內容
呼叫kmalloc得到的記憶體空間在實體記憶體上是連續的
void *kmalloc(size_t size, int flags);
需求大小 控制kmalloc的行為
vmalloc
在virtual address space配置連續記憶體空間,但在實體記憶體上不一定連續
--
vmalloc和kmalloc的差別
1.kmalloc和vmalloc所return的地址區段不同
2.vmalloc分配的記憶體是在虛擬記憶體上連續,實體記憶體上不一定連續
而kmalloc是在實體記憶體上連續
3.kmalloc一次可以分配的記憶體大小是128k,vmalloc則沒有上限
4.kmalloc和vmalloc都是使用slab allocator
5.vmalloc會使用到MMU,效能比較差
--
slab
data structure ┌──┐
┌───┐ ┌──┐ ┌→ │obj │
│cache │ → │slab│ ┤ └──┘
└───┘ └──┘ │ ┌──┐
└→ │obj │
└──┘
algorithm
概念:將要來的記憶體根據物件大小等分後,再配置給物件去使用
可以把它看成是page組成的容器,儲存單位是物件
增加cache的概念來增加效能
特性:當有物件被free的時候,空的欄位不會被初始化
當slab中都沒有物件,記憶體不會馬上回收,減少額外配置和釋放的負擔
效果:解決fregmentation的問題
--
從buddy system要page,page配置給slab和物件使用
當page不足的時候會釋放slab所占用的page
slab釋放條件:當krl需要新的page且buddy system無法滿足
slab裡的物件沒人在用的時候,slab才會被釋放
krl會尋找cache中的空slab,把slab從cache中移除,連slab裡的物件一起銷毀
在slab中配置新物件:
先找沒用完的slab,把新物件放到slab中,否則再要求新的page產生slab
移除slab中的物件:
把物件加入對應的slab中未使用物件的串列
--
SLAB_POSITION
這個flag填入後,slab初始化的時候會一直填5a5a...避免變數忘記給值造成錯誤
shrink & grow
當記憶體不夠的時候會叫slab做壓縮(shrink),回收記憶體,壓縮方法在上面
SMP scalability
允許OS同時使用多個處理器藉由減少處理時間來改善效能的技術
cloring
cpu cache的使用率,因為大多數程式會把最常用的資料欄位放在最前面
這些欄位會互相影響造成cache的不平衡現象
slab會把一個區塊分配完記憶體所剩下的餘數對半分,一塊放在記憶體前端
一塊放在後端,前端那塊就稱作coloring area,slab設法在每次配置的page
上使用不同大小的coloring area,有效的分散資料map到cache中的位置
提高cache rate
--
你們都是我的翅膀! -Unlight-
nonoise __▁__▁╰▼▼ ︿︿︿︿ ▼▼ ▁_▁___
▕◆▌_▁▲▲▼▼ ▇ │▼▼▲▲_▁_ ◆▏
我是不會 ▼▼▕◣◣◣◣│ ─ ──│ │◢◢◢◢▏ 沒、沒想到還
原諒你的! ◆◆▕ ˙ ˙ _◣◣____ _ . . ▏ 能再見到你…
╰ ◢◢◣◣ ◢◢ △△△△△ ◣◣\\\\\◢◢◣◣ ╯
* Origin: 中正築夢園 (CcuDream.twbbs.org) ★ From: 1.175.136.34
[Modified by swallow] From: 1.175.136.34 (2012/06/21 Thu 09:46:13)
[Modified by swallow] From: 1.175.136.34 (2012/06/21 Thu 09:46:38)
*iliketoeatdr 推薦:推薦這篇文章 *|06/21 10:08 lyaf
*yo6317 推薦:推薦這篇文章 *|06/21 23:19 ggza
*yo6317 轉錄:本文已轉錄到某秘密看板 *|06/21 23:20 ggza
*lahaha 推薦:推薦這篇文章 *|06/22 06:29 ggzd
*p1234567890 推薦:推薦這篇文章 *|06/22 15:26 omkC
*h3615840 推薦:推薦這篇文章 *|06/24 17:09 ggzf
--
※ 看板: Swallow 文章推薦值: 0 目前人氣: 0 累積人氣: 273
回列表(←)
分享