国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

探究slab在內核內存管理和用戶態Memcached的雙重存在

B4Pb_gh_6fde77c ? 來源:Linux閱碼場 ? 作者: 宋寶華 ? 2021-08-13 14:55 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

很多基礎的概念,將跨越軟件的層次而存在。比如slab,對于內核人員,我們都知道slab是buddy之上的一層。

因為buddy作為Linux內核最底層的內存管理器,它分配1頁,2頁,4頁,2^n頁,但是作為內核的堆用戶本身,經常只是調用kmalloc()申請一個小內存,或者調用kmem_cache_alloc()申請一個數據結構,2^n頁給它,會形成大量碎片浪費。所以slab找buddy要了2^n頁后,內部切割為同樣size的object,再給kmalloc和kmem_cache_alloc()拿走。

697d87de-fbba-11eb-9bcf-12bb97331649.png

它的邏輯如下:

6991d324-fbba-11eb-9bcf-12bb97331649.png

這樣一種軟件本質意義上的需求,不會因為只是內核就需要。比如同樣的slab算法,也被著名的用戶態軟件Memcached需要著。

Memcached是一種分布式內存對象緩存系統,用于動態Web等應用以減輕數據庫的負載。它在內存中緩存數據和對象,使用key-value對形式存儲。它的網站首頁(https://memcached.org/)顯示了它的基本用法邏輯:

Memcached的原理也類似內核態page cache的原理:

69a6c658-fbba-11eb-9bcf-12bb97331649.jpg

比如你查詢一個數據庫,可以先看看Memcached里面有沒有命中,命中就直接從Memcached的內存里面拿到值了,沒有的時候才需要去查數據庫。查到后,可以把結果放入Memcached,這樣下次再訪問同樣數據,不再需要進行數據庫的查詢動作。

Memcached也同樣采用slab分配算法來組織數據的存放,里面可以組織不同大小的chunks:

正如Linux內核的每一種不同slab里面的object的大小不一樣。

我們安裝1個Memcached:

$ sudo apt-get install memcached

然后啟動起來,你馬上看到memcached打印說自己創建了各種不同chunk size的slab:

69d4799a-fbba-11eb-9bcf-12bb97331649.png

當然,還有更多的相似性,比如Memcached里面的對象,也是LRU算法替換。所以LRU這種,也是一種本質上的事情。

編輯:jq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Web
    Web
    +關注

    關注

    2

    文章

    1304

    瀏覽量

    74470
  • Linux
    +關注

    關注

    88

    文章

    11760

    瀏覽量

    219033
  • 數據庫
    +關注

    關注

    7

    文章

    4020

    瀏覽量

    68349
  • 管理器
    +關注

    關注

    0

    文章

    265

    瀏覽量

    19522

原文標題:宋寶華:slab在內核內存管理和用戶態Memcached的雙重存在

文章出處:【微信號:gh_6fde77c41971,微信公眾號:FPGA干貨】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Redis內存管理、持久化策略與慢查詢排查分析

    Redis 在生產環境中承擔著緩存、會話存儲、消息隊列、分布式鎖等多種角色。隨著數據量增長和并發壓力上升,內存碎片、持久化 I/O 抖動、慢查詢堆積這三類問題會逐漸顯現,直接影響服務延遲和穩定性。Redis 8.x 在內存管理
    的頭像 發表于 02-27 11:00 ?137次閱讀

    Linux內核伙伴系統內存申請函數詳解:從原理到實戰

    在 Linux 內核中,內存管理是整個系統穩定運行的基石,而伙伴系統(Buddy System) 作為內核物理內存分配的核心機制,更是驅動開
    的頭像 發表于 02-10 16:58 ?3631次閱讀
    Linux<b class='flag-5'>內核</b>伙伴系統<b class='flag-5'>內存</b>申請函數詳解:從原理到實戰

    【「Linux 設備驅動開發(第 2 版)」閱讀體驗】+讀深入理解Linux內核內存分配

    作者引入內存相關術語,物理地址標識物理內存位置。由于虛擬內存機制,用戶內核從不直接訪問物理地址,而是通過相應的邏輯地址來訪問的。MMU(
    發表于 01-16 20:05

    rk基于linux/android內存管理

    內核對容量的識別), 64 位平臺上認為所有內存都可 用。然后通過一系列 reserve_xxx() 接口從內存末尾往前預留需要的內存,最后把自己 relocate 到某段 reser
    的頭像 發表于 12-15 10:42 ?212次閱讀
    rk基于linux/android<b class='flag-5'>內存</b><b class='flag-5'>管理</b>

    Linux內核模塊的加載機制

    \"GPL\") bool sig_ok;// 簽名驗證結果 };然后進行內存分配 1、使用vmalloc()在內核空間分配內存,映射模塊的代碼和數據段。 2、標記可執行頁(需
    發表于 11-25 06:59

    飛凌嵌入式ElfBoard-文件I/O的了解探究之Linux系統的文件管理機制

    函數去打開文件的時候,內核會申請一段內存(一段緩沖區),并且將靜態文件的數據內容從磁盤這些存儲設備中讀取到內存中進行管理、緩存(也把內存中的
    發表于 11-18 08:50

    探索操作系統底層的關鍵接口

      在linux中,將程序的運行空間分為內核空間與用戶空間(內核用戶),在邏輯上它們之間是
    的頭像 發表于 11-08 12:42 ?746次閱讀

    RusT-Thread:基于Rust面向資源受限嵌入式設備的操作系統的實踐 | 技術集結

    摘要隨著物聯網和嵌入式系統的發展,實時操作系統(RTOS)的安全性和性能需求日益提高。傳統基于C語言的RTOS在內存安全和并發控制方面存在局限,容易導致緩沖區溢出、數據競爭等問題。本項目以
    的頭像 發表于 11-07 17:37 ?6860次閱讀
    RusT-Thread:基于Rust面向資源受限嵌入式設備的操作系統的實踐 | 技術集結

    求助,關于rt-smart用戶線程實時性差的問題求解

    finishn\"); return 0; } 即使用忙等待的方式測量50us定時性能,發現在內核時代碼平均周期為50us,最小周期為50us,最大周期為57us,性能十分優異,而在用戶
    發表于 09-26 08:25

    qkey軟件包在內核V5.02下運行出錯是哪里的問題?

    qkey軟件包,在內核V5.0.2編譯無問題,運行報錯: (rt_object_get_type(&m->parent
    發表于 09-15 07:46

    靈活高效ZBUFF — C內存數據操作庫:優化內存管理的利器

    在C語言開發中,高效的內存管理是提升程序性能的關鍵。ZBUFF作為一款靈活高效的內存數據操作庫,通過優化內存分配與釋放機制,為開發者提供了更簡潔、更安全的API接口,極大地簡化了復雜數
    的頭像 發表于 08-14 18:01 ?694次閱讀
    靈活高效ZBUFF — C<b class='flag-5'>內存</b>數據操作庫:優化<b class='flag-5'>內存</b><b class='flag-5'>管理</b>的利器

    雙重驅動的新型直線電機研究

    摘罷:大行程、高精度,同時易于小型化的移動機構是先進制造業等領域要解決的關鍵問題之一,綜述了現有宏/微雙重驅動機構和直線超聲電機的研究進展和存在問題,提出了一種宏微雙重驅動新型直線壓電電機,使其既能
    發表于 06-24 14:17

    harmony OS NEXT-通過用戶首選項實現數據持久化

    存儲的地方,可以采用用戶首選項來進行存儲。Preferences會將該數據緩存在內存中,當用戶讀取的時候,能夠快速從內存中獲取數據,當需要持久化時可以使用flush接口將
    的頭像 發表于 04-29 16:38 ?1185次閱讀

    嵌入式學習-飛凌嵌入式ElfBoard ELF 1板卡-內核空間與用戶空間的數據拷貝之數據拷貝介紹

    本帖最后由 jf_13411809 于 2025-3-20 14:10 編輯 在Linux系統中,內核空間和用戶空間是兩個獨立的地址空間,它們有不同的訪問權限和內存保護機制。在內核
    發表于 03-20 11:50

    飛凌嵌入式ElfBoard ELF 1板卡-內核空間與用戶空間的數據拷貝之數據拷貝介紹

    在Linux系統中,內核空間和用戶空間是兩個獨立的地址空間,它們有不同的訪問權限和內存保護機制。在內核空間和用戶空間之間進行數據傳輸時,需要
    發表于 03-19 08:55