精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

什么是內存碎片Linux

麥辣雞腿堡 ? 來源:嵌入式Linux充電站 ? 作者:Vincent ? 2023-10-08 10:12 ? 次閱讀

什么是內存碎片?

內存碎片在Linux很早的時候就已經出現了,了解早期內存碎片產生的歷史,有利于我們對它的理解。

假設現在有一塊32MB大小的內存,一開始操作系統使用了最小的一塊——4MB大小,剩余的內存要留給4個進程使用,如圖(a)所示。

圖片

進程A使用了操作系統往上的10MB內存,進程B使用了進程A往上的6MB內存,進程C使用了進程B往上的8MB內存,如圖(b)所示,:

圖片

進程D需要5MB內存,所以剩余的內存不足以裝載進程D,這個內存末位就形成了第一個空洞(內存碎片)。假設某個時刻,操作系統需要運行進程D,因為系統中沒有足夠的內存,所以需要選擇一個進程來換出,為進程D騰出足夠的空間。假設操作系統選擇進程B來換出,這樣進程D就裝載到了原來進程B的地址空間里,于是產生了第二個空洞,如圖(c)所示:

圖片

假設操作系統某個時刻需要運行進程B,也需要選擇一個進程來換出,假設進程A被換出,那么操作系統中又產生了第三個空洞,如圖(d)所示:

圖片

隨著時間的推移,內存空洞會越來越多,內存的利用率也隨之下降,這些內存空洞就是我們常說的內存碎片。

圖片

看到這,你已經知道了什么是內存碎片,同時還了解了一種內存管理機制——動態分區法。上述舉例其實就是動態分區法,操作系統早期使用動態分區法來管理內存。

怎么解決內存碎片化問題?

思路其實很簡單:把多個小塊內存拼成一個大塊內存。

早期使用動態分區法的操作系統,為了解決碎片化問題,就是動態地移動進程,使得進程占用的空間是連續的,并且所有的空閑空間也是連續,這樣就把多個小內存塊拼起來了。但是缺點也非常明顯,進程的遷移需要耗費大量的時間。

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

    關注

    87

    文章

    11232

    瀏覽量

    208952
  • 內存
    +關注

    關注

    8

    文章

    3004

    瀏覽量

    73900
  • 操作系統
    +關注

    關注

    37

    文章

    6747

    瀏覽量

    123204
  • 進程
    +關注

    關注

    0

    文章

    202

    瀏覽量

    13948
收藏 人收藏

    評論

    相關推薦

    Linux內存管理是什么,Linux內存管理詳解

    Linux內存管理 Linux內存管理是一個非常復雜的過程,主要分成兩個大的部分:內核的內存管理和進程虛擬
    的頭像 發表于 05-11 17:54 ?5983次閱讀
    <b class='flag-5'>Linux</b>的<b class='flag-5'>內存</b>管理是什么,<b class='flag-5'>Linux</b>的<b class='flag-5'>內存</b>管理詳解

    linux內存相關知識科普

    linux 內存組織結構和頁面布局,內存碎片產生原因和優化算法。
    發表于 08-08 10:57 ?380次閱讀

    走進Linux內存系統探尋內存管理的機制和奧秘

    Linux 內存是后臺開發人員,需要深入了解的計算機資源。合理的使用內存,有助于提升機器的性能和穩定性。本文主要介紹Linux 內存組織結構
    的頭像 發表于 01-05 09:47 ?1601次閱讀

    Linux內存相關知識科普

    Linux 內存是后臺開發人員,需要深入了解的計算機資源。合理的使用內存,有助于提升機器的性能和穩定性。本文主要介紹**Linu****x 內存組織結構和頁面布局,
    發表于 07-25 14:43 ?716次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內存</b>相關知識科普

    C語言malloc申請內存時的碎片問題

    解決問題:malloc在申請內存的時候,內存碎片問題會導致原本內存大小足夠,卻申請大內存失敗。
    發表于 08-06 16:58 ?1592次閱讀
    C語言malloc申請<b class='flag-5'>內存</b>時的<b class='flag-5'>碎片</b>問題

    Linux內核內存規整總結

    1.前言 伙伴系統作為內核最基礎的物理頁內存分配器,具有高效、實現邏輯簡介等優點,其原理頁也盡可能降低內存外部碎片產生,但依然無法杜絕碎片問題。外部
    的頭像 發表于 11-11 11:17 ?1277次閱讀
    <b class='flag-5'>Linux</b>內核<b class='flag-5'>內存</b>規整總結

    請問mymalloc會產生內存碎片嗎?

    malloc申請內存在釋放后,會產生內存碎片,所以UCOSIII內有專門的內存申請。原子哥視頻(UCOSIII視頻19講)最后的時候說可以用原子哥自己的mamalloc函數來申請
    發表于 10-16 04:35

    如何避免內存碎片的產生

    考試題型:單選 8 道,不定項 2 道,編程 2 道,問答 1 道考點:進程間通訊的方式,linux的基本指令(考了grep,chmod),根據代碼給出運行的結果問答題:簡述內存碎片的定義,如何避免
    發表于 12-21 07:50

    如何避免Linux的物理內存碎片

    Linux buddyy系統是linux kernel比較穩定的一個模塊,但是并不是說它沒有缺陷,Linux內存管理系統自誕生之日,就一直存在物理
    的頭像 發表于 05-01 16:43 ?5438次閱讀
    如何避免<b class='flag-5'>Linux</b>的物理<b class='flag-5'>內存</b><b class='flag-5'>碎片</b>化

    你知道linux kernel內存碎片防治技術?

    Linux kernel組織管理物理內存的方式是buddy system(伙伴系統),而物理內存碎片正式buddy system的弱點之一,為了預防以及解決
    發表于 05-10 10:59 ?942次閱讀

    OPPO內存碎片化引擎的作業

    OPPO宣傳的內存碎片化引擎是個什么東西?它有何作用?針對上述問題,ColorOS官方微博特地發文科普,我們一起來看看。
    的頭像 發表于 03-15 16:20 ?3570次閱讀

    一文解析Linux內存系統

    Linux 內存是后臺開發人員,需要深入了解的計算機資源。合理的使用內存,有助于提升機器的性能和穩定性。本文主要介紹Linux 內存組織結構
    的頭像 發表于 09-01 10:46 ?2426次閱讀
    一文解析<b class='flag-5'>Linux</b><b class='flag-5'>內存</b>系統

    Linux內存管理的基礎知識科普

    ,為什么還要看你這一篇,這正是我寫此文的原因,網上碎片化的相關知識點大都是東拼西湊,先不說正確性與否,就連基本的邏輯都沒有搞清楚,我可以負責任的說Linux內存管理只需要看此文一篇就可以讓你入
    的頭像 發表于 06-08 15:24 ?2079次閱讀

    FreeRTOS內存碎片是怎么來的

    內存碎片 在看 FreeRTOS的內存分配方法之前我們先來看一下什么叫做內存碎片,看名字就知道是小塊的、
    的頭像 發表于 07-30 10:29 ?867次閱讀
    FreeRTOS<b class='flag-5'>內存</b><b class='flag-5'>碎片</b>是怎么來的

    如何解決內存碎片內存交換效率慢的問題

    內存分頁 分段的好處是能產生連續的內存空間,但是會出現大量內存碎片內存交換效率低的問題 先思考一下怎么解決這兩個問題,
    的頭像 發表于 10-09 16:57 ?998次閱讀
    如何解決<b class='flag-5'>內存</b><b class='flag-5'>碎片</b>與<b class='flag-5'>內存</b>交換效率慢的問題