為什么linux的內(nèi)核用c不用c++

為什么linux的內(nèi)核用c不用c++

最主要的原因是C語言寫的程序你能大致知道編譯器會做些什么,但C++的程序則會完全失控,你根本不知道編譯器會在背后做多少事情,這對于linux內(nèi)核這樣的底層程序來說是很成問題的另外,盡管C++在某些方面給開發(fā)者提供便利,但C語言如果用得好很多時候也能達(dá)到與之相當(dāng)?shù)谋憷潭萀inus Torvalds本人也反對使用C++開發(fā)內(nèi)核,據(jù)說他曾經(jīng)也試過C++,不過沒搞成功,以后應(yīng)該也不會再折騰了

linux內(nèi)核是用什么語言編寫的?

Linux操作系統(tǒng)主要包括內(nèi)核和組件系統(tǒng)。Linux內(nèi)核大部分是用C語言編寫的,還有部分是用匯編語言寫的,因?yàn)樵趯τ谟布?,匯編有更好的性能和速度。

Linux的一些組件系統(tǒng)和附加應(yīng)用程序是用C、C++、Python、perl等語言寫的。

擴(kuò)展資料:
Linux與其他操作系統(tǒng)相比 ,具有開放源碼、沒有版權(quán)、技術(shù)社區(qū)用戶多等特點(diǎn) ,開放源碼使得用戶可以自由裁剪,靈活性高,功能強(qiáng)大,成本低。尤其系統(tǒng)中內(nèi)嵌**協(xié)議棧 ,經(jīng)過適當(dāng)?shù)呐渲镁涂蓪?shí)現(xiàn)路由器的功能。這些特點(diǎn)使得Linux成為開發(fā)路由交換設(shè)備的理想開發(fā)平臺。
Linux不僅系統(tǒng)性能穩(wěn)定,其核心防火墻組件性能高效、配置簡單,保證了系統(tǒng)的安全。

在很多企業(yè)**中,為了追求速度和安全,Linux操作系統(tǒng)不僅僅是被**運(yùn)維人員當(dāng)作服務(wù)器使用,Linux既可以當(dāng)作服務(wù)器,又可以當(dāng)作**防火墻是Linux的 一大亮點(diǎn)。

linux為什么用c語言

百科

C編譯的機(jī)器碼運(yùn)行效率高,同時C源碼可以模擬面向?qū)ο蟮膶懛???偟膩碚f,C是各方面比較均衡的語言,很適合編寫操作系統(tǒng)這種既注重性能又規(guī)模龐大的軟件。

另外,Linux內(nèi)核也不全是用C語言寫的,與平臺有關(guān)的部分,必要時采用相應(yīng)平臺的匯編語言來寫。

求解,如今的Linux內(nèi)核還是用C語言寫的嗎?

是C語言寫的,但不調(diào)用C標(biāo)準(zhǔn)庫。因?yàn)镃標(biāo)準(zhǔn)庫編出來5M左右,而一個內(nèi)核有時候只有1M甚至更少。

所以不會用C標(biāo)準(zhǔn)庫。

為什么現(xiàn)在的操作系統(tǒng)基本上用C語言來實(shí)現(xiàn)

因?yàn)槿绻陂_發(fā)時間和軟件效率之間取一個平衡點(diǎn)的話,開發(fā)操作系統(tǒng)的平衡點(diǎn)就是C語言。除了C語言以外,其它語言都不具備某些特性、不夠方便、軟件效率不高。

寫操作系統(tǒng)需要編程語言提供以下幾個特征:1、跨平臺,不能是只在某個平臺下編譯(VB就不行);2、必須是編譯型語言(PHP就不行),或者有一個非常高效的解釋器;3、必須有方便的操作硬件的功能,容易嵌入?yún)R編(Java就不行);4、兼容性要好,**不同編譯器編譯的符號要基本相同,容易鏈接(C++不行,如果放棄Class的話C++基本可以);5、編譯器本身**是由該語言自己完成的(大部分語言的編譯器都是用C/C++寫的);6、開發(fā)者可以很方便的擴(kuò)展、改造、或者使用第三方的運(yùn)行庫(大部分語言的庫都無法修改);7、開發(fā)者眾多(小眾語言就不行);8、該語言開發(fā)操作系統(tǒng)的資料要足夠完善。

所以總結(jié)下來,C語言是**。當(dāng)然了,不是說其它語言一定不行,只是其它語言開發(fā)操作系統(tǒng)時會有各種各樣的不方便的地方,因?yàn)橛腥司陀肑ava+匯編來實(shí)現(xiàn)一個操作系統(tǒng),也不是不可以,只是很麻煩。(參見寫操作系統(tǒng)只能用匯編和C語言? – 北極的回答)而由于最早開發(fā)操作系統(tǒng)的時候選用了C語言,而且一直延續(xù)了下來。不管是習(xí)慣還是語言特性,C語言一直都很符合條件,因此沒有必要冒著各種風(fēng)險換一種語言來開發(fā)。

補(bǔ)充,如果使用C++寫操作系統(tǒng),并不是特別困難。C++的問題在于混合編譯時符號表比較麻煩(VC和GCC生成的全局符號名字不一樣),C++的運(yùn)行效率略低于C,所以一般沒有人用C++去寫內(nèi)核。但是Windows里確實(shí)存在著使用C++寫的驅(qū)動,也算是屬于操作系統(tǒng)的一部分吧。

什么叫做內(nèi)核編譯,為什么要進(jìn)行內(nèi)核編譯呢?

對開源操作系統(tǒng)(主要是指Linux)的內(nèi)核源代碼在本機(jī)進(jìn)行有針對性的編譯,就叫做內(nèi)核編譯。編譯內(nèi)核的目的主要是改變內(nèi)核的默認(rèn)選項(xiàng),比如內(nèi)核原來不支持某硬件,原因是內(nèi)核的相應(yīng)選項(xiàng)默認(rèn)狀態(tài)是disactivated,需要改變。

當(dāng)然,也有人把新版的linux裝在舊機(jī)子上。

這樣,許多在內(nèi)核里activated的硬件,他沒有,將來也不需要。那么,就可以在內(nèi)核里去掉。以及一些服務(wù)、特殊的功能等等,如果用不著,比如機(jī)子是服務(wù)器的話,**在內(nèi)核里關(guān)掉,\”精兵簡政\”。這是以系統(tǒng)安全和提高效率為目的。

有專門的工具對其進(jìn)行編譯。這個問題不是幾句話能說明白的??茨愕奶釂柧椭滥闶莿倓倢W(xué)習(xí)這些內(nèi)容,建議不要好高騖遠(yuǎn),先把c語言學(xué)好,然后再研究這些東西。