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

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

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

3天內不再提示

Linux操作系統知識講解:走進Linux 內存使用場景

如意 ? 來源:Linux學習 ? 作者:佚名 ? 2020-08-28 11:04 ? 次閱讀

內存使用場景

out of memory 的時代過去了嗎?no,內存再充足也不可任性使用。

1、內存的使用場景

page 管理

slab(kmalloc、內存池)

用戶態內存使用(malloc、relloc 文件映射、共享內存)

程序的內存 map(棧、堆、code、data)

內核和用戶態的數據傳遞(copy_from_user、copy_to_user)

內存映射(硬件寄存器、保留內存)

DMA 內存

2、用戶態內存分配函數

alloca 是向棧申請內存,因此無需釋放

malloc 所分配的內存空間未被初始化,使用 malloc() 函數的程序開始時(內存空間還沒有被重新分配) 能正常運行,但經過一段時間后(內存空間已被重新分配) 可能會出現問題

calloc 會將所分配的內存空間中的每一位都初始化為零

realloc 擴展現有內存空間大小

a) 如果當前連續內存塊足夠 realloc 的話,只是將 p 所指向的空間擴大,并返回 p 的指針地址。這個時候 q 和 p 指向的地址是一樣的

b) 如果當前連續內存塊不夠長度,再找一個足夠長的地方,分配一塊新的內存,q,并將 p 指向的內容 copy 到 q,返回 q。并將 p 所指向的內存空間刪除

3、內核態內存分配函數

函數分配原理最大內存其他_get_free_pages直接對頁框進行操作4MB適用于分配較大量的連續物理內存kmem_cache_alloc基于 slab 機制實現128KB適合需要頻繁申請釋放相同大小內存塊時使用kmalloc基于 kmem_cache_alloc 實現128KB最常見的分配方式,需要小于頁框大小的內存時可以使用vmalloc建立非連續物理內存到虛擬地址的映射物理不連續,適合需要大內存,但是對地址連續性沒有要求的場合dma_alloc_coherent基于_alloc_pages 實現4MB適用于 DMA 操作ioremap實現已知物理地址到虛擬地址的映射適用于物理地址已知的場合,如設備驅動alloc_bootmem在啟動 kernel 時,預留一段內存,內核看不見小于物理內存大小,內存管理要求較高

4、malloc 申請內存

調用 malloc 函數時,它沿 free_chuck_list 連接表尋找一個大到足以滿足用戶請求所需要的內存塊

Linux操作系統知識講解:走進Linux 內存使用場景

free_chuck_list 連接表的主要工作是維護一個空閑的堆空間緩沖區鏈表

如果空間緩沖區鏈表沒有找到對應的節點,需要通過系統調用 sys_brk 延伸進程的棧空間

Linux操作系統知識講解:走進Linux 內存使用場景

5、缺頁異常

通過 get_free_pages 申請一個或多個物理頁面

換算 addr 在進程 pdg 映射中所在的 pte 地址

將 addr 對應的 pte 設置為物理頁面的首地址

系統調用:Brk—申請內存小于等于 128kb,do_map—申請內存大于 128kb

Linux操作系統知識講解:走進Linux 內存使用場景

6、用戶進程訪問內存分析

用戶態進程獨占虛擬地址空間,兩個進程的虛擬地址可相同

在訪問用戶態虛擬地址空間時,如果沒有映射物理地址,通過系統調用發出缺頁異常

缺頁異常陷入內核,分配物理地址空間,與用戶態虛擬地址建立映射

Linux操作系統知識講解:走進Linux 內存使用場景

7、共享內存

1) 原理

它允許多個不相關的進程去訪問同一部分邏輯內存

兩個運行中的進程之間傳輸數據,共享內存將是一種效率極高的解決方案

兩個運行中的進程共享數據,是進程間通信的高效方法,可有效減少數據拷貝的次數

Linux操作系統知識講解:走進Linux 內存使用場景

2) shm 接口

shmget 創建共享內存

shmat 啟動對該共享內存的訪問,并把共享內存連接到當前進程的地址空間

shmdt 將共享內存從當前進程中分離
責編AJX

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

    關注

    87

    文章

    11123

    瀏覽量

    207882
  • 內存
    +關注

    關注

    8

    文章

    2902

    瀏覽量

    73530
  • 操作系統
    +關注

    關注

    37

    文章

    6543

    瀏覽量

    122724
  • DNA
    DNA
    +關注

    關注

    0

    文章

    242

    瀏覽量

    30959
收藏 人收藏

    評論

    相關推薦

    RTOS與Linux有什么區別

    RTOS(Real-Time Operating System,實時操作系統)與Linux是兩種在不同應用場景下發揮重要作用的操作系統,它們在設計理念、功能特性、應
    的頭像 發表于 08-20 16:05 ?997次閱讀

    工業實時操作系統對比:鴻道Intewell跟rt-linux有啥區別

    Intewell和RT-Linux是兩種不同的實時操作系統(RTOS),它們具有各自獨特的特點和優勢。以下是Intewell操作系統的一些關鍵特性,以及與RT-Linux的比較:
    的頭像 發表于 07-03 10:00 ?243次閱讀
    工業實時<b class='flag-5'>操作系統</b>對比:鴻道Intewell跟rt-<b class='flag-5'>linux</b>有啥區別

    研華工控機用什么系統?Windows與Linux操作系統的較量

    兩大主流操作系統,各自具有獨特的優勢和應用場景。本文將幫助你更好地理解它們的特點,并做出明智的選擇。下面就隨蘇州研訊電子科技有限公司一起來看看吧。 Windows系統 提到Windows系統
    的頭像 發表于 06-14 14:38 ?480次閱讀
    研華工控機用什么<b class='flag-5'>系統</b>?Windows與<b class='flag-5'>Linux</b><b class='flag-5'>操作系統</b>的較量

    服務器操作系統有幾種?

    操作系統細分化有許多,下邊給大伙兒詳細介紹的是至少的這種:CentOS 1、CentOS 5.6 2、CentOS 6.4 在Linux網絡服務器電腦操作系統下,CentOS是應用場景
    發表于 03-29 16:59

    Linux操作系統上的射頻測試模式應用指南

    電子發燒友網站提供《Linux操作系統上的射頻測試模式應用指南.pdf》資料免費下載
    發表于 02-19 09:39 ?0次下載
    <b class='flag-5'>Linux</b><b class='flag-5'>操作系統</b>上的射頻測試模式應用指南

    linux和windows的區別 linux系統一般用來干嘛

    Linux和Windows是兩種不同的操作系統,有著不同的設計理念和用途。本文將對Linux和Windows的區別進行詳細分析,并介紹Linux系統
    的頭像 發表于 02-05 14:06 ?671次閱讀

    Linux操作系統中如何按下PCIe的復位鍵

    Linux操作系統中,看如何按下PCIe的復位鍵
    的頭像 發表于 01-20 09:31 ?1198次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>操作系統</b>中如何按下PCIe的復位鍵

    linux系統基礎入門教程

    Linux是一種開源的操作系統,它被廣泛應用于服務器、嵌入式系統以及個人電腦上。本篇文章將帶領讀者從入門的角度,詳細介紹Linux系統的基礎
    的頭像 發表于 11-16 16:45 ?862次閱讀

    LInux 操作系統中斷介紹

    LInux 操作系統中斷 什么是系統中斷 這個沒啥可說的,大家都知道; CPU 在執行任務途中接收到中斷請求,需要保存現場后去處理中斷請求!保存現場稱為中斷處理程序!處理中斷請求也就是喚醒對應的任務
    的頭像 發表于 11-13 11:36 ?749次閱讀
    <b class='flag-5'>LInux</b> <b class='flag-5'>操作系統</b>中斷介紹

    Linux 內存管理總結

    一、Linux內存管理概述 Linux內存管理是指對系統內存的分配、釋放、映射、管理、交換、壓縮
    的頭像 發表于 11-10 14:58 ?429次閱讀
    <b class='flag-5'>Linux</b> <b class='flag-5'>內存</b>管理總結

    什么是LInux 操作系統中斷

    LInux 操作系統中斷 什么是系統中斷 這個沒啥可說的,大家都知道; CPU 在執行任務途中接收到中斷請求,需要保存現場后去處理中斷請求!保存現場稱為中斷處理程序!處理中斷請求也就是喚醒對應的任務
    的頭像 發表于 11-10 11:29 ?481次閱讀
    什么是<b class='flag-5'>LInux</b> <b class='flag-5'>操作系統</b>中斷

    linux屬于什么操作系統

    Linux屬于一種類UNIX操作系統Linux,全稱GNU/Linux,是一套免費使用和自由傳播的類Unix操作系統,是一個基于POSIX
    的頭像 發表于 11-08 11:01 ?3408次閱讀

    有無操作系統的嵌入式Linux驅動設備有何區別?

    有無操作系統的嵌入式Linux驅動設備有何區別? 嵌入式系統是指集成電子設備上的計算機系統,通常用于控制、監測、操作或處理某些物理或機械過程
    的頭像 發表于 10-29 17:29 ?597次閱讀

    開源操作系統大全

    開源操作系統即公開源代碼的操作系統軟件,它遵循開源協議使用、編譯和發布。自由和開放源代碼軟件中最著名的是 Linux ,它是一種類 Unix 的操作系統
    發表于 10-27 15:13

    請問AVR是否可以使用Linux操作系統

    AVR是否可以使用Linux操作系統
    發表于 10-24 06:13