今天我要跟大家分享一下Linux內(nèi)核的重要性。內(nèi)核就像Linux系統(tǒng)運行的大心臟,對系統(tǒng)的運行起到了至關(guān)重要的作用。那么Linux內(nèi)核到底難不難學(xué)呢?今天我就大概和大家科普一下,后期還會向大家推薦一本書籍,用來鞏固大家學(xué)習(xí)內(nèi)核的操作。其實,Linux內(nèi)核可以通過編寫代碼來驗證,幾行代碼就能夠表達我們需要表達的內(nèi)容,但是光靠幾行代碼我們就真的學(xué)會了嗎?真的有那么直觀嗎?所以只學(xué)習(xí)代碼仍然不夠。現(xiàn)在雖然流行靠代碼進行計算機的學(xué)習(xí),但是傳道授業(yè)者也僅僅停留在理論知識傳授的層面,對于經(jīng)驗總結(jié)和實際操作仍然不夠;還有一個就是我們通常更加注重對理論的學(xué)習(xí),自己上手操作的時間沒有多少,因此會造成理論豐富實踐貧瘠的情況;第三就是我們自己的學(xué)習(xí)力度不夠,沒有認(rèn)真鉆研,學(xué)習(xí)事物停留在表面。所以,我們千萬不能抱著這樣的態(tài)度去學(xué)習(xí)Linux。下面,我就給大家科普一下Linux內(nèi)核知識,幫助大家更好的學(xué)習(xí)Linux系統(tǒng)。
第一是Linux內(nèi)核源代碼結(jié)構(gòu)。Documentation很好用,它雖然沒有內(nèi)核的代碼,但是它有一套有用的內(nèi)核文檔,這些內(nèi)核文檔大多是可以用的,例如文件系統(tǒng);也有不能用的,例如進程調(diào)度。arch下面的子目錄都是體系結(jié)構(gòu)特有的代碼,看見這個一定要記清楚。drivers是內(nèi)核的驅(qū)動程序代碼,里面有我們熟知的顯卡、網(wǎng)卡、PCI等外圍設(shè)備的驅(qū)動代碼,所以對于我們來說是很關(guān)鍵的。fs:文件系統(tǒng)代碼。包含ext2、ext3、ext4等本地文件系統(tǒng)。Linux命令內(nèi)核中的大部分文件在include里邊,我們?nèi)绻行枰獙ふ业奈募梢韵葟倪@里開始找。kernel是Linux內(nèi)核中最重要的組成部分,它的功能主要包含進程創(chuàng)建、銷毀和調(diào)度的代碼,如果缺少了它,我們的系統(tǒng)就不能繼續(xù)運行了。除了這些代碼外,還有其他的一些重要的組成部分,這里就不一一說了,但是我們需要知道的是,無論代碼中的子目錄或大或小,都是我們應(yīng)該掌握的。
第二是內(nèi)部的網(wǎng)絡(luò)剖析過程。由于網(wǎng)絡(luò)協(xié)議棧是由若干個層次所構(gòu)成的,因此網(wǎng)絡(luò)信息的處理過程主要是指在協(xié)議棧的不同層次間的信息傳輸。而按照為前一章的TCP系統(tǒng)所編寫的流程,構(gòu)建TCP系統(tǒng)內(nèi)部的過程根據(jù)鏈接socket參數(shù),綁定地址接口bind函數(shù),偵聽接口listen參數(shù),接收鏈路accept變量,傳送數(shù)據(jù)send函數(shù),接受信息recv參數(shù),關(guān)閉socket參數(shù)的次序來完成。而與此相對應(yīng)內(nèi)部的過程就是根據(jù)此次序完成的,因此網(wǎng)絡(luò)信息在系統(tǒng)內(nèi)部中的處理過程一般都是在網(wǎng)卡與協(xié)議棧中間完成的:由網(wǎng)卡接收數(shù)據(jù),再交由協(xié)議棧處理過程;協(xié)議棧把要傳輸?shù)男畔⒔?jīng)由網(wǎng)絡(luò)發(fā)送出去。
我們在給系統(tǒng)傳遞數(shù)據(jù)的同時,也將消息經(jīng)由插口層傳送到協(xié)議層,協(xié)議層的UDP層增加UDP的首次、TCP層增加TCP的首次、IP層增加IP的首次,而接口層的網(wǎng)卡則在加載了互聯(lián)網(wǎng)上的數(shù)據(jù)塊后,再經(jīng)由網(wǎng)卡的傳輸功能發(fā)送到互聯(lián)網(wǎng)上。
接受信息的處理過程則是一種完全相反的處理過程,當(dāng)有信息出現(xiàn)的時候,通過電話卡的中斷程序?qū)⑿畔幕ヂ?lián)網(wǎng)網(wǎng)卡的FIFO對列中收集到內(nèi)部,然后傳送到協(xié)商層,由協(xié)商層將IP層剝奪IP的首次、UDP層剝奪UDP的首次、TCP層剝奪TCP的首次并傳送到插口層,經(jīng)過插口層對socket的識別后,將信息發(fā)送給用戶層對應(yīng)的socket。
經(jīng)過以上的介紹,相信大家對Linux內(nèi)核有了一個大概的認(rèn)識。其實學(xué)好Linux內(nèi)核真的很重要,學(xué)好了Linux內(nèi)核就等于學(xué)好了一半的Linux系統(tǒng)。但是為了大家能夠進一步補齊短板,吸收理論知識和實操技能,我向大家推薦《Linux就該這么學(xué)》,這本書講的就是怎樣學(xué)好Linux系統(tǒng),怎樣利用Linux系統(tǒng)去完成一些高難度的操作。我們在知道了內(nèi)核很重要的基礎(chǔ)上,當(dāng)然就要進行深度學(xué)習(xí)了。這本書非常適合零基礎(chǔ)的新手,當(dāng)然對于一些老玩家也是上下兼容。總之就是新手可以從中收獲知識,老手可以從中溫故而知新。我認(rèn)為在我們掌握了Linux內(nèi)核基礎(chǔ)知識的情況下,利用這本書來鞏固一下是很好的。
現(xiàn)在大家對Linux內(nèi)核的重要性已經(jīng)一清二楚了吧,如果想進一步的了解,那么就從這本書入手吧,相信大家經(jīng)過一段時間的學(xué)習(xí)一定會有所收獲的。
審核編輯黃宇
-
Linux
+關(guān)注
關(guān)注
87文章
11292瀏覽量
209330
發(fā)布評論請先 登錄
相關(guān)推薦
評論