關(guān)閉

Linux閱碼場(chǎng)

  • PODS峰會(huì)筆記: 淺談手機(jī)性能的可觀測(cè)性&揭秘ARM架構(gòu)對(duì)Linux調(diào)測(cè)特性的支持(Day3)

    手機(jī)上的性能指標(biāo)是綜合的變化,由上圖可以看的出來手機(jī)更關(guān)注人跟機(jī)器的交互這,云系統(tǒng)則是比較關(guān)注機(jī)器跟機(jī)器的交互。手機(jī)系統(tǒng)比較特別的地方在于資源都是比較受限,例如 : 電量,性能…因此針對(duì)用戶體驗(yàn)是需要特別庖丁解牛來建立指標(biāo)。

  • 深入理解Linux系統(tǒng)調(diào)用與API

    我們?cè)诤芏鄷?、博客上都學(xué)過或者聽說過系統(tǒng)調(diào)用與API這兩個(gè)概念,那么這兩個(gè)概念究竟是什么意思,它們之間是什么關(guān)系呢?如果我們閱讀過《操作系統(tǒng)導(dǎo)論》,就會(huì)明白操作系統(tǒng)的目的與作用,就會(huì)知道內(nèi)核是要向進(jìn)程提供服務(wù)的,那么內(nèi)核是如何向進(jìn)程提供服務(wù)的呢?下面我們就來一探究竟。

  • 史勝輝:USB工程師技術(shù)路線分析(附圖書推薦)

    史勝輝,在MTK工作了11年,一直在基帶芯片的USB驅(qū)動(dòng)領(lǐng)域做開發(fā)和驗(yàn)證。從最開始做USB2.0/3.0 IP驗(yàn)證和驅(qū)動(dòng)開發(fā)到后面帶領(lǐng)團(tuán)隊(duì)做上層協(xié)議驅(qū)動(dòng)開發(fā),以及跟硬件設(shè)計(jì)部門合作開發(fā)全新的USB硬件加速器。

  • 深入理解Linux線程同步

    我們?cè)诠ぷ髦袝?huì)經(jīng)常遇到線程同步,那么到底什么是線程同步呢,線程同步的本質(zhì)是什么,線程同步的方法又有哪些,為什么會(huì)有這些方法呢?在回答這些問題之前,我們先做幾個(gè)名詞解釋,以便建立共同的概念基礎(chǔ)。

  • 深入理解Linux進(jìn)程管理

    進(jìn)程是程序的執(zhí)行過程。程序是靜態(tài)的,是存在于外存之中的,電腦關(guān)機(jī)后依然存在。進(jìn)程是動(dòng)態(tài)的,是存在于內(nèi)存之中的,是程序的執(zhí)行過程,電腦關(guān)機(jī)后就不存在進(jìn)程了。進(jìn)程的內(nèi)容來源于程序,進(jìn)程的啟動(dòng)過程就是把程序從外存加載到內(nèi)存的過程。程序文件是有格式的,UNIX-Like操作系統(tǒng)的通用程序文件格式是ELF。程序文件是從源碼文件編譯過來的,源碼文件很多是用C或者C++書寫的。

  • 深入理解Android圖形系統(tǒng)

    圖形系統(tǒng)是計(jì)算機(jī)中最重要的子系統(tǒng)之一。我們平時(shí)使用的電腦、手機(jī)都是圖形界面的。對(duì)于普通人來說,沒有圖形界面的計(jì)算機(jī)幾乎是沒法用的,今天我們就來講一講圖形系統(tǒng)背后的原理。

  • 閱碼場(chǎng)訓(xùn)練營(yíng):ARM架構(gòu)與調(diào)試調(diào)優(yōu)

    我是從ARM7TDMI開始接觸ARM架構(gòu)的,當(dāng)時(shí)很幸運(yùn)有DSP的學(xué)習(xí)基礎(chǔ),同時(shí)遇到了把ARM架構(gòu)和操作系統(tǒng)結(jié)合講解的書籍。這樣,結(jié)合自己不斷的實(shí)踐,一直可以跟上ARM架構(gòu)的演進(jìn)。長(zhǎng)期的跟蹤也讓我容易能看到ARM的趨勢(shì),我從Linaro在做ARM NEON指令集優(yōu)化關(guān)注到Linaro,后面持續(xù)的關(guān)注以Linaro為首ARM生態(tài)組織的發(fā)展,幾年后的2017年,我作為演講人分享了ARM架構(gòu)下的一個(gè)TLB性能優(yōu)化方案,實(shí)現(xiàn)了從關(guān)注到深度參與到過程。

  • 深入理解Linux電源管理

    計(jì)算機(jī)運(yùn)行在物理世界中,物理世界中的一切活動(dòng)都需要消耗能量。能量的形式有很多種,如熱能、核能、化學(xué)能等。計(jì)算機(jī)消耗的是電能,其來源是電池或者外電源。計(jì)算機(jī)內(nèi)部有一個(gè)部件叫做電源管理芯片(PMIC),它接收外部的電能,然后轉(zhuǎn)化為不同電壓的電流,向系統(tǒng)的各個(gè)硬件供電。什么硬件需要多少伏的電壓,都是由相應(yīng)的電氣標(biāo)準(zhǔn)規(guī)定好了的,各個(gè)硬件廠商按照標(biāo)準(zhǔn)生成硬件就可以了。上電的過程是由硬件自動(dòng)完成的,不需要軟件的參與。因?yàn)橛布簧想姷脑?,軟件也沒法運(yùn)行啊。但是當(dāng)硬件運(yùn)行起來之后,軟件就可以對(duì)硬件的電源狀態(tài)進(jìn)行管理了。電源管理的內(nèi)容包括電源狀態(tài)管理和省電管理。電源狀態(tài)管理是對(duì)整個(gè)系統(tǒng)的供電狀態(tài)進(jìn)行管理,內(nèi)容包括睡眠、休眠、關(guān)機(jī)、重啟等操作。省電管理是因?yàn)殡娔懿皇敲赓M(fèi)的,我們應(yīng)該盡量地節(jié)省能源,尤其是對(duì)于一些手持設(shè)備來說,電能雖然并不昂貴但是卻非常珍貴,因?yàn)殡姵氐娜萘糠浅S邢?。不過省電管理也不能一味地省電,還要考慮性能問題,在性能與功耗之間達(dá)到平衡。

  • 使用Ftrace做性能分析和性能優(yōu)化

    在我仔細(xì)研究Linux內(nèi)核中的ftrace之后,發(fā)現(xiàn)ftrace中的各個(gè)tracers的作用一直被人們嚴(yán)重低估了, 比如我們會(huì)花了大量的時(shí)間去理解Linux內(nèi)核中的一塊代碼,然后猜測(cè)可能的執(zhí)行流, 但是ftrace會(huì)首先直接告訴你整個(gè)執(zhí)行流,然后你再去查看代碼,這樣無論從效率和準(zhǔn)確度來講都是極大的提升。

  • Linux Kernel運(yùn)行時(shí)安全檢測(cè)之LKRG-原理篇

    雖然經(jīng)常更新內(nèi)核版本通常被認(rèn)為是一種安全最佳實(shí)踐,但由于各種原因,尤其是生產(chǎn)環(huán)境中的服務(wù)器無法這樣操作。這就意味著在機(jī)器運(yùn)行時(shí),會(huì)存在利用已知的漏洞(當(dāng)然,還會(huì)有一些未知的漏洞)來進(jìn)行攻擊的情況,所以需要某種方法來檢測(cè)和阻止對(duì)這些漏洞的利用,這正是Linux Kernel Runtime Guard(Linux內(nèi)核運(yùn)行時(shí)保護(hù)LKRG)誕生目的所在。

  • Linux Kernel運(yùn)行時(shí)安全檢測(cè)之LKRG-實(shí)踐篇

    從文章Linux Kernel運(yùn)行時(shí)安全檢測(cè)之LKRG-原理篇可以看到,LKRG可以對(duì)正在運(yùn)行的Linux內(nèi)核進(jìn)行檢測(cè),并希望能夠及時(shí)響應(yīng)對(duì)正在運(yùn)行的進(jìn)程用戶id等憑證未經(jīng)授權(quán)的修改(完整性檢查)。對(duì)于進(jìn)程憑據(jù),LKRG嘗試檢測(cè)漏洞,并在內(nèi)核根據(jù)未經(jīng)授權(quán)的憑據(jù)授予訪問權(quán)限(例如打開文件)之前采取行動(dòng)。并且是以可加載的內(nèi)核模塊的形式,檢測(cè)正在運(yùn)行的內(nèi)核是否存在更改情況,以表明正在對(duì)其使用某種類型的漏洞利用。除此之外,它還可以檢查系統(tǒng)上運(yùn)行的進(jìn)程,以查找對(duì)各種憑證的未經(jīng)授權(quán)修改,以防止這些更改授予額外的訪問權(quán)限。

  • 邢孟棒:性能工程師書單推薦與性能工程常見誤區(qū)

    邢孟棒,曾供職于阿里、網(wǎng)易,目前在騰訊云專職做性能優(yōu)化方向。Linux 業(yè)余愛好者,偏好鉆研各類工具源碼與底層技術(shù)原理。在日常的性能工程實(shí)踐中,比較注重方法論的探索、優(yōu)化案例的沉淀。熱衷于 eBPF 技術(shù),擅長(zhǎng)傳統(tǒng)工具與 BPF 工具的結(jié)合應(yīng)用。

  • 深入理解紅黑樹

    大家都聽說過紅黑樹,也都知道紅黑樹很厲害,是計(jì)算機(jī)里面評(píng)價(jià)非常高的數(shù)據(jù)結(jié)構(gòu)。但是每當(dāng)想學(xué)習(xí)紅黑樹的時(shí)候,卻總是找不到通俗易懂很好理解的學(xué)習(xí)資料。很多書上上來就是紅黑樹的定義,然后就是紅黑樹的實(shí)現(xiàn),直接就把人給整暈了。光看紅黑樹的定義就有5條,為什么要有5條定義,為什么要這么定義,這么定義是什么意思,光定義都讓人懵了,更別說實(shí)現(xiàn)了。我看最近抖音上有很多人在講底層邏輯,只要你掌握了底層邏輯,其它的問題都不在話下,今天我們也來講一講紅黑樹的底層邏輯。在講之前我們先介紹一下紅黑樹的誕生,紅黑樹是Rudolf Bayer在1972年首先提出來的,不過當(dāng)時(shí)并不叫紅黑樹,而是叫對(duì)稱二叉 B 樹(symmetric binary B-trees)。后來在1978年Leo J. Guibas 和 Robert Sedgewick 對(duì)此數(shù)據(jù)結(jié)構(gòu)進(jìn)行了修改和完善,并重新命名為紅黑樹。為什么叫紅黑樹呢?有兩種說法,因?yàn)榧t黑樹中要對(duì)節(jié)點(diǎn)連接做兩種顏色的區(qū)分,一說是因?yàn)楫?dāng)時(shí)的書寫筆只有紅色和黑色兩種顏色,另一說是當(dāng)時(shí)的打印機(jī)只有紅和黑兩種顏色。

  • 深入理解排序算法

    我們先來說一說什么是排序、為什么要排序。什么是排序,這個(gè)很簡(jiǎn)單,就是把無序的東西按照一定的規(guī)則順序排列成升序或者降序。為什么要排序,有兩個(gè)原因,一是為了方便后面的查找,如果沒有排序的話只能進(jìn)行線性查找,時(shí)間復(fù)雜度是O(n),如果排序了就可以進(jìn)行二分查找,時(shí)間復(fù)雜度是O(logn),復(fù)雜度一下子就大大降低了。我們來說明一下這兩種復(fù)雜度的差別有多么懸殊(雖然用詞錯(cuò)誤,但是這么用確實(shí)很符合氣氛),假設(shè)n是10億的話,O(n)還是10億,而O(logn)是30多(以2為底,假設(shè)系數(shù)是1),30多和10億比都可以忽略不計(jì)了。二是為了顯示的時(shí)候按照順序顯示,人類的習(xí)慣就是喜歡看有序的東西。

  • tracers為什么這樣設(shè)計(jì)?整個(gè)發(fā)展脈絡(luò)是怎樣的?

    在我仔細(xì)研究Linux內(nèi)核中的ftrace之后,發(fā)現(xiàn)ftrace中的各個(gè)tracers的作用一直被人們嚴(yán)重低估了, 比如我們會(huì)花了大量的時(shí)間去理解Linux內(nèi)核中的一塊代碼,然后猜測(cè)可能的執(zhí)行流, 但是ftrace會(huì)首先直接告訴你整個(gè)執(zhí)行流,然后你再去查看代碼,這樣無論從效率和準(zhǔn)確度來講都是極大的提升。

簡(jiǎn)介
專業(yè)的Linux技術(shù)社區(qū)和Linux操作系統(tǒng)學(xué)習(xí)平臺(tái),內(nèi)容涉及Linux內(nèi)核、Linux內(nèi)存管理、Linux進(jìn)程管理、Linux文件系統(tǒng)、Linux性能調(diào)優(yōu),Linux設(shè)備驅(qū)動(dòng),以及Linux虛擬化和云計(jì)算等方面。
關(guān)注他的人
  • 289117336

  • Tronlong創(chuàng)龍

  • phane99

  • 大有可為

  • xlu10333

  • shaolw

  • xiaoguaixh

  • houlianpi

  • caizhiwei

  • Addition

  • hch

  • wuton

  • liqinglong1023