Ⅰ 以後汽車上的系統真的會換成華為的鴻蒙嗎
的確可能的,不過現在還說不清楚。可用在汽車中控屏上、使用更方便的「鴻蒙」操作系統來了!8月9日,華為正式發布傳聞已久的自有操作系統「鴻蒙」。鴻蒙系統將率先應用在車載設備、車聯網、智慧屏以及智能手錶、智能手機等智能終端上,也是可應用於汽車自動駕駛、智能輔助駕駛的一種操作系統。
其四,安全性高。之前一般的操作系統要求終端的內存至少要達到3GB,鴻蒙系統屬「微內核」技術,不僅佔用空間小,而且安全性能高。在安全系數上,目前的操作系統大多為2級,最多為3級或4級,鴻蒙系統可以達到5+級。
Ⅱ 鴻蒙系統到底是什麼呀
兼容安卓,一切問題應該不大,方舟編譯器中可以看出端倪,華為原本布局可能是過幾年推出鴻蒙,現在沒辦法,只能如此了,再說一句,華為挺過這一次,離按著蘋果打的日子不遠了,別忘了,思科已經被按死在地上了,華為一旦超越,就不會讓你有冒頭的機會。如果華為進入北美市場,思科估計已經涼透了。
我對這個系統企望還是蠻大的,畢竟很有可能這是一個手機,電腦,平板等等通用的一個系統。華為手機的投屏所展示的那種界面,還有老羅吹逼的TNT,說不定真的能在華為這個鴻蒙身上實現。大膽吹一波牛逼,這個系統可能是未來中國電腦的主流系統,不僅僅是手機。
反正以後必然是移動端的天下,哈哈
Ⅲ 華為鴻蒙系統2.0,這個操作系統相比較安卓有哪些優勢
華為鴻蒙系統2.0,這個操作系統相比較安卓的優勢有主要是:鴻蒙OS 2.0版本系統安裝華為方舟編譯器。全球首款微內核操作系統。鴻蒙OS 2.0版本系統適配更多的智能硬體。
3、鴻蒙OS 2.0版本系統適配更多的智能硬體。
鴻蒙OS 2.0版本系統幾乎沒有軟體跟它不兼容,能跟很多智能硬體成為最佳合作小夥伴。而且鴻蒙OS 2.0版本系統在控制功耗方面、系統運行速度流暢方面都是數一數二的。
Ⅳ 華為手機將全面適配鴻蒙2.0,它有何優勢
2020年9月10日,華為對外宣布啟用鴻蒙OS 2.0版本系統,跟鴻蒙OS1.0版本相比,這次升級帶來更多的功能,不再是單一使用在智慧屏路由器上,搭配的范圍更加廣,來讓我們一起談一下OS 2.0版本系統的優勢。
03、優勢三:鴻蒙OS 2.0版本系統適配更多的智能硬體。鴻蒙OS 2.0版本系統幾乎沒有軟體跟它不兼容,能跟很多智能硬體成為最佳合作小夥伴。而且鴻蒙OS 2.0版本系統在控制功耗方面、系統運行速度流暢方面都是數一數二的,實在是牛B中牛B。
04、總結一下。鴻蒙OS 2.0版本系統在2020年12月就全面上線,2021年華為就全部使用鴻蒙OS 2.0版本系統,這真是令人值得高興的事兒,期待鴻蒙OS 2.0版本系統面世。
Ⅳ 座機電腦系統
我們常說的系統通常是指操作系統。
一、計算機軟體與操作系統
功能強大的計算機自從走進了人類的生活就發揮著越來越重要的作用,隨著時代的發展,計算機已與人們的日常生活息息相關。不能不說計算機軟體日新月異的發展在此起著關鍵作用。可以這么說,離開了軟體,計算機就成了廢銅爛鐵。
計算機機軟體大致可以分為兩類:系統軟體和應用軟體。
系統軟體用於管理計算機資源,並為應用軟體提供一個統一的平台。
應用軟體則在系統軟體的基礎上實現用戶所需要的功能。
而操作系統(Operating System,簡稱os)則是最基本的系統軟體,它控制計算機的所有資源並提供應用程序開發的基礎。
二、操作系統誕生的原因
計算機是由CPU、內存、磁碟、顯卡、音效卡等許許多多設備組成的,而且這些設備的廠商眾多,品種繁多,而且不同廠商生產的同種設備雖然完成同種功能,但是具體細節卻存在千差萬別。
為了正確地管理和使用這些設備來實現具體的應用,這樣程序員就得了解和掌握各種設備的工作原理。而且對於同種設備,由於不同的硬體廠商在實現細節上的差異使得程序員再次陷入了復雜的硬體控制的深淵。
必須找到一種方法使得程序員從苦海中脫離出來!多年的研究與發展終於使得這個願望成為現實。這個解決方法就是在硬體的基礎上載入一層軟體來管理整個系統。這個軟體通過設備驅動程序來與計算機硬體打交道,通過一系列的功能模塊將整個計算機硬體系統抽象成為一個公共、統一、開放的介面—虛擬機,從而使得程序員不必再陷入各種硬體系統的具體細節!
這一層軟體就是操作系統。
三、什麼是操作系統
操作系統是一個大型的軟體系統,其功能復雜,體系龐大。從不同的角度看的結果也不同,正是「橫看成嶺側成峰」,下面我們通過最典型的兩個角度來分析一下。
1.從程序員的角度看
正如前面所說的,如果沒有操作系統,程序員在開發軟體的時候就必須陷入復雜的硬體實現細節。程序員並不想涉足這個可怕的領域,而且大量的精力花費在這個重復的、沒有創造性的工作上也使得程序員無法集中精力放在更具有創造性的程序設計工作中去。程序員需要的是一種簡單的,高度抽象的可以與之打交道的設備。
將硬體細節與程序員隔離開來,這當然就是操作系統。
從這個角度看,操作系統的作用是為用戶提供一台等價的擴展機器,也稱虛擬機,它比底層硬體更容易編程。
2.從使用者的角度看 操作系統則用來管理一個復雜系統的各個部分。
操作系統負責在相互競爭的程序之間有序地控制對CPU、內存及其它I/O介面設備的分配。
比如說,假設在一台計算機上運行的三個程序試圖同時在同一台列印機上輸出計算結果。那麼頭幾行可能是程序1的輸出,下幾行是程序2的輸出,然後又是程序3的輸出等等。最終結果將是一團糟。這時,操作系統採用將列印輸出送到磁碟上的緩沖區的方法就可以避免這種混亂。在一個程序結束後,操作系統可以將暫存在磁碟上的文件送到列印機輸出。
從這種角度來看,操作系統則是系統的資源管理者。
四、操作系統發展歷史
下面我們結合計算機的發展歷史來回顧一下操作系統的發展歷程。
1.第一代計算機(1945-1955):真空管和插件板
40年代中期,美國哈佛大學、普林斯頓高等研究院、賓夕法尼亞大學的一些人使用數萬個真空管,構建了世界上第一台電子計算機。開啟計算機發展的歷史。這個時期的機器需要一個小組專門設計、製造、編程、操作、維護每台機器。程序設計使用機器語言,通過插板上的硬連線來控制其基本功能。
這個時候處於計算機發展的最初階段,連程序設計語言都還沒有出現,操作系統更是聞所未聞!
2.第二代計算機(1955-1965):晶體管和批處理系統
這個時期計算機越來越可靠,已從研究院中走出來,走進了商業應用。但這個時期的計算機主要完成各種科學計算,需要專門的操作人員維護,並且需要針對每次的計算任務進行編程。
第二代計算機主要用於科學與工程計算。使用FORTRAN與匯編語言編寫程序。在後期出現了操作系統的雛形:FMS(FORTRAN監控系統)和IBMSYS(IBM為7094機配備的操作系統)
3.第三代計算機(1965-1980):集成電路晶元和多道程序
60年代初,計算機廠商根據不同的應用分成了兩個計算機系列,一個針對科學計算,一個針對商業應用。
隨著計算機應用的深入,對統一兩種應用的計算機需求出現了。這時IBM公司試圖通過引入System/360來解決這個問題。
與這個計劃配套,IBM公司組織了OS/360操作系統的開發,然後復雜的需求,以及當時軟體工程水平低下使得OS/360的開發工作陷入了歷史以來最可怕的「軟體開發泥潭」,誕生了最著名的失敗論著----《神秘的人月》。
雖然這個開發計劃失敗了,但是這個願望卻成為了計算機廠商的目標。
此時,MIT、Bell Lab(貝爾實驗室)和通用電氣公司決定開發一種「公用計算機服務系統」----MULTICS,希望其能同時支持數百名分時用戶的一種機器。結果這個計劃的研製難度超出了所有人的預料,最後這個系統也以失敗結束。不過,MULTICS的思想卻為後來的操作系統很多提示。
60年代未,一位貝爾實驗室曾參加過MULTICS研製工作的計算機科學家Ken Thompson,在一台無人使用的PDP-7機器上開發出了一套簡化的、單用戶版的MULTICS。後來導致了UNIX操作系統的誕生。
目前UNIX操作系統主導了小型機、工作站以及其他市場。也是至今最有影響力的操作系統之一,而linux也是UNIX系統的一種衍生。
4.第四代計算機(1980-今):個人計算機
隨著計算機技術的不斷更新與發展,計算機神奇般地闖入了人們的生活,現在以低廉的價格就可以獲得強大計算能力的計算機。
價格不再是阻攔計算機普及的門檻時,降低計算機的易用性就顯得十分重要!由於UNIX系統的本身特點,使得其不太適合於在運行在個人計算機上,這時就需要一種新的操作系統。
在這一歷史關鍵時候,IBM公司由於低估了PC機的市場,並未使用最大的力量角逐這一市場,這時Intel公司趁機進入,成為了當今微處理器的老大。同時善於抓住時機的微軟公司的總裁比爾·蓋茨適時地進入了這一領域,用購買來的CP/M搖身一變成為MS-DOS,並憑借其成為個人計算機操作系統領域的霸主。
雖然是蘋果公司在GUI方面先拔頭籌,但由於蘋果公司的不兼容、不開放的市場策略,未能擴大戰果,這時微軟又適時地進入了GUI方面,憑借WINDOWS系統再次稱雄!
五、操作系統構成
一般來說,操作系統由以下幾個部分組成:
1)進程調度子系統:
進程調度子系統決定哪個進程使用CPU,對進程進行調度、管理。
2)進程間通信子系統:
負責各個進程之間的通信。
3)內存管理子系統:
負責管理計算機內存。
4)設備管理子系統:
負責管理各種計算機外設,主要由設備驅動程序構成。
5)文件子系統:
負責管理磁碟上的各種文件、目錄!
6)網路子系統:
負責處理各種與網路有關的東西。
六、操作系統結構設計
操作系統有多種實現方法與設計思路,下面僅選取最有代表性的三種做一簡單的敘述。
1.整體式系統結構設計
這是最常用的一種組織方式,它常被譽為「大雜燴」,也可說,整體式系統結構就是「無結構」。
這種結構方式下,開發人員為了構造最終的目標操作系統程序,首先將一些獨立的過程,或包含過程的文件進行編譯,然後用鏈接程序將它們鏈接成為一個單獨的目標程序。
Linux操作系統就是採用整體式的系統結構設計。但其在此基礎上增加了一些形如動態模塊載入等方法來提高整體的靈活性,彌補整體式系統結構設計的不足。
2.層次式系統結構設計
這種方式則是對系統進行嚴格的分層,使得整個系統層次分明,等級森嚴!這種系統學術味道較濃!實際完全按照這種結構進行設計的操作系統不多,也沒有廣泛的應用。
可以這么說,現在的操作系統設計是在整體式系統結構與層次式系統結構設計中尋求平衡。
3.微內核系統結構設計
而微內核系統結構設計則是近幾年來出現的一種新的設計理念,最有代表性的操作系統有Mach和QNX。
微內核系統,顧名思義就是系統內核很小!比如說QNX的微內核只負責:
¨ 進程間的通信
¨ 低層的網路通信
¨ 進程調度
¨ 第一級中斷處理
七、操作系統橫向比較
計算機歷史中出現了許許多多的操作系統,然後大浪淘沙,無情地淘汰了許多,只留下一些經歷過市場考驗的:
1.桌面操作系統:
1)MSDOS:Intel x86系列的PC機上的最早的操作系統,微軟公司產品,曾經統治了這個領域,現在已逐漸被自家兄弟WINDOWS 9x系列所代替,現在除了一些低檔機外已不多見。
2)Windows 9x:微軟公司產品,從Windows 3.x發展而來,現在是基於Intel x86系列的PC機上的主要操作系統,也是現然個人電腦中裝機量最大的操作系統。面向桌面、面向個人用戶。
3)Mac OS:蘋果公司所有,界面友好,性能優異,但由於只能運行在蘋果公司自己的電腦上而發展有限。但由於蘋果電腦獨特的市場定位,現在仍存活良好。
[1]4)linux:Linux是一種計算機操作系統和它的內核的名字。它也是自由軟體和開放源代碼發展中最著名的例子。
嚴格來講,Linux這個詞本身只表示Linux內核,但在實際上人們已經習慣了用Linux來形容整個基於Linux內核,並且使用GNU 工程各種工具和資料庫的操作系統(也被稱為GNU/Linux)。基於這些組件的Linux軟體被稱為Linux發行版。一般來講,一個Linux發行套件包含大量的軟體,比如軟體開發工具,資料庫,Web伺服器(例如Apache),X Window,桌面環境(比如GNOME和KDE),辦公套件(比如OpenOffice.org),等等。
2.伺服器操作系統:
1)UNIX系列:UNIX可以說是源遠流長,是一個真正穩健、實用、強大的操作系統,但是由於眾多廠商在其基礎上開發了有自己特色的UNIX版本,所以影響了整體。在國外,UNIX系統可謂獨樹一幟,廣泛應用於科研、學校、金融等關鍵領域。但由於中國的計算機發展較為落後,UNIX系統的應用水平與國外相比有一定的滯後。
2)Windows NT系列:微軟公司產品,其利用Windows的友好的用戶界面的優勢打進伺服器操作系統市場。但其在整體性能、效率、穩定性上都與UNIX有一定差距,所以現在主要應用於中小企業市場。
3)Novell Netware系列:Novell公司產品,其以極適合於中小網路而著稱,在中國的證券行業市場佔有率極高,而且其產品特點鮮明,仍然是伺服器系統軟體中的長青樹。
系統 xìtǒng [system]∶按一定的關系組成的同類事物
Ⅵ 什麼情況下需要手動編譯 Linux 內核
啟動要載入驅動模塊,就要先確定有這個模塊存在,然後載入它做一些准備。所以要編譯內核。。。
內核是操作系統最基本的部分。它是為眾多應用程序提供對計算機硬體的安全訪問的一部分軟體,這種訪問是有限的,並且內核決定一個程序在什麼時候對某部分硬體操作多長時間。內核的分類可分為單內核和雙內核以及微內核。嚴格地說,內核並不是計算機系統中必要的組成部分。
Ⅶ macbook 有沒有類似 Ubuntu 下 apt-get 功能的命令,vim有沒有,gcc編譯器怎麼按 內核在哪裡
首先, 樓上的2B們, 沒用過MAC別來廢話行不?
Mac是BSD內核, 有類似apt-get的東西, 或者確切的說是ports, 如果你用過Gentoo Linux的話就會知道. 還是很好用的, 不過更新會比apt-get和launchpad慢一些.
vim, gcc, emacs都是有的. 而且和linux下使用的體驗基本一樣. 不過個人推薦你在mac下用textmate喲, 這個編輯器是非常強大的~
嵌入內核模塊應該是做不到的, 當然你可以換內核, 不過這很不安全.
因為linux和mac的內核結構不一樣, mac是微內核.
另外, 你如果喜歡linux的話, 用mac絕對不會後悔. 他幫你解決了許許多多在linux下會遇到的麻煩事, 總之就是幫你做出了很多的選擇.
而且mac下的虛擬機很好用. 可以實現無縫雙系統(不需要切換, 指定程序的運行模式就可以)
也有x11, linux下的多數軟體在編譯之後都可以使用的.
謝謝.
Ⅷ 操作系統是如何編寫的用什麼語言編寫的
操作系統使用C語言和匯編編寫的,Windows,UNIX,Linux都是這樣的。絕大部分是C,極少情況使用匯編。
操作系統的編寫需要與硬體廠商緊密配合,兩者相輔相成。操作系統的實現要對硬體作出假設,硬體的設計要對操作系統的使用做出假設。所以開發操作系統很大的難度就是要和眾多硬體設備供應商保持緊密的合作。
編寫操作系統,和開發應用程序很大的不同是,他沒有平台的庫函數使用,很多時候是直接面向硬體,而且不是像應用程序是靠事件來驅動,而是靠中端機制來促使操作系統運行
Ⅸ 我是新手,請問什麼是內核,幹嘛用的
內核是操作系統最基本的部分。它是為眾多應用程序提供對計算機硬體的安全訪問的一部分軟體,這種訪問是有限的,並且內核決定一個程序在什麼時候對某部分硬體操作多長時間。直接對硬體操作是非常復雜的,所以內核通常提供一種硬體抽象的方法來完成這些操作。硬體抽象隱藏了復雜性,為應用軟體和硬體提供了一套簡潔,統一的介面,使程序設計更為簡單。
嚴格地說,內核並不是計算機系統中必要的組成部分。程序可以直接地被調入計算機中執行,這樣的設計說明了設計者不希望提供任何硬體抽象和操作系統的支持,它常見於早期計算機系統的設計中。最終,一些輔助性程序,例如程序載入器和調試器,被設計到機器核心當中,或者固化在只讀存儲器里。這些變化發生時,操作系統內核的概念就漸漸明晰起來了。
一個更重要的問題是,什麼人才要了解內核。或者說,對內核的了解程度,會怎樣影響一個人的工作,畢竟,它是復雜的。
[編輯本段]內核分類
單內核 它為潛在的硬體提供了大量完善的硬體抽象操作。
微內核 只提供了很小一部分的硬體抽象,大部分功能由一種特殊的用戶態程序:伺服器來完成。
混合內核 它很像微內核結構,只不過它的的組件更多的在核心態中運行,以獲得更快的執行速度。
外內核 這種內核不提供任何硬體抽象操作,但是允許為內核增加額外的運行庫,通過這些運行庫應用程序可以直接地或者接近直接地對硬體進行操作。
單內核
單內核結構在硬體之上定義了一個高階的抽象界面,應用一組原語(或者叫系統調用)來實現操作系統的功能,例如進程管理,文件系統,和存儲管理等等,這些功能由多個運行在核心態的模塊來完成。
盡管每一個模塊都是單獨地服務這些操作,內核代碼是高度集成的,而且難以編寫正確。因為所有的模塊都在同一個內核空間上運行,一個很小的bug都會使整個系統崩潰。然而,如果開發順利,單內核結構就可以從運行效率上得到好處。
很多現代的單內核結構內核,如Linux和FreeBSD內核,能夠在運行時將模塊調入執行,這就可以使擴充內核的功能變得更簡單,也可以使內核的核心部分變得更簡潔。
單內核結構的例子:
1.傳統的UNIX內核,例如伯克利大學發行的版本
2.Linux內核
微內核
微內核結構由一個非常簡單的硬體抽象層和一組比較關鍵的原語或系統調用組成,這些原語僅僅包括了建立一個系統必需的幾個部分,如 線程管理,地址空間和進程間通信等。
微核的目標是將系統服務的實現和系統的基本操作規則分離開來。例如,進程的輸入/輸出鎖定服務可以由運行在微核之外的一個服務組件來提供。這些非常模塊化的用戶態伺服器用於完成操作系統中比較高級的操作,這樣的設計使內核中最核心的部分的設計更簡單。一個服務組件的失效並不會導致整個系統的崩潰,內核需要做的,僅僅是重新啟動這個組件,而不必影響其它的部分
微內核將許多OS服務放入分離的進程,如文件系統,設備驅動程序,而進程通過消息傳遞調用OS服務.微內核結構必然是多線程的,第一代微內核,在核心提供了較多的服務,因此被稱為'胖微內核',它的典型代表是MACH,它既是GNU HURD也是APPLE SERVER OS 的核心,可以說,蒸蒸日上.第二代為微內核只提供最基本的OS服務,典型的OS是QNX,QNX在理論界很有名,被認為是一種先進的OS.
微內核的例子:
1.AIX
2.BeOS
3.L4微內核系列
4.Mach, 用於GNU Hurd和Mac OS X
5.Minix
6.MorphOS
7.QNX
8.RadiOS
9.VSTa
單內核與微內核的比較
單內核結構是非常有吸引力的一種設計,由於在同一個地址空間上實現所有低級操作的系統控制代碼的復雜性的效率會比在不同地址空間上實現更高些。
20世紀90年代初,單內核結構被認為是過時的。把Linux設計成為單內核結構而不是微內核引起了無數的爭議。
現在,單核結構正趨向於容易被正確設計,所以它的發展會比微內核結構更迅速些。兩個陣營中都有成功的案例。微核經常被用於機器人和醫療器械的嵌入式設計中,因為它的系統的關鍵部分都處在相互分開的,被保護的存儲空間中。這對於單核設計來說是不可能的,就算它採用了運行時載入模塊的方式。
盡管Mach是眾所周知的多用途的微內核,人們還是開發了除此之外的幾個微內核。L3是一個演示性的內核,只是為了證明微內核設計並不總是低運行速度。它的後續版本L4甚至可以將Linux內核在單獨的地址空間作為它的一個進程來運行。
QNX是一個從20世紀80年代就開始設計的微內核系統。它比Mach更接近微內核的理念。它被用於一些特殊的領域,在這些情況下由於軟體錯誤導致系統失效是不允許的。例如太空梭上的機械手,還有研磨望遠鏡鏡片的機器,一點點失誤就會導致上千美元的損失。
很多人相信,由於Mach不能夠解決一些提出微內核理論時針對的問題,所以微內核技術毫無用處。Mach的愛好者表明這是非常狹隘的觀點,遺憾的是似乎所有人都開始接受這種觀點。
混合內核
混合內核實質上是微內核,只不過它讓一些微核結構運行在用戶空間的代碼運行在內核空間,這樣讓內核的運行效率更高些。這是一種妥協做法,設計者參考了微內核結構的系統運行速度不佳的理論。然而後來的實驗證明,純微內核的系統實際上也可以是高效率的。大多數現代操作系統遵循這種設計范疇,微軟視窗就是一個很好的例子。另外還有XNU,運行在蘋果Mac OS X上的內核,也是一個混合內核。
混合內核的例子:
BeOS 內核
DragonFly BSD
ReactOS 內核
Windows NT、Windows 2000、Windows XP、Windows Server 2003以及Windows Vista等基於NT技術的操作系統
XNU
一些人認為可以在運行時載入模塊的單核系統和混合內核系統沒有區別。這是不正確的。混合意味著它從單核和微核系統中都吸取了一定的設計模式,例如一些非關鍵的代碼在用戶空間運行,另一些在內核空間運行,單純是為了效率的原因。
外內核
外內核系統,也被稱為縱向結構操作系統,使一種比較極端的設計方法。
它的設計理念是讓用戶程序的設計者來決定硬體介面的設計。外內核本身非常的小,它通常只負責系統保護和系統資源復用相關的服務。
傳統的內核設計(包括單核和微核)都對硬體作了抽象,把硬體資源或設備驅動程序都隱藏在硬體抽象層下。比方說,在這些系統中,如果分配一段物理存儲,應用程序並不知道它的實際位置。
而外核的目標就是讓應用程序直接請求一塊特定的物理空間,一塊特定的磁碟塊等等。系統本身只保證被請求的資源當前是空閑的,應用程序就允許直接存取它。既然外核系統只提供了比較低級的硬體操作,而沒有像其他系統一樣提供高級的硬體抽象,那麼就需要增加額外的運行庫支持。這些運行庫運行在外核之上,給用戶程序提供了完整的功能。
理論上,這種設計可以讓各種操作系統運行在一個外核之上,如Windows和Unix。並且設計人員可以根據運行效率調整系統的各部分功能。
現在,外核設計還停留在研究階段,沒有任何一個商業系統採用了這種設計。幾種概念上的操作系統正在被開發,如劍橋大學的Nemesis,格拉斯哥大學的Citrix系統和瑞士計算機科學院的一套系統。麻省理工學院也在進行著這類研究。
[編輯本段]無核
TUNES Project和UnununiumOS都進行無內核的嘗試. 無內核的系統is not limited to a single centralizing entry point.
[編輯本段]參考
操作系統
[編輯本段]內核發展中的改進
紅旗5就是2.6內核了,期待中
轉:期待已久的2.6內核終於到來了。IBMLinuxTechnologyCenter的PaulLarson暗中關注那些讓2.6成為有史以來最好內核的工具、測試和技術——從修正控制和回歸測試到缺陷追蹤和列表保持。
經過為期三年的積極開發,新2.6Linux內核最近已經發布了,在這期間,Linux內核的開發和測試方法發生了一些有趣的變化。當前,開發內核的方法在很多方面與三年前沒什麼不同。不過,一些關鍵變化已經使整體的穩定性和質量得到了提高。
源代碼管理
歷史上,從來沒有出現過用於Linux內核的正式的源代碼管理或修正控制系統。實際上,很多開發者實現了他們自己的修正控制器,但是並沒有官方的LinuxCVS檔案庫,讓LinusTorvalds檢查加入代碼,並讓其他人可以由此獲得代碼。修正控制器的缺乏,常常會使發行版本之間存在「代溝」,沒有人真正知道加入了哪些改變,這些改變是否能很好地融合,或者在即將發行的版本中哪些新內容是值得期待的。通常,如果更多的開發者可以像了解他們自己所做的改變一樣了解到那些變化,某些問題就可以得到避免。
由於缺乏正式的修正控制器和源代碼管理工具,使得很多人提議使用一個名為BitKeeper的產品。BitKeeper是一個源代碼控制管理系統,很多內核開發者已經成功地將其應用於他們自己的內核開發工作中。最初的2.5內核發布後不久,LinusTorvalds開始試用BitKeeper,以確定它是否能滿足他的需要。現在,主要的2.4和2.5內核的Linux內核源代碼都是用BitKeeper來管理的。對大部分可能很少或者根本不關心內核開發的用戶來說,這一點看起來可能無關緊要。不過,在一些情況下,用戶可以受益於那些由於使用BitKeeper而帶來的開發Linux內核的方法的改變。
使用BitKeeper的最大好處之一是補丁的融合。當多個補丁應用於同一基礎的代碼之上,並且其中一些補丁會對同一部分產生影響時,就可能會出現融合問題。一個好的源代碼管理系統可以自動地完成其中一些更為復雜的部分工作,這樣可以更快地融合補丁,並使更多的補丁加入到內核中。隨著Linux內核開發者社區的擴大,非常需要修正控制器來幫助保持對所有改變的追蹤。由於每個人都可以將這些改變集成到主要的Linux內核中,為保證補丁不會被遺忘並可以方便地融合和管理,BitKeeper等工具是必不可少的。
非常有必要使用一個實時的、集中的檔案庫來保存對Linux內核的最新更新。每一個被內核接受的改變或者補丁都被作為一個改變集被追蹤。終端用戶和開發者可以保存他們自己的源文件檔案庫,並根據需要可以通過一個簡單的命令用最新的改變集進行更新。對開發者來說,這意味著可以始終使用最新的代碼拷貝。測試人員可以使用這些邏輯的改變集合來確定哪些變化導致了問題的產生,縮短調試所需要的時間。甚至那些希望使用最新內核的用戶也可以直接利用實時的、集中的檔案庫,因為現在一旦他們所需要的部件或缺陷修復加入到內核中,他們就可以馬上進行更新。當代碼融合到內核時,任何用戶都可以提供關於這些代碼的即時反饋和缺陷報告。
並行開發
隨著Linux內核的成長,變得更加復雜,而且吸引更多開發者將注意力集中到內核的特定方面的專門開發上來,出現了另一個開發Linux方法的有趣改變。在2.3內核版本的開發期間,除了由LinusTorvalds發行的主要的一個內核樹之外,還有一些其他的內核樹。
在2.5的開發期間,內核樹出現了爆炸式的增長。由於使用源代碼管理工具可以保持開發的同步並行進行,這樣就可能實現開發的部分並行化。為了讓其他人在他們所做的改變被接受之前可以進行測試,有一些開發需要並行化。那些保持自己的樹的內核維護者致力於特定的組件和目標,比如內存管理、NUMA部件、改進擴展性和用於特定體系結構的代碼,還有一些樹收集並追蹤對許多小缺陷的糾正。
圖1.Linux2.5開發樹
這種並行開發模型的優點是,它使得需要進行重大改變的開發者,或者針對一個特定的目標進行大量類似改變的那些開發者可以自由地在一個受控環境中開發,而並不影響其他人所用內核的穩定性。當開發者完成工作後,他們可以發布針對Linux內核當前版本的補丁,以實現到此為止他們所完成的改變。這樣,社區中的測試人員就可以方便地測試這些改變並提供反饋。當每一部分都被證明是穩定的之後,那些部分可以單獨地,或者甚至同時全部地,融合到主要Linux內核中。
在實際應用中測試
過去,Linux內核測試方法圍繞開放源代碼開發模型進行。由於代碼一經發布後就公開給其他開發者進行審查,因此從來沒有出現過一個與其他形式的軟體開發類似的正式的驗證周期。這種方法背後的理論依據是「TheCathedralandtheBazaar」中所謂的「Linus法則」(請查閱參考資料以獲得相關的參考),這一法則的內容為「眾人的眼光是雪亮的」。換句話說,高力度的審查可以找出大部分真正的大問題。
然而實際上,內核有很多復雜的相互聯系。即使進行了足夠力度的審查,還是會漏過很多嚴重的缺陷。此外,最新的內核一經發布,終端用戶可以(也經常是)下載並使用。2.4.0發布時,社區中很多人都提議進行更有組織的測試,以保證特定測試和代碼審查的強度。有組織的測試包括運用測試計劃、測試過程中的可重復性等等。使用所有的三種方法比最初只使用兩種方法會帶來更高的代碼質量。
Linux測試項目
最早對Linux開始進行有組織測試的貢獻者是Linux測試項目(LinuxTestProject,LTP)。這個項目的目的是通過更有組織的測試方法提高Linux的質量。這個測試項目的一部分是自動測試套件的開發。LTP開發的主要測試套件也叫做Linux測試項目。2.4.0內核發布時,LTP測試套件只有大約100個測試。隨著2.4和2.5版本Linux的發展與成熟,LTP測試套件也正在發展和成熟。當前,Linux測試項目包括超過2000個測試,而且這個數字還在增長!
代碼覆蓋分析
現在所使用的新工具為內核提供了代碼覆蓋分析的功能。覆蓋分析告訴我們,在一個給定的測試運行時,內核中哪些行代碼被執行。更重要的是,覆蓋分析提示了內核的哪些部分還根本沒有被測試到。這個數據是重要的,因為它指出了需要再編寫哪些新測試來測試內核的那些部分,以使內核可以得到更完備的測試。
持續多日的內核回歸測試
在2.5的開發周期中,Linux測試項目所採用的另一個項目是,用LTP測試套件對Linux內核執行持續多日的回歸測試。人們用BitKeeper創建了一個實時的、集中的檔案庫,以隨時可以獲得Linux內核的快照。在沒有使用BitKeeper和快照時,測試人員不得不等到內核發布後才可以開始測試。現在,內核只要發生了改變,測試人員就可以進行測試。
使用自動化工具來執行持續多日的回歸測試的另一個優點是,和上一次測試相比變化較小。如果發現了一個新的回歸缺陷,通常會容易地檢測出這個缺陷可能是哪個改變導致的。
同樣,由於是最新的改變,因此它在開發者的腦海中印象還比較深——希望這能讓他們更容易地記起並修訂相應的代碼。或許Linus法則應該有這樣一個結論,有一些缺陷比其他缺陷更容易被發現,因為那些正是持續多日的內核回歸測試所發現並處理的那些。在開發周期中和實際發布之前能夠每天進行這些測試,這就使那些只關注完整發行版本的測試者可以將精力集中於更嚴重和耗時的缺陷。
可擴展測試平台
另外一個名為開放源代碼開發實驗室(OpenSourceDevelopmentLabs,OSDL)的團隊也為Linux測試做出了重要的貢獻。2.4內核發布後不久,OSDL創建了一個叫做可擴展測試平台(ScalableTestPlatform,STP)的系統。STP是一個自動化的測試平台,讓開發者和測試者可以運行OSDL硬體之上的系統所提供的測試。開發者甚至可以使用這個系統來測試他們自己的針對內核的補丁。可擴展測試平台簡化了測試的步驟,因為STP可以構建內核、設置測試、運行測試,並收集結果。然後得到結果以進行深入地比較。很多人無法接觸大型系統,比如具有8個處理器的SMP機器,而通過STP,任何人都可以在像這樣的大型系統上運行測試,這個系統(STP)的另一個好處就在於此。
追蹤缺陷
自從2.4發布以來,對Linux內核的有組織測試最大的改進之一是缺陷追蹤。過去,在Linux內核中發現的缺陷會報告給Linux內核郵件列表,報告給特定組件或者特定體系的郵件列表,或者直接報告給維護發現缺陷的那部分代碼的個人。隨著開發和測試Linux的人數的增加,這個系統的不足之處很快就暴露了出來。在以前,除非人們對缺陷的報告可以驚人地維持下去,缺陷經常被遺漏、遺忘或者忽略。
現在,OSDL安裝了一個缺陷追蹤系統(請參閱參考資料中的鏈接),來報告和追蹤Linux內核的缺陷。系統經過了配置,這樣當某個組件的缺陷被報告時,那個組件的維護者就會得到通知。維護者既可以接受並修復那個缺陷,或重新指定缺陷(如果最終確定實際上那是內核另外一部分的缺陷),也可以排除它(如果最終確定並不是真正的缺陷,比如錯誤配置的系統)。報告給郵件列表的缺陷還有丟失的危險,因為越來越多的電子郵件湧向那個列表。然而,在缺陷追蹤系統中,始終有對每一個缺陷及其當前狀態的記錄。
大量信息
在為將來的2.6Linux內核進行開的過程中,除了這些自動化的信息管理方法之外,開放源代碼社區的不同成員還收集和追蹤了數量驚人的信息。
例如,在KernelNewbies站點上創建了一個狀態列表,來保持對已經提出的內核新部件的追蹤。這個列表包含了以狀態排序的條目,如果它們已經完成了,則說明它們已經包含在哪個內核中,如果還沒有完成,則指出還需要多長時間。列表上很多條目的鏈接指向大型項目的Web站點,或者當條目較小時,鏈接指向一個解釋相應部件的電子郵件信息的拷貝。
內核版本歷史
到現在我們很多人已經熟悉了Linux內核的版本編號系統,不過AndriesBrouwer提醒了我們實際上它是如何不規則的。
Linux的第一個公開版本是1991年10月的0.02版本。兩個月以後,在1991年12月,Linus發布了0.11版本,這是第一個可以不依賴於Minix就可以使用的獨立內核。
0.12版本發布一個月以後,在3月,版本號跳到了0.95,反映出系統正變得成熟。不僅如此,直到兩年後,也就是1994年3月,具有里程碑意義的1.0.0才完成。
大約從這時起開始使用兩「路」編號方法標注內核的開發。偶數號的內核(比如1.0、2.2、2.4,現在是2.6)是穩定的,「產品」型號。同時,奇數號的內核版本(1.1、2.3)是前沿的或者「發展中的」內核。直接最近,一個穩定的內核發布以後幾個月就開始新內核的開發工作。然而,2.5的開發工作是在2.4完成後幾ten個月以後才開始的。
那麼我們什麼時候可以期待2.7呢?這不好說,不過在KernelTrap已經有了一個討論的頭緒。
在那之前,您可以閱讀RagibHasan的文章以深入了解Linux的歷史。
同時,「post-halloween文檔」告訴用戶即將到來的2.6內核有哪些可期待的東西(參閱參考資料中的鏈接)。post-halloween文檔的大部分討論內容是用戶需要注意的主要改變,以及需要更新的系統工具(為了利用它們)。關心這一信息人的主要是那些期望提前了解2.6內核中有哪些內容的Linux發行商,還有終端用戶,這可以讓他們確定為了能利用新部件是否有需要升級的程序。
KernelJanitors項目保持了(實際上現在還在保持)一個列表,內容是需要修復的較小缺陷和解決方法。這些缺陷解決方法中大部分是由於向內核打較大的補丁時需要改動很多部分代碼而導致的,比如有些地方會影響設備驅動程序。那些新近從事內核開發的人開始時的工作可以選擇列表中的條目,這樣讓他們可以通過小項目學習如何編寫內核代碼,同時有機會為社區做出貢獻。
還有,在另一個預發布的項目中,JohnCherry追蹤了在對每個已經發布的內核版本進行編譯時發現的錯誤和警告。這些編譯統計數字隨著時間的流逝一直持續下降,而且,以系統的形式來發布這些結果使得所取得的進展一目瞭然。在很多情況下,可以像使用KernelJanitors列表一樣來利用這些警告和錯誤消息中的一部分,因為編譯錯誤通常是由小的缺陷引起的,需要一些努力去修復。
最後,還有AndrewMorton的「must-fix」列表。由於他已經被選定為2.6內核發布後的維護者,他運用他的特權概括地列出了那些他認為在最終的2.6內核發布前最迫切需要解決方案的問題。must-fix列表中包含了內核Bugzilla系統中的缺陷,需要完成的部件,以及其他已知的問題,這些問題如不解決將阻礙2.6發布。這一信息可以幫助指明在新內核發布前還需要哪些步驟;對那些關心這一萬眾期待的2.6內核發布何時能完成的人來說,它還可以提供有價值的信息。
自從去年年底2.6內核發布以後,這些資料中有一些已經明顯不再進行維護了。其他的相關工作在主要版本發布後仍未結束,還要繼續進行後期的更新。有趣的是能看到哪些又被重新提起,有了哪些革新,我們又一次接近了一個主要發布版本。
結束語
多數人在考慮內核的一個新的穩定版本時,第一個問題通常是「這一版本中有什麼新東西嗎?」實際上除了一些新特性和修復之外,在幕後還有一個隨著時間而不斷改進的過程。
在Linux社區中,開放源代碼開發日益興旺。致力於Linux內核和其他方面工作的編碼者之間聯系是鬆散的,這就使得團隊可以成功地適應變化。在許多方面,相對於已經完成的很多單個的改進和缺陷修復而言,Linux的開發和測試方法——尤其是這些方法隨時間的推移得到了改進——對新內核的可靠性影響更為深遠。
[編輯本段]天文學意義上的內核
從天文學意義上講,一顆行星(或一顆恆星)都有兩個核:內核和外核,星體內核的溫度可高達幾千攝氏度。
Ⅹ 鴻蒙系統採用的是微內核,為什麼安卓卻從來不使用
單體內核:大內核,將OS的全部功能都做進內核中,包括調度、文件系統、網路、設備驅動器、存儲管理。比如設備驅動管理、資源分配、進程間通信、進程間切換管理、文件系統、存儲管理、網路等。單體內核是指在一大塊代碼中實際包含了所有操作系統功能,並作為一個單一進程運行,具有唯一地址空間。大部分UNIX(包括Linxu)系統都採用的單體內核。
微內核:微內核與單體內核不同,微內核只是將OS中最核心的功能加入內核,包括IPC通信、地址空間分配和基本的調度,這些東西處在內核態運行。如:WINCE系統。
而其他功能如設備驅動、文件系統、存儲管理、網路等作為一個個處於用戶態的進程而向外提供某種服務來實現,而且這些處於用戶態的進程可以針對某些特定的應用和環境需求進行定製。有時,也稱這些進程為伺服器。
從理論上來看,微內核的思想更好些,微內核把系統分為各個小的功能塊,降低了設計難度,系統的維護與修改也容易。
谷歌的安卓系統採用的就是linux 單內核,蘋果iOS 與蘋果的Mac OS X操作系統一樣,屬於類Unix的單核商業操作系統。
Magenta具備兩個Linux內核不具備的優勢,一個是更為輕量級,另一個則是擁有更好的平台兼容性。Magenta同時支持ARM和X86兩類架構,因此無論是手機還是PC運行從底層上就更加完善。