日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

Linux(内核和用户态的)动态内存管理

發(fā)布時(shí)間:2024/4/15 linux 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux(内核和用户态的)动态内存管理 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

http://www.ibm.com/developerworks/cn/linux/l-cn-slub/

內(nèi)核對(duì)象緩沖區(qū)管理

Linux 內(nèi)核在運(yùn)行過(guò)程中,常常會(huì)需要經(jīng)常使用一些內(nèi)核的數(shù)據(jù)結(jié)構(gòu)(對(duì)象)。例如,當(dāng)進(jìn)程的某個(gè)線程第一次打開(kāi)一個(gè)文件的時(shí)候,內(nèi)核需要為該文件分配一個(gè)稱為 file 的數(shù)據(jù)結(jié)構(gòu);當(dāng)該文件被最終關(guān)閉的時(shí)候,內(nèi)核必須釋放此文件所關(guān)聯(lián)的 file 數(shù)據(jù)結(jié)構(gòu)。這些小塊存儲(chǔ)空間并不只在某個(gè)內(nèi)核函數(shù)的內(nèi)部使用,否則就可以使用當(dāng)前線程的內(nèi)核棧空間。同時(shí),這些小塊存儲(chǔ)空間又是動(dòng)態(tài)變化的,不可能像物理內(nèi)存頁(yè)面管理使用的 page 結(jié)構(gòu)那樣,有多大內(nèi)存就有多少個(gè) page 結(jié)構(gòu),形成一個(gè)靜態(tài)長(zhǎng)度的隊(duì)列。而且由于內(nèi)核無(wú)法預(yù)測(cè)運(yùn)行中各種不同的內(nèi)核對(duì)象對(duì)緩沖區(qū)的需求,因此不適合為每一種可能用到的對(duì)象建立一個(gè)“緩沖池”,因?yàn)槟菢拥脑捄芸赡艹霈F(xiàn)有些緩沖池已經(jīng)耗盡而有些緩沖池中卻又大量空閑緩沖區(qū)的現(xiàn)象。因此,內(nèi)核只能采取更全局性的方法。

我們可以看出,內(nèi)核對(duì)象的管理與用戶進(jìn)程中的堆管理比較相似,核心問(wèn)題均是:如何高效地管理內(nèi)存空間,使得可以快速地進(jìn)行對(duì)象的分配和回收并減少內(nèi)存碎片。但是內(nèi)核不能簡(jiǎn)單地采用用戶進(jìn)程的基于堆的內(nèi)存分配算法,這是因?yàn)閮?nèi)核對(duì)其對(duì)象的使用具有以下特殊性:

  • 內(nèi)核使用的對(duì)象種類繁多,應(yīng)該采用一種統(tǒng)一的高效管理方法。
  • 內(nèi)核對(duì)某些對(duì)象(如 task_struct)的使用是非常頻繁的,所以用戶進(jìn)程堆管理常用的基于搜索的分配算法比如First-Fit(在堆中搜索到的第一個(gè)滿足請(qǐng)求的內(nèi)存塊)和 Best-Fit(使用堆中滿足請(qǐng)求的最合適的內(nèi)存塊)并不直接適用,而應(yīng)該采用某種緩沖區(qū)的機(jī)制。
  • 內(nèi)核對(duì)象中相當(dāng)一部分成員需要某些特殊的初始化(例如隊(duì)列頭部)而并非簡(jiǎn)單地清成全 0。如果能充分重用已被釋放的對(duì)象使得下次分配時(shí)無(wú)需初始化,那么可以提高內(nèi)核的運(yùn)行效率。
  • 分配器對(duì)內(nèi)核對(duì)象緩沖區(qū)的組織和管理必須充分考慮對(duì)硬件高速緩存的影響。
  • 隨著共享內(nèi)存的多處理器系統(tǒng)的普及,多處理器同時(shí)分配某種類型對(duì)象的現(xiàn)象時(shí)常發(fā)生,因此分配器應(yīng)該盡量避免處理器間同步的開(kāi)銷,應(yīng)采用某種 Lock-Free 的算法。
  • 如何有效地管理緩沖區(qū)空間,長(zhǎng)期以來(lái)都是一個(gè)熱門的研究課題。90 年代初期,在 Solaris 2.4 操作系統(tǒng)中,采用了一種稱為“slab”(原意是大塊的混凝土)的緩沖區(qū)分配和管理方法,在相當(dāng)程度上滿足了內(nèi)核的特殊需求。

    總結(jié)

    以上是生活随笔為你收集整理的Linux(内核和用户态的)动态内存管理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。