相信業內的朋友,幾乎都知道操作系統(英文:Operating System,縮寫:OS)。而且,大部分朋友是使用OS,而並不是研發OS。因此,筆者從使用者的角度簡單對OS進行一個梳理,並不涉及深入的研究!
一、什麼是OS
一個問題一個問題來!
1. OS是什麼?
是系統軟件程序 |
2. OS用來幹什麼?
用來控制計算機操作、運用 |
用來運行硬件、軟件資源 |
用來提供公共服務來組織用戶交互的相互關聯 |
3. OS的主要功能有哪些?
通俗來講,OS位於底層硬件與用戶之間,是兩者溝通的橋梁。用戶可以通過OS的用戶界面輸入命令。OS對命令進行解釋,驅動硬件設備,實現用戶要求。
但是,汽車上大量使用的嵌入式OS,從根本上講是沒有用戶界面的。
一般來說(從PC OS的角度),OS主要包含以下功能:
進程管理 |
內存管理 |
磁盤與文件系統 |
網絡通信 |
安全(Security)機制 |
用戶界面 |
驅動程序 |
4. OS由哪幾部分組成?
對於OS理論研究者,通常情況下將OS分為四大部分:
驅動程序最底層的、直接控制和監視各類硬件的部分,它們的職責是隱藏硬件的具體細節,並向其他部分提供一個抽象的、通用的接口。 |
內核操作系統之最內核部分,通常運行在最高特權級,負責提供基礎性、結構性的功能。 |
接口庫(支承庫)一系列特殊的程序庫,它們的職責在於把系統所提供的基本服務包裝成應用程序所能夠使用的編程接口(API),是最靠近應用程序的部分。例如,GNU C運行庫就屬於此,它把各種操作系統的內部編程接口包裝成ANSI C 和 POSIX編程接口的形式。 |
外圍所謂外圍,是指操作系統中除以上三類以外的所有其他部分,通常是用於提供特定高級服務的部件。例如,在微內核結構中,大部分系統服務,以及UNIX/Linux中各種守護進程都通常被劃歸此列。 |
簡單瞭解瞭什麼是OS之後,我們回過頭看一下開頭提到的問題:什麼是車載OS?筆者一開始在捋什麼是車載OS的時候,也比較頭疼!因為不知道該如何分類,分類出來的OS之間的特性是什麼也不清楚!舉幾大傢常聽到的例子:
之所以比較混亂,是因為上述OS是根據不同的分類方式分出來的!筆者嘗試對OS進行瞭一定的分類,方便大傢進行比較!
二、OS 分類
首先,需要說明的是OS的分類沒有單一的標準!主要可以根據以下幾種分類方式進行分類:
01.根據工作方式分類
根據工作方式可以將操作系統主要分為:
批處理操作系統 | |
---|---|
定義 | 采用批量處理作業技術的操作系統。分為單道批處理系統和多道批處理系統。 |
特點 | 允許多用戶共享計算機資源;避免計算機資源被限制;保持資源的高使用率等。 |
批處理操作系統 | |
---|---|
定義 | 采用批量處理作業技術的操作系統。分為單道批處理系統和多道批處理系統。 |
特點 | 允許多用戶共享計算機資源;避免計算機資源被限制;保持資源的高使用率等。 |
實時操作系統 | |
---|---|
定義 | 又稱即時操作系統。可以在指定時間或者確定時間內完成系統功能以及對外部或內部事件在同步或異步時間內做出響應的系統 |
特點 | 實時性;多級中斷;高精度計時等。 |
分類 | 依據時間的變化(抖動)分為:硬實時操作系統軟實時操作系統依據設計理念分為:事件驅動型時間觸發型 |
PS:由於汽車對功能安全等的要求,大量使用瞭實時操作系統,後文中會再次對實時操作系統進行分析。
網絡操作系統 | |
---|---|
定義 | 定義1:運行在路由器、網絡交換機、防火墻上的特別操作系統定義2:在通常操作系統功能之上提供網絡通信和網絡服務的OS |
特點 | 提供高效、可靠的網絡通信能力;提供多種網絡服務功能。 |
分佈式操作系統 | |
---|---|
定義 | 是一個軟件。是許多獨立的、網絡連接的、通信的,並且在物理上分離的計算節點的集合 |
特點 | 分佈性;自治性;並行性;全局性等 |
優點 | 資源共享;計算速度快;可靠性高;通信便捷等 |
對於汽車而言,從工作方式的角度出發,我們主要關心:實時操作系統與分佈式操作系統。
需要註意的是,並不是說某種操作系統是實時操作系統後,就不能是分佈式操作系統!有很多操作系統同時兼有實時處理、分時處理的功能,同時也是分佈式操作系統!如果不知道該如何劃分,可以將其稱為通用操作系統或其他等。
02.根據內核架構分類
在什麼是OS中,我們提到,OS有一個非常重要的組成部分便是內核!
內核是OS最基礎的構建,其結構對OS的外部特性以及應用領域有著一定程度的影響!
內核在設計上可概分為:宏內核與微內核兩大架構!需要註意的是,宏內核翻譯不是很準確,還有另外一種翻譯叫做單內核!
在單內核與微內核之間,進行妥協的設計稱為混合內核!在微內核之下還有一種極端的設計方式,稱為外內核!不過外內核仍在研究階段!
如下表所示,根據內核結構分類:
單內核(宏內核) | |
---|---|
微內核 | 混合內核(內核實質是微內核)(極端設計情況下)外內核 |
單內核(宏內核)OS | |
---|---|
概念 | 定義瞭一個抽象接口,應用一組系統調用來實現OS的功能,如進程管理、文件系統,存儲管理等。這些功能由運行在內核態的模塊來完成。 |
特性 | 由於在同一地址空間上實現所有復雜的低階操作系統控制代碼,因此,運行效率相對更高一些 |
舉例 | 傳統Unix內核:BSD等類Unix內核:FreeBSD、Linux等DOS:DR-DOS、MS-DOS等Mac OS:初版Mac OS等...... |
微內核OS | |
---|---|
概念 | 由一個非常簡單的硬件抽象層和一組比較關鍵的線程管理、地址空間、進程間通信等或系統調用組成。目標是將系統服務的實現和系統的基本操作規則分離開來 |
特性 | 微內核系統的關鍵部分處在相互分離,被保護的存儲空間中 |
舉例 | MacheMCOSQNX鴻蒙OS...... |
混合內核 | |
---|---|
概念 | 混合內核的設計理念來自微內核,隻不過混合內核讓一些微核結構運行在用戶空間的代碼運行在內核空間 |
特性 | 讓內核的運行效率更高一些 |
舉例 | Windows 7、8、10等Mac OS X:使用Mach(微)內核XNU:使用Mach(微)內核...... |
由於外內核還處於研究階段,這裡暫不做討論!
03.根據運行環境分類
根據運行環境可以將操作系統主要分為:
桌面操作系統 | |
---|---|
概念 | 用戶的臺式機或者便攜式計算機中的主要控制程序,也稱為客戶端操作系統 |
特性 | 根據人在鍵盤和鼠標發出的命令進行工作;面向復雜多變的各類應用 |
舉例 | WindowsMacLinux...... |
移動操作系統 | |
---|---|
概念 | 是指在移動設備上運行的OS。與桌面操作系統近似。通常較為簡單且提供無線通信功能。 |
特性 | 提供無線通信功能; |
舉例 | AndroidiOS..... |
嵌入式操作系統 | |
---|---|
概念 | 用於嵌入式計算機的操作系統。是一種系統軟件。通常包括與硬件相關的底層驅動軟件、設備驅動接口、通信協議等。通常這種類型的OS視為實時操作系統(RTOS) |
特性 | 資源高效且可靠;但是運行嵌入式OS的硬件資源可能非常有限 |
舉例 | AGLeMCOSLiteOSOSEK...... |
服務器操作系統 | |
---|---|
概念 | 一般是指運行在大型計算機上的操作系統 |
特性 | 可以實現對計算機硬件與軟件的直接控制和管理協調 |
舉例 | Windows ServerNetwareUbuntuLinux...... |
物聯網操作系統 | |
---|---|
概念 | 一種面向物聯網設備和應用的軟件系統。是嵌入式操作系統發展的產物!但嵌入式操作系統並不真正代表未來的物聯網操作系統。涉及到芯片層、終端層、邊緣層、雲端層等。單一物聯網操作系統與安卓在移動端的地位和作用類似,實現應用軟件與智能終端硬件的解耦 |
特性 | 內核尺寸伸縮性及架構可擴展性;內核實時性;高可靠性;低功耗 |
舉例 | HelloXRIOTRT-ThreadAliOS鴻蒙OS...... |
04.根據指令的長度分類
根據運行環境可以將操作系統主要分為:
8bit,16bit,32bit,64bit等
所謂8bit、16bit、32bit、64bit、128bit等術語有時指總線寬度,有時指指令寬度(在定長指令集中)。
而在操作系統理論中主要是指存儲器尋址的寬度。如果存儲器的尋址寬度是16位,那麼每一個存儲器地址可以用16個二進制位來表示,也就是說可以在64KB的范圍內尋址。同樣道理32位的寬度對應4GB的尋址范圍,64位的寬度對應16 EB(Exabyte)的尋址范圍。
至此,我們就簡單對OS進行瞭一個瞭解!那麼可能有的朋友也會好奇,在上述的分類中,並沒有出現車載OS的身影。那麼到底什麼樣的OS才算車載OS,又該如何選擇呢?
一、到底什麼是車載OS
到底什麼是車載OS:
顧名思義,車載OS是在汽車上使用的OS。但是,汽車是一個很龐大且復雜的系統。由於汽車上的應用場景比較復雜,因此無論按照那種分類方式,都很難將其進行分類!
因此,筆者認為,車載OS是幾種OS的結合!而且與具體的應用場景有關!需要註意的是,不是所有的OS都適用於汽車!
從OS工作方式的角度來看汽車上主要會在對實時性要求高的控制器中使用實時操作系統!當然,在對計算速度、可靠性等方面有要求的控制器中也會使用分佈式操作系統!需要註意的是,不是說某個OS是RTOS就不能是分佈式OS!
從OS架構的角度來看由於汽車對於安全性(Safety)的高要求,因此主要會在一些使用高性能處理器的控制器中(如ADAS域控制器)中使用微內核OS
從運行環境的角度來看由於對實時性、安全性(Safety)的要求,汽車中會大量使用嵌入式操作系統!這也是為什麼有些朋友會認為,車載OS就是嵌入式操作系統。
但是,在如娛樂系統等系統中,也會使用移動操作系統,如Android等。需要說明的是:汽車級Linux(AGL)我們將其歸類為嵌入式操作系統
上述,我們是從OS的分類方式出發,簡單瞭解一下車載OS是什麼,包含哪些OS。
接下來,我們將從OS在汽車中的應用角度出發,來分析一下有哪些OS,這些OS之間的區別等!
二、是騾子是馬拉出來遛遛
即使汽車對於OS有很多要求,但是仍有非常多的OS可以應用在汽車中!由於篇幅原因,筆者這裡主要對主流的一些較為常見的OS進行介紹!對於其他OS,若有興趣,可以通過郵件" support@shactiontech.com "一起探討交流!
01.高Safety、高實時、低算力
對安全性(Safety)、實時性等要求高,對算力要求相對較低的應用
一般是指使用MCU等低性能處理器開發的對功能安全有一定要求的控制器,如EPS等
在這種情況下會使用兩大類RTOS。一類是:基於OSEK/VDX開發的RTOS一類是:其他RTOS
OSEK全稱為 " 車載電子設備的開發系統和接口 ",是一個標準,用於提供整車各種ECU的軟件標準架構。
由於OSEK主要由德國發起,同期,法國有個類似的項目VDX,兩個一結合,便有瞭OSEK/VDX。OSEK的一部分被標準化為ISO 17356。
需要註意的是 CP AUTOSAR中的OS,也是發展自OESK/VDX。
基於OESK/VDX實現的OS主要有:
ERIKA Enterprise | |
---|---|
簡介 | 一種RTOS內核的嵌入式OS,開源的免費軟件。還包括RT-Druid,一個基於Eclipse的IDE實現瞭OSEK/VDX一致性類別BCC1、ECC1等。 |
適配 | 英飛凌:TC2xx、TC3xx等NXP:S12等TI:MSP430瑞薩:RH850等......ARM:Cortex A5xARM:Corex M / R / A英特爾:x86-64...... |
FreeOSEK | |
---|---|
簡介 | FreeOSEK是基於OSEK-VDX規范的可擴展RTOS,適用於嵌入式系統。FreeOSEK是靜態的可配置RTOS,其中僅創建所需的資源。此功能不僅改善瞭RAM / ROM的消耗,而且還改善瞭運行時和實時特性。 |
適配 | TI:MSP430ARM:Cortex-M4...... |
CP AUTOSAR OS | |
---|---|
簡介 | CP AUTOSAR工具供應商實現的CP AUTOSAR OS |
舉例 | MICROSAR中的OSRTA-OSAUBIST OS...... |
適配 | 根據各傢公司的適配情況有所不同 |
其他RTOS:
MicorC/OS (μC/OS) | |
---|---|
簡介 | 功能齊全的嵌入式操作系統,支持TCP/IP,USB,CAN等。內核為μC/OS 實時內核 |
適配 | NXP:MPC55xx、56xx等瑞薩:H8等TI:MSP430等英飛凌:XMC4500、4700等ARM:Cortex-A5、A7、A8、A9ARM:Cortex-M0、M3、M4、M7ARM:Cortex-R4、R5...... |
Flexible Safety RTOS | |
---|---|
簡介 | 一種RTOS,提供確定性和高速事件處理能夠滿足事件期限的調度程序等 |
適配 | 英飛凌:AURIX、AUDO系列等TI:DSP等瑞薩:RH850等ST:STM32、SPC5 32等NXP:MPC57xx等...... |
02.較高Safety、較高實時、高算力
對安全性(Safety)、實時性等有較高要求,對算力要求高的應用
一般是指使用MPU等高性能處理器開發的符合一定功能安全要求的控制器,如ADAS域控制器等
在這種情況下,一般較多的使用帶有功能安全認證的RTOS這裡需要提到兩個概念:
1. API
API全稱是應用共程序接口,定義瞭多個軟件之間的交互,以及可以進行調用(call)或請求(request)的種類!
API主要分為兩種:
2. POSIX
POSIX的全稱為可移植性操作系統接口。是IEEE為要在各種Unix操作系統上運行軟件而定義的一系列相互關聯的標準的總稱。正式名稱為:IEEE Std 1003。
POSIX定義瞭API、命令行shells以及實用應用程序接口。根據對標準的遵守程度,可以將OS分類為完全或部分兼容POSIX。
POSIX包含很多項,如:1003.0:管理POSIX開放式系統環境1003.1:被廣泛接受、用於源代碼級別的可執行標準1003.13:一種關於應用環境框架的標準,主要針對使用POSIX接口的實時應用程序......
這裡,大傢需要註意以下 1003.13 這個標準。因為當前,有較多的朋友開始計劃在ADAS域控制器等上面使用 AP AUTOSAR。AP AUTOSAR雖然指出,其可以運行在POSIX OS之上。但是,這個OS需要符合 POSIX PSE51(最小實時系統配置文件)。PSE51(還有PSE52、PSE53、PSE54)相關的內容便是在 IEEE 1003.13 這個文件中。
另外,需要說明的是,有很多OS沒有獲得POSIX認證,但是他們在很大程度上符合/遵循POSIX。如大多數Linux發行版遵循POSIX
在對安全性(Safety)、實時性有較高要求,對算力要求高的應用,主要有以下OS:
eMCOS | |
---|---|
簡介 | 從單片機、單核處理器,到多核/眾核處理器、多芯片均能提供擴展支持的商業化的,並附有擴展性的嵌入式實時操作系統。已在汽車上得到應用,日本使用廣泛的OS。 |
適配 | ARM Cortex-A、Cortex-R系列等MPPA-256 Bostan瑞薩:RH850系列等...... |
屬性 | 工作方式:分佈式OS & RTOS內核架構:微內核OS運行環境:嵌入式OS認證:ISO26262 ASIL-D等...... |
兼容 | 符合 POSIX PSE51、PSE52、PSE53等有AP AUTOSAR工具供應商適配...... |
QNX | |
---|---|
簡介 | 黑莓的商業類Unix實時操作系統,主要針對嵌入式系統市場已在汽車上得到應用 |
適配 | ARMPowerPCIA-32...... |
屬性 | 工作方式:RTOS內核架構:微內核OS運行環境:嵌入式OS認證:ISO26262 ASIL-D等...... |
兼容 | 符合 POSIX PSE51等有AP AUTOSAR工具供應商適配...... |
鴻蒙OS | |
---|---|
簡介 | 一種基於同一套系統能力、適配多種終端形態的分佈式操作系統,開源。能夠支持多種終端設備,定位是物聯網操作系統 |
適配 | ARM Cortex-A7、A53等...... |
屬性 | 工作方式:分佈式OS內核架構:微內核OS(Linux內核+鴻蒙微內核+LiteOS,未來將隻有鴻蒙微內核)運行環境:物聯網OS認證:內核 ISO26262 ASIL-D...... |
兼容 | 有AP AUTOSAR工具供應商適配...... |
除瞭上述三個之外,還有其他一些符合 POSIX PSE51的OS:
PikeOS、Vxworks等在航空電子應用較多。
需要註意的是,如果計劃使用 AP AUTOSAR,需要註意的是:
VxWorks與Integrity OS 當前沒有 AP AUTOSAR工具供應商適配。也就意味著,用瞭VxWorks 或 Integrity OS,就不能使用 AP AUTOSAR。(可能他們會自己提供AP 工具鏈,但僅可以用來玩一玩,開發量產就算瞭)
總結來看,上述OS基本都有做功能安全認證這一塊,以及基本都是RTOS。
需要說明的是,並不是說,要開發ADAS等控制器(或自動駕駛)就不能使用Linux。特斯拉就是基於Linux搞的。隻是相對來說,在滿足Safety、Security等方面需要更多的考慮。
還有一些黑客大佬直接使用Ubuntu等來開發ADAS系統,這個不屬於當前的主流,就不做討論瞭。
還有另一塊應用便是,對安全性(Safety)和實時性要求不是很高的、但是對算力要求較高的應用。
01.低Safety、低實時、高算力
對安全性(Safety)和實時性要求不是很高的、但是對算力要求較高的應用
一般是指使用MPU等高性能處理器開發的對功能安全沒什麼要求的控制器,如娛樂系統。
針對於這些系統,主要有以下幾類OS可用:
1. 開源的OS:
Linux
Ubuntu
Android
AGL
IVI
ERIKA Enterprise
......
可能有的朋友到這裡會想到ROS,這裡筆者也簡單說明一下:ROS不是操作系統,而是用於機器人軟件開發的軟件框架的集合。Apex.OS跟ROS類似也不是真正的操作系統。
2. 物聯網OS:
AliOS
.....
3. 一種是基於Linux 改裝的OS,這些OS更多的是與AP AUTOSAR工具供應商有關:
EB Corbos Linux
......
使用時仍需註意,跟使用中間件的適配性問題
還有的朋友可能會提到英偉達的Drive OS,筆者認為它內部采用的是QNX,所以就不做過多的討論。
然後,再提一下RT-Linux、筆者認為,它可能比較尷尬。實時性雖然比普通的Linux高,但安全性(Safety)又比商用的OS差點。可以根據具體的應用進行選擇。
還有一個蘋果,蘋果也要造車,筆者認為蘋果應該是使用自己開發的OS,蘋果在汽車上的OS應該也會覆蓋實時性、安全性(Safety)等方面的要求。
總的來看,汽車上使用較多的還是實時操作系統、嵌入式操作系統。當然,還有很多RTOS,由於在汽車上不常見,競爭力很小所以就不做過多的討論。
總結來看:OS是一種軟件,它執行所有基本任務,例如文件管理、內存管理、處理輸入輸出以及控制外圍設備等。這也是為何會在《搞一下軟件為汽車賦能》系列中介紹的原因。OS充當用戶與硬件之間的接口,並控制各種程序的執行。
本篇主要是從OS的概念出發,先將OS進行瞭一個簡單的分類。然後再引入車載OS,對(量產)汽車上已經使用到的,或者未來可能在量產汽車中使用到的OS進行分析。