<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 學(xué)習(xí)Linux,這些內(nèi)核常識你應(yīng)該要知道

          學(xué)習(xí)Linux,這些內(nèi)核常識你應(yīng)該要知道

          作者: 時間:2018-01-18 來源:網(wǎng)絡(luò) 收藏

            一、功能、發(fā)行版

          本文引用地址:http://www.ex-cimer.com/article/201801/374602.htm

            1、到底什么是操作系統(tǒng)

            (1)linux、windows、android、ucos就是操作系統(tǒng);

            (2)操作系統(tǒng)本質(zhì)上是一個程序,由很多個源文件構(gòu)成,需要編譯連接成操作系統(tǒng)程序(vmlinz、zImage);

            (3)操作系統(tǒng)的主要作用就是管理計(jì)算機(jī)硬件,給應(yīng)用程序提供一個運(yùn)行環(huán)境。

            2、操作系統(tǒng)核心功能(管理資源)

            (1)內(nèi)存管理

            如果沒有操作系統(tǒng),內(nèi)存需要程序自己來管理。譬如在uboot中要使用哪塊內(nèi)存,由程序自己決定的,沒有注冊也沒有限制。此時如果程序不小心把同一塊內(nèi)存重復(fù)使用,就會出現(xiàn)程序邏輯錯誤。

            有了操作系統(tǒng)之后,操作系統(tǒng)負(fù)責(zé)管控所有的內(nèi)存。應(yīng)用程序需要使用內(nèi)存時,都要向操作系統(tǒng)去申請和注冊,由操作系統(tǒng)的內(nèi)存管理模塊來分配內(nèi)存。這樣好處是可以保證內(nèi)存使用不會沖突。

            (2)進(jìn)程調(diào)度

            操作系統(tǒng)下支持多個應(yīng)用程序同時運(yùn)行,這是宏觀上的并行。實(shí)際上在單核心CPU上微觀上是不能并行的,宏觀上的并行就是操作系統(tǒng)提供的分時復(fù)用機(jī)制。操作系統(tǒng)的進(jìn)程調(diào)度模塊負(fù)責(zé)在各個進(jìn)程之間進(jìn)行切換。

            (3)硬件設(shè)備管理

            沒有操作系統(tǒng)時,控制任何硬件都要自己寫代碼,有了操作系統(tǒng)后操作系統(tǒng)本身會去控制各個硬件,應(yīng)用程序就不用考慮硬件的具體細(xì)節(jié)了。

            操作系統(tǒng)的硬件設(shè)備管理模塊就是驅(qū)動模塊。

            (4)文件系統(tǒng)

            文件系統(tǒng)是管理存儲設(shè)備的一種方式。存儲設(shè)備由很多扇區(qū)組成,每個扇區(qū)有512/1024/2048/4096字節(jié),存儲設(shè)備以扇區(qū)為單位進(jìn)行讀寫。如果沒有文件系統(tǒng),程序要自己去讀寫扇區(qū),就得記得哪個文件在哪個扇區(qū)。有了文件系統(tǒng)之后,我們不用再關(guān)注某個文件在物理磁盤的哪個扇區(qū),只用關(guān)注文件系統(tǒng)中的目錄和文件名。

            3、操作系統(tǒng)擴(kuò)展功能

            (1)協(xié)議棧

            (2)有用的應(yīng)用程序包

            應(yīng)用程序本身不屬于操作系統(tǒng)的一部分。

            應(yīng)用程序是給人用的,面向某種功能的,譬如ping程序用來測試網(wǎng)絡(luò)是否聯(lián)通,ifconfig程序用來配置網(wǎng)卡。

            4、內(nèi)核和發(fā)行版的區(qū)別

            (1)內(nèi)核是操作系統(tǒng)內(nèi)核的簡稱。

            內(nèi)核負(fù)責(zé)實(shí)現(xiàn)操作系統(tǒng)的核心功能,內(nèi)核不包括應(yīng)用程序。

            因此只有內(nèi)核是無法使用的,因?yàn)樽鋈魏问虑槎际峭ㄟ^相應(yīng)的應(yīng)用程序來完成的。

            賣操作系統(tǒng)的人把內(nèi)核和一些常用的應(yīng)用程序打包在一起提供給普通用戶,這就是操作系統(tǒng)的發(fā)行版(也就是普通意義上的操作系統(tǒng))。

            (2)內(nèi)核只有一個(www.kernel.org),發(fā)行版有很多(集成不同的應(yīng)用程序,譬如ubuntu、redhat、suse、centos……)。

            二、內(nèi)核和驅(qū)動的關(guān)聯(lián)

            1、學(xué)習(xí)linux的思路

            (1)對龐大的整體要有個認(rèn)識。學(xué)習(xí)路線就是先建立框架和整體,然后逐漸去學(xué)習(xí)各個細(xì)節(jié)部分,逐步細(xì)化。

            (2)對各分層的作用要清楚。

            (3)對層次間的關(guān)聯(lián)和互相調(diào)用要理解。

            2、驅(qū)動屬于內(nèi)核的一部分

            (1)驅(qū)動就是內(nèi)核中的硬件設(shè)備管理模塊,屬于發(fā)展非常活躍的部分。

            (2)驅(qū)動工作在內(nèi)核態(tài)(cpu在跑操作系統(tǒng))(與用戶態(tài)(cpu在跑應(yīng)用程序)的區(qū)別:權(quán)限不同)

            (3)驅(qū)動程序故障可能導(dǎo)致整個內(nèi)核崩潰。

            (4)驅(qū)動程序漏洞會使內(nèi)核不安全。

            三、內(nèi)核和應(yīng)用程序、根文件系統(tǒng)的關(guān)聯(lián)

            1、應(yīng)用和內(nèi)核的關(guān)系

            (1)應(yīng)用程序不屬于內(nèi)核,而是在內(nèi)核之上的;

            (2)應(yīng)用程序工作在用戶態(tài),是受限制的;

            (3)應(yīng)用程序故障不會導(dǎo)致內(nèi)核崩潰;

            (4)應(yīng)用程序通過內(nèi)核定義的API接口來調(diào)用內(nèi)核工作

            (5)總結(jié):應(yīng)用程序是最終目標(biāo),內(nèi)核就是為應(yīng)用程序提供底層資源管理的服務(wù)員

            2、內(nèi)核和根文件系統(tǒng)

            (1)根文件系統(tǒng)提供根目錄;屬于內(nèi)核?NO!

            (2)進(jìn)程1存放在根文件系統(tǒng)中,進(jìn)程1會使得內(nèi)核態(tài)變?yōu)橛脩魬B(tài)。

            (3)內(nèi)核啟動最后會去裝載根文件系統(tǒng);

            (4)總結(jié):根文件系統(tǒng)為操作系統(tǒng)啟動提供了很多必備的資源,如根目錄、進(jìn)程1。

            四、linux內(nèi)核的模塊化設(shè)計(jì)

            1、什么是模塊化設(shè)計(jì)

            (1)因?yàn)閘inux內(nèi)核很龐大,代碼量很大、東西很多,如果設(shè)計(jì)時完全設(shè)計(jì)成一體(各個文件、各個函數(shù)之間緊耦合),復(fù)雜度超出了人所能理解的范圍。所以模塊化設(shè)計(jì)是一種必要。

            (2)模塊化設(shè)計(jì)就是內(nèi)核中各個功能模塊在代碼上是彼此獨(dú)立的,譬如說調(diào)度系統(tǒng)和內(nèi)存管理系統(tǒng)之間并沒有全局變量的互相引用,甚至函數(shù)互相調(diào)用也很少,就算有也是遵循一個接口規(guī)范的。模塊化設(shè)計(jì)的目的就是實(shí)現(xiàn)功能模塊的松耦合。

            2、模塊化設(shè)計(jì)的體現(xiàn)

            (1)配置時可裁剪。linux內(nèi)核在編譯之前可以進(jìn)行配置,配置時可以選擇將組成內(nèi)核的成千上萬個模塊每一個要或者不要。要了之后還有更多的一些細(xì)節(jié)的配置。

            (2)模塊化編譯和安裝。為了操作方便,從靜態(tài)的升級逐漸變成了動態(tài)的升級(不需要重啟系統(tǒng),更不需要重新燒錄系統(tǒng))。這種動態(tài)的升級也是由模塊化來支持的。

            (3)源碼中使用條件編譯。這種在uboot中已經(jīng)見過了。

            3、模塊化設(shè)計(jì)的好處

            (1)功能可裁剪、靈活性;

            (2)可擴(kuò)展性(動態(tài)安裝卸載、新硬件支持);

            (3)利于協(xié)作;

            4、模塊化設(shè)計(jì)是一種普遍性的系統(tǒng)設(shè)計(jì)原則

            五、選擇合適版本的內(nèi)核

            1、linux內(nèi)核版本變遷簡史

            (1)linux0.01。初版

            (2)linux0.11。很多講linux內(nèi)核源代碼解析的書都是以這個版本為原本來講。《圖解linux內(nèi)核設(shè)計(jì)的藝術(shù)》

            (3)linux2.4。比較接近現(xiàn)代的版本,很多經(jīng)典的書都是以2.4版本內(nèi)核為參照的,譬如《LDD3》。

            linux2.4的晚期內(nèi)核在前幾年還會經(jīng)常碰到有用的。

            (4)linux2.6早期。2.6的早期和2.4晚期內(nèi)核挺像的。

            (5)linux2.6晚期。2.6的晚期內(nèi)核較早期內(nèi)核有一些改變,尤其是驅(qū)動相關(guān)的部分和一些頭文件的位置。2.6的晚期內(nèi)核目前還算是比較主流。

            (6)linux3.x 4.x

            2、如何選擇合適的內(nèi)核版本

            (1)并不是越新版本的內(nèi)核越好;

            (2)選擇SoC廠家移植版本會減少工作量。

            3、S5PV210適用的內(nèi)核版本

            (1)2.6.35.7 + android2.3/QT4.8.3

            (2)3.0.8 + android4.0

            4、本課程使用2.6.35.7版本內(nèi)核講解



          關(guān)鍵詞: Linux 內(nèi)核

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();