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

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
    +關注

    關注

    88

    文章

    11758

    瀏覽量

    219009
  • 內存
    +關注

    關注

    9

    文章

    3209

    瀏覽量

    76358
  • 操作系統
    +關注

    關注

    37

    文章

    7401

    瀏覽量

    129284
  • DNA
    DNA
    +關注

    關注

    0

    文章

    244

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

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

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

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

    最近這段時間內存條、硬盤的價格飛漲,隨著AI產品的興起,大數據模型的應用,對硬件存儲要求的更高。這節閱讀有關Linux內存管理方面的知識Linu
    發表于 01-16 20:05

    Linux 已夠強,國產操作系統為何仍要堅持?

    在中國做技術的人,或多或少都有過這樣的疑問: “Linux 都這么成熟、這么好用了,國產操作系統還有必要搞嗎?” 這不是少數人的困惑,而是整個行業幾十年來反復討論的問題。 但如果你深入工業、能源
    的頭像 發表于 12-25 16:11 ?367次閱讀

    解析Linux的進程、線程和協程

    一、基礎概念 進程(Process) 進程是計算機中運行的程序的實例,它是操作系統中最基本的執行單元之一。每個進程都有自己的獨立內存空間、系統資源和代碼執行流。這意味著一個進程的崩潰通常不會
    發表于 12-22 11:00

    Linux驅動開發的必備知識

    內核基礎知識: 1、熟悉 Linux 內核的架構、模塊系統、進程管理、內存管理等。 了解內核的編譯和加載過程。 2、C編程技能: 精通 C 語言編程,包括指針
    發表于 12-04 07:58

    EV10AS180A模數轉換器支持哪些操作系統

    與這些硬件接口進行交互,從而實現對EV10AS180A的控制和數據讀取。系統集成與應用場景:在將EV10AS180A集成到具體系統中時,用戶可能會根據系統需求選擇合適的
    發表于 11-18 09:18

    【書籍評測活動NO.67】成為硬核Linux開發者:《Linux 設備驅動開發(第 2 版)》

    數據結構、指針處理和內存分配;然后是掌握Linux系統的命令行操作,能夠搭建開發環境。軟件/硬件要求操作系統要求一臺計算機,要求具有良好的網
    發表于 11-17 17:52

    單片機的操作系統

    RTX ?:ARM官方推薦,與CMSIS-RTOS標準兼容,支持時間片輪轉調度,適合汽車電子等硬實時任務。 ? ? 都江堰操作系統(djyos) ?:事件驅動型內核,適用于高并發場景。 ? 選擇時需結合硬件資源(如CPU類型、內存
    發表于 11-14 06:18

    Jtti Linux操作系統最常見的10大優勢

    Linux操作系統的十大優勢 Linux操作系統作為一種開源、自由的系統,已經廣泛應用于個人計算機、服務器、嵌入式設備等多個領域。它的多樣化
    的頭像 發表于 11-06 15:32 ?298次閱讀

    鴻道Intewell實時操作系統有哪些應用場景

    鴻道Intewell工業操作系統作為一款國產實時操作系統(RTOS),在工業領域因其高實時性、高可靠性和強定制化能力,被廣泛應用于對系統響應速度和穩定性要求苛刻的場景。以下是其典型應
    的頭像 發表于 06-26 10:15 ?719次閱讀

    聚徽廠家解碼——工控機操作系統選擇:Windows、Linux、QNX 如何匹配工業場景

    在工業自動化進程不斷推進的當下,工控機作為核心設備,其操作系統的恰當選擇對工業生產的穩定性、高效性和安全性起著決定性作用。常見的 Windows、Linux 和 QNX 操作系統,各自具備獨特
    的頭像 發表于 05-29 16:28 ?1672次閱讀

    Linux常用命令大全

    Linux常用命令是指在Linux操作系統中廣泛使用的命令工具,這些命令工具可以完成各種不同的任務,如管理文件和目錄、操作進程、網絡通信、軟件安裝等。
    的頭像 發表于 05-03 18:08 ?1863次閱讀

    Linux主要的性能有哪些?

    ? 什么是Linux? ? Linux是一套自由傳播的類Unix操作系統,是一個基于posix和unix的多用戶、多任務、支持多線程和多cpu的操作系統。它的基本思想有兩點,一切都是文
    的頭像 發表于 04-30 18:09 ?654次閱讀
    <b class='flag-5'>Linux</b>主要的性能有哪些?

    Linux系統用戶權限詳解

    Linux 是一種開源的、基于 Unix 的操作系統,它因其靈活性、穩定性和高性能而廣泛應用于服務器、嵌入式系統、超級計算機、桌面計算等領域。
    的頭像 發表于 04-25 10:56 ?905次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>系統</b>用戶權限詳解

    Linux的作用

    學校和教育機構使用Linux來教授計算機科學和信息技術相關的課程。 總之,Linux是一個功能強大、靈活且廣泛應用的操作系統,適用于各種不同的用途和場景。
    發表于 04-04 01:57