本文從硬件的角度引申出內(nèi)存屏障,這不是內(nèi)存屏障的詳盡手冊,但是相關(guān)知識(shí)對于理解RCU有所幫助。
2017-09-19 11:39:57
6583 
Linux的內(nèi)存管理 Linux的內(nèi)存管理是一個(gè)非常復(fù)雜的過程,主要分成兩個(gè)大的部分:內(nèi)核的內(nèi)存管理和進(jìn)程虛擬內(nèi)存。內(nèi)核的內(nèi)存管理是Linux內(nèi)存管理的核心,所以我們先對內(nèi)核的內(nèi)存管理進(jìn)行簡介。 一
2022-05-11 17:54:17
6985 
Linux 內(nèi)核采用延遲分配物理內(nèi)存的策略,在進(jìn)程第一次訪問虛擬頁的時(shí)候,產(chǎn)生缺頁異常。如果是文件映射,那么分配物理頁,把文件指定區(qū)間的數(shù)據(jù)讀到物理頁中,然后在頁表中把虛擬頁映射到物理頁;如果是匿名映射,那么分配物理頁,然后在頁表中把虛擬頁映射到物理頁。
2022-07-21 17:06:10
2812 在使用沒有垃圾回收的語言時(shí)(如 C/C++),可能由于忘記釋放內(nèi)存而導(dǎo)致內(nèi)存被耗盡,這叫 內(nèi)存泄漏。由于內(nèi)核也需要自己管理內(nèi)存,所以也可能出現(xiàn)內(nèi)存泄漏的情況。為了能夠找出導(dǎo)致內(nèi)存泄漏的地方,Linux 內(nèi)核開發(fā)者開發(fā)出 kmemleak 功能。
2022-12-09 11:11:34
1236 之前分享過Linux內(nèi)核網(wǎng)絡(luò)數(shù)據(jù)包的接收過程,當(dāng)執(zhí)行到網(wǎng)卡通過硬件中斷(IRQ)通知CPU,告訴它有數(shù)據(jù)來了,CPU會(huì)根據(jù)中斷表,調(diào)用已經(jīng)注冊的中斷函數(shù),這個(gè)中斷函數(shù)會(huì)調(diào)到驅(qū)動(dòng)程序(NIC
2022-12-15 11:44:47
2471 Linux 內(nèi)存是后臺(tái)開發(fā)人員,需要深入了解的計(jì)算機(jī)資源。合理的使用內(nèi)存,有助于提升機(jī)器的性能和穩(wěn)定性。本文主要介紹Linux 內(nèi)存組織結(jié)構(gòu)和頁面布局,內(nèi)存碎片產(chǎn)生原因和優(yōu)化算法,Linux 內(nèi)核幾種內(nèi)存管理的方法,內(nèi)存使用場景以及內(nèi)存使用的那些坑。
2023-01-05 09:47:43
2302 Linux內(nèi)存管理是指對系統(tǒng)內(nèi)存的分配、釋放、映射、管理、交換、壓縮等一系列操作的管理。在Linux中,內(nèi)存被劃分為多個(gè)區(qū)域,每個(gè)區(qū)域有不同的作用,包括內(nèi)核空間、用戶空間、緩存、交換分區(qū)等。Linux內(nèi)存管理的目標(biāo)是最大限度地利用可用內(nèi)存,同時(shí)保證系統(tǒng)的穩(wěn)定和可靠性。
2023-03-06 09:28:45
1395 本文介紹 Armv8-A 架構(gòu)的內(nèi)存序模型,并介紹 arm 的各種內(nèi)存屏障。本文還會(huì)指出一些需要明確內(nèi)存保序的場景,并指明如何使用內(nèi)存屏障以讓程序運(yùn)行正確。
2023-06-15 18:19:37
2733 
在Linux內(nèi)核開發(fā)中,Kmemleak是一種用于檢測內(nèi)核中內(nèi)存泄漏的工具。
2023-07-04 11:04:03
1213 Linux操作系統(tǒng)是當(dāng)今世界上最為廣泛使用的開源操作系統(tǒng)之一,內(nèi)核則是一個(gè)操作系統(tǒng)的核心和靈魂所在。對于一名Linux驅(qū)動(dòng)開發(fā)者來說,了解Linux內(nèi)核的運(yùn)行機(jī)制和Linux內(nèi)核提供的一些關(guān)鍵功能(如虛擬內(nèi)存管理、進(jìn)程管理、文件系統(tǒng)、網(wǎng)絡(luò)協(xié)議棧等)都是我們?nèi)粘9ぷ骱蛯W(xué)習(xí)的重點(diǎn)。
2023-07-06 11:46:41
2259 
Linux內(nèi)核中經(jīng)常可見container_of的身影,它在實(shí)際驅(qū)動(dòng)的編寫中也是廣泛應(yīng)用。
2023-07-14 15:19:42
790 
Linux 內(nèi)存是后臺(tái)開發(fā)人員,需要深入了解的計(jì)算機(jī)資源。合理的使用內(nèi)存,有助于提升機(jī)器的性能和穩(wěn)定性。本文主要介紹**Linu****x 內(nèi)存組織結(jié)構(gòu)和頁面布局,內(nèi)存碎片產(chǎn)生原因和優(yōu)化算法
2023-07-25 14:43:45
1127 
Linux中內(nèi)存管理子系統(tǒng)使用 節(jié)點(diǎn)(node)、區(qū)域(zone)和頁(page) 三級(jí)結(jié)構(gòu)描述物理內(nèi)存。
2023-08-21 15:35:24
1163 
內(nèi)存管理的主要工作就是對物理內(nèi)存進(jìn)行組織,然后對物理內(nèi)存的分配和回收。但是Linux引入了虛擬地址的概念。
2023-08-31 14:46:51
1330 
1.前言 伙伴系統(tǒng)作為內(nèi)核最基礎(chǔ)的物理頁內(nèi)存分配器,具有高效、實(shí)現(xiàn)邏輯簡介等優(yōu)點(diǎn),其原理頁也盡可能降低內(nèi)存外部碎片產(chǎn)生,但依然無法杜絕碎片問題。外部碎片帶來的最大影響就是內(nèi)存足夠,但是卻無法滿足內(nèi)存
2023-11-11 11:17:55
2162 
uboot完成系統(tǒng)引導(dǎo)以后,執(zhí)行環(huán)境變量bootm中的命令;即,將Linux內(nèi)核調(diào)入內(nèi)存中并調(diào)用do_bootm函數(shù)啟動(dòng)內(nèi)核,跳轉(zhuǎn)至kernel的起始位置。
2023-12-08 14:00:44
2009 
內(nèi)存管理子系統(tǒng)可能是linux內(nèi)核中最為復(fù)雜的一個(gè)子系統(tǒng),其支持的功能需求眾多,如頁面映射、頁面分配、頁面回收、頁面交換、冷熱頁面、緊急頁面、頁面碎片管理、頁面緩存、頁面統(tǒng)計(jì)等,而且對性能也有很高
2024-01-04 09:24:37
1796 
內(nèi)核中使用ZONE分配器滿足內(nèi)存分配請求。該分配器必須具有足夠的空閑頁幀,以便滿足各種內(nèi)存大小請求。
2024-02-21 09:29:13
1791 的主要優(yōu)點(diǎn)是避免了外部碎片,而缺點(diǎn)是需要修改內(nèi)核頁表。顯然,非連續(xù)內(nèi)存區(qū)域的大小必須是4096的倍數(shù)。Linux使用非連續(xù)物理內(nèi)存區(qū)的場景有幾種:(1)為swap區(qū)分配數(shù)據(jù)結(jié)構(gòu);(2)為模塊分配空間
2024-02-23 09:44:02
1896 
的數(shù)據(jù)可能不在內(nèi)存中。 Linux內(nèi)核地址映射模型 x86 CPU采用了段頁式地址映射模型。進(jìn)程代碼中的地址為邏輯地址,經(jīng)過段頁式地址映射后,才真正訪問物理內(nèi)存。 段頁式機(jī)制如下圖。 linux內(nèi)核地址空間劃分 通常32位Linux內(nèi)核地址空間劃分0~3G為用戶空
2018-05-08 10:33:19
3776 
1、devm_kzalloc & devm_kfree函數(shù)devm_kzalloc和kzalloc一樣都是內(nèi)核內(nèi)存分配函數(shù),但是devm_kzalloc是跟設(shè)備(裝置)有關(guān)的,當(dāng)設(shè)備
2022-11-04 14:46:37
Linux內(nèi)存系統(tǒng)---走進(jìn)Linux 內(nèi)存 1、內(nèi)存是什么?1)內(nèi)存又稱主存,是 CPU 能直接尋址的存儲(chǔ)空間,由半導(dǎo)體器件制成2)內(nèi)存的特點(diǎn)是存取速率快2、內(nèi)存的作用· 1)暫時(shí)存放 cpu
2020-08-26 08:05:43
Linux內(nèi)核主要學(xué)習(xí)內(nèi)容可以分為三大塊:進(jìn)程、內(nèi)存及協(xié)議棧。今天就說說內(nèi)存泄露的問題。相信你在平時(shí)的工作中,應(yīng)該遇到過下面這些場景:伴隨著服務(wù)器中的后臺(tái)任務(wù)持續(xù)地運(yùn)行,系統(tǒng)中可用內(nèi)存越來越少
2022-01-14 08:55:43
內(nèi)核內(nèi)存中,實(shí)際保存于VFS的索引節(jié)點(diǎn)高速緩存中。如果兩個(gè)進(jìn)程用相同的進(jìn)程打開,則可以共享inade的數(shù)據(jù)結(jié)構(gòu),這種共享是通過兩個(gè)進(jìn)程中數(shù)據(jù)塊指向相同的inode完成。Linux的具體結(jié)構(gòu)所謂具體結(jié)構(gòu)
2019-07-11 16:59:35
想象一下,您沒有使用 STM32,而只是用 C 編寫代碼,或許嘗試在 PC 上構(gòu)建和理解等效代碼?你了解數(shù)據(jù)是如何存儲(chǔ)在內(nèi)存中的嗎?您是否了解如何從第一原理將十進(jìn)制轉(zhuǎn)換為二進(jìn)制或從二進(jìn)制轉(zhuǎn)換為二進(jìn)制
2022-12-12 07:51:29
引言內(nèi)核代表啟動(dòng)時(shí)通常會(huì)看到下面第二行信息的內(nèi)容,它們是當(dāng)前內(nèi)核的版本、編譯工具版本、編譯環(huán)境等信息。要在啟動(dòng)中的任何打印過程中,都經(jīng)過一番討論和了解才要在大家的發(fā)布。一條信息,但有一條信息,但
2022-06-30 15:43:22
Approach。這里默認(rèn)你是了解一點(diǎn) ARM 匯編語言和 Linux 內(nèi)核基礎(chǔ)知識(shí)的。虛擬內(nèi)存的劃分首先,讓我們先弄清楚內(nèi)核是在虛擬內(nèi)存中哪個(gè)地址開始執(zhí)行的。內(nèi)核的虛擬內(nèi)存基地址 (kernel RAM
2022-04-14 10:22:27
本指南介紹Armv8-A體系結(jié)構(gòu)中的內(nèi)存系統(tǒng)。這些系統(tǒng)詳細(xì)通過內(nèi)存模型、內(nèi)存類型、內(nèi)存屬性和屏障。
在以下情況下,您必須了解內(nèi)存系統(tǒng)的操作和訪問順序您的代碼直接與硬件或在其他核心上執(zhí)行的代碼交互
2023-08-02 10:38:22
`一、看威武霸氣的封面作者:趙炯 二、讀讀簡介,看看適合你嗎?本書對Linux早期操作系統(tǒng)內(nèi)核(v0.11)全部代碼文件進(jìn)行了詳細(xì)全面的注釋和說明,旨在使讀者能夠在盡量短的時(shí)間內(nèi)對Linux
2015-09-11 22:25:28
、進(jìn)程調(diào)度、時(shí)間管理和定時(shí)器、系統(tǒng)調(diào)用接口、內(nèi)存尋址、內(nèi)存管理和頁緩存、VFS、內(nèi)核同步以及調(diào)試技術(shù)等。同時(shí)《Linux內(nèi)核設(shè)計(jì)與實(shí)現(xiàn)(原書第3版)》也涵蓋了Linux 2.6內(nèi)核中頗具特色的內(nèi)容,包括
2015-09-12 00:17:20
在上了Linux內(nèi)核這門課后,我對Linux內(nèi)核開始有了初步的了解,關(guān)于Linux內(nèi)核,我覺得最重要的部分還是進(jìn)程的創(chuàng)建以及切換,這是整個(gè)內(nèi)核的核心部分。以下是一些我在學(xué)習(xí)Linux內(nèi)核過程中的總結(jié):
2019-07-12 07:27:28
在開始學(xué)習(xí)ARM內(nèi)存屏障(memory barrier)指令前,需要想了解幾個(gè)相關(guān)的概念:內(nèi)存模型(memory model),內(nèi)存類型(memory type),內(nèi)存屬性(memory
2023-02-07 14:08:08
時(shí),CoreB可能讀不到最新的數(shù)據(jù)。因?yàn)镃oreB亂序執(zhí)行先讀取了Msg,然后再讀取Flag。在弱一致內(nèi)存模型中,處理器不知道Msg和Flag有數(shù)據(jù)依賴,所以需要用內(nèi)存屏障指出。在"LDR R0
2022-05-09 09:32:35
,但是你要學(xué)習(xí)內(nèi)核,你首先要會(huì)用Linux,知道Linux是如何操作,繼而才能了解Linux怎么調(diào)用系統(tǒng)底層驅(qū)動(dòng)的。當(dāng)時(shí)的我只是知道Linux是獨(dú)立于Windows的另一個(gè)操作系統(tǒng)。但是由于其開源免費(fèi)的...
2021-11-05 09:05:08
,內(nèi)核被劃分為多個(gè)子系統(tǒng)。Linux 也可以看作是一個(gè)整體,因?yàn)樗鼤?huì)將所有這些基本服務(wù)都集成到內(nèi)核中。這與微內(nèi)核的體系結(jié)構(gòu)不同,后者會(huì)提供一些基本的服務(wù),例如通信、I/O、內(nèi)存和進(jìn)程管理,更具體的服務(wù)
2018-08-27 10:31:28
有時(shí)我們需要在 Linux 內(nèi)核中預(yù)留一部分內(nèi)存空間用作特殊用途(給安全模塊使用,給其它處理器使用,或是給特定的驅(qū)動(dòng)程序使用等),在 Device Tree 中有提供兩種方法對預(yù)留內(nèi)存進(jìn)行配置
2021-12-29 07:16:18
摘要:你馬上就會(huì)發(fā)現(xiàn),你也可以獲得(get),配置(configure),編譯(compile)和安裝(install)屬于你自己的Linux內(nèi)核(Kernel)。目錄:引言安裝內(nèi)核源碼配置內(nèi)核
2016-11-10 12:16:18
本章學(xué)習(xí)目標(biāo)掌握LINUX內(nèi)核版本的含義理解并掌握進(jìn)程的概念掌握管道的概念及實(shí)現(xiàn)了解內(nèi)核的數(shù)據(jù)結(jié)構(gòu)了解LINUX內(nèi)核的算法掌握LINUX內(nèi)核升級(jí)的方法
2009-04-10 16:59:19
0 內(nèi)存屏障是Linux Kernel中常要遇到的問題,這里專門來對其進(jìn)行研究。一者查閱網(wǎng)上現(xiàn)有資料,進(jìn)行整理匯集;二者翻閱Linux內(nèi)核方面的指導(dǎo)書,從中提煉觀點(diǎn);最后,自己加以綜合分析,
2011-04-03 20:57:26
14 電子發(fā)燒友為您提供了免費(fèi)下載,《深入Linux內(nèi)核架構(gòu)》一書討論了Linux內(nèi)核的概念、結(jié)構(gòu)和實(shí)現(xiàn)。內(nèi)核對一致和非一致內(nèi)存訪問系統(tǒng)使用相同的數(shù)據(jù)結(jié)構(gòu)。 Linux 操作系統(tǒng)的源代碼復(fù)雜
2011-07-10 11:24:17
0 本內(nèi)容介紹了arm linux內(nèi)存管理機(jī)制,詳細(xì)說明了linux內(nèi)核內(nèi)存管理,linux虛擬內(nèi)存管理,arm linux內(nèi)存管理等方面的知識(shí)
2011-12-19 14:09:27
73 linux啟動(dòng)時(shí)內(nèi)核解壓過程分析,一份不錯(cuò)的文檔,深入了解內(nèi)核必備
2016-03-09 13:39:39
1 之前有幾篇博客詳細(xì)介紹了Xen的內(nèi)存初始化,確實(shí)感覺這部分內(nèi)容蠻復(fù)雜的。這兩天在看Linux內(nèi)核啟動(dòng)中內(nèi)存的初始化,也是看的云里霧里的,想嘗試下邊看邊寫,在寫博客的過程中慢慢思考,最后也能把自己
2017-10-12 11:16:57
0 ,都將面臨著同樣的問題,即如何將源代碼融入到 Linux 內(nèi)核中,增加相應(yīng)的 Linux 配置選項(xiàng),并最終被編譯進(jìn) Linux 內(nèi)核。這就需要了解 Linux 的內(nèi)核配置系統(tǒng)。 眾所周知,Linux
2017-11-01 15:45:54
4 有一個(gè) 定制過的內(nèi)核2.2.16-22ghosh在我的系統(tǒng)中運(yùn)行(我的名字叫Subhasish Ghosh,你也可以命名為其它名稱,事實(shí)上在系統(tǒng)中有兩個(gè)內(nèi)核是同時(shí)運(yùn)行的)下面,搜索并編譯Linux內(nèi)核。 編譯
2017-11-07 15:46:34
0 REDSonic, Inc. REDSonic的RedIce-Linux是一個(gè)實(shí)時(shí)Linux內(nèi)核,設(shè)計(jì)來支持以任務(wù)和時(shí)間為臨界的應(yīng)用,為你的系統(tǒng)提供質(zhì)量服務(wù)。RedIce-Linux包括高精度的微秒
2017-11-08 10:24:03
12 Linux內(nèi)核源碼當(dāng)中,關(guān)于RCU的文檔比較齊全,你可以在 /Documentation/RCU/ 目錄下找到這些文件。Paul E. McKenney 是內(nèi)核中RCU源碼的主要實(shí)現(xiàn)者,他也寫了很多RCU方面的文章。今天我們而主要來說說linux內(nèi)核rcu的機(jī)制詳解。
2017-11-13 16:47:44
9308 
內(nèi)存屏障,也稱內(nèi)存柵欄,內(nèi)存柵障,屏障指令等, 是一類同步屏障指令,是CPU或編譯器在對內(nèi)存隨機(jī)訪問的操作中的一個(gè)同步點(diǎn),使得此點(diǎn)之前的所有讀寫操作都執(zhí)行后才可以開始執(zhí)行此點(diǎn)之后的操作。
2017-11-14 09:43:44
6952 
在linux內(nèi)核中支持3中內(nèi)存模型,分別是flat memory model,Discontiguous memory model和sparse memory model。
2018-07-18 16:26:06
4803 
內(nèi)核是Linux的心臟,是在系統(tǒng)引導(dǎo)時(shí)所裝入的程序,用來提供用戶程序和硬件之間的接口,執(zhí)行發(fā)生在多任務(wù)系統(tǒng)中的實(shí)際任務(wù)轉(zhuǎn)換,處理讀寫磁盤的需求,處理網(wǎng)絡(luò)接口,以及管理內(nèi)存等等。一般情況下,自動(dòng)安裝
2018-11-20 17:08:04
10 了解如何配置和使用Linux內(nèi)核printk功能,包括其動(dòng)態(tài)調(diào)試功能。
這樣可以選擇性地打印調(diào)試消息,而無需重新編譯內(nèi)核。
2018-11-27 06:40:00
3556 當(dāng)你讀寫文件的時(shí)候,Linux內(nèi)核為了提高讀寫性能與速度,會(huì)將文件在內(nèi)存中進(jìn)行緩存,這部分內(nèi)存就是Cache Memory(緩存內(nèi)存)。即使你的程序運(yùn)行結(jié)束后,Cache Memory也不會(huì)自動(dòng)釋放。
2019-04-26 15:49:14
1508 linux的內(nèi)存管理采取的分頁存取機(jī)制,會(huì)將內(nèi)存中不經(jīng)常使用的數(shù)據(jù)塊交換到虛擬內(nèi)存中。linux會(huì)不時(shí)地進(jìn)行頁面交換操作,以保持盡可能多的空閑物理內(nèi)存,即使并沒有什么事需要內(nèi)存,linux也會(huì)交換出暫時(shí)不用的內(nèi)存頁面。
2019-04-28 17:12:07
1560 Linux 操作系統(tǒng)和驅(qū)動(dòng)程序運(yùn)行在內(nèi)核空間,應(yīng)用程序運(yùn)行在用戶空間,兩者不能簡單地使用指針傳遞數(shù)據(jù),因?yàn)?b class="flag-6" style="color: red">Linux使用的虛擬內(nèi)存機(jī)制,用戶空間的數(shù)據(jù)可能被換出,當(dāng)內(nèi)核空間使用用戶空間指針時(shí),對應(yīng)的數(shù)據(jù)可能不在內(nèi)存中。
2019-04-28 17:33:33
1288 
由于IIC總線只需要兩根線就可以完成讀寫操作,而且通信協(xié)議簡單,一條總線上可以掛載多個(gè)設(shè)備,因此被廣泛使用。但是IIC總線有一個(gè)缺點(diǎn),就是傳輸速率比較低。本文基于Linux-2.6.36版本,說說IIC子系統(tǒng)在Linux中的實(shí)現(xiàn)。
2019-04-29 14:13:53
2620 
Device mapper 是 Linux 2.6 內(nèi)核中提供的一種從邏輯設(shè)備到物理設(shè)備的映射框架機(jī)制,在該機(jī)制下,用戶可以很方便的根據(jù)自己的需要制定實(shí)現(xiàn)存儲(chǔ)資源的管理策略,當(dāng)前比較流行
2019-04-29 15:25:50
1023 Linux內(nèi)核的虛擬內(nèi)存(virtual memory ,VM)資源同時(shí)來源于您的RAM(物理內(nèi)存)和交換分區(qū)(swap)。內(nèi)核中的VM子系統(tǒng)負(fù)責(zé)在后臺(tái)管理這些資源,通常是透明地將RAM頁移動(dòng)到交換分區(qū)或從交換分區(qū)到RAM頁。
2019-05-05 14:07:59
3250 在內(nèi)核調(diào)試技術(shù)之中,最簡單的就是printk的使用了,它的用法和C語言應(yīng)用程序中的printf使用類似,在應(yīng)用程序中依靠的是stdio.h中的庫,而在linux內(nèi)核中沒有這個(gè)庫,所以在linux內(nèi)核中,使用這個(gè)printk就要對內(nèi)核的實(shí)現(xiàn)有一定的了解。
2019-05-10 11:18:47
1879 在linux內(nèi)核中支持3中內(nèi)存模型,分別是flat memory model,Discontiguous memory model和sparse memory model。所謂memory
2019-05-12 09:44:00
995 
對于包含 MMU 的處理器而言, Linux 系統(tǒng)提供了復(fù)雜的存儲(chǔ)管理系統(tǒng),使得進(jìn)程所能訪問的內(nèi)存達(dá)到 4GB。進(jìn)程的 4GB 內(nèi)存空間被分為兩個(gè)部分—用戶空間與內(nèi)核空間。
2019-05-13 11:24:14
950 
Linux 內(nèi)核提供一套雙向鏈表的實(shí)現(xiàn),你可以在 include/linux/list.h 中找到。我們以雙向鏈表著手開始介紹 Linux 內(nèi)核中的數(shù)據(jù)結(jié)構(gòu) ,因?yàn)檫@個(gè)是在 Linux 內(nèi)核中使用最為廣泛的數(shù)據(jù)結(jié)構(gòu)。
2019-05-14 17:27:00
2115 Linux內(nèi)核同步機(jī)制,挺復(fù)雜的一個(gè)東西,常用的有自旋鎖,信號(hào)量,互斥體,原子操作,順序鎖,RCU,內(nèi)存屏障等。
2019-05-14 14:10:38
935 Linux中,進(jìn)程的4GB(虛擬)內(nèi)存分為用戶空間、內(nèi)核空間。用戶空間分布為0~3GB(即PAGE_OFFSET,在0X86中它等于0xC0000000),剩下的1G為內(nèi)核空間。程序員只能使用虛擬地址。系統(tǒng)中每個(gè)進(jìn)程有各自的私有用戶空間(0~3G),這個(gè)空間對系統(tǒng)中的其他進(jìn)程是不可見的。
2019-05-14 14:17:03
1916
已全部加載完成
評(píng)論