linux內(nèi)核是什么 Linux驅(qū)動(dòng)開(kāi)發(fā)前為什么要配置編譯內(nèi)核?
Linux驅(qū)動(dòng)開(kāi)發(fā)前為什么要配置編譯內(nèi)核?最后,驅(qū)動(dòng)程序以*的形式生成。insmod的本質(zhì)是將Ko文件與正在運(yùn)行的內(nèi)核相鏈接。鏈接過(guò)程類(lèi)似于編譯HelloWorld。必須編譯鏈接以確定所需的外部符號(hào)(
Linux驅(qū)動(dòng)開(kāi)發(fā)前為什么要配置編譯內(nèi)核?
最后,驅(qū)動(dòng)程序以*的形式生成。insmod的本質(zhì)是將Ko文件與正在運(yùn)行的內(nèi)核相鏈接。鏈接過(guò)程類(lèi)似于編譯HelloWorld。必須編譯鏈接以確定所需的外部符號(hào)(導(dǎo)出)是否存在符號(hào),因?yàn)槟承┓?hào)(函數(shù)或全局變量)在內(nèi)核中。如果在驅(qū)動(dòng)程序中使用這些符號(hào),則必須保留一個(gè)位置。insmod時(shí),必須進(jìn)一步確定這些符號(hào)的具體位置(符號(hào)綁定)。如果內(nèi)核還沒(méi)有編譯,那么如何知道這些符號(hào)是否已經(jīng)被編程到內(nèi)核中?有關(guān)這些知識(shí),請(qǐng)參閱IBMdeveloperWorks上面的“Linux可加載內(nèi)核模塊分析”和相關(guān)文章。
Linux為什么還要堅(jiān)持使用宏內(nèi)核?
Linux來(lái)自UNIX,您可能知道。UNIX是一類(lèi)系統(tǒng)的總稱(chēng),宏內(nèi)核架構(gòu),有自己的常規(guī)實(shí)現(xiàn)標(biāo)準(zhǔn),如系統(tǒng)調(diào)用方式。最經(jīng)典的UNIX系統(tǒng)是sun的Solaris,它是所有UNIX特性的集合。
Linux遵循UNIX的內(nèi)核體系結(jié)構(gòu)和系統(tǒng)實(shí)現(xiàn)模式,但它是為當(dāng)前PC嵌入式設(shè)備定制和配置的。形象地說(shuō),Linux是UNIX的弟弟。它具有UNIX的一些特性。
Red hat是基于Linux內(nèi)核的客戶(hù)機(jī)系統(tǒng),它是Linux的一種。此外,還有Fedora、Ubuntu等。基于UNIX的有Solaris、HP-UX、system-5等。
另外,虛擬機(jī)群產(chǎn)品超便宜
windows采用微內(nèi)核架構(gòu),比Linux更先進(jìn)。Linux是內(nèi)核,它是一個(gè)垃圾堆。如果你把所有東西都放進(jìn)去,會(huì)有更多的人輾轉(zhuǎn)反側(cè),而且開(kāi)源是相對(duì)穩(wěn)定的。
現(xiàn)有的windows體系結(jié)構(gòu)實(shí)際上來(lái)自windows NT,NT體系結(jié)構(gòu)來(lái)自Dec。Dec architects將大約50人的團(tuán)隊(duì)轉(zhuǎn)移到Microsoft并組織人員進(jìn)行開(kāi)發(fā)。其中一個(gè)團(tuán)隊(duì)成員是一位女士,她什么也不做,只是參加了架構(gòu)技術(shù)會(huì)議,記錄了整個(gè)開(kāi)發(fā)過(guò)程,還寫(xiě)了一本書(shū)叫《windowsnt技術(shù)內(nèi)幕》,這本書(shū)是我20年前讀研究生時(shí)讀的。NT有POSIX子系統(tǒng),可以直接運(yùn)行UNIX程序。但是,發(fā)展是不完整的,沒(méi)有要求。微軟并沒(méi)有把重點(diǎn)放在這一點(diǎn)上。NT是最強(qiáng)大的微內(nèi)核系統(tǒng)和安全機(jī)制。后來(lái)為了提高性能,做了一些讓步,將顯示子系統(tǒng)內(nèi)置到內(nèi)核中。
windows最終會(huì)完全采用linux內(nèi)核嗎?
1. 學(xué)習(xí)一些操作系統(tǒng)的理論知識(shí)和概念。例如:進(jìn)程、內(nèi)存管理、文件系統(tǒng)等。這方面的書(shū)太多了,你自己找一本吧。2學(xué)習(xí)x86匯編。盡管Linux使用at&t匯編,但兩者的格式不同。學(xué)習(xí)x86匯編語(yǔ)言有助于理解x86系統(tǒng)結(jié)構(gòu)。這本書(shū)推薦王爽的匯編語(yǔ)言。我學(xué)的時(shí)候沒(méi)用這個(gè)。當(dāng)我后來(lái)看到這本書(shū)時(shí),我覺(jué)得我做了“艱苦的工作”。在學(xué)習(xí)了大部分匯編指令后,找一些匯編程序來(lái)閱讀,熟悉這些指令的使用。不需要有編寫(xiě)匯編程序的能力,可以在線(xiàn)閱讀,當(dāng)然會(huì)寫(xiě)得更好3趙炯的《Linux內(nèi)核0.11完整說(shuō)明》。Linux內(nèi)核版本較低,作者也對(duì)此進(jìn)行了詳細(xì)的說(shuō)明。不過(guò),關(guān)于X86系統(tǒng)的部分,筆者表示非常繁瑣,這部分一定要大致了解,那么后面章節(jié)的內(nèi)容就不會(huì)有太大的問(wèn)題。我先讀了這本書(shū),花了我一個(gè)月的時(shí)間。后來(lái),我又一個(gè)一個(gè)地回去學(xué)習(xí),用了兩個(gè)月。我之所以讀這本書(shū),是為了讓自己對(duì)核心有一個(gè)真實(shí)的感受,而不僅僅是理論上的東西。4茅德操的Linux內(nèi)核場(chǎng)景分析。Linux內(nèi)核2.4.0版,這本書(shū)很厚,兩卷。我花了兩個(gè)月的時(shí)間通讀。后來(lái),我又去了一個(gè)又一個(gè)的書(shū)房?,F(xiàn)在已經(jīng)用了兩個(gè)月了,正在研究中。。。。在我看來(lái),Linux內(nèi)核最困難的部分是內(nèi)存管理。在過(guò)去的兩個(gè)月里,我只對(duì)內(nèi)存頁(yè)的周轉(zhuǎn)做了一個(gè)大概的了解,但是如果我對(duì)這個(gè)有了一個(gè)清晰的了解,我會(huì)對(duì)內(nèi)核的整體結(jié)構(gòu)有一個(gè)大概的了解,因?yàn)槟呀?jīng)清楚地說(shuō)明了用戶(hù)進(jìn)程和內(nèi)核的其他部分是如何使用內(nèi)存頁(yè)的。學(xué)習(xí)Linux內(nèi)核最重要的是堅(jiān)持和思考。這是一個(gè)漫長(zhǎng)的過(guò)程。也許你會(huì)發(fā)現(xiàn)學(xué)習(xí)Linux內(nèi)核不會(huì)給你帶來(lái)任何東西。我覺(jué)得我現(xiàn)在什么都做不了。我真的希望有人能給我一些建議!然而,學(xué)習(xí)也是有益的。例如,在閱讀了趙炯的《Linux內(nèi)核0.11的完整注解》之后,你可以去UCOSII,覺(jué)得它太簡(jiǎn)單了!也許學(xué)習(xí)Linux內(nèi)核會(huì)對(duì)以后的工作有所幫助!