原创 7大亮點功能上線!物聯網操作系統一站式開發工具RT-Thread Studio來襲

RT-Thread Studio V1.1.0 在5月29號正式發佈了。本次V1.1.0不提供升級包,需從官網下載V1.1.0完整版安裝程序。 【官網下載地址】https://www.rt-thread.org/page/studio.

原创 宋寶華: kvmalloc ——倚天劍屠龍刀兩大神器合體?

你應該曾經糾結過是用kmalloc(),還是vmalloc()?現在你不用那麼糾結了,因爲內核裏面現在有個API叫kvmalloc(),可以認爲是kmalloc()和vmalloc()的雙劍合一。屠龍刀和倚天劍的合體。內核裏面有大量的代

原创 混亂的Linux內核實時線程優先級

背景Linux會把進程分爲普通進程和實時進程,普通進程採用CFS之類調度算法,而實時進程則是採用SCHED_FIFO或SCHED_RR。無論優先級高低,實時進程都會優先於SCHED_NORMAL中的所有進程先執行,因爲後者裏面都是普通的

原创 深入理解C11/C++11內存模型

現代計算機體系結構上,CPU執行指令的速度遠遠大於CPU訪問內存的速度,於是引入Cache機制來加速內存訪問速度。除了Cache以外,分支預測和指令預取也在很大程度上提升了CPU的執行速度。隨着SMP的出現,多線程編程模型被廣泛應用,在

原创 Linux內核態缺頁會發生什麼 - 玩轉Exception fixup表

近日,我在寫內核模塊的時候犯了一個低級錯誤:直接access用戶態的內存而沒有使用copy_to_user/copy_from_user!在內核看來,用戶態提供的虛擬地址是不可信的,所以在一旦在內核態訪問用戶態內存發生缺頁中斷,處理起來

原创 Intel IOMMU Introduction

對於Intel的硬件輔助虛擬化方案而言核心的兩大技術分別是VT-x和VT-d。其中VT-x中主要引入了non-root模式(VMCS)以及EPT頁表等技術,主要關注於vCPU的虛擬化和內存虛擬化。而VT-d的引入則是重點關注設備直通(p

原创 談談內存壓縮那些事

 1. 技術背景說到壓縮這個詞,我們並不陌生,應該都能想到是降低佔用空間,使同樣的空間可以存放更多的東西,類似於我們平時常用的文件壓縮,內存壓縮同樣也是爲了節省內存。儘管當前android手機6GB,8GB甚至12GB的機器都較爲常見了

原创 Arm服務器芯片編年史

目錄1    前言2    第一波浪潮(2008-2013)2.1    啓程20082.1.1   Calxeda 20112.2    Computex20122.3    MarvellArmada XP 20132.4    C

原创 太讚了!大廠工程師總結的Linux筆記,提供下載

最近很多小夥伴找我要一些 Linux 基礎資料,於是我翻箱倒櫃,把這份大牛總結的 Linux 歸納筆記找出來,免費共享給大家!據說有小夥伴靠這份筆記順利進入 BAT 哦,所以一定要好好學習這份資料!資料介紹這份資料非常全面且詳細,從 L

原创 這些IO模型你都知道嗎 - 五種常見IO模型介紹

面試的時候也許你被問到過IO模型,可能你知道有五種,可是卻不一定能準確指出他們之間的關係,下面我們介紹下這五種IO模型五種IO模型阻塞IO非阻塞IOIO複用(select和poll)信號驅動異步IO(Posix.1 的 aio...系列

原创 Linux Rootkit如何避開內核檢測的

Rootkit在登堂入室並得手後,還要記得把門鎖上。如果我們想注入一個Rootkit到內核,同時不想被偵測到,那麼我們需要做的是精妙的隱藏,並保持低調靜悄悄,這個話題我已經談過了,諸如進程摘鏈,TCP鏈接摘鏈潛伏等等,詳情參見:http

原创 打通IO棧:一次編譯服務器性能優化實戰

作者簡介廖威雄,就職於珠海全志科技股份有限公司,負責Linux IO全棧研發、性能優化、開源社區開發交流、Linux 內核開源社區pstore/blk,mtdpstore模塊的作者(與maintainer交流中)、大客戶存儲技術支持、全

原创 理解Linux內核搶佔模型(最透徹一篇)

本文原文地址:https://devarea.com/understanding-linux-kernel-preemption/#.XrKLcfnx05k作者:Liran B.H譯者:宋寶華當配置Linux內核的時候,我們可以選擇一些

原创 LINUX網絡子系統中DMA機制的實現

                                                                                                             

原创 Linux下0號進程的前世(init_task進程)今生(idle進程)

前言Linux下有3個特殊的進程,idle進程(PID = 0), init進程(PID = 1)和kthreadd(PID = 2)* idle進程由系統自動創建, 運行在內核態idle進程其pid=0,其前身是系統創建的第一個進程,