chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux操作系統(tǒng)知識講解:走進(jìn)Linux 內(nèi)存使用場景

如意 ? 來源:Linux學(xué)習(xí) ? 作者:佚名 ? 2020-08-28 11:04 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

內(nèi)存使用場景

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

1、內(nèi)存的使用場景

page 管理

slab(kmalloc、內(nèi)存池)

用戶態(tài)內(nèi)存使用(malloc、relloc 文件映射、共享內(nèi)存)

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

內(nèi)核和用戶態(tài)的數(shù)據(jù)傳遞(copy_from_user、copy_to_user)

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

DMA 內(nèi)存

2、用戶態(tài)內(nèi)存分配函數(shù)

alloca 是向棧申請內(nèi)存,因此無需釋放

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

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

realloc 擴(kuò)展現(xiàn)有內(nèi)存空間大小

a) 如果當(dāng)前連續(xù)內(nèi)存塊足夠 realloc 的話,只是將 p 所指向的空間擴(kuò)大,并返回 p 的指針地址。這個時候 q 和 p 指向的地址是一樣的

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

3、內(nèi)核態(tài)內(nèi)存分配函數(shù)

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

4、malloc 申請內(nèi)存

調(diào)用 malloc 函數(shù)時,它沿 free_chuck_list 連接表尋找一個大到足以滿足用戶請求所需要的內(nèi)存塊

Linux操作系統(tǒng)知識講解:走進(jìn)Linux 內(nèi)存使用場景

free_chuck_list 連接表的主要工作是維護(hù)一個空閑的堆空間緩沖區(qū)鏈表

如果空間緩沖區(qū)鏈表沒有找到對應(yīng)的節(jié)點,需要通過系統(tǒng)調(diào)用 sys_brk 延伸進(jìn)程的??臻g

Linux操作系統(tǒng)知識講解:走進(jìn)Linux 內(nèi)存使用場景

5、缺頁異常

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

換算 addr 在進(jìn)程 pdg 映射中所在的 pte 地址

將 addr 對應(yīng)的 pte 設(shè)置為物理頁面的首地址

系統(tǒng)調(diào)用:Brk—申請內(nèi)存小于等于 128kb,do_map—申請內(nèi)存大于 128kb

Linux操作系統(tǒng)知識講解:走進(jìn)Linux 內(nèi)存使用場景

6、用戶進(jìn)程訪問內(nèi)存分析

用戶態(tài)進(jìn)程獨占虛擬地址空間,兩個進(jìn)程的虛擬地址可相同

在訪問用戶態(tài)虛擬地址空間時,如果沒有映射物理地址,通過系統(tǒng)調(diào)用發(fā)出缺頁異常

缺頁異常陷入內(nèi)核,分配物理地址空間,與用戶態(tài)虛擬地址建立映射

Linux操作系統(tǒng)知識講解:走進(jìn)Linux 內(nèi)存使用場景

7、共享內(nèi)存

1) 原理

它允許多個不相關(guān)的進(jìn)程去訪問同一部分邏輯內(nèi)存

兩個運(yùn)行中的進(jìn)程之間傳輸數(shù)據(jù),共享內(nèi)存將是一種效率極高的解決方案

兩個運(yùn)行中的進(jìn)程共享數(shù)據(jù),是進(jìn)程間通信的高效方法,可有效減少數(shù)據(jù)拷貝的次數(shù)

Linux操作系統(tǒng)知識講解:走進(jìn)Linux 內(nèi)存使用場景

2) shm 接口

shmget 創(chuàng)建共享內(nèi)存

shmat 啟動對該共享內(nèi)存的訪問,并把共享內(nèi)存連接到當(dāng)前進(jìn)程的地址空間

shmdt 將共享內(nèi)存從當(dāng)前進(jìn)程中分離
責(zé)編AJX

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11760

    瀏覽量

    219042
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    9

    文章

    3210

    瀏覽量

    76377
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    7402

    瀏覽量

    129319
  • DNA
    DNA
    +關(guān)注

    關(guān)注

    0

    文章

    244

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    Linux內(nèi)核伙伴系統(tǒng)內(nèi)存申請函數(shù)詳解:從原理到實戰(zhàn)

    Linux 內(nèi)核中,內(nèi)存管理是整個系統(tǒng)穩(wěn)定運(yùn)行的基石,而伙伴系統(tǒng)(Buddy System) 作為內(nèi)核物理內(nèi)存分配的核心機(jī)制,更是驅(qū)動開
    的頭像 發(fā)表于 02-10 16:58 ?3632次閱讀
    <b class='flag-5'>Linux</b>內(nèi)核伙伴<b class='flag-5'>系統(tǒng)</b><b class='flag-5'>內(nèi)存</b>申請函數(shù)詳解:從原理到實戰(zhàn)

    【「Linux 設(shè)備驅(qū)動開發(fā)(第 2 版)」閱讀體驗】+讀深入理解Linux內(nèi)核內(nèi)存分配

    最近這段時間內(nèi)存條、硬盤的價格飛漲,隨著AI產(chǎn)品的興起,大數(shù)據(jù)模型的應(yīng)用,對硬件存儲要求的更高。這節(jié)閱讀有關(guān)Linux內(nèi)存管理方面的知識。 Linu
    發(fā)表于 01-16 20:05

    Linux 已夠強(qiáng),國產(chǎn)操作系統(tǒng)為何仍要堅持?

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

    解析Linux的進(jìn)程、線程和協(xié)程

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

    Linux驅(qū)動開發(fā)的必備知識

    內(nèi)核基礎(chǔ)知識: 1、熟悉 Linux 內(nèi)核的架構(gòu)、模塊系統(tǒng)、進(jìn)程管理、內(nèi)存管理等。 了解內(nèi)核的編譯和加載過程。 2、C編程技能: 精通 C 語言編程,包括指針
    發(fā)表于 12-04 07:58

    EV10AS180A模數(shù)轉(zhuǎn)換器支持哪些操作系統(tǒng)

    與這些硬件接口進(jìn)行交互,從而實現(xiàn)對EV10AS180A的控制和數(shù)據(jù)讀取。系統(tǒng)集成與應(yīng)用場景:在將EV10AS180A集成到具體系統(tǒng)中時,用戶可能會根據(jù)系統(tǒng)需求選擇合適的
    發(fā)表于 11-18 09:18

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

    數(shù)據(jù)結(jié)構(gòu)、指針處理和內(nèi)存分配;然后是掌握Linux系統(tǒng)的命令行操作,能夠搭建開發(fā)環(huán)境。軟件/硬件要求操作系統(tǒng)要求一臺計算機(jī),要求具有良好的網(wǎng)
    發(fā)表于 11-17 17:52

    單片機(jī)的操作系統(tǒng)

    RTX ?:ARM官方推薦,與CMSIS-RTOS標(biāo)準(zhǔn)兼容,支持時間片輪轉(zhuǎn)調(diào)度,適合汽車電子等硬實時任務(wù)。 ? ? 都江堰操作系統(tǒng)(djyos) ?:事件驅(qū)動型內(nèi)核,適用于高并發(fā)場景。 ? 選擇時需結(jié)合硬件資源(如CPU類型、內(nèi)存
    發(fā)表于 11-14 06:18

    Jtti Linux操作系統(tǒng)最常見的10大優(yōu)勢

    Linux操作系統(tǒng)的十大優(yōu)勢 Linux操作系統(tǒng)作為一種開源、自由的系統(tǒng),已經(jīng)廣泛應(yīng)用于個人計算機(jī)、服務(wù)器、嵌入式設(shè)備等多個領(lǐng)域。它的多樣化
    的頭像 發(fā)表于 11-06 15:32 ?308次閱讀

    鴻道Intewell實時操作系統(tǒng)有哪些應(yīng)用場景

    鴻道Intewell工業(yè)操作系統(tǒng)作為一款國產(chǎn)實時操作系統(tǒng)(RTOS),在工業(yè)領(lǐng)域因其高實時性、高可靠性和強(qiáng)定制化能力,被廣泛應(yīng)用于對系統(tǒng)響應(yīng)速度和穩(wěn)定性要求苛刻的場景。以下是其典型應(yīng)
    的頭像 發(fā)表于 06-26 10:15 ?723次閱讀

    聚徽廠家解碼——工控機(jī)操作系統(tǒng)選擇:Windows、Linux、QNX 如何匹配工業(yè)場景

    在工業(yè)自動化進(jìn)程不斷推進(jìn)的當(dāng)下,工控機(jī)作為核心設(shè)備,其操作系統(tǒng)的恰當(dāng)選擇對工業(yè)生產(chǎn)的穩(wěn)定性、高效性和安全性起著決定性作用。常見的 Windows、Linux 和 QNX 操作系統(tǒng),各自具備獨特
    的頭像 發(fā)表于 05-29 16:28 ?1674次閱讀

    Linux常用命令大全

    Linux常用命令是指在Linux操作系統(tǒng)中廣泛使用的命令工具,這些命令工具可以完成各種不同的任務(wù),如管理文件和目錄、操作進(jìn)程、網(wǎng)絡(luò)通信、軟件安裝等。
    的頭像 發(fā)表于 05-03 18:08 ?1866次閱讀

    Linux主要的性能有哪些?

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

    Linux系統(tǒng)用戶權(quán)限詳解

    Linux 是一種開源的、基于 Unix 的操作系統(tǒng),它因其靈活性、穩(wěn)定性和高性能而廣泛應(yīng)用于服務(wù)器、嵌入式系統(tǒng)、超級計算機(jī)、桌面計算等領(lǐng)域。
    的頭像 發(fā)表于 04-25 10:56 ?911次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>系統(tǒng)</b>用戶權(quán)限詳解

    Linux的作用

    學(xué)校和教育機(jī)構(gòu)使用Linux來教授計算機(jī)科學(xué)和信息技術(shù)相關(guān)的課程。 總之,Linux是一個功能強(qiáng)大、靈活且廣泛應(yīng)用的操作系統(tǒng),適用于各種不同的用途和場景。
    發(fā)表于 04-04 01:57