漫畫趣解 Linux 核心
今天,我來為大家解讀一幅來自 TurnOff.us 的漫畫 “InSide The Linux Kernel” 。 TurnOff.us 是一個極客漫畫網站,作者Daniel Stori 畫了一些非常有趣的關於程式語言、Web、雲端計算、Linux 相關的漫畫。今天解讀的便是其中的一篇。
在開始之前,我們先來看看這幅漫畫的全貌!
這幅漫畫是以一個房子的側方刨面圖來繪畫的。使用這樣的一個房子來代表Linux 核心。
地基
一個房子最重要的就是地基,所以我們先從地基講起。
地基(底層)由一排排的檔案櫃組成,井然有序,檔案櫃裡放置著“檔案”——電腦中的檔案。左上角,有一隻胸前掛著 421 號牌的小企鵝,它表示著 PID(程序 IDProcess ID) 為 421 的程序,它正在檢視檔案櫃中的檔案,這代表系統中正有一個程序在訪問檔案系統。在右下角有一隻小狗,它是看門狗watchdog ,這代表對檔案系統的監控。
第一層
接下來的一層就比較熱鬧了:
在這一層,最引人矚目的莫過於中間的一塊墊子,眾多小企鵝在圍著著桌子坐著。這個墊子的區域代表程序表。
左上角有一個小企鵝,站著,彷彿在說些什麼這顯然是一位家長式的人物,不過看起來周圍坐的那些小企鵝不是很聽話——你看有好多走神、自顧自聊天的——“喂喂,說你呢,哇塞娃(171),轉過身來”。它代表著 Linux 核心中的初始化(init)程序,也就是我們常說的 PID 為 1 的程序。桌子上坐的小企鵝都在等待狀態wait中,等待工作任務。
瞧瞧,墊子(程序表)兩旁有兩隻小狗,它會監控小企鵝的狀態(監控程序),當小企鵝們不聽話時,它就會汪汪地叫喊起來。
這兩位企鵝累的滿頭大汗,任勞任怨的在搬動著管道。
一隻小企鵝可以把自己手上的東西通過這個管道,傳遞給後面的小企鵝。不過怎麼看起來前面這隻(男?)企鵝累得滿頭大汗,而後面那隻(女?)企鵝似乎遊刃有餘——喂喂,前面那個,褲子快掉了~
當然,同樣辛勤勞動的還有這位小老弟,cron程序。看它急得頭上都冒汗了,這位老弟不斷的看著手錶,執行著週期性任務。
這隻pid為1341的小企鵝就是大名鼎鼎的apache http伺服器程序。它堅守在80埠提供http服務。它頭上的羽毛就是apache的標誌。
這位帶著墨鏡的企鵝守護著22埠。它看著要比其他的企鵝要更加有威嚴,臉上彷佛寫著生人勿進四個字。原來它看護的是用於SSH服務的22埠,SSH服務常常用於遠端登陸,所以必須要仔細審查。
還有年久失修的FTP埠21。FTP服務用的人已經很少了,以至於連門牌都快掉了。
這位端著紅酒,略帶醉意的就是wine,有了它,我們可以在Linux上執行一些簡單的windows程式。類似的專案還有LKL(Linux Kernel Library) https://github.com/lkl。
在圖片的左上角,有一個向下臺階。這個臺階是底層(地基)的檔案系統中的,程序們可以通過這個臺階,到檔案系統中去讀取檔案,進行操作。
首先我們來看看躍層,也是最接近使用者的一層。兩隻企鵝在名為TTY的視窗面前工作,一隻企鵝在控制檯前戳戳點點,另一隻在仔細端詳程式的輸出。TTY中文為電傳打字機,關於TTY,可以追溯到計算機的遠古時代,那時候我們使用的還只是沒有主機的打字機。裝置的輸入要經過長長的序列線路才能到達那昂貴的大型主機(Mainframe Computer)。
作為Unix-like的Linux也繼承了這一特性,在/dev目錄下和ps命令的輸出中我們都可以看到它的身影。
在一層之上,還有一個躍層,這裡有很多不同的螢幕,每個螢幕上寫著 TTY(這就是對外的終端)。比如說最左邊 tty4 上輸入了“fre”——這是想輸入“freshmeat...”麼 :d ;它旁邊的 tty2 和 tty3 就正常多了,看起來是比較正常的命令;tty7 顯示的圖形介面噯,對,圖形介面(X Window)一般就在 7 號終端;tty5 和 tty6 是空的,這表示這兩個終端沒人用。等等,tty1 呢?
tty(終端)是對外溝通的渠道之一,但是,不是每一個程序都需要 tty,某些程序可以直接通過其他途徑(比如埠)來和外部進行通訊,對外提供服務的,所以,這一層不是完整的一層,只是個躍層。
好了,我們有落下什麼嗎?
這小丑是誰啊?
啊哈,我也不知道,或許是病毒?你說呢?
參考:
https://linux.cn/article-8476-1.html SSH 協議埠號 22 背後的故事07
https://blog.csdn.net/liigo/article/details/9227205 Linux 軟體看門狗 watchdog
https://en.wikipedia.org/wiki/Linux_Kernel_Library LKL的維基百科
http://turnoff.us/ 漫畫出處
https://linux.cn/article-8290-1.html 引文出處