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