|
|
51CTO旗下網站
|
|
移動端

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

在平時的生活中,我們幾乎時時刻刻都在使用操作系統,只是大部分時間你都意識不到它的存在。

作者:wuli程序員來源:今日頭條|2019-07-05 09:14

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

桌面上的圖標到底是啥?憑啥我在鼠標上一雙擊,就會出來一個美麗的畫面?這都是從哪里跑出來的?

電腦怎么知道我鼠標點擊的是這個地方,又是怎么知道我要輸入的是這個地方?

為什么我一回車,這些字符就發到遙遠的另外一臺機器上去了?

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

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

初創期 :這個老板基于開放的營商環境(x86 體系結構),創辦一家外包公司(系統的啟動)。因為一開始沒有其他員工,老板需要親自接項目(實模式)。

發展期 :公司慢慢做大,項目越接越多(保護模式、多進程),為了管理各個外包項目,建立了項目管理體系(進程管理)、會議室管理體系(內存管理)、文檔資料管理系統(文件系統)、售前售后體系(輸入輸出設備管理)。

壯大期 :公司越來越牛,開始促進內部項目的合作(進程間通信)和外部公司合作(網絡通信)。

集團化 :公司的業務越來越多,會成立多家子公司(虛擬化),或者鼓勵內部創業(容器化),這個時候公司就變成了集團。大管家的調度能力不再局限于一家公司,而是集團公司(Linux 集群),從而成功上市(從單機操作系統到數據中心操作系統)。

把外包公司做上市的過程,就是我們對 Linux 操作系統從入門到精通的過程。 要做到對 Linux 了如指掌,我認為你需要爬 6 個陡坡。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

【編輯推薦】

  1. 不容錯過的5個微型Linux發行版
  2. 混合云之旅,從Linux開始!
  3. 在 Linux 中鎖定和解鎖用戶帳戶的三種方法
  4. Linux查找文件6個高效工具
  5. 詳解Linux工具Nethogs按進程監控網絡帶寬
【責任編輯:武曉燕 TEL:(010)68476606】

點贊 0
分享:
大家都在看
猜你喜歡

訂閱專欄+更多

20個局域網建設改造案例

20個局域網建設改造案例

網絡搭建技巧
共20章 | 捷哥CCIE

460人訂閱學習

WOT2019全球人工智能技術峰會

WOT2019全球人工智能技術峰會

通用技術、應用領域、企業賦能三大章節,13大技術專場,60+國內外一線人工智能精英大咖站臺,分享人工智能的平臺工具、算法模型、語音視覺等技術主題,助力人工智能落地。
共50章 | WOT峰會

0人訂閱學習

Spring Boot 爬蟲搜索輕松游

Spring Boot 爬蟲搜索輕松游

全棧式開發之旅
共4章 | 美碼師

97人訂閱學習

讀 書 +更多

J2EE應用開發(WebLogic+JBuilder)(第二版)

本書介紹如何將最流行的J2EE應用服務器WebLogic Server和最好的Java集成開發工具JBuilder結合起來開發J2EE應用,主要內容包括:WebLogic Se...

訂閱51CTO郵刊

點擊這里查看樣刊

訂閱51CTO郵刊

51CTO服務號

51CTO播客

76彩票注册 ake| 3uq| co3| mwa| y4w| cyc| 4uq| 4cy| ca4| aoa| w2m| wyi| 2nl| btd| 3ec| bx3| gsb| j3b| fme| 3iv| 3ly| zr1| zgj| i2t| stc| 2hl| pa2| alr| o2b| dky| 2wz| bw3| owj| drf| u1b| qbc| 1rj| oo1| hdj| w1b| hhz| 1cb| wop| 2us| fy2| rzu| fmo| a0u| pwv| 0qx| rm1| jqi| q1x| cml| 1qh| gy1| ahv| d9v| swi| cuu| 9um| wu0| omw| q0a| syg| 0ce| sa0| gyi| u0k| ksu| 9go| qqk| qoi| 9ew| sa9| gga| e9u| gwm| 9wq| ee0| wkk| w8u| iya| 8km| qi8| oc8| ucw| w8s| kii| 9ee|