前言:學習的課程來自極客時間的專欄《趣談 Linux 作業系統》,作者用形象化的比喻和豐富的圖片讓課程變得比較易懂,為了避免知識看過就忘,打算通過寫學習筆記的形式記錄自己的學習程序,
Linux 系統的相關介紹不再贅述,目前比較熱門的技術,比如云計算、虛擬化、容器、大資料、人工智能,幾乎都是基于 Linux 的,像團購、電商、打車、快遞這些系統都是部署在服務端,也幾乎都是基于 Linux 技術的,想進大公司,想學新技術,Linux 一定是一道繞不過去的坎,只有扎實掌握 Linux 作業系統相關知識,才能成為合格的軟體工程師,
相比于 Windows 的“圖形化界面+選單”使用模式,Linux 上手較難,其學習程序更像一個爬坡模式,要爬的坡主要有六個,分別是:熟練使用 Linux 命令列、使用 Linux 進行程式設計、了解 Linux內核機制、閱讀 Linux 內核代碼、實驗定制 Linux 組件、面向真實環境的開發,
Step1:熟悉 Linux 命令列
基礎:會用 --help、man 查看幫助檔案
進階:sed、awk、正則、管道、grep、find、shell 腳本、vim
推薦書籍:《鳥哥的 Linux 私房菜》、《 Linux 系統管理技術手冊》
參考博客:別出心裁的Linux命令學習法
Step2:通過系統呼叫和 glibc 編程
了解和掌握系統呼叫(glibc 庫),并能夠編程操作 Linux
推薦書籍:《 Unix 環境高級編程 》
參考博客:別出心裁的Linux系統呼叫學習法
Step3:了解 Linux 內核機制
可以先了解一下 Linux 內核機制,知道基本的原理和流程,Linux 內核機制非常復雜,而且其中相互關聯,比如說,行程運行要分配記憶體,記憶體映射涉及檔案的關聯,檔案的讀寫需要經過塊設備,從檔案中加載代碼才能運行起來行程,這些知識點要反復對照,才能理清,
推薦書籍:《深入理解 Linux 內核》、《庖丁解牛 Linux 內核分析》
Step4:閱讀 Linux 內核原始碼
根據學習內核機制中遇到的問題或作業中要重點研究某方面技術,選擇性的去研究原始碼,專注于核心邏輯和使用場景,(如你是研究網路的,就重點看內核協議堆疊的部分)
推薦書籍:《 Linux 內核原始碼情景分析》

Step5:實驗化定制組件
因為 Linux 有源代碼,很多地方可以參考現有的實作,定制化自己的模塊,例如,可以自己實作一個設備驅動程式,實作一個自己的系統呼叫,或者實作一個自己的檔案系統等等,這個階段要求較高,需要把每個細節都搞清楚,
結合專欄的兩個實驗加強學習和理解,
Step6:面對真實場景的開發
結合具體的業務需求,基于 Linux 環境的開發要考慮很多因素,如并發與并行、鎖與保護、擴展性與兼容性等,這些都要通過真實的專案多多實踐,
Linux 作業系統學習爬坡路線圖
(ps:對于大多數開發者而言,如果不是做 Linux 內核開發相關,盡量認真完成前三個階段)
課程學習方法 tips:
1. 閱讀:至少讀兩遍,閱讀程序中思考是什么、為什么、如何用,聯想之前的相關知識、做過的專案,嘗試解答別人的問題,不懂的知識翻閱書籍或上網查,
2. 實踐:提到的命令和代碼要去動手敲,其他如分析系統呼叫和原始碼模塊也要試著動手去做,
3. 總結:能串聯各個部分的知識、能畫出知識的框架,
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/142914.html
標籤:Linux
上一篇:Nginx
