爬過這6個坡,你就能對Linux操作系統瞭如指掌

在平時的生活中,我們幾乎時時刻刻都在使用操作系統,只是大部分時間你都意識不到它的存在。操作系統到底在背後默默地做了哪些事情,才能讓我們輕鬆地使用電子設備呢?不知道你有沒有產生過這些疑問:

  • 桌面上的圖標到底是啥?憑啥我在鼠標上一雙擊,就會出來一個美麗的畫面?這都是從哪裏跑出來的?
  • 電腦怎麼知道我鼠標點擊的是這個地方,又是怎麼知道我要輸入的是這個地方?
  • 爲什麼我一回車,這些字符就發到遙遠的另外一臺機器上去了?

對於普通用戶來講,其實只要會用就行了,但是咱們作爲專業人士,要深入探究一下背後的答案。操作系統其實就像一個軟件外包公司,其內核就相當於這家外包公司的老闆。爲什麼這麼說呢?

假設,我們現在就是在做一家外包公司,我們的目標是把這家公司做上市。其中,操作系統就是這家外包公司的老闆。我們把這家公司的發展階段分爲這樣幾個時期:

  • 初創期:這個老闆基於開放的營商環境(x86體系結構),創辦一家外包公司(系統的啓動)。因爲一開始沒有其他員工,老闆需要親自接項目(實模式)。
  • 發展期:公司慢慢做大,項目越接越多(保護模式、多進程),爲了管理各個外包項目,建立了項目管理體系(進程管理)、會議室管理體系(內存管理)、文檔資料管理系統(文件系統)、售前售後體系(輸入輸出設備管理)。
  • 壯大期:公司越來越牛,開始促進內部項目的合作(進程間通信)和外部公司合作(網絡通信)。
  • 集團化:公司的業務越來越多,會成立多家子公司(虛擬化),或者鼓勵內部創業(容器化),這個時候公司就變成了集團。大管家的調度能力不再侷限於一家公司,而是集團公司(Linux集羣),從而成功上市(從單機操作系統到數據中心操作系統)。

把外包公司做上市的過程,就是我們對Linux操作系統從入門到精通的過程。要做到對Linux瞭如指掌,我認爲你需要爬6個陡坡。在《趣談Linux操作系統》這個專欄裏,我會基於下面這6個陡坡,用“圖解”和“趣談”的形式,帶你一步一步進入Linux操作系統的大門,讓基礎變成你技術生涯的左膀右臂。

第一個坡:拋棄舊的思維習慣,熟練使用Linux命令行

上手Linux的第一步,要先從Windows的思維習慣,切換成Linux的“命令行+文件”使用模式。不過,在這個專欄裏,命令行並不是我們的重點,但是考慮到一些剛起步的同學,在第一部分我會簡單介紹一些能夠讓你快速上手Linux的命令行。專欄每一模塊的第一節,我都會有針對性地講解這一模塊的常用命令,足夠你把Linux用起來。

第二個坡:通過系統調用或者glibc,學會自己進行程序設計

用代碼操作Linux,可以直接使用Linux系統調用,也可以使用glibc的庫。如果說使用命令行的人是吃饅頭的,那寫代碼操作命令行的人就是做饅頭的。你會發現,你平時用的一個簡單的命令行,卻需要N個系統調用組合才能完成。其中每個系統調用都要進行深入地學習、讀文檔、做實驗。經過一段時間的學習,你已經很接近操作系統的原理了,你能看到另一番風景。

第三個坡:瞭解Linux內核機制,反覆研習重點突破

進一步瞭解內核的原理,有助於你更好地使用命令行和進行程序設計,能讓你的運維和開發水平上升一個層次。Linux內核機制是我們這個專欄重點要講述的部分,我會基於最新4.x的內核進行講解,當然我也意識到了內核機制的複雜性,所以我選擇通過故事性和圖形化的方式,幫助你瞭解並記住這些機制。

第四個坡:閱讀Linux內核代碼,聚焦核心邏輯和場景

一旦爬上這個坡,對於操作系統的原理,你應該就掌握得比較清楚了。這個時候,你就可以有針對性地去做課題,把所學和你現在做的東西結合起來重點突破。例如你是研究虛擬化的,就重點看KVM的部分;如果你是研究網絡的,就重點看內核協議棧的部分。

第五個坡:實驗定製化Linux組件,已經沒人能阻擋你成爲內核開發工程師了

紙上得來終覺淺,絕知此事要躬行。從只看內核代碼,到上手修改內核代碼,這又是一個很大的坎。例如,你可以自己實現一個設備驅動程序,實現一個自己的系統調用,或者實現一個自己的文件系統等等。專欄最後一個部分,我專門設計了兩個實驗,幫你度過這個坎。只要跟着我的步伐進行學習,接下來,就沒人能夠阻擋你成爲一名內核開發工程師了。

第六個坡:面向真實場景的開發,實踐沒有終點

說了這麼多,我們都只是走出了萬里長征第一步。我始終堅信,真正的高手都是在實戰中摸爬滾打練出來的。

如果你是運維,僅僅熟悉上面基本的操作是不夠的,生產環境會有大量的不可控因素,尤其是集羣規模大的更是如此,大量的運維經驗是實戰來的,不能光靠讀書。

如果你是開發,對內核進行少量修改容易,但是一旦面臨真實的場景,需要考慮各種因素,併發與並行,鎖與保護,擴展性和兼容性,都需要真實項目才能練出來。

這些內容,都出自我在極客時間的第二個專欄《趣談Linux操作系統》。在接下來的四個月,我會帶你一起來一場“爬坡計劃”,按照這個路徑穩步前進,攻克 Linux 操作系統。

值得說明的是,在專欄裏,我希望用一種更輕鬆地方式,讓你掌握Linux操作系統呢。我根據自己多年雲架構師的經歷,總結了一套獨家的Linux操作系統學習方法論,通過“圖解”和“趣談”的方式,讓你更輕鬆地學習Linux操作系統。

1、趣談,將枯燥的基礎知識結合某個場景,生動具體的講述,幫你加深理解、鞏固記憶、夯實基礎。就像前面圖片裏描述的,我會延伸這家外包公司的故事,把它的發展分爲幾個階段,並在專欄詳細地逐一講解。

2、圖解一圖勝千言。我會通過圖譜的方式,將Linux複雜的概念、數據結構、流程表現出來,用一張圖串起一篇文章的知識點。最終,整個專欄下來,你如果能把這些圖都掌握,你的知識就會形成體系和連接。在此基礎上再進行深入學習,就會如魚得水、易如反掌。

文件操作在各個層的數據結構的關聯

作者介紹

劉超,網易杭州研究院雲計算技術部首席架構師,QCon2019 廣州專題出品人。我有 15 年雲計算領域研發及架構經驗,出版過《Lucene 應用開發解密》。

極客時間的老用戶都知道,我也是極客時間“趣談網絡協議”專欄的作者,這個專欄目前有超過 3 萬人訂閱,我收到很多用戶的反饋,說非常認可我這種“像小說一樣”的“趣談”形式,講得通俗易懂,可以更好的理解底層知識。

大家的學習熱情也十分高漲,光互動留言就超過了 5 萬字。在和很多同學交流後,我發現很多人希望我繼續延續“趣談”的形式,講一講 Linux 操作系統。這也是《趣談 Linux 操作系統》專欄誕生的初衷。

出處:極客時間《趣談Linux操作系統》專欄

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章