新聞中心
Linux操作系統(tǒng)被廣泛應(yīng)用于服務(wù)器、嵌入式設(shè)備、移動(dòng)設(shè)備等領(lǐng)域。其優(yōu)秀的穩(wěn)定性、高擴(kuò)展性、開(kāi)放性以及免費(fèi)的特性受到越來(lái)越多的用戶(hù)的青睞。作為L(zhǎng)inux的核心組成部分,Linux內(nèi)核的探究顯得尤為重要。本文將深入探討Linux內(nèi)核的有關(guān)知識(shí)。

讓客戶(hù)滿(mǎn)意是我們工作的目標(biāo),不斷超越客戶(hù)的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶(hù),將通過(guò)不懈努力成為客戶(hù)在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名與空間、虛擬主機(jī)、營(yíng)銷(xiāo)軟件、網(wǎng)站建設(shè)、遼寧網(wǎng)站維護(hù)、網(wǎng)站推廣。
一. Linux內(nèi)核的基礎(chǔ)組成
Linux內(nèi)核是由SoC、板級(jí)支持、系統(tǒng)調(diào)用、協(xié)議棧、文件系統(tǒng)、虛擬文件系統(tǒng)、內(nèi)存管理、進(jìn)程調(diào)度、驅(qū)動(dòng)程序、安全模塊、網(wǎng)絡(luò)命名空間、容器、實(shí)時(shí)性等部分組成,其整體架構(gòu)如圖所示:
圖1 Linux內(nèi)核組成結(jié)構(gòu)
1. SoC
SoC是System-on-Chip的縮寫(xiě),指的是集成了處理器、內(nèi)存控制器、I/O處理器、網(wǎng)絡(luò)處理器、電源管理等基本模塊的芯片。SoC是大多數(shù)現(xiàn)代嵌入式設(shè)備的核心,也是很多服務(wù)器的主要芯片。Linux內(nèi)核必須支持多種SoC,才能在這些設(shè)備上運(yùn)行。
2. 板級(jí)支持
板級(jí)支持指的是針對(duì)不同的硬件平臺(tái)編寫(xiě)的驅(qū)動(dòng)程序。由于不同的硬件配置和不同的SoC芯片,Linux內(nèi)核需要有相應(yīng)的驅(qū)動(dòng)程序,才能與硬件交互。
3. 系統(tǒng)調(diào)用
系統(tǒng)調(diào)用是Linux內(nèi)核提供給用戶(hù)程序使用的接口,如open、close、write、read等,它們負(fù)責(zé)實(shí)現(xiàn)Linux內(nèi)核所提供的各種功能。
4. 協(xié)議棧
協(xié)議棧是Linux內(nèi)核用來(lái)管理網(wǎng)絡(luò)連接,處理TCP/IP協(xié)議的模塊。Linux內(nèi)核實(shí)現(xiàn)了包括IP、TCP、UDP、ARP、ICMP等協(xié)議,它們負(fù)責(zé)確保網(wǎng)絡(luò)數(shù)據(jù)的傳輸、數(shù)據(jù)流的控制等任務(wù)。
5. 文件系統(tǒng)
文件系統(tǒng)負(fù)責(zé)管理Linux內(nèi)核中的文件和目錄,在標(biāo)準(zhǔn)的Linux內(nèi)核中支持的文件系統(tǒng)包括EXT2、EXT3、EXT4、NTFS、FAT、F2FS等。
6. 虛擬文件系統(tǒng)
虛擬文件系統(tǒng)是Linux內(nèi)核的一個(gè)特有的概念,它將各種不同類(lèi)型的資源都以類(lèi)似文件的形式進(jìn)行管理。用戶(hù)使用文件操作函數(shù)來(lái)讀寫(xiě)本地文件,而Linux內(nèi)核使用虛擬文件系統(tǒng)管理所有資源。
7. 內(nèi)存管理
內(nèi)存管理是Linux內(nèi)核中最重要的任務(wù)之一,它負(fù)責(zé)管理計(jì)算機(jī)中的各種內(nèi)存。在Linux內(nèi)核中,內(nèi)存管理包括內(nèi)存頁(yè)面的管理、頁(yè)面的映射、內(nèi)核堆的動(dòng)態(tài)分配等。
8. 進(jìn)程調(diào)度
進(jìn)程調(diào)度是Linux內(nèi)核用來(lái)管理運(yùn)行在計(jì)算機(jī)中的各個(gè)進(jìn)程的調(diào)度機(jī)制,內(nèi)核提供了多種類(lèi)型的調(diào)度器,以實(shí)現(xiàn)不同的調(diào)度策略。
9. 驅(qū)動(dòng)程序
驅(qū)動(dòng)程序是Linux內(nèi)核中與硬件交互的實(shí)現(xiàn)方式之一,Linux內(nèi)核中的驅(qū)動(dòng)程序需要與硬件設(shè)備溝通,以便向其他內(nèi)核模塊提供硬件支持。
10.安全模塊
Linux內(nèi)核的安全模塊用于確保Linux內(nèi)核中的安全性。安全模塊負(fù)責(zé)管理Linux內(nèi)核的安全模式,并提供各種類(lèi)型的安全策略。
11. 網(wǎng)絡(luò)命名空間
網(wǎng)絡(luò)命名空間是Linux內(nèi)核中的一種機(jī)制,能夠?qū)⒕W(wǎng)絡(luò)互相隔離。它可以讓不同的網(wǎng)絡(luò)應(yīng)用程序在不同的命名空間中運(yùn)行,達(dá)到保護(hù)網(wǎng)絡(luò)安全和優(yōu)化網(wǎng)絡(luò)性能的目的。
12. 容器
容器是Linux內(nèi)核一種非常受歡迎的特性,它能夠隔離各個(gè)進(jìn)程和文件系統(tǒng),以方便分發(fā)和部署應(yīng)用程序。容器通過(guò)虛擬化的機(jī)制,實(shí)現(xiàn)隔離和資源限制。
13. 實(shí)時(shí)性
Linux內(nèi)核提供了一些特殊的機(jī)制,來(lái)確保實(shí)時(shí)性。這些機(jī)制包括提供實(shí)時(shí)調(diào)度器、盡可能快速的中斷響應(yīng)時(shí)間、減少延遲等。
二. Linux內(nèi)核的開(kāi)發(fā)
Linux內(nèi)核的開(kāi)發(fā)主要是由全球各地的數(shù)千名志愿者組成的Linux內(nèi)核開(kāi)發(fā)者社區(qū)進(jìn)行開(kāi)發(fā)。由于Linux操作系統(tǒng)的開(kāi)放性,任何人都可以加入到Linux內(nèi)核開(kāi)發(fā)者社區(qū)中,參與Linux內(nèi)核的開(kāi)發(fā)。
1. Linux內(nèi)核的發(fā)展歷程
Linux內(nèi)核的發(fā)展歷程可以追溯到1991年,當(dāng)時(shí),芬蘭的一名學(xué)生Linus Torvalds在他的個(gè)人電腦上編寫(xiě)了Linux內(nèi)核的之一個(gè)版本。在Linux的早期開(kāi)發(fā)階段,Linux內(nèi)核的開(kāi)發(fā)者主要是一些個(gè)人和小團(tuán)隊(duì),他們通過(guò)各種方式向社區(qū)做出了貢獻(xiàn)。到1993年,由于Linux的可移植性、穩(wěn)定性和吸引力逐漸提高,Linux逐漸成為了一個(gè)龐大的代碼庫(kù),吸引了眾多的開(kāi)發(fā)者參與其中。
2. Linux內(nèi)核的開(kāi)發(fā)流程
如今的Linux內(nèi)核開(kāi)發(fā)流程是由Linux內(nèi)核開(kāi)發(fā)者社區(qū)維護(hù)的,其中包括:主開(kāi)發(fā)者Linus Torvalds、Linux穩(wěn)定的維護(hù)者、內(nèi)核架構(gòu)維護(hù)者、主要子系統(tǒng)的負(fù)責(zé)人以及各種社區(qū)成員。
Linux內(nèi)核開(kāi)發(fā)的流程如下:
– 開(kāi)發(fā)者對(duì)代碼進(jìn)行修改
– 發(fā)布補(bǔ)丁、驅(qū)動(dòng)或其他的內(nèi)核代碼
– 維護(hù)者對(duì)新的代碼進(jìn)行審核,做出決策
– 維護(hù)者將新代碼與內(nèi)核整合,生成新的內(nèi)核版本
– 內(nèi)核版本發(fā)布,并作為默認(rèn)內(nèi)核供使用
在Linux內(nèi)核開(kāi)發(fā)的過(guò)程中,由于參與人員多且雜,為了方便管理和快速反應(yīng),Linux內(nèi)核開(kāi)發(fā)者社區(qū)采用分層管理和郵件列表等工具進(jìn)行管理。
三. Linux內(nèi)核的編譯和安裝
編譯Linux內(nèi)核需要Linux系統(tǒng)環(huán)境、編譯工具及相關(guān)的開(kāi)發(fā)包,步驟如下:
1.下載Linux內(nèi)核
從Linux內(nèi)核官網(wǎng)下載最新內(nèi)核代碼(https://www.kernel.org/)。
2. 解壓內(nèi)核文件
解壓下載的內(nèi)核文件。
3. 內(nèi)核配置
進(jìn)入內(nèi)核目錄,運(yùn)行”make menuconfig”,根據(jù)需要對(duì)內(nèi)核進(jìn)行配置。配置完成后保存。
4. 構(gòu)建內(nèi)核
運(yùn)行”make”命令,在代碼庫(kù)的根目錄下運(yùn)行”make”命令,或者在內(nèi)核源代碼根目錄下運(yùn)行下面的命令:
make bzImage
5. 安裝內(nèi)核
內(nèi)核構(gòu)建完成后,在/usr/src/linux目錄下可以找到bzImage文件和modules文件夾。將內(nèi)核文件拷貝到/boot目錄下,并更新系統(tǒng)啟動(dòng)鏡像。
6. 配置/proc文件系統(tǒng)
運(yùn)行”mount -t proc proc /proc”,將/proc目錄掛載到內(nèi)存中。
7. 配置root文件系統(tǒng)
使用initrd或initramfs配置root文件系統(tǒng)。initrd或initramfs是一個(gè)小型文件系統(tǒng),可以用來(lái)引導(dǎo)內(nèi)核,以啟動(dòng)正常的root文件系統(tǒng)。
四.
Linux內(nèi)核作為L(zhǎng)inux操作系統(tǒng)的核心組成部分,包含各種功能模塊,其開(kāi)放性、穩(wěn)定性及高度的擴(kuò)展性都是Linux操作系統(tǒng)得以廣泛應(yīng)用的重要因素。對(duì)于開(kāi)發(fā)人員來(lái)說(shuō),深入掌握Linux內(nèi)核的知識(shí)非常重要。本文詳細(xì)介紹了Linux內(nèi)核的結(jié)構(gòu)、開(kāi)發(fā)歷程、編譯和安裝等方面,希望能夠?qū)ψx者有所幫助。
相關(guān)問(wèn)題拓展閱讀:
- 升級(jí)Linux操作系統(tǒng)內(nèi)核奮斗記
- linux內(nèi)核一般有3個(gè)主要部分是什么?
升級(jí)Linux操作系統(tǒng)內(nèi)核奮斗記
升級(jí)linux內(nèi)核奮斗記
我的piii dell機(jī)運(yùn)行著內(nèi)核2.4.的redhat,自從linux內(nèi)核2.6發(fā)布以來(lái)一直想把該系統(tǒng)升級(jí)到內(nèi)核2.6。經(jīng)過(guò)一番艱辛萬(wàn)苦,終于成功了。為了體驗(yàn)一下在linux下編寫(xiě)多線程程序的步驟,又更新gcc和c語(yǔ)言庫(kù)。在此愿和各位朋友共享這段經(jīng)歷,共享這段成果。(可能有記錄錯(cuò)誤,僅供參考)。
具體步驟包括以下內(nèi)容:
1,升級(jí)內(nèi)核的具體步驟
2,更新gcc
3,使用glibc2.3.5
4,使用nptl線程進(jìn)行編程
在此之前,先簡(jiǎn)要地介紹一下linux內(nèi)核2.6所做的改進(jìn)及新增功能。linux2.6主要在以下的10個(gè)方面作了很大的改進(jìn),簡(jiǎn)單概括如下,有關(guān)詳細(xì)情況,請(qǐng)參閱相關(guān)資料。
1)通過(guò)改善并行處理能力和采用posix線程等,提高了系統(tǒng)的處理能罩虧信力,從而linux真正具備大型信息系統(tǒng)所要求性能。
2)通過(guò)改善文件系統(tǒng)的輸出/輸入能力和提高對(duì)大容量?jī)?nèi)存的利用效率,使得linux能夠更勝任大型信息系統(tǒng)中的數(shù)據(jù)處理。
3)加強(qiáng)了對(duì)數(shù)物輪據(jù)庫(kù)應(yīng)用程序的支持。
4)提高了抗系統(tǒng)高負(fù)荷時(shí)能力。
5)提高了系統(tǒng)的可用性,包括對(duì)不停機(jī)空此時(shí)備份和不停機(jī)時(shí)更換硬件功能的支持。
6)強(qiáng)化了對(duì)網(wǎng)絡(luò)的支持,增加了對(duì)ipv6, sctp, ipsec,等的支持。
7)通過(guò)增加訪問(wèn)控制和內(nèi)核暗號(hào)化技術(shù),提高了系統(tǒng)的安全性。
8)強(qiáng)化了對(duì)電源的管理。
9)強(qiáng)化了對(duì)嵌入式cpu和系統(tǒng)的支持。
10)添加了更多的硬件驅(qū)動(dòng)程序。
一.升級(jí)內(nèi)核
1, 下載linux-2.6.3.tar.bz2(可以是更新的版本)到/usr/src
bzcat linux-2.6.3.tar.bz2 | tar xvf – cd linux-2.6.閱讀readme及changes 文件,確認(rèn)必須的工具軟件。因?yàn)椴皇枪P記本電腦和筆記本電腦有關(guān)的軟件可以忽略。發(fā)現(xiàn)module-init-tools需要更新。
2,下載module-init-tools-0.9.13.tar.bz2
bzcat module-init-tools-0.9.13.tar.bz2 | tar xvf – cd module-init-tools-0.9.13 ./configure –prefix=/usr/local/module-init make make moveold make install /usr/local/module-init/in/generate-modpobe.conf > /etc/modprobe.conf成功。
3, 編譯linux內(nèi)核 _
cd /usr/src/linux-2.6.3 make menuconfig一看太麻煩了,而且許多選項(xiàng)不知所云。退出該程序。 執(zhí)行make oldconfig,對(duì)kernel2.6新增的不熟悉的選項(xiàng)作不選或?yàn)槿笔 ?
make bzimage make modules modules_install pwd /usr/src/linux-2.6.3 mv arch/i386/boot/bzimage /boot/bzimage2.6.3 mv system.map /boot/system.map-2.6.3 cd /boot mv system.map oldsystem.map ln –s system.map-2.6.3 system.map,建立sys目錄
mkdir /sys
5, 修改相關(guān)文件,增加對(duì)sys的支持
在/etc/rc.d/rc.sysinit文件增加對(duì)sys的支持。
1) 找到mount –f /proc的行,在其下面,增加 mount –f /sys
2) 找到 action $ “mounting proc filesystem:” mount –n –t proc /proc /proc 在其下面,增加action $ “mounting sysfs filesystem:” mount –n –t sysfs /sys /sys.
3) 把文件中的 ksyms 改成 kallsyms
在/etc/fstab文件中,增加一行:
none /sys sysfs defaults 0 0
在/etc/rc.d/init.d/halt中,增加對(duì)sys的支持,把 awk ‘$2 ~/^/$ | ^/proc | ^/dev / {next} 變?yōu)?
awk ‘$2 ~/^/$ | ^/proc | ^/sys | ^/dev / {next}
6,啟動(dòng)
修改/etc/lilo.conf, 增加下面的設(shè)置
… image=/boot/bzimange2.6.3 label=linux2.6.3 read-only root=/dev/hda3(由自己的pc設(shè)置決定)成功。
二,更新gcc (因?yàn)間cc2.95.3無(wú)法編譯glibc-2.3.5)
下載gcc-3.4.4.tar.bz2
bzcat gcc-3.4.4.tar.bz2 | tar xvf – cd gcc-3.4.4 ./configure –prefix=/usr/local/gcc344 –enable-shared –enable-threads –enable-threads=posix –enable-languages=c,c++,f77 make bootstrap (因?yàn)槭褂胏flags選項(xiàng)時(shí),出錯(cuò)了,所以省略) make install ln –s /usr/local/gcc344/bin/gcc /usr/bin/gcc
三,使用glibc-2.3.5
1)、通過(guò)調(diào)查發(fā)現(xiàn)要編譯glibc-2.3.5,要求binutils在2.13以上。所以必須安inutils-2.14
下載binutils-2.14.tar.gz
tar zxpvf binutils-2.14.tar.gz mkdir binutils-build cd binutils-build ../binutils-2.14/configure –prefix=/usr –enable-shared make tooldir=/usr make check make tooldir=/usr install cp ../binutils-2.14/include/libiberty.h /usr/include) 安裝glibc-2.3.5
下載 glibc-2.3.5.tar.gz 和 glibc-2.3.5-fix_test-1.patch
tar zxpvf glibc-2.3.5.tar.gz patch –np1 –i ../glibc-2.3.5-fix_test-1.path mkdir glibc-build cd glibc-build ../glibc-2.3.5/configure –prefix=/usr/local/glibc235 –enable-add-ons=linuxthreads –enable-kernel=2.6.0 (若安裝在/usr目錄下,很危險(xiǎn),可能會(huì)損壞你的系統(tǒng)) make make check (必須執(zhí)行的一步) make localedata /install-locales (對(duì)應(yīng)各國(guó)文字) mkdir /usr/man/man3(man的安裝路徑) make –c ../glibc-2.3.5/linuxthreads/man install上面的安裝完成以后,更好把/usr/local/glibc235/lib和/usr/local/glibc235/include加入到系統(tǒng)的路徑中,這樣在編譯程序時(shí),就不必指定庫(kù)和header文件的路徑了。
四、使用nptl進(jìn)行線程編程
#include #include #include #include void thread_fun(void * arg); char message = “i am created thread”; int main() { int rnt; pthread_t new_thread; void *thread_result; rnt=pthread_create(&new_thread,null, thread_fun, (void*) message); if (rnt != 0) { perrer (“thread creation failed”); exit(exit_failure); } printf(“waiting for other thread to finish…”); rnt = pthread_join(new_thread, &thread_result); if (rnt != 0) { perrer (“thread join failed”); exit(exit_failure); } printf(“thread join, it returned %s ”, (char*) thread_result); printf(“message now %s”, message); exit(exit_success); } void *thread_fun (void * arg) { printf(“the new thread is running. argument was %s”,(char*)arg); sleep(3); strcpy(message, “bye”); pthread_exit(“thank you for the test”); }編譯
gcc -d_reentrant test_thread.c -o test_thread -lpthread ./test_thread成功了。
linux內(nèi)核一般有3個(gè)主要部分是什么?
進(jìn)程調(diào)度器:這個(gè)內(nèi)核子系統(tǒng)負(fù)責(zé)在系統(tǒng)上同時(shí)運(yùn)行的所有進(jìn)程之間公平地分配歲物CPU時(shí)間。
內(nèi)物嫌存管理單元:這個(gè)內(nèi)核子單元負(fù)責(zé)在系統(tǒng)上運(yùn)行的各種進(jìn)程之間合理分配內(nèi)存資源。MMU不僅僅為每個(gè)進(jìn)程提供單獨(dú)的虛擬地址空間。
虛擬乎螞液文件系統(tǒng):這個(gè)子系統(tǒng)負(fù)責(zé)提供一個(gè)統(tǒng)一的接口來(lái)跨不同的文件系統(tǒng)和物理存儲(chǔ)介質(zhì)訪問(wèn)存儲(chǔ)的數(shù)據(jù)。
linux內(nèi)核 _的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于linux內(nèi)核 _,深入剖析:Linux 內(nèi)核探究,升級(jí)Linux操作系統(tǒng)內(nèi)核奮斗記,linux內(nèi)核一般有3個(gè)主要部分是什么?的信息別忘了在本站進(jìn)行查找喔。
成都創(chuàng)新互聯(lián)科技有限公司,是一家專(zhuān)注于互聯(lián)網(wǎng)、IDC服務(wù)、應(yīng)用軟件開(kāi)發(fā)、網(wǎng)站建設(shè)推廣的公司,為客戶(hù)提供互聯(lián)網(wǎng)基礎(chǔ)服務(wù)!
創(chuàng)新互聯(lián)(www.cdcxhl.com)提供簡(jiǎn)單好用,價(jià)格厚道的香港/美國(guó)云服務(wù)器和獨(dú)立服務(wù)器。創(chuàng)新互聯(lián)成都老牌IDC服務(wù)商,專(zhuān)注四川成都IDC機(jī)房服務(wù)器托管/機(jī)柜租用。為您精選優(yōu)質(zhì)idc數(shù)據(jù)中心機(jī)房租用、服務(wù)器托管、機(jī)柜租賃、大帶寬租用,可選線路電信、移動(dòng)、聯(lián)通等。
本文標(biāo)題:深入剖析:Linux內(nèi)核探究(linux內(nèi)核_)
文章出自:http://m.fisionsoft.com.cn/article/ccscgij.html


咨詢(xún)
建站咨詢(xún)
