POSIX算汽車行業黑話?

作者 |  一驥絕塵
出品 |  焉知


POSIX算汽車行業黑話?的圖1


POSIX與汽車


您有聽說過POSIX嗎?最近和一位業外朋友聊天聊到POSIX,朋友問我:“POSIX是什么?是你們汽車行業的黑話嗎?”果然是術業有專攻,不熟悉對方話題領域的時候聽到對方說縮寫,都可能會覺得是行業黑話。

事實上POSIX是Portable Operating System Interface的縮寫,指的是可移植操作系統接口。顧名思義,這是和操作系統有關的接口標準。操作系統不能說是汽車行業發明的,但當下計算機操作系統與智能汽車的關系密不可分,POSIX也一樣。

下圖是在某招聘網站上搜索關鍵字“POSIX”后匹配的崗位所對應的公司列表。數數看,有多少是汽車行業的?

POSIX算汽車行業黑話?的圖2

圖1:某招聘網站上搜索“POSIX”相關崗位后匹配的公司logo

所以說,現在懂POSIX、會操作系統的汽車工程師,可是市場上的搶手人才。而這與汽車新四化大趨勢下汽車電子電氣架構的升級關系密切。下圖是博世為代表所提出的汽車電子電氣架構演進趨勢,也是被行業主流接受的趨勢。在這個演進過程中,中央車載計算平臺和功能域控制器是當下車企最重點研究的部分。

POSIX算汽車行業黑話?的圖3

圖2:汽車電子電氣架構演進趨勢(來源:博世)

這些先進控制器提供了更高效而復雜的硬件以及相對應更強大的算力。而為了操作和應用這些更復雜的芯片和硬件,諸如Linux和Android等操作系統就派上用場了。對汽車行業來說,軟硬件解耦,同時保證軟件可復用、可移植,可以確保開發質量的同時省錢省時間,是黃金準則。那么應用這些操作系統的時候,怎么可以滿足這些準則呢?計算機發展多年來,已經成為事實標準的POSIX就可以拿來汽車行業直接用。而正是因為有了POSIX等針對可移植的標準,才讓很多操作系統以及之上的智能軟件能夠絲滑的從服務器切換到個人電腦,再切換到手機,然后切換到汽車上。POSIX在做的事情本質上就是接口標準化。而接口標準化就是高內聚低耦合的有效手段。舉一個具象化的例子,我們在各種移動設備上經常能看到的TypeC和Lightning接口就是標準化的接口。不管是傳輸音頻、充電還是投屏,都能通過同一個接口來實現。這樣的系統,不就是像堆積木一樣方便地移植么?

POSIX算汽車行業黑話?的圖4

圖3:具象化的兩種通用接口,TypeC和Lightining

POSIX算汽車行業黑話?的圖5


POSIX歷史和版本


要進一步理解POSIX,需要從它的歷史說起。POSIX其實是起源于Unix的標準。當年最早的Unix,在1974年代碼就開源流傳出去了。早期的Unix不夠完善,所以大家都在開源軟件上各自加工。于是之后出現了好些獨立開發的與Unix基本兼容但又不完全兼容的OS,通稱Unix-like OS。局面非常混亂,為了提高兼容性和應用程序的可移植性, IEEE(電氣和電子工程師協會)開始努力標準化Unix的開發。后來由 Richard Stallman將該標準化命名為“POSIX”。后來IEEE把“POSIX”作為商標注冊了。

POSIX的標準系列名稱為IEEE Std 1003.n-yyyy。其中yyyy是發布年份,n就是版本號,如IEEE Std 1003.1-2003。我們也可以把IEEE Std 1003.1稱為POSIX.1。最新的POSIX.1的版本就是IEEE Std 1003.1-2017。預計今年(2022)會釋放一個更新版。

POSIX 1003.1是POSIX系列標準發展的基礎標準,目前POSIX旗下有20多個標準和草案。例如POSIX.1定義了應用程序的可移植性,以及C接口和基本任務的系統服務行為,如進程創建和終止、進程環境操作、文件和目錄訪問以及簡單的I/O。POSIX.2則著重描述了命令解釋器、可移植的Shell編程、用戶環境和相關的實用程序。而IEEE Std 1003.13則是針對實時性的拓展標準。由于實時性對汽車行業異常重要,所以該標準也是POSIX在汽車行業的重要一環。

從POSIX的歷史不難看出,UNIX和類UNIX內核的操作系統都是滿足POSIX標準的。但創建POSIX就是為了可移植性,所以它并不只適用于UNIX系統,非UNIX系統也可以符合POSIX標準。所以像Linux、macOS、QNX和Android這些我們熟悉的操作系統,都是遵循POSIX的。而像Windows操作系統,本來是獨立于UNIX體系的,但隨著POSIX市場和用戶的擴大,也不得不開發兼容POSIX的接口和子系統。比如Windows 10里就有支持POSIX的Linux子系統(WSL),方便一些UNIX程序移植到Windows上。

POSIX算汽車行業黑話?的圖6


POSIX內容簡介


POSIX定義了一個標準的操作系統界面和環境,包括一個命令解釋器(也就是"Shell"),以及常見的實用程序,以支持源代碼層面的應用可移植。POSIX是給應用程序開發人員和系統實施者使用的,包括四個主要部分:

1.基礎定義。
這部分為POSIX提供通用的定義,包括關于術語、概念、語法、服務功能、C語言頭的定義和命令行的信息。

2.系統接口。
這部分提供與接口有關的術語和概念細節,并定義了訪問符合POSIX的系統的應用程序可用的功能接口。系統服務功能和子程序的定義、C語言編程語言的特定系統服務、功能問題,包括可移植性、錯誤處理和錯誤恢復,都包含在這部分。

3.Shell和可用工具。
這部分描述了命令解釋服務的標準源代碼級接口,也就是著名的Shell。以及Shell中可用的命令和工具。

4.理論依據。
這部分主要描述POSIX內容的歷史信息,以及為什么增加或刪除某些功能的相應理由。

POSIX并沒有規定具體應用程序或操作系統的開發,只是定義了它們之間的接口規范。符合POSIX標準的應用程序源代碼應該能夠在許多系統中運行,因為該標準是在源代碼層面上定義的。然而POSIX并不保證任何對象或二進制代碼級別的可移植性。因此,即使在具有相同硬件和操作系統的類似機器上,二進制可執行文件也可能無法運行。

POSIX算汽車行業黑話?的圖7


POSIX與AUTOSAR


在討論POSIX和AUTOSAR的關系之前,我們得先說說POSIX 1003.13。如上文提到,POSIX包含一系列的標準,其中POSIX 1003.13是針對實時性定義的配置范圍(Profile)標準,而相關的實時環境的接口定義,也修訂在POSIX 1003.1中了。實時性無需多言,是汽車行業的關鍵特性。PSE51、52、53和54是其中4個主要的Profile,可以看作是POSIX的子集,相互關系如下圖所示。

POSIX算汽車行業黑話?的圖8


圖4:PSE51、52、53、54的關系

PSE51到54描述了實時環境可以符合的四個級別的功能。其中PSE51是最小的核心范圍。

說回到AUTOSAR,這個汽車行業軟件架構的老大哥,尤其在傳統嵌入式ECU上的地位可謂是德高望重。而近年來隨著復雜控制器的發展,大算力核的增多,AUTOSAR也針對高性能計算、靈活的軟件配置和支持 OTA 等角度推出了AUTOSAR Adaptive(也常稱AP),并將之前部分稱為AUTOSAR Classic(常稱CP)。CP中的操作系統部分主要沿用OSEK,而AP的操作系統部分,則明確了是基于POSIX PSE51的。

POSIX操作系統接口是賦能車載軟件應用的基礎。但是它缺乏汽車常用功能,例如診斷、網絡管理和SOME/IP等。AUTOSAR Adaptive剛好補足了這些短板,在POSIX的基礎上定義了中間件標準,讓POSIX可以與車載應用更加有效地聯動起來。

在通訊機制上,PSE51并沒有定義進程間通訊IPC (inter process communication),  因此并沒有直接的接口可以實現進程之間的交互。所以進程間通信需要有額外模塊支持,例如AUTOSAR AP提供的CM (communication management )。抽象出來的ARA接口可以用于IPC,統一提供機器內和機器之間面向服務的通信。隨著面向服務架構(SOA)在汽車行業的流行,POSIX提供的標準接口也為以太網通訊和統一服務接口提供了良好基礎。例如下圖就是一種面向服務架構的框架示意圖。

POSIX算汽車行業黑話?的圖9

圖5:一種基于POSIX和AUTOSAR Adaptive的架構示意圖(來源:Vector)

POSIX可以很好地幫助上層應用或者中間件屏蔽底層操作系統和一些驅動的具體實現,讓整體軟件架構有更清晰的層次,也更能實現高內聚、低耦合的原則。而考慮到傳統汽車軟件的復用性等問題,基于POSIX接口也可以設計一個AUTOSAR CP環境,例如Vector公司就有這樣的商用方案。如下圖所示,CP環境下,傳統的軟件模塊(SWC)還是可以通過抽象的運行時環境(RTE)實現通訊,基礎軟件部分的PDUR、COM、DCM等也可以直接移植。

POSIX算汽車行業黑話?的圖10

圖6:基于POSIX的AUTOSAR CP環境方案(來源:Vector)

POSIX算汽車行業黑話?的圖11


寫在最后


POSIX標準允許開發人員使用許多相同的代碼在許多操作系統上創建應用程序、工具和平臺。按照標準寫代碼并不是一項強制要求,但當你想把你的代碼移植到其他系統時,它確實有很大的幫助。POSIX就是為了簡化可移植性而設計的。所以長遠來看,它可以節省大量時間和金錢。

雖然POSIX基本上是面向操作系統設計者和軟件開發者的,但作為系統的使用者,無論我們是否意識到,我們也都受到POSIX的影響。正是因為有了這個標準,我們才能夠在一個UNIX或Linux系統上工作,并把這個系統的工作帶到那個系統上,而且感覺毫不費力。作為普通用戶,我們也在可用性和跨系統的數據重復使用方面獲得了許多好處。

但是完整的POSIX標準有4000多頁,1000多個接口。對我們汽車工程師來說,對整個標準都非常熟悉是不太現實的。所幸POSIX的各種資源豐富,開發者社區也有很多大神Q&A。我們可以到社區上提問或者按照實際項目中所涉及的API做裁剪,著重分析相關文檔材料。希望這篇文章能幫助沒聽過POSIX的同仁和初學者理解POSIX,同時亦希望各位大神批評指正。

參考來源:
1.https://itsfoss.com/posix/
2.《車載智能計算基礎平臺SOA 軟件架構白皮書》
3.https://www.baeldung.com/linux/posix

登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP