国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Linux內核內存管理算法Buddy和Slab

存儲 存儲軟件 算法
在Linux中,伙伴系統(buddy system)是以頁為單位管理和分配內存。但是現實的需求卻以字節為單位,假如我們需要申請20Bytes,總不能分配一頁吧!那豈不是嚴重浪費內存。

[[251667]]

Buddy分配算法

 

假設這是一段連續的頁框,陰影部分表示已經被使用的頁框,現在需要申請一個連續的5個頁框。這個時候,在這段內存上不能找到連續的5個空閑的頁框,就會去另一段內存上去尋找5個連續的頁框,這樣子,久而久之就形成了頁框的浪費。為了避免出現這種情況,Linux內核中引入了伙伴系統算法(Buddy system)。把所有的空閑頁框分組為11個塊鏈表,每個塊鏈表分別包含大小為1,2,4,8,16,32,64,128,256,512和1024個連續頁框的頁框塊。最大可以申請1024個連續頁框,對應4MB大小的連續內存。每個頁框塊的第一個頁框的物理地址是該塊大小的整數倍,如圖:

 

假設要申請一個256個頁框的塊,先從256個頁框的鏈表中查找空閑塊,如果沒有,就去512個頁框的鏈表中找,找到了則將頁框塊分為2個256個頁框的塊,一個分配給應用,另外一個移到256個頁框的鏈表中。如果512個頁框的鏈表中仍沒有空閑塊,繼續向1024個頁框的鏈表查找,如果仍然沒有,則返回錯誤。頁框塊在釋放時,會主動將兩個連續的頁框塊合并為一個較大的頁框塊。

從上面可以知道Buddy算法一直在對頁框做拆開合并拆開合并的動作。Buddy算法牛逼就牛逼在運用了世界上任何正整數都可以由2^n的和組成。這也是Buddy算法管理空閑頁表的本質。

空閑內存的信息我們可以通過以下命令獲取:

 

也可以通過echo m > /proc/sysrq-trigger來觀察buddy狀態,與/proc/buddyinfo的信息是一致的:

 

CMA

細心的讀者或許會發現當Buddy算法對內存拆拆合合的過程中會造成碎片化的現象,以至于內存后來沒有了大塊的連續內存,全是小塊內存。當然這對應用程序是不影響的(前面我們講過用頁表可以把不連續的物理地址在虛擬地址上連續起來),但是內核態就沒有辦法獲取大塊連續的內存(比如DMA, Camera, GPU都需要大塊物理地址連續的內存)。

在嵌入式設備中一般用CMA來解決上述的問題。CMA的全稱是contiguous memory allocator, 其工作原理是:預留一段的內存給驅動使用,但當驅動不用的時候,CMA區域可以分配給用戶進程用作匿名內存或者頁緩存。而當驅動需要使用時,就將進程占用的內存通過回收或者遷移的方式將之前占用的預留內存騰出來,供驅動使用。

Slab

在Linux中,伙伴系統(buddy system)是以頁為單位管理和分配內存。但是現實的需求卻以字節為單位,假如我們需要申請20Bytes,總不能分配一頁吧!那豈不是嚴重浪費內存。那么該如何分配呢?slab分配器就應運而生了,專為小內存分配而生。slab分配器分配內存以Byte為單位。但是slab分配器并沒有脫離伙伴系統,而是基于伙伴系統分配的大內存進一步細分成小內存分配。我們先來看一張圖

 

kmem_cache是一個cache_chain的鏈表,描述了一個高速緩存,每個高速緩存包含了一個slabs的列表,這通常是一段連續的內存塊。存在3種slab:

  • slabs_full(完全分配的slab)
  • slabs_partial(部分分配的slab)
  • slabs_empty(空slab,或者沒有對象被分配)。

slab是slab分配器的最小單位,在實現上一個slab有一個貨多個連續的物理頁組成(通常只有一頁)。單個slab可以在slab鏈表之間移動,例如如果一個半滿slab被分配了對象后變滿了,就要從slabs_partial中被刪除,同時插入到slabs_full中去。

為了進一步解釋,這里舉個例子來說明,用struct kmem_cache結構描述的一段內存就稱作一個slab緩存池。一個slab緩存池就像是一箱牛奶,一箱牛奶中有很多瓶牛奶,每瓶牛奶就是一個object。分配內存的時候,就相當于從牛奶箱中拿一瓶。總有拿完的一天。當箱子空的時候,你就需要去超市再買一箱回來。超市就相當于partial鏈表,超市存儲著很多箱牛奶。如果超市也賣完了,自然就要從廠家進貨,然后出售給你。廠家就相當于伙伴系統。

可以通過下面命令查看slab緩存的信息:

 

總結

從內存DDR分為不同的ZONE,到CPU訪問的Page通過頁表來映射ZONE,再到通過Buddy算法和Slab算法對這些Page進行管理,我們應該可以從感官的角度理解了下圖:

責任編輯:武曉燕 來源: 人人都是極客
相關推薦

2021-08-10 16:50:37

內核內存管理

2013-10-11 17:24:47

Linux運維內存管理

2022-07-28 08:00:00

Buddy算法內存系統

2025-09-18 09:17:46

2021-08-03 09:02:58

LinuxSlab算法

2025-04-07 04:20:00

Linux操作系統內存管理

2025-01-06 08:00:09

2024-12-11 08:18:11

2022-07-19 13:31:18

Buddy算法內存管理框架

2025-01-02 11:06:22

2023-10-18 13:31:00

Linux內存

2009-12-25 15:34:54

slab分配器

2025-06-10 01:22:00

2020-12-15 08:54:06

Linux內存碎片化

2018-03-01 16:25:52

Linux內核內存管理

2018-05-18 09:07:43

Linux內核內存

2025-07-30 01:27:00

2018-12-06 10:40:50

磁盤緩存內存

2025-03-21 00:00:00

2013-10-11 17:32:18

Linux運維內存管理
點贊
收藏

51CTO技術棧公眾號

91av精品| 欧美丝袜第三区| 久久精品视频免费| 欧美日韩免费观看一区二区三区| 亚洲一区二区三区在线播放| 欧美三级中文字| 热久久视久久精品18亚洲精品| 91久久国产婷婷一区二区| 91一区二区三区| 日韩一级片播放| 热三久草你在线| 大胆国模一区二区三区| 亚洲国产精品影院| 日韩高清三级| 天堂中文字幕一二区| 杨幂一区二区三区免费看视频| 久久国产免费看| 成人免费在线观看入口| 亚洲欧美综合图区| 精品日韩美女| 成人福利网站| 亚洲视频分类| 久久综合九色综合久久久精品综合| 亚洲国产日韩a在线播放性色| 欧美日韩爱爱视频| 国产在线精品日韩| 丝袜足控免费网站xx网站| 久久久久久爱| 久久久久免费观看| 青青青青在线视频| 国产精品二区一区二区aⅴ污介绍| 欧美日韩在线高清| 亚洲乱亚洲高清| 精品国产免费久久久久久尖叫| 国产手机视频一区二区 | 911亚洲精品| 精品一区二区在线视频| 懂色av一区二区三区| 欧美日韩日本网| 国产传媒久久久| 欧美高清免费| 亚洲人一二三区| 最好看的2019年中文视频 | 国产午夜精品久久| 国产成人精品免高潮费视频| 黄网在线观看| 91精品91| 欧美日韩午夜剧场| 亚洲人成无码网站久久99热国产| 日本在线观看高清完整版| 国产精品一区亚洲| 91精品国产91热久久久做人人| a级黄色片网站| 成人噜噜噜噜| 国产在线播放不卡| 狼人天天伊人久久| 久久久久久久久亚洲| 成人性生交大片免费网站| 一区二区三区在线免费| 天天综合五月天| 日欧美一区二区| 国产精品白嫩美女在线观看 | 亚洲美女视频在线| 国产日韩av在线播放| 中文字幕在线播放第一页| 久久这里只有| 成人看片在线| caoporn成人| 免费看成人午夜电影| 婷婷久久综合九色综合绿巨人 | 免费在线激情视频| 国产在线视频福利| 成人小视频在线| 国内精品久久久久久中文字幕| 中文字幕在线免费观看视频| 日韩欧美黄色动漫| 国产一区视频免费观看| 亚州av乱码久久精品蜜桃| 欧美卡1卡2卡| 丁香花高清在线观看完整版| 国产精品美女久久久久aⅴ国产馆| 欧美一区二区三区在线播放| 乱码第一页成人| 大片在线观看网站免费收看| 欧美日韩性生活视频| 国产在线观看免费网站| 欧美丝袜自拍制服另类| 免费看日产一区二区三区| 国外av网站| 久久精品亚洲一区| av在线日韩| 一区二区在线视频| 国产一区二区视频在线看| 色偷偷偷综合中文字幕;dd| 国产精品专区免费| 日韩一区二区三区精品视频| 中文字幕中文字幕在线十八区| 午夜不卡在线视频| 天天槽夜夜槽| 国产亚洲精久久久久久| 啊啊啊啊啊啊啊视频在线播放| 亚洲色图在线视频| gratisvideos另类灌满| 黄色一级片国产| 久久久999精品免费| 天堂一区二区在线| 被下部羞羞漫画| 中文字幕久久久| 亚洲免费播放| 欧美二区在线视频| 亚洲1区2区3区视频| yy6080久久伦理一区二区| 欧美精品激情在线观看| 国产精品va| 亚洲国产一区二区三区在线播| 亚洲色图19p| 亚洲成人套图| 中文字幕av一区中文字幕天堂| 国产精品一区二区婷婷| 亚洲美女区一区| 99.玖玖.com| 美女欧美视频在线观看免费| 日本成人免费在线| 不卡的av中国片| 深夜福利在线视频| 69av在线视频| 国产在线日韩欧美| yw在线观看| 欧美成人网在线| 久久福利一区| 污视频网站在线免费观看| 中文字幕亚洲综合久久筱田步美| 久久久国产精品入口麻豆| 欧美亚洲成人精品| 日本一区中文字幕| 蜜桃精品在线| 欧美日韩在线看片| 69久久精品| 亚洲免费精品视频| 中文字幕成人在线| www.av精品| 国产剧情一区二区在线观看| 国产a级一级片| 欧美一区二区三区四区在线| 中文字幕 久热精品 视频在线| 亚洲一区二区三区日本久久九| 日韩精品免费一区| 欧美精品一区二| 国产一区亚洲| 18videosex性欧美麻豆| 成人免费福利视频| 亚洲小说欧美激情另类| h片在线播放| 成人在线国产精品| 久久九九99视频| 91精品久久久久久久久久不卡| 9999精品成人免费毛片在线看| 成人在线免费视频| 免费网站免费进入在线| 国产三级在线免费| 色综合久久88| 欧美特级限制片免费在线观看| 亚洲小说区图片区| 麻豆mv在线看| jizz国产| 国产精品露出视频| 91精品国产色综合久久ai换脸| 影音先锋中文字幕一区二区| 在线免费观看黄色av| 91黄色在线看| 欧美成人精品在线视频| 国产精品久久777777| 国产精品国码视频| 极品国产人妖chinesets亚洲人妖| 麻豆国产欧美一区二区三区r| 美日韩一级片在线观看| 羞羞答答国产精品www一本| av资源网一区| 亚洲成av人综合在线观看| 2020日本不卡一区二区视频| 久久婷婷亚洲| 国产精品日本| 91精品天堂福利在线观看| 欧美人与禽猛交乱配| 国产精品免费成人| 69av成年福利视频| 日韩毛片在线观看| 成人性生交大片免费| 欧美裸体在线版观看完整版| sese在线视频| 久久久久久77777| 最近免费中文字幕中文高清百度| 亚洲欧洲久久| 欧美深深色噜噜狠狠yyy| 日本一本中文字幕| 中文字幕在线中文字幕二区| 精品欠久久久中文字幕加勒比| 欧美挤奶吃奶水xxxxx| 精品国产第一福利网站| 视频二区在线|