久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      Java開發(fā)者需要研究JDK,Linux開發(fā)者需要研究Kernel

        2019 年是 Linux 內(nèi)核誕生的第 28 年,1991 年 8 月 26 日,當(dāng)年還是大學(xué)生的 Linus Torvalds 向 comp.os.minix 新聞組的成員透露了出于“業(yè)余愛好”而正在研究操作系統(tǒng)的消息。

      Java開發(fā)者需要研究JDK,Linux開發(fā)者需要研究Kernel

        Linux Kernel 是全球最大的開源項(xiàng)目,知名的科技公司幾乎都參與其中,包括微軟、谷歌、Red Hat、SUSE、Intel、Facebook、百度、阿里、華為、Oracle 與騰訊等。同時(shí),基于 Kernel 衍生出的發(fā)行版與各種周邊項(xiàng)目也讓其生態(tài)多姿多彩。

        另一方面,在當(dāng)今云原生高速發(fā)展的時(shí)代,其底層也大多基于 Linux Kernel,甚至連微軟也表示 Linux 運(yùn)行了 Azure 工作負(fù)載的 50% 以上。

        Linux Kernel 短期內(nèi)不會(huì)過氣,而是會(huì)進(jìn)一步影響到更多開發(fā)者,但是 Linux Kernel 的入門和實(shí)踐卻很困難,這讓許多初學(xué)者望而卻步,哪個(gè)開發(fā)者說自己是 Linux Kernel 領(lǐng)域的,那其他人必定會(huì)肅然起敬。

        最近了解到有一本值得初學(xué)者學(xué)習(xí)的相關(guān)書籍《精通 Linux 內(nèi)核——智能設(shè)備開發(fā)核心技術(shù)》,我們就如何學(xué)習(xí) Linux Kernel、Linux Kernel 2019 年的發(fā)展與相關(guān)應(yīng)用領(lǐng)域等問題采訪了作者姜亞華,希望能給到想要了解、研究 Linux Kernel 的開發(fā)者一些啟發(fā)。以下是對(duì)話內(nèi)容:

        2019 年 Linux Kernel 進(jìn)入了 5.x 時(shí)代,雖然 Linus 自己說從 4.20 到 5.x 只是因?yàn)樽约菏种覆粔蛴茫菍?shí)際上以您的理解,這對(duì)于項(xiàng)目的生命周期管理、特性合并或者社區(qū)文檔建設(shè)等方面有沒有比較大的影響呢?

        姜亞華:

        5.x 其實(shí)更新蠻多的,patch 文件 40 多 M,涉及 10000 多個(gè)文件。

        這是一個(gè)大版本更新,從用戶意識(shí)角度來講,4.x 已經(jīng)是舊的了,就好像 iPhone 更新,Apple 維持兩年一個(gè)大更新的節(jié)奏,買了一款 iPhone,下一年的小更新不會(huì)有啥感覺,但是第二年大更新后,才覺得我的手機(jī)不是最流行的了。

        新的項(xiàng)目,文檔等肯定都需要向 5.x 看齊了。

        從代碼角度來講,我們可以從內(nèi)核更新的過程中學(xué)習(xí)到很多優(yōu)化的思路。我開始寫作《精通 Linux 內(nèi)核——智能設(shè)備開發(fā)核心技術(shù)》的時(shí)候內(nèi)核還是 3.x,在書中也刻意保留了部分 3.x 的討論(sysfs、進(jìn)場(chǎng)切換等),就是為了通過對(duì)比總結(jié)這方面的經(jīng)驗(yàn)。

        書中講到文件系統(tǒng),但是沒有關(guān)于最近微軟件開放出來的 exFAT,猜想是因?yàn)槟@書已經(jīng)在此之前就寫了,那目前您有沒有繼續(xù)研究 exFAT 相關(guān)的內(nèi)容呢?目前 exFAT 也已經(jīng)在 5.4 中支持,它的能力上會(huì)帶來什么影響呢?

        姜亞華:

        是的,我接下來打算再深入一些模塊,exFAT 是其中之一。它的未來如何還很難說,Linux 已經(jīng)有很多優(yōu)秀的文件系統(tǒng)了,它們都經(jīng)過了多年的驗(yàn)證,bug 可能也相對(duì)少一些,exFAT 還需要在 Linux 上經(jīng)過時(shí)間的考驗(yàn)。

        近期另一個(gè)內(nèi)核新特性也引起了廣泛的討論,那就是內(nèi)核鎖定,這個(gè)特性其實(shí)討論了多年,最后它的表現(xiàn)形式似乎也挺讓人不解的。該特性限制了 root 角色的權(quán)限,但是 root 是系統(tǒng)的最高級(jí)權(quán)限都有不能訪問的地方,這對(duì)于 root 來說是挺奇怪的一件事情,在開發(fā)、運(yùn)維或者日常使用上這會(huì)產(chǎn)生什么比較大的影響嗎?

        姜亞華:

        內(nèi)核鎖定主要是為了防止 root 帳戶篡改內(nèi)核代碼,從而在用戶態(tài)進(jìn)程和代碼之間劃清界限。啟用鎖定模塊后,各種內(nèi)核功能都會(huì)受到限制。其中包括對(duì)內(nèi)核功能的訪問限制;對(duì) /dev/mem 的讀寫操作的阻止;對(duì) CPU MSR 訪問的限制;以及防止系統(tǒng)進(jìn)入睡眠狀態(tài)等等。

        這對(duì) root 來說其實(shí)并不奇怪,它依然是超級(jí)用戶,可以訪問所有正常的門。只不過內(nèi)核鎖定把一些“后門”去掉了,這些門常閉或者不存在了。

        引入內(nèi)核鎖定(CONFIG_SECURITY)后,root 的訪問受到限制,開發(fā)、運(yùn)維等過程中使用的腳本或者 sequence 可能就不能工作了。比如 root 可以通過 /dev/mem 文件訪問內(nèi)存,引入內(nèi)核鎖定后可能會(huì)受到限制。

        說句題外話,root 是個(gè)挺危險(xiǎn)的東西,慎用。記得我負(fù)責(zé)管理部門服務(wù)器的時(shí)候,有一次供應(yīng)商幫我移植驅(qū)動(dòng)的過程中,安裝軟件的時(shí)候不小心刪除了一些文件,服務(wù)器斷電后就無法啟動(dòng)了。我?guī)е獗P,在無數(shù)服務(wù)器轟鳴的實(shí)驗(yàn)室中,花了好幾天才將它“搶救”回來。

        相信很多開發(fā)者,或者剛在大學(xué)學(xué)計(jì)算機(jī)的人在了解了 Linux Kernel 之后都會(huì)想要去讀它的源碼,但是應(yīng)該大部分都會(huì)不得其法,最終放棄。您是怎樣閱讀 Linux 內(nèi)核源碼的呢?有什么工具、方法與其它經(jīng)驗(yàn)可以分享?

        姜亞華:

        我也是一行一行代碼看下來的,幾點(diǎn)建議供大家參考。

        首先,先大概弄清原理,再仔細(xì)研究代碼,事半功倍。對(duì)于已經(jīng)成熟的模塊,可以先借助書籍和博客大致理解它的基本信息。

        其次,邊讀代碼邊做筆記,防止看了后面忘記前面。做筆記的軟件蠻多的(比如微軟的 OneNote),選擇用的習(xí)慣的就好。

        最后,自我激勵(lì),堅(jiān)持到底,最好是興趣使然。

        好在大家不需要從頭開始了,我已經(jīng)把自己看過的代碼的截圖放在隨書資料中了,算是一小段捷徑吧。這些截圖里面,某函數(shù)、它調(diào)用的函數(shù)等函數(shù)調(diào)用關(guān)系使用紅線標(biāo)示(如下圖),內(nèi)容包括內(nèi)存管理、文件系統(tǒng)和進(jìn)程管理三大模塊。

      Java開發(fā)者需要研究JDK,Linux開發(fā)者需要研究Kernel

        大家遇到疑問也可以聯(lián)系我,共同探討,OSC 站內(nèi)信(always_first_meet)或者郵件(linux_kernel_os@163.com)都可以。

        Linux 內(nèi)核十分龐大,閱讀源碼的時(shí)候哪些部分是最開始的時(shí)候必須的,而哪些部分可以作為后續(xù)針對(duì)性的補(bǔ)充?

        姜亞華:

        內(nèi)核代碼量龐大,模塊間的關(guān)系也錯(cuò)綜復(fù)雜,建議初學(xué)者可以從相對(duì)簡(jiǎn)單而且獨(dú)立的模塊入手,比如一個(gè)簡(jiǎn)單設(shè)備的驅(qū)動(dòng)。

        先了解驅(qū)動(dòng)本身的邏輯,之后是它的上下游,然后擴(kuò)展到相關(guān)模塊,最后自由發(fā)揮。

        舉個(gè)例子,在 drivers/input/keyboard 下面的文件是鍵盤驅(qū)動(dòng),我們選擇一個(gè)文件。

        第 1 階段,查看 xxx_probe 等函數(shù),梳理控制和數(shù)據(jù)流程,理解驅(qū)動(dòng)需要做什么。

        第 2 階段,適當(dāng)拓展,代碼內(nèi)調(diào)用的函數(shù)大概是如何實(shí)現(xiàn)的,驅(qū)動(dòng)涉及的中斷、定時(shí)器、input 子系統(tǒng)等機(jī)制的原理,這些機(jī)制相對(duì)獨(dú)立,文檔也多,多花些時(shí)間即可。

        第 3 階段,追根溯源,研究 xxx_probe 是如何被調(diào)用的,i2c 總線的驅(qū)動(dòng)(假設(shè)鍵盤接 i2c 總線),device/device_driver/bus 的關(guān)系(驅(qū)動(dòng)架構(gòu))。

        階段 2 與 3 可以同時(shí)進(jìn)行。

        第 4 階段,自由發(fā)揮,按照工作需要和興趣,進(jìn)軍內(nèi)存管理、文件系統(tǒng)和進(jìn)程管理等模塊。

        就算是能夠閱讀源碼,另一個(gè)問題也會(huì)出現(xiàn),就是讀了源碼,理解了它的邏輯,但是有什么用呢?最簡(jiǎn)單的是增長(zhǎng)了自己的見識(shí),但是實(shí)際上這就像閱讀了一本書但是不輸出自己的理解與觀點(diǎn),沒有太大的作用。您是怎么看待并且怎么解決這個(gè)問題的呢?

        姜亞華:

        研究?jī)?nèi)核有什么用,這是一個(gè)值得深思的問題。

        中國(guó)現(xiàn)在這個(gè)時(shí)候的確需要沉下心玩底層系統(tǒng)的人,中國(guó)渴望自主操作系統(tǒng)已經(jīng)很久了,尤其是現(xiàn)在這種多事之秋。但是如果沒有大批工程師在這個(gè)領(lǐng)域積淀的話,操作系統(tǒng)無疑是一種空談。

        先不論未來的國(guó)產(chǎn)操作系統(tǒng)是否一定是 Linux 內(nèi)核的,研究 Linux 內(nèi)核本身也是很好的技術(shù)積累途徑。

        僅僅從個(gè)人職業(yè)生涯角度出發(fā),研究?jī)?nèi)核對(duì)個(gè)人技術(shù)的成長(zhǎng)有極大幫助,可以分多個(gè)層次看待。

        第 1 層次,初識(shí),對(duì)內(nèi)核有大概的了解,需要花時(shí)間深入工作相關(guān)的模塊。研究?jī)?nèi)核會(huì)占用大量時(shí)間,產(chǎn)出并不明顯。

        第 2 層次,入門,熟悉工作相關(guān)的模塊,理解內(nèi)核模塊間的關(guān)系。研究?jī)?nèi)核會(huì)讓你豁然開朗,經(jīng)常有“原來 xxx 是這么實(shí)現(xiàn)的”之類的感嘆。

        第 3 層次,熟悉或精通,對(duì)內(nèi)核常用模塊有一定研究,熟悉代碼。即使是新模塊,也可以快速厘清脈絡(luò)。

        除了第 1 層次“浪費(fèi)”時(shí)間外,花時(shí)間研究?jī)?nèi)核可以反過來提高我們的效率。研究到了一定程度后就可以進(jìn)入一個(gè)良性循環(huán),研究得越多,效率越高,節(jié)省的時(shí)間越多,可以研究的越多。

        另外,看的代碼越多,越有能力解決錯(cuò)綜復(fù)雜的問題,金老爺子也說“重劍無鋒,大巧不工”,絕對(duì)的實(shí)力才是硬道理。

        還是 xxx_probe 的例子,如果我們的 probe 沒有被調(diào)用,新手可能會(huì)檢查 device 和 device_driver 的名字是否匹配,研究過驅(qū)動(dòng)架構(gòu)的工程師可能分 device、device_driver 和 match 三部分檢查。

        如果三部分看似都沒有問題,但是 probe 依然沒有調(diào)用呢?研究過代碼的工程師可能會(huì)想到 device 是不是已經(jīng)和另一個(gè) device_driver 匹配了。

        經(jīng)驗(yàn)可以幫助我們看到問題的關(guān)鍵部分,真正研究過代碼才能看到問題的本質(zhì)。庖丁看到的不是牛,而是肌理結(jié)構(gòu),到了這種境界換成羊也是一樣的。

        最近經(jīng)常聽到一句話,“工作 xx 年,就是一年的工作經(jīng)驗(yàn)重復(fù) xx 年”,如果只是要求“會(huì)用”的層次,的確一年足夠,但工程師在這種情況下早晚會(huì)失去核心競(jìng)爭(zhēng)力。

        有人傾向于使用結(jié)論,但要做的應(yīng)該是總結(jié)和解釋結(jié)論。

        現(xiàn)在學(xué)習(xí) Linux Kernel,主要有哪些工作方向呢?又是哪些類型的公司、業(yè)務(wù)會(huì)主要需要這種能力?

        姜亞華:

        驅(qū)動(dòng)工程師、嵌入式工程師、系統(tǒng)工程師、Linux 程序開發(fā)工程師,甚至運(yùn)維工程師這些崗位都需要了解內(nèi)核,就像從事 Java 開發(fā)的工程師需要研究 JDK 一樣,并不是只有從事內(nèi)核相關(guān)工作的工程師才需要研究?jī)?nèi)核,反過來懂內(nèi)核的人向上發(fā)展也是很容易的。

        有半導(dǎo)體相關(guān)業(yè)務(wù)的公司都需要這類人才,以前傳統(tǒng)的半導(dǎo)體公司需求大一些,但近幾年互聯(lián)網(wǎng)公司也紛紛涉足半導(dǎo)體領(lǐng)域,BAT 都包括在內(nèi)。美國(guó)一系列動(dòng)作之后,近期中國(guó)進(jìn)入了芯片和操作系統(tǒng)研發(fā)熱潮,一大批芯片公司成立,燧原、平頭哥、寒武紀(jì)與商湯科技等等,它們也都需要內(nèi)核相關(guān)的人才。

        您這本書講到關(guān)于智能設(shè)備的開發(fā),Linux Kernel 與 AI 有什么特別大的關(guān)系呢?

        姜亞華:

        其實(shí)這個(gè)問題我在這次寫的書里有解釋。

      Java開發(fā)者需要研究JDK,Linux開發(fā)者需要研究Kernel

        如上圖,“硬件廠商負(fù)責(zé)硬件,原語(primitives)庫(kù)一般也由他們維護(hù),比如 AMD 的 MIOpen、Intel 的 MKL 和 Nvidia 的 cuDNN,多數(shù)程序員并不會(huì)接觸這部分內(nèi)容,而是使用已有的 Framework。

        Framework 的選擇也是多樣化的,Google 的 TensorFlow,F(xiàn)acebook 的 PyTorch,微軟的 CNDK,亞馬遜的 MXNet、Theano 和 Keras。很明顯,目前依然是百花齊放的局面,但技術(shù)的發(fā)展終歸只能是“三分天下”,甚至是“一統(tǒng)天下”。目前已經(jīng)存在與這些 Framework 配套的工具,比如 Tensorboard,可以用來查看 TensorFlow 的訓(xùn)練狀態(tài)。

        由于深度學(xué)習(xí)計(jì)算量太大,并行計(jì)算技術(shù)也會(huì)有所涉及,比如 MPI(Message Passing Interface)通信協(xié)議、英偉達(dá)的 NCCL(NVIDIA Collective Communications Library)。

        數(shù)據(jù)對(duì)深度學(xué)習(xí)十分重要,大數(shù)據(jù)是必不可少的。數(shù)據(jù)作為輸入,模型作為輸出,應(yīng)用于數(shù)據(jù)中心、個(gè)人計(jì)算機(jī)、機(jī)器人和無人駕駛汽車等設(shè)備中。

        縱觀這整個(gè)過程,并沒有哪一個(gè)環(huán)節(jié)提到了 Linux,但實(shí)際上多數(shù)環(huán)節(jié)都與 Linux 有關(guān)。雖然這些關(guān)系可能只有少數(shù)程序員關(guān)注,但隨著技術(shù)的成熟,新的智能設(shè)備,甚至新的操作系統(tǒng),又會(huì)轉(zhuǎn)回到我們熟悉的內(nèi)核。

        在您研究 Linux 內(nèi)核的過程中,有沒有覺得 Linux 內(nèi)核其實(shí)還可以用其它語言實(shí)現(xiàn)一次,這樣對(duì)于入門學(xué)習(xí)會(huì)好很多,比如用 Python 這種簡(jiǎn)單理解的語言。這樣的想法可行嗎?會(huì)遇到什么技術(shù)問題?

        姜亞華:

        內(nèi)核里面有很多代碼采用的都是面向?qū)ο蟮乃枷?,比?VFS 采用了較多面向?qū)ο蟪绦虻脑O(shè)計(jì)模式,像 command 與 template method 等,使用其它語言尤其是面向?qū)ο笳Z言來實(shí)現(xiàn) Linux 內(nèi)核是可行的,但是不得不說的是其它語言(比如 Python)很難有 C 語言的執(zhí)行效率。

        2019 年是 Linux Kernel 28 周年,分享一下您在這其中關(guān)于 Linux Kernel 印象最深的事情吧。

        姜亞華:

        Linux 內(nèi)核是開源的,天生與微軟(更確切的說是 Windows)就是宿敵。微軟對(duì) Linux 前期的敵對(duì)和近些年的轉(zhuǎn)變是件很有趣的事情,敵對(duì)時(shí)期就不多說了,近幾年微軟宣布“愛 Linux”,也做了很多實(shí)事,Azure、SQL Server 和 Visual Studio Code 等都有了 Linux 的身影。

        這對(duì) Linux 是好是壞先不說,這起碼說明了 Linux 的強(qiáng)大,有種“東方教主,千秋萬代,一統(tǒng)江湖”的感覺哈哈。

        這是一件關(guān)于 Linux Kernel 印象比較深的事情,還有另一件也值得一提,那就是我今年寫了一本 Linux Kernel 相關(guān)的書籍《精通 Linux 內(nèi)核——智能設(shè)備開發(fā)核心技術(shù)》,借此也宣傳宣傳,同時(shí)希望能夠通過這本書為道友們提供些許幫助。

        這本書基于 Linux 5.x,歷時(shí)五年,研究數(shù)百萬行代碼總結(jié)而成,共分為五個(gè)部分,按照先易后難的順序剖析內(nèi)核。首先介紹基礎(chǔ)知識(shí),包括數(shù)據(jù)結(jié)構(gòu)、中斷處理、內(nèi)核同步和時(shí)間計(jì)算等,它們是理解后續(xù)章節(jié)的前提,在此基礎(chǔ)上詳細(xì)討論內(nèi)存管理、文件管理和進(jìn)程管理三個(gè)核心模塊,最后一部分升華篇融合了前面多個(gè)模塊。重點(diǎn)和難點(diǎn)部分均配以圖表、代碼或?qū)嶒?yàn),力求深入淺出。

        除此之外,本書列舉了大量實(shí)例,分析了安卓操作系統(tǒng)的核心技術(shù),使讀者能夠深刻的理解理論知識(shí)。本書的讀者需要熟悉 C 語言,能夠?qū)?nèi)核有一定了解更好。推薦初學(xué)者按照本書的既定順序閱讀,熟悉內(nèi)核的讀者可以直接閱讀三個(gè)核心模塊。

        當(dāng)然了,借這個(gè)平臺(tái),也希望與道友們多多交流(包括但不限于本書的內(nèi)容),歡迎大家跟我交流共同促進(jìn)。另外本書是機(jī)械工業(yè)出版社《Linux 技術(shù)與應(yīng)用叢書》的開篇之作,后續(xù)還會(huì)有一系列書籍出版,大家也可以關(guān)注關(guān)注。

        采訪嘉賓介紹

        姜亞華,一直從事與 Linux 內(nèi)核和 Linux 編程相關(guān)的工作,研究?jī)?nèi)核代碼十多年,對(duì)多數(shù)模塊的細(xì)節(jié)如數(shù)家珍。曾負(fù)責(zé)華為手機(jī) Touch、Sensor 的驅(qū)動(dòng)和軟件優(yōu)化(包括 Mate、榮耀等系列),以及 Intel 安卓平臺(tái) Camera 和 Sensor 的驅(qū)動(dòng)開發(fā)(包括 Baytrail、Cherrytrail、Cherrytrail CR、Sofia 等)。現(xiàn)負(fù)責(zé) DMA、Interrupt、Semaphore 等模塊的優(yōu)化與驗(yàn)證(包括 Vega、Navi 系列和多款 APU 產(chǎn)品)。

      特別提醒:本網(wǎng)內(nèi)容轉(zhuǎn)載自其他媒體,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)。其原創(chuàng)性以及文中陳述文字和內(nèi)容未經(jīng)本站證實(shí),對(duì)本文以及其中全部或者部分內(nèi)容、文字的真實(shí)性、完整性、及時(shí)性本站不作任何保證或承諾,并請(qǐng)自行核實(shí)相關(guān)內(nèi)容。本站不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。如若本網(wǎng)有任何內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系我們,本站將會(huì)在24小時(shí)內(nèi)處理完畢。

      贊(1)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)