自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

嵌入式Linux之獨立核 雙核 修改核 資源核

系統(tǒng) Linux
嵌入式linux 是將日益流行的Linux操作系統(tǒng)進行裁剪修改,使之能在嵌入式計算機系統(tǒng)上運行的一種操作系統(tǒng)。嵌入式linux既繼承了Interlnet上無限的開放源代碼資源,又具有嵌入式操作系統(tǒng)的特性。本文就圍繞嵌入式Linux的獨立核、雙核、修改核、資源核為話題,請看下文。

  嵌入式 Linux是以Linux為基礎(chǔ)的嵌入式作業(yè)系統(tǒng),它被廣泛應(yīng)用在移動電話、個人數(shù)字助理(PDA)、媒體播放器、消費性電子產(chǎn)品以及航空航天等領(lǐng)域中。

       過去很多嵌入式系統(tǒng)不是一個操作系統(tǒng),或者是提供商的專有核心,或者是DOS操作系統(tǒng)的擴展。顯然這些方法并不能適應(yīng)今天嵌入式系統(tǒng)開發(fā)的要求!現(xiàn)有的一些商業(yè)實時操作系統(tǒng),盡管提供了很小的核心和多任務(wù)開發(fā)環(huán)境,但性能并不理想,也不符合現(xiàn)在實時嵌入式市場的需求。

  因此,人們把目光投向了通用操作系統(tǒng)(例如Windows、Solaris、linux),希望把它們“改造”為實時操作系統(tǒng)。通常這些操作系統(tǒng)功能強大,結(jié)構(gòu)復(fù)雜,易于軟件的二次開發(fā),實用性強,并且提供編程人員熟悉的標準API。此外,這些操作系統(tǒng)也提供了一些對實時軟件開發(fā)的支持。然而,這些操作系統(tǒng)用于嵌入式系統(tǒng)的開發(fā)還存在不足。嵌入式系統(tǒng)要求具備高可靠性,滿足應(yīng)用需求的可剪裁性,以及比通用操作系統(tǒng)要求更高的實時性。

  做為嵌入式系統(tǒng)開發(fā)的解決方案,linux在眾多通用操作系統(tǒng)中具有獨一無二的優(yōu)勢。

  首先,Windows和Solaris等專有商業(yè)操作系統(tǒng)的剪裁受到商家的嚴格控制。這大大限制了開發(fā)者的剪裁深度。而linux遵循GPL協(xié)議,開放所有系統(tǒng)源代碼,非常易于剪裁。

  其次,同其它開放源碼的通用操作系統(tǒng)(如FreeBSD)相比,linux在多種處理器、開發(fā)板支持和軟件開發(fā)工具支持上有很強的優(yōu)勢。

  linux最初也是作為通用操作系統(tǒng)而設(shè)計開發(fā)的,但提供了一些實時處理的支持。這包括支持大部分POSIX標準中的實時功能,支持多任務(wù)、多線程,具有豐富的通信機制等。

  linux還提供符合了POSIX標準的調(diào)度策略,包括FIFO調(diào)度策略、時間片輪轉(zhuǎn)調(diào)度策略和靜態(tài)優(yōu)先級搶占式調(diào)度策略。其默認的調(diào)度策略是第三種。Linux還提供了內(nèi)存?üδ埽員苊庠謔凳貝碇寫媧⒁潮換懷觶蔡峁┝朔螾OSIX 標準的實時信號機制。

  一個致命問題是,linux在用戶態(tài)支持可搶占調(diào)度策略,而在核心態(tài)卻不支持搶占式調(diào)度策略。這樣運行在Linux核心態(tài)的任務(wù)(或系統(tǒng)調(diào)用)是不能被其它優(yōu)先級更高的任務(wù)所搶占的,這樣就會引起優(yōu)先級逆轉(zhuǎn)問題。另外,Linux操作系統(tǒng)的中斷處理句柄是不可調(diào)度的,不能依優(yōu)先級高低調(diào)度。而在實時系統(tǒng)中,卻希望中斷處理句柄同實時任務(wù)一樣,可以有優(yōu)先級來被系統(tǒng)的調(diào)度程序所調(diào)度。

  此外,我們還關(guān)心和任務(wù)響應(yīng)時間相關(guān)的時鐘精度,以及由于資源共享而帶來的優(yōu)先級逆轉(zhuǎn)問題。linux中硬件時鐘中斷的默認時間間隔是10ms,所有的軟件時鐘都是靠硬件來觸發(fā)的。而簡單同步機制(互斥)不支持優(yōu)先級繼承又很可能導(dǎo)致優(yōu)先級逆轉(zhuǎn)。

  獨立核方法

  linux作為實時系統(tǒng)的獨立核方法是指設(shè)計一種完全獨立的實時核心,但其API 與Linux核心相兼容。這種方法的理論基礎(chǔ)是一款優(yōu)秀的實時操作系統(tǒng)必須在其設(shè)計之初就充分考慮到系統(tǒng)實時性的要求,并能夠提供符合標準的API。這種實現(xiàn)方法對很多與POSIX 兼容的專有實時系統(tǒng)提供商很有吸引力。

  這種方法的局限性是由于設(shè)計了一個完全獨立的實時核心而沒有使用原有l(wèi)inux核心,導(dǎo)致Linux系統(tǒng)的一些優(yōu)勢難以繼承,尤其是與Linux核心相關(guān)的一些優(yōu)勢無法獲得。比如Linux核心對大量硬件的廣泛支持,Linux核心超群的可靠性、穩(wěn)定性等。另外,由于這種方法并沒有通過修改Linux核心代碼來開發(fā)實時核心,而是在Linux系統(tǒng)之上重新設(shè)計了一個實時核心,這樣的開發(fā)并不要求源代碼開放。因此,Linux一些基于開放源代碼的優(yōu)勢也勢必受損。最后一點,任何基于Linux核心的開發(fā)成果也無法方便地應(yīng)用到實時核心中。

  當然這種實現(xiàn)方法也從linux系統(tǒng)中得到了很多好處。由于Linux系統(tǒng)的支撐,實時核心就并不需要“真”的去實現(xiàn)。而且熟悉Linux系統(tǒng)的開發(fā)人員也可以很快地熟悉這種方法開發(fā)出的實時系統(tǒng)。人們也會自然地想到用Linux系統(tǒng)做嵌入式系統(tǒng)的開發(fā)平臺。此外,如果這種實時系統(tǒng)的API是Linux系統(tǒng)API子集的話,我們還可以只在Linux主機上仿真,進行應(yīng)用程序的開發(fā)和調(diào)試,免去了遠程調(diào)試之苦!

  與linux API的兼容程度是評估這類實時系統(tǒng)的一個重要指標。如果一個實時系統(tǒng)兼容了所有Linux API,那么就允許所有Linux上的應(yīng)用程序和庫在其上運行使用。因此,這將會帶來一個巨大的好處,所有在Linux上可用的第三方軟件均可以在其上使用。當然,開發(fā)一款這樣兼容所有Linux API的實時系統(tǒng)決不是件容易的事,尤其是對于單個開發(fā)商來說。

  所以,大量的第三方軟件并不能很容易地移植到實時系統(tǒng)中來,這點不足,也使linux的優(yōu)勢大打折扣!

  雙核方法

  這種方法在同一硬件平臺上采用了兩個相互配合,共同工作的系統(tǒng)核心,一個核心提供精確的實時多任務(wù)管理,另一個核心提供復(fù)雜的非實時通用功能。

  這種方法是通過在linux操作系統(tǒng)的最底層增加一層實時核心層來實現(xiàn)的。實時核心負責硬件管理并提供實時任務(wù)管理。實時核心還用軟件“模擬”常規(guī)Linux系統(tǒng)對底層硬件的使用/禁止中斷,而不是真正的操作中斷控制寄存器。Linux核心被看做實時核心中優(yōu)先級最低的任務(wù)來調(diào)度,只有當沒有可運行的實時任務(wù)時Linux核心才被調(diào)度。

  這種方法的一個關(guān)鍵所在是運行在常規(guī)linux核心上的所有非實時任務(wù)必須是支持可搶占式調(diào)度的。這樣才能做到對實時核心提供精確實時保證沒有任何影響。由于實時核心非常小,并不會增加整個系統(tǒng)的負載,所有這些對開發(fā)實時性要求嚴格的實時軟件都提供了有力保障。

  這種方法的弊端在于實時任務(wù)的開發(fā)是直接面向提供精確實時服務(wù)的小實時核心的,而不是功能強大的常規(guī)linux核心。因此,實時任務(wù)是運行在系統(tǒng)核心層的,這就意味著這些實時任務(wù)可以運行在沒有內(nèi)存保護的級別之上。所以,一個實時任務(wù)的錯誤可能會導(dǎo)致整個系統(tǒng)的癱瘓!更要命的是,這些實時任務(wù)的開發(fā)由于面對的是小的實時核心,而不能直接利用Linux API和第三方軟件及運行庫。

  這種開發(fā)模式暗示我們必須要對應(yīng)用進行靜態(tài)分解。把它分解成實時部分和非實時部分。在大多情況下,這是件好事情。它迫使開發(fā)人員將應(yīng)用系統(tǒng)分解成實時子系統(tǒng)和非實時子系統(tǒng)兩部分。但很顯然,使用這種開發(fā)模式也限制了應(yīng)用的類型!因為,這種用二元論觀點看待實時系統(tǒng)的方法并不適合所有的應(yīng)用。在一些應(yīng)用中,實時部分和非實時部分的界線并不是十分分明,期間可能存在著不同程度的軟實時部分。

  這種方法的另一個不足之處是,開發(fā)模式混合了實時應(yīng)用的兩個不相干維度——功能需求和實時需求。它要求應(yīng)用的實時需求必須限制于由實時核心提供的功能需求限度以內(nèi)。而實時核心提供的功能支持非常有限。當然我們也可以擴展實時核心的功能,比如增加實時網(wǎng)絡(luò)功能等。然而,新增加的部分很有可能會重疊linux核心已有功能,而導(dǎo)致了不必要的系統(tǒng)“膨脹”,并折損這種方法的價值。

#p#

  修改核方法

  這種方法是基于已有l(wèi)inux系統(tǒng)對實時軟件開發(fā)的支持,進行源代碼級修改而使Linux變成一個真正的實時操作系統(tǒng)。這種方法也是和Linux哲學相吻合的。任何基于Linux核心源代碼修改的產(chǎn)品,都要遵循GPL 協(xié)議,對所有軟件人員開放源代碼。一旦很多人認為它是有用的,就會有人對它進行維護,或者是混合在通用Linux核心中,或者是單獨分出一個實時Linux分支。

  這種方法的中心原則是精心選擇部分改動,就可以滿足一系列相關(guān)linux實時開發(fā)。此外,由于這些改動都是相對局部的,不會從根本上改變Linux的核心。而且一些改動還可以通過常規(guī)Linux的可加載模塊方式完成。在需要時系統(tǒng)可以動態(tài)加載該功能模塊,在不需要時還可以動態(tài)卸載該模塊。

  比如,修改之一是核心搶占式調(diào)度。把核心從非搶占式變成搶占式是結(jié)構(gòu)上的大變動,并可能引起很多問題,但很多問題已經(jīng)在linux支持SMP 的時候解決了。因此,核心的搶占式修改就可以簡單地利用SMP 掛鉤。另一個修改點是前面提到過的使中斷處理句柄可調(diào)度。還有一些修改是全局的,例如修改系統(tǒng)時鐘服務(wù)來提供更高精度的“心跳”,而不增加不必要的系統(tǒng)負載,或者是提供在核心實現(xiàn)互斥機制來支持優(yōu)先級繼承。

  資源核方法

  這種方法是為解決傳統(tǒng)實時操作系統(tǒng)中固定優(yōu)先級搶占式調(diào)度策略的局限性而產(chǎn)生的。固定優(yōu)先級搶占式調(diào)度算法沒有任務(wù)間的臨時保護。因此,可預(yù)見的任務(wù)響應(yīng)時間依賴于對所有更高優(yōu)先級任務(wù)執(zhí)行時間的預(yù)測。在這樣的系統(tǒng)中,可預(yù)見性是與全局相關(guān)的,并且可能被一個糟糕任務(wù)而影響的。此外,這種用靜態(tài)觀點看待實時系統(tǒng)也是不妥的。在很多實時應(yīng)用中,更希望實時系統(tǒng)可以根據(jù)應(yīng)用程序獲得資源動態(tài)地調(diào)整任務(wù)屬性,以求得到最優(yōu)效果。

  資源核方法是一種以資源為中心來指導(dǎo)實時核心提供精確的、有保證的、可搶占的獲取系統(tǒng)資源的方法。只要實時應(yīng)用所需資源可以由核心后臺資源管理程序調(diào)配滿足,實時核心是允許實時應(yīng)用可配置的。因此,實時核心其實是提供了實時應(yīng)用可構(gòu)建的基礎(chǔ)——從配置簡單的實時系統(tǒng)到復(fù)雜的實時系統(tǒng),都可以通過動態(tài)地改變實時任務(wù)屬性和它們在整個系統(tǒng)中的優(yōu)先級來滿足。

  這種方法的最大優(yōu)點是系統(tǒng)具有很好的健壯性、可精確預(yù)見的實時性。另一個優(yōu)點是允許應(yīng)用程序根據(jù)實際情況動態(tài)調(diào)整自身屬性。此外,這種方法非常適合嵌入式系統(tǒng)的開發(fā)。

通過上文我們了解了嵌入式Linux的四種核心方法:獨立核 雙核 修改核 資源核。希望對大家有幫助。

【編輯推薦】

  1. ARM嵌入式Linux系統(tǒng)開發(fā)詳解
  2. 嵌入式linux系統(tǒng)開發(fā)總結(jié)
  3. 嵌入式Linux系統(tǒng)開發(fā)教程
  4. 細說嵌入式Linux文件系統(tǒng)的制作方法
  5. 最近流行的幾種嵌入式Linux
  6. 詳解嵌入式Linux的優(yōu)點
  7. 一步步寫嵌入式操作系統(tǒng)--ARM編程的方法與實踐
  8. 如何成為微軟嵌入式MVP最有價值專業(yè)人士

 

 

 

責任編輯:趙鵬 來源: 網(wǎng)絡(luò)轉(zhuǎn)載
相關(guān)推薦

2009-03-24 10:53:09

Nehalem四核

2012-09-07 14:42:20

2012-02-01 17:28:34

戴爾筆記本

2011-05-07 16:09:55

上網(wǎng)本華碩EeePC 101

2023-11-10 15:47:06

線性回歸內(nèi)核技巧

2009-09-04 11:26:00

英特爾虛擬化

2009-03-24 13:55:46

四核雙核服務(wù)器

2009-04-18 14:52:54

雙核四核服務(wù)器

2009-03-22 18:54:08

多核未來

2009-05-14 08:58:11

處理器IntelAMD

2011-08-23 12:01:20

海爾一體機

2018-06-20 11:13:00

Intel8核22核

2009-07-28 19:28:37

四核CPU多核

2009-06-26 17:33:00

雙核刀片多核

2013-12-18 11:04:57

CPU雙核

2011-04-28 10:35:51

上網(wǎng)本東芝REGZA Table

2009-02-18 13:03:00

PT6280D2雙核節(jié)能服務(wù)器

2020-07-21 09:05:47

CPU1號核寄存器

2009-12-17 10:14:39

12核AMD6核Intel馬尼庫爾

2009-04-07 13:50:38

Nehalem四核雙核
點贊
收藏

51CTO技術(shù)棧公眾號