Linux内核——百度百科
生活随笔
收集整理的這篇文章主要介紹了
Linux内核——百度百科
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
https://baike.baidu.com/item/Linux%E5%86%85%E6%A0%B8
Linux是一種開(kāi)源電腦操作系統(tǒng)內(nèi)核。它是一個(gè)用C語(yǔ)言寫(xiě)成,符合POSIX標(biāo)準(zhǔn)的類(lèi)Unix操作系統(tǒng)。[1]Linux最早是由芬蘭黑客 Linus Torvalds為嘗試在英特爾x86架構(gòu)上提供自由免費(fèi)的類(lèi)Unix操作系統(tǒng)而開(kāi)發(fā)的。該計(jì)劃開(kāi)始于1991年,在計(jì)劃的早期有一些Minix 黑客提供了協(xié)助,而今天全球無(wú)數(shù)程序員正在為該計(jì)劃無(wú)償提供幫助。軟件名稱(chēng)Linux內(nèi)核 軟件語(yǔ)言C語(yǔ)言 軟件授權(quán)免費(fèi) 發(fā)明者Linus Torvalds 使用時(shí)間1991年 1內(nèi)核結(jié)構(gòu) ?版本號(hào) ?發(fā)展歷史 ?結(jié)構(gòu)屬性 ?開(kāi)發(fā)規(guī)范 2主要子系統(tǒng) ?系統(tǒng)調(diào)用接口 ?進(jìn)程管理 ?內(nèi)存管理 ?虛擬文件系統(tǒng) 3特性 ?可移植性 ?網(wǎng)絡(luò)支持 ?動(dòng)態(tài)內(nèi)核 ?系統(tǒng)管理程序 4組成 5發(fā)行版 6常量定義 ?初始定義 ?解壓縮符號(hào) ?內(nèi)核符號(hào) ?構(gòu)架宏
第一種方式用于1.0版本之前(包括1.0)。第一個(gè)版本是0.01,緊接著是0.02、0.03、0.10、0.11、0.12、0.95、0.96、0.97、0.98、0.99和之后的1.0。第二種方式用于1.0之后到2.6,數(shù)字由三部分“A.B.C”,A代表主版本號(hào),B代表次主版本號(hào),C代表較小的末版本號(hào)。只有在內(nèi)核發(fā)生很大變化時(shí)(歷史上只發(fā)生過(guò)兩次,1994年的1.0,1996年的2.0),A才變化。可以通過(guò)數(shù)字B來(lái)判斷Linux是否穩(wěn)定,偶數(shù)的B代表穩(wěn)定版,奇數(shù)的B代表開(kāi)發(fā)版。C代表一些bug修復(fù),安全更新,新特性和驅(qū)動(dòng)的次數(shù)。以版本2.4.0為例,2代表主版本號(hào),4代表次版本號(hào),0代表改動(dòng)較小的末版本號(hào)。在版本號(hào)中,序號(hào)的第二位為偶數(shù)的版本表明這是一個(gè)可以使用的穩(wěn)定版本,如2.2.5,而序號(hào)的第二位為奇數(shù)的版本一般有一些新的東西加入,是個(gè)不一定很穩(wěn)定的測(cè)試版本,如2.3.1。這樣穩(wěn)定版本來(lái)源于上一個(gè)測(cè)試版升級(jí)版本號(hào),而一個(gè)穩(wěn)定版本發(fā)展到完全成熟后就不再發(fā)展。第三種方式從2004年2.6.0版本開(kāi)始,使用一種“time-based”的方式。3.0版本之前,是一種“A.B.C.D”的格式。七年里,前兩個(gè)數(shù)字A.B即“2.6”保持不變,C隨著新版本的發(fā)布而增加,D代表一些bug修復(fù),安全更新,添加新特性和驅(qū)動(dòng)的次數(shù)。3.0版本之后是“A.B.C”格式,B隨著新版本的發(fā)布而增加,C代表一些bug修復(fù),安全更新,新特性和驅(qū)動(dòng)的次數(shù)。第三種方式中不再使用偶數(shù)代表穩(wěn)定版,奇數(shù)代表開(kāi)發(fā)版這樣的命名方式。舉個(gè)例子:3.7.0代表的不是開(kāi)發(fā)版,而是穩(wěn)定版![2] 詞條標(biāo)簽:科技產(chǎn)品,科學(xué)Linux內(nèi)核圖冊(cè)V百科往期回顧 1內(nèi)核結(jié)構(gòu)1.1版本號(hào) 1.2發(fā)展歷史 1.3結(jié)構(gòu)屬性 1.4開(kāi)發(fā)規(guī)范 2主要子系統(tǒng)2.1系統(tǒng)調(diào)用接口 2.2進(jìn)程管理 2.3內(nèi)存管理 2.4虛擬文件系統(tǒng) 3特性3.1可移植性 3.2網(wǎng)絡(luò)支持 3.3動(dòng)態(tài)內(nèi)核 3.4系統(tǒng)管理程序 4組成5發(fā)行版6常量定義6.1初始定義 6.2解壓縮符號(hào) 6.3內(nèi)核符號(hào) 6.4構(gòu)架宏 成長(zhǎng)任務(wù)編輯入門(mén)編輯規(guī)則本人編輯 我有疑問(wèn)我要質(zhì)疑在線(xiàn)客服參加討論意見(jiàn)反饋 投訴建議舉報(bào)不良信息未通過(guò)詞條申訴投訴侵權(quán)信息封禁查詢(xún)與解封 ?2018?Baidu?使用百度前必讀?|?百科協(xié)議?|?隱私政策?|?百度百科合作平臺(tái)?|?京ICP證030173號(hào)?
Linux內(nèi)核
編輯目錄
內(nèi)核結(jié)構(gòu)
編輯操作系統(tǒng)是一個(gè)用來(lái)和硬件打交道并為用戶(hù)程序提供一個(gè)有限服務(wù)集的低級(jí)支撐軟件。一個(gè)計(jì)算機(jī)系統(tǒng)是一個(gè)硬件和軟件的共生體,它們互相依賴(lài),不可分割。計(jì)算機(jī)的硬件,含有外圍設(shè)備、處理器、內(nèi)存、硬盤(pán)和其他的電子設(shè)備組成計(jì)算機(jī)的發(fā)動(dòng)機(jī)。但是沒(méi)有軟件來(lái)操作和控制它,自身是不能工作的。完成這個(gè)控制工作的軟件就稱(chēng)為操作系統(tǒng),在Linux的術(shù)語(yǔ)中被稱(chēng)為“內(nèi)核”,也可以稱(chēng)為“核心”。Linux內(nèi)核的主要模塊(或組件)分以下幾個(gè)部分:存儲(chǔ)管理、CPU和進(jìn)程管理、文件系統(tǒng)、設(shè)備管理和驅(qū)動(dòng)、網(wǎng)絡(luò)通信,以及系統(tǒng)的初始化(引導(dǎo))、系統(tǒng)調(diào)用等。版本號(hào)
Linux內(nèi)核使用三種不同的版本編號(hào)方式。第一種方式用于1.0版本之前(包括1.0)。第一個(gè)版本是0.01,緊接著是0.02、0.03、0.10、0.11、0.12、0.95、0.96、0.97、0.98、0.99和之后的1.0。第二種方式用于1.0之后到2.6,數(shù)字由三部分“A.B.C”,A代表主版本號(hào),B代表次主版本號(hào),C代表較小的末版本號(hào)。只有在內(nèi)核發(fā)生很大變化時(shí)(歷史上只發(fā)生過(guò)兩次,1994年的1.0,1996年的2.0),A才變化。可以通過(guò)數(shù)字B來(lái)判斷Linux是否穩(wěn)定,偶數(shù)的B代表穩(wěn)定版,奇數(shù)的B代表開(kāi)發(fā)版。C代表一些bug修復(fù),安全更新,新特性和驅(qū)動(dòng)的次數(shù)。以版本2.4.0為例,2代表主版本號(hào),4代表次版本號(hào),0代表改動(dòng)較小的末版本號(hào)。在版本號(hào)中,序號(hào)的第二位為偶數(shù)的版本表明這是一個(gè)可以使用的穩(wěn)定版本,如2.2.5,而序號(hào)的第二位為奇數(shù)的版本一般有一些新的東西加入,是個(gè)不一定很穩(wěn)定的測(cè)試版本,如2.3.1。這樣穩(wěn)定版本來(lái)源于上一個(gè)測(cè)試版升級(jí)版本號(hào),而一個(gè)穩(wěn)定版本發(fā)展到完全成熟后就不再發(fā)展。第三種方式從2004年2.6.0版本開(kāi)始,使用一種“time-based”的方式。3.0版本之前,是一種“A.B.C.D”的格式。七年里,前兩個(gè)數(shù)字A.B即“2.6”保持不變,C隨著新版本的發(fā)布而增加,D代表一些bug修復(fù),安全更新,添加新特性和驅(qū)動(dòng)的次數(shù)。3.0版本之后是“A.B.C”格式,B隨著新版本的發(fā)布而增加,C代表一些bug修復(fù),安全更新,新特性和驅(qū)動(dòng)的次數(shù)。第三種方式中不再使用偶數(shù)代表穩(wěn)定版,奇數(shù)代表開(kāi)發(fā)版這樣的命名方式。舉個(gè)例子:3.7.0代表的不是開(kāi)發(fā)版,而是穩(wěn)定版![2]
發(fā)展歷史
Linux最早是由芬蘭人Linus Torvalds設(shè)計(jì)的。當(dāng)時(shí)由于UNⅨ的主要 Linux 內(nèi)核發(fā)行版簡(jiǎn)史商業(yè)化,Andrew Tannebaum教授開(kāi)發(fā)了Minix操作系統(tǒng)以便于不受AT&T許可協(xié)議的約束,為教學(xué)科研提供一個(gè)操作系統(tǒng)。當(dāng)時(shí)發(fā)布在Internet上,免費(fèi)給全世界的學(xué)生使用。Minix具有較多UNⅨ的特點(diǎn),但與UNⅨ不完全兼容。1991年10月5日,Linus為了給Minix用戶(hù)設(shè)計(jì)一個(gè)比較有效的UNⅨ PC版本,自己動(dòng)手寫(xiě)了一個(gè)“類(lèi)Minix”的操作系統(tǒng)。整個(gè)故事從兩個(gè)在終端上打印AAAA...和BBBB...的進(jìn)程開(kāi)始的,當(dāng)時(shí)最初的內(nèi)核版本是0.02。Linus Torvalds將它發(fā)到了Minix新聞組,很快就得到了反應(yīng)。Linus Torvalds在這種簡(jiǎn)單的任務(wù)切換機(jī)制上進(jìn)行擴(kuò)展,并在很多熱心支持者的幫助下開(kāi)發(fā)和推出了Linux的第一個(gè)穩(wěn)定的工作版本。1991年11月,Linux0.10版本推出,0.11版本隨后在1991年12月推出,當(dāng)時(shí)將它發(fā)布在Internet上,免費(fèi)供人們使用。當(dāng)Linux非常接近于一種可靠的/穩(wěn)定的系統(tǒng)時(shí),Linus決定將0.13版本稱(chēng)為0.95版本。1994年3月,正式的Linux 1.0出現(xiàn)了,這差不多是一種正式的獨(dú)立宣言。截至那時(shí)為止,它的用戶(hù)基數(shù)已經(jīng)發(fā)展得很大,而且Linux的核心開(kāi)發(fā)隊(duì)伍也建立起來(lái)了。結(jié)構(gòu)屬性
在討論大型而復(fù)雜的系統(tǒng)的體系結(jié)構(gòu)時(shí),可以從很多角度來(lái)審視系統(tǒng)。體系結(jié)構(gòu)分析的一個(gè)目標(biāo)是提供一種方法更好地理解源代碼。Linux 內(nèi)核實(shí)現(xiàn)了很多重要的體系結(jié)構(gòu)屬性。在或高或低的層次上,內(nèi)核被劃分為多個(gè)子系統(tǒng)。Linux 也可以看作是一個(gè)整體,因?yàn)樗鼤?huì)將所有這些基本服務(wù)都集成到內(nèi)核中。這與微內(nèi)核的體系結(jié)構(gòu)不同,后者會(huì)提供一些基本的服務(wù),例如通信、I/O、內(nèi)存和進(jìn)程管理,更具體的服務(wù)都是插入到微內(nèi)核層中的。隨著時(shí)間的流逝,Linux 內(nèi)核在內(nèi)存和 CPU 使用方面具有較高的效率,并且非常穩(wěn)定。但是對(duì)于 Linux 來(lái)說(shuō),最為有趣的是在這種大小和復(fù)雜性的前提下,依然具有良好的可移植性。Linux 編譯后可在大量處理器和具有不同體系結(jié)構(gòu)約束和需求的平臺(tái)上運(yùn)行。一個(gè)例子是 Linux 可以在一個(gè)具有內(nèi)存管理單元(MMU)的處理器上運(yùn)行,也可以在那些不提供MMU的處理器上運(yùn)行。Linux 內(nèi)核的uClinux移植提供了對(duì)非 MMU 的支持。開(kāi)發(fā)規(guī)范
核心的開(kāi)發(fā)和規(guī)范一直是由Linux社區(qū)控制著,版本也是唯一的。實(shí)際上,操作系統(tǒng)的內(nèi)核版本指的是在Linus本人領(lǐng)導(dǎo)下的開(kāi)發(fā)小組開(kāi)發(fā)出的系統(tǒng)內(nèi)核的版本號(hào)。自1994年3月14日發(fā)布了第一個(gè)正式版本Linux 1.0以來(lái),每隔一段時(shí)間就有新的版本或其修訂版公布。Linux將標(biāo)準(zhǔn)的GNU許可協(xié)議改稱(chēng)Copyleft,以便與Copyright相對(duì)照。通用的公共許可(GPL)允許用戶(hù)銷(xiāo)售、拷貝和改變具有Copyleft的應(yīng)用程序。當(dāng)然這些程序也可以是Copyright的,但是你必須允許進(jìn)一步的銷(xiāo)售、拷貝和對(duì)其代碼進(jìn)行改變,同時(shí)也必須使他人可以免費(fèi)得到修改后的源代碼。事實(shí)證明,GPL對(duì)于Linux的成功起到了極大的作用。它啟動(dòng)了一個(gè)十分繁榮的商用Linux階段,還為編程人員提供了一種凝聚力,誘使大家加入這個(gè)充滿(mǎn)了慈善精神的Linux運(yùn)動(dòng)。主要子系統(tǒng)
編輯系統(tǒng)調(diào)用接口
SCI 層提供了某些機(jī)制執(zhí)行從用戶(hù)空間到內(nèi)核的函數(shù)調(diào)用。正如前面討論的一樣,這個(gè)接口依賴(lài)于體系結(jié)構(gòu),甚至在相同的處理器家族內(nèi)也是如此。SCI 實(shí)際上是一個(gè)非常有用的函數(shù)調(diào)用多路復(fù)用和多路分解服務(wù)。在 ./linux/kernel 中您可以找到 SCI 的實(shí)現(xiàn),并在 ./linux/arch 中找到依賴(lài)于體系結(jié)構(gòu)的部分。進(jìn)程管理
進(jìn)程管理的重點(diǎn)是進(jìn)程的執(zhí)行。在內(nèi)核中,這些進(jìn)程稱(chēng)為線(xiàn)程,代表了單獨(dú)的處理器虛擬化(線(xiàn)程代碼、數(shù)據(jù)、堆棧和 CPU寄存器)。在用戶(hù)空間,通常使用進(jìn)程 這個(gè)術(shù)語(yǔ),不過(guò) Linux 實(shí)現(xiàn)并沒(méi)有區(qū)分這兩個(gè)概念(進(jìn)程和線(xiàn)程)。內(nèi)核通過(guò) SCI 提供了一個(gè)應(yīng)用程序編程接口(API)來(lái)創(chuàng)建一個(gè)新進(jìn)程(fork、exec 或 Portable Operating System Interface [POSⅨ] 函數(shù)),停止進(jìn)程(kill、exit),并在它們之間進(jìn)行通信和同步(signal 或者 POSⅨ 機(jī)制)。進(jìn)程管理還包括處理活動(dòng)進(jìn)程之間共享 CPU 的需求。內(nèi)核實(shí)現(xiàn)了一種新型的調(diào)度算法,不管有多少個(gè)線(xiàn)程在競(jìng)爭(zhēng) CPU,這種算法都可以在固定時(shí)間內(nèi)進(jìn)行操作。這種算法就稱(chēng)為 O⑴ 調(diào)度程序,這個(gè)名字就表示它調(diào)度多個(gè)線(xiàn)程所使用的時(shí)間和調(diào)度一個(gè)線(xiàn)程所使用的時(shí)間是相同的。O⑴ 調(diào)度程序也可以支持多處理器(稱(chēng)為對(duì)稱(chēng)多處理器或 SMP)。您可以在 ./linux/kernel 中找到進(jìn)程管理的源代碼,在 ./linux/arch 中可以找到依賴(lài)于體系結(jié)構(gòu)的源代碼。內(nèi)存管理
內(nèi)核所管理的另外一個(gè)重要資源是內(nèi)存。為了提高效率,如果由硬VFS 在用戶(hù)和文件系統(tǒng)之間提供了一個(gè)交換層管理虛擬內(nèi)存,內(nèi)存是按照所謂的內(nèi)存頁(yè) 方式進(jìn)行管理的(對(duì)于大部分體系結(jié)構(gòu)來(lái)說(shuō)都是 4KB)。Linux 包括了管理可用內(nèi)存的方式,以及物理和虛擬映射所使用的硬件機(jī)制。不過(guò)內(nèi)存管理要管理的可不止 4KB緩沖區(qū)。Linux 提供了對(duì) 4KB緩沖區(qū)的抽象,例如 slab 分配器。這種內(nèi)存管理模式使用 4KB緩沖區(qū)為基數(shù),然后從中分配結(jié)構(gòu),并跟蹤內(nèi)存頁(yè)使用情況,比如哪些內(nèi)存頁(yè)是滿(mǎn)的,哪些頁(yè)面沒(méi)有完全使用,哪些頁(yè)面為空。這樣就允許該模式根據(jù)系統(tǒng)需要來(lái)動(dòng)態(tài)調(diào)整內(nèi)存使用。為了支持多個(gè)用戶(hù)使用內(nèi)存,有時(shí)會(huì)出現(xiàn)可用內(nèi)存被消耗光的情況。由于這個(gè)原因,頁(yè)面可以移出內(nèi)存并放入磁盤(pán)中。這個(gè)過(guò)程稱(chēng)為交換,因?yàn)轫?yè)面會(huì)被從內(nèi)存交換到硬盤(pán)上。內(nèi)存管理的源代碼可以在 ./linux/mm 中找到。虛擬文件系統(tǒng)
虛擬文件系統(tǒng)(VFS)是 Linux 內(nèi)核中非常有用的一個(gè)方面,因?yàn)樗鼮槲募到y(tǒng)提供了一個(gè)通用的接口抽象。VFS 在 SCI 和內(nèi)核所支持的文件系統(tǒng)之間提供了一個(gè)交換層。VFS 在用戶(hù)和文件系統(tǒng)之間提供了一個(gè)交換層在 VFS 上面,是對(duì)諸如 open、close、read 和 write 之類(lèi)的函數(shù)的一個(gè)通用 API 抽象。在 VFS 下面是文件系統(tǒng)抽象,它定義了上層函數(shù)的實(shí)現(xiàn)方式。它們是給定文件系統(tǒng)(超過(guò) 50 個(gè))的插件。文件系統(tǒng)的源代碼可以在 ./linux/fs 中找到。文件系統(tǒng)層之下是緩沖區(qū)緩存,它為文件系統(tǒng)層提供了一個(gè)通用函數(shù)集(與具體文件系統(tǒng)無(wú)關(guān))。這個(gè)緩存層通過(guò)將數(shù)據(jù)保留一段時(shí)間(或者隨即預(yù)先讀取數(shù)據(jù)以便在需要是就可用)優(yōu)化了對(duì)物理設(shè)備的訪(fǎng)問(wèn)。緩沖區(qū)緩存之下是設(shè)備驅(qū)動(dòng)程序,它實(shí)現(xiàn)了特定物理設(shè)備的接口。特性
編輯可移植性
盡管Linus Torvalds的初衷不是使Linux成為一個(gè)可移植的操作系統(tǒng),今天的Linux卻是全球被最廣泛移植的操作系統(tǒng)內(nèi)核。從掌上電腦iPad到巨型電腦IBM S/390,甚至于微軟出品的游戲機(jī)XBOX都可以看到Linux內(nèi)核的蹤跡。Linux也是IBM超級(jí)計(jì)算機(jī)Blue Gene的操作系統(tǒng)。Linux可以在以下結(jié)構(gòu)上運(yùn)行:Acorn:Archimedes,A5000和RiscPC系列康柏:Alpha惠普:PA-RISCIA64:英特爾Itanium個(gè)人電腦IBM的S/390和AS/400英特爾80386及之后的兼容產(chǎn)品:80386,80486和整個(gè)奔騰系列;AMD Athlon,Duron,Thunderbird; Cyrix系列。對(duì)英特爾8086,8088,80186,80188和80280芯片的支持正在開(kāi)發(fā)中。Mips摩托羅拉68020及以上: 新的Amigas,一些蘋(píng)果電腦PowerPC:所有較新的蘋(píng)果電腦SPARC和UltraSPARC:太陽(yáng)微系統(tǒng)的工作站Hitachi SuperH: SEGA Dreamcast索尼公司: PlayStation 2微軟公司: XboxARM系列網(wǎng)絡(luò)支持
作為一個(gè)生產(chǎn)操作系統(tǒng)和開(kāi)源軟件,Linux 是測(cè)試新協(xié)議及其增強(qiáng)的良好平臺(tái)。Linux 支持大量網(wǎng)絡(luò)協(xié)議,包括典型的 TCP/IP,以及高速網(wǎng)絡(luò)的擴(kuò)展(大于 1 Gigabit Ethernet [GbE] 和 10 GbE)。Linux 也可以支持諸如流控制傳輸協(xié)議(SCTP)之類(lèi)的協(xié)議,它提供了很多比 TCP 更高級(jí)的特性(是傳輸層協(xié)議的接替者)。動(dòng)態(tài)內(nèi)核
Linux 還是一個(gè)動(dòng)態(tài)內(nèi)核,支持動(dòng)態(tài)添加或刪除軟件組件。被稱(chēng)為動(dòng)態(tài)可加載內(nèi)核模塊,它們可以在引導(dǎo)時(shí)根據(jù)需要(當(dāng)前特定設(shè)備需要這個(gè)模塊)或在任何時(shí)候由用戶(hù)插入。系統(tǒng)管理程序
Linux 最新的一個(gè)增強(qiáng)是可以用作其他操作系統(tǒng)的操作系統(tǒng)(稱(chēng)為系統(tǒng)管理程序)。該系統(tǒng)對(duì)內(nèi)核進(jìn)行了修改,稱(chēng)為基于內(nèi)核的虛擬機(jī)(KVM)。這個(gè)修改為用戶(hù)空間啟用了一個(gè)新的接口,它可以允許其他操作系統(tǒng)在啟用了 KVM 的內(nèi)核之上運(yùn)行。除了運(yùn)行 Linux 的其他實(shí)例之外, Microsoft® Windows® 也可以進(jìn)行虛擬化。惟一的限制是底層處理器必須支持新的虛擬化指令組成
編輯進(jìn)程管理(process management)、 1linux kernel版本升級(jí)定時(shí)器(timer)、 2中斷管理(interrupt management)、 3內(nèi)存管理(memory management)、 4模塊管理(module management)、 5虛擬文件系統(tǒng)接口(VFS layer)、 6文件系統(tǒng)(file system)、 7設(shè)備驅(qū)動(dòng)程序(device driver)、 8進(jìn)程間通信(inter-process communication)、9網(wǎng)絡(luò)管理(network management)、 10系統(tǒng)啟動(dòng)(system init)等操作系統(tǒng)功能的實(shí)現(xiàn)。11發(fā)行版
編輯Linux內(nèi)核的發(fā)展過(guò)程中,我們還不得不提一下各種Linux發(fā)行版的作用,因?yàn)檎撬鼈兺苿?dòng)Linux內(nèi)核的編程教程了Linux的應(yīng)用,從而也讓更多的人開(kāi)始關(guān)注Linux。一些組織或廠(chǎng)家,將Linux系統(tǒng)的內(nèi)核與外圍實(shí)用程序(Utilities)軟件和文檔包裝起來(lái),并提供一些系統(tǒng)安裝界面和系統(tǒng)配置、設(shè)定與管理工具,就構(gòu)成了一種發(fā)行版本(distribution),Linux的發(fā)行版本其實(shí)就是Linux核心再加上外圍的實(shí)用程序組成的一個(gè)大軟件包而已。相對(duì)于Linux操作系統(tǒng)內(nèi)核版本,發(fā)行版本的版本號(hào)隨發(fā)布者的不同而不同,與Linux系統(tǒng)內(nèi)核的版本號(hào)是相對(duì)獨(dú)立的。因此把SUSE、RedHat、Ubuntu、Slackware等直接說(shuō)成是Linux是不確切的,它們是Linux的發(fā)行版本,更確切地說(shuō),應(yīng)該叫做“以L(fǎng)inux為核心的操作系統(tǒng)軟件包”。根據(jù)GPL準(zhǔn)則,這些發(fā)行版本雖然都源自一個(gè)內(nèi)核,并且都有自己各自的貢獻(xiàn),但都沒(méi)有自己的版權(quán)。Linux的各個(gè)發(fā)行版本(distribution),都是使用Linus主導(dǎo)開(kāi)發(fā)并發(fā)布的同一個(gè)Linux內(nèi)核,因此在內(nèi)核層不存在什么兼容性問(wèn)題。每個(gè)版本都不一樣的感覺(jué),只是在發(fā)行版本的最外層才有所體現(xiàn),而絕不是Linux本身特別是內(nèi)核不統(tǒng)一或是不兼容。90年代初期Linux開(kāi)始出現(xiàn)的時(shí)候,僅僅是以源代碼形式出現(xiàn),用戶(hù)需要在其他操作系統(tǒng)下進(jìn)行編譯才能使用。后來(lái)出現(xiàn)了一些正式版本。目前最流行的幾個(gè)正式版本有:SUSE、RedHat、Fedora、Debian、Ubuntu、CentOS、Gentoo,等等。用戶(hù)可根據(jù)自己的經(jīng)驗(yàn)和喜好選用合適的Linux發(fā)行版。原先Linus Torvalds將Linux置于一個(gè)禁止任何商業(yè)行為的條例之下,但之后改用GNU通用公共許可證第二版。該協(xié)議允許任何人對(duì)軟件進(jìn)行修改或發(fā)行,包括商業(yè)行為,只要其遵守該協(xié)議,所有基于Linux的軟件也必須以該協(xié)議的形式發(fā)表,并提供源代碼。Linus Torvalds曾經(jīng)公開(kāi)聲稱(chēng)將Linux置于GNU通用公共許可證之下是他一生中所做的“最好的決定”。常量定義
編輯初始定義
宏phys定義了你的機(jī)器上的地址轉(zhuǎn)換__virt_to_phys()。這個(gè)宏用于把虛擬地址轉(zhuǎn)換為一個(gè)物理地址。通常情況下:phys = virt - PAGE_OFFSET PHYS_OFFSET解壓縮符號(hào)
解壓縮器的地址地址。由于當(dāng)你調(diào)用解壓縮器代碼時(shí),通常關(guān)閉MMU,因此這里并不討論虛擬地址和物理地址的問(wèn)題。通常你在這個(gè)地址處調(diào)用內(nèi)核,開(kāi)始引導(dǎo)內(nèi)核。它不需要在RAM中,只需要位于FLASH或其他只讀或讀/寫(xiě)的可尋址的存儲(chǔ)設(shè)備中。l ZBSSADDR解壓縮器的初始化為0的工作區(qū)的起始地址。必須位于RAM中,解壓縮器會(huì)替你把它初始化為0,此外,需要關(guān)閉MMU。l ZRELADDR解壓縮內(nèi)核將被寫(xiě)入的地址和最終的執(zhí)行地址,必須滿(mǎn)足:__virt_to_phys(TEXTADDR) == ZRELADDR內(nèi)核的開(kāi)始部分被編碼為與位置無(wú)關(guān)的代碼。l INITRD_PHYS放置初始RAM盤(pán)的物理地址。僅當(dāng)你使用bootpImage時(shí)相關(guān)(這是一種非常老的param_struct結(jié)構(gòu))l INITRD_ⅥRT初始RAM盤(pán)的虛擬地址。必須滿(mǎn)足:__virt_to_phys(INITRD_ⅥRT) == INITRD_PHYSl PARAMS_PHYSparam_struct 結(jié)構(gòu)體或tag lis的物理地址,用于給定內(nèi)核執(zhí)行環(huán)境下的不同參數(shù)。內(nèi)核符號(hào)
RAM第一個(gè)BANK的物理地址地址。l PAGE_OFFSETRAM第一個(gè)BANK的虛擬地址地址。在內(nèi)核引導(dǎo)階段,虛擬地址PAGE_OFFSE將被映射為物理地址PHYS_OFFSET,它應(yīng)該與TASK_SIZE具有相同的值。l TASK_SIZE一個(gè)用戶(hù)進(jìn)程的最大值,單位為byte。用戶(hù)空間的堆棧從這個(gè)地址處向下增長(zhǎng)。任何一個(gè)低于TASK_SIZE的虛擬地址對(duì)用戶(hù)進(jìn)程來(lái)說(shuō)都是不可見(jiàn)的,因此,內(nèi)核通過(guò)進(jìn)程偏移對(duì)每個(gè)進(jìn)行進(jìn)行動(dòng)態(tài)的管理。我把這叫做用戶(hù)段。任何高于TASK_SIZE的對(duì)所有進(jìn)程都是相同的,稱(chēng)之為內(nèi)核段。(換句話(huà)說(shuō),你不能把IO映射放在低于TASK_SIZE和PAGE_OFFSET的位置處。)l TEXTADDR內(nèi)核的虛擬起始地址,通常為PAGE_OFFSET 0x8000。內(nèi)核映射必須在此結(jié)束。l DATAADDR內(nèi)核數(shù)據(jù)段的虛擬地址,不能在使用解壓縮器的情況下定義。l VMALLOC_STARTl VMALLOC_END用于限制vmalloc()區(qū)域的虛擬地址。此地址必須位于內(nèi)核段。通常,vmalloc()區(qū)域在最后的虛擬RAM地址以上開(kāi)始VMALLOC_OFFSET字節(jié)。l VMALLOC_OFFSETOffset normally incorporated into VMALLOC_START to provide a hole between virtual RAM and the vmalloc area. We do this to allow out of bounds memory accesses (eg,something writing off the end of the mapped memory map) to be caught. Normally set to 8MB.構(gòu)架宏
pram——指定了RAM起始的物理地址,必須始終存在,并應(yīng)等于PHYS_OFFSET。pio——是供arch/arm/kernel/debug-armv.S中的調(diào)試宏使用的,包含IO的8 MB區(qū)域的物理地址。vio——是8MB調(diào)試區(qū)域的虛擬地址。這個(gè)調(diào)試區(qū)域?qū)⒈晃挥诖a中(通過(guò)MAPIO函數(shù))的隨后的構(gòu)架相關(guān)代碼再次進(jìn)行初始化。l BOOT_PARAMS參見(jiàn) PARAMS_PHYS.l FⅨUP(func)機(jī)器相關(guān)的修正,在存儲(chǔ)子系統(tǒng)被初始化前運(yùn)行。l MAPIO(func)機(jī)器相關(guān)的函數(shù),用于IO區(qū)域的映射(包括上面的調(diào)試區(qū))。l INITIRQ(func)用于初始化中斷的機(jī)器相關(guān)的函數(shù)[3]。詞條圖冊(cè)更多圖冊(cè)詞條圖片(5)參考資料- 1.??Linux內(nèi)核組織官網(wǎng)?.The Linux Kernel Archives[引用日期2014-02-24]
- 2.??linux kernel wiki百科?.wiki[引用日期2013-01-31]
- 3.??Linux內(nèi)核定義的常量?
操作系統(tǒng)專(zhuān)業(yè)著作
糾錯(cuò)深入理解linux內(nèi)核
深入linux內(nèi)核架構(gòu)
linux內(nèi)核完全剖析
linux內(nèi)核設(shè)計(jì)與實(shí)現(xiàn)
深入理解linux虛擬內(nèi)存管理
萊昂氏unix源代碼分析
現(xiàn)代操作系統(tǒng)
linux內(nèi)核源代碼情景分析(下冊(cè))
unix結(jié)構(gòu)分析
計(jì)算機(jī)類(lèi)書(shū)籍
糾錯(cuò)30天自制操作系統(tǒng)
linux內(nèi)核精析
linux內(nèi)核完全注釋
linux內(nèi)核設(shè)計(jì)的藝術(shù)圖解linux操作系統(tǒng)架構(gòu)設(shè)與實(shí)現(xiàn)原理
linux內(nèi)核修煉之道
深度探索linux操作系統(tǒng)
詞條統(tǒng)計(jì)- 瀏覽次數(shù):486069次
- 編輯次數(shù):51次歷史版本
- 最近更新:2017-08-24
- 創(chuàng)建者:raoping2005
猜你關(guān)注
- 如何自學(xué)linux
- 如何學(xué)習(xí)linux
- linux怎么學(xué)
- 網(wǎng)上掙錢(qián)
- 中信銀行怎么貸款
- 房貸計(jì)算器下載
- 計(jì)米器
- 中信銀行在線(xiàn)申請(qǐng)
- 我想上班賺錢(qián)
- 中信銀行網(wǎng)上申請(qǐng)
京公網(wǎng)安備11000002000001號(hào)
編輯收藏贊登錄 分享總結(jié)
以上是生活随笔為你收集整理的Linux内核——百度百科的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 机器学习Tensorflow基于MNIS
- 下一篇: linux——百度百科