如何評價號稱下一代 FreeBSD 的 NextBSD?

Slideshare 上的 幻燈片 以及相關演講的 YouTube 鏈接。

官網:NextBSD

GitHub 倉庫:NextBSD/NextBSD · GitHub.

基本特性:

  • 使用 FreeBSD 內核,但採用 Mach 作為 IPC 系統,類似 OS X 的內核 XNU。

  • 增加一層 Common Object Runtime,用於在不同語言之間分享高級數據。

  • 使用 libdispatch,即 OS X 和 iOS 中的 Grand Central Dispatch。

  • 使用 ASL,即 Apple System Log facility。

  • 使用 libnotify。

  • 使用 launchd,OS X 的服務管理系統,但使用 JSON 而不是 XML 作為配置文件。

這樣的技術選擇是出於怎樣的目的?相關的組件在技術上有哪些優勢和劣勢?

註:項目領頭人,iXsystems 的 Jordan Hubbard,曾就職於 Apple,負責 OS X 的底層架構。iXsystems 是一家大量使用 FreeBSD 技術的計算機製造商。


謝邀。

傳統 Unix 的許多 API 和抽象模型,例如線程、非同步I/O,等等,對於應用開發人員來說未必非常友好。以線程庫為例,其抽象的出發點是內核的實現,並在內核實現外做一層比較薄的封裝,起個名字叫線程庫,這種做法的缺點是類似如何安排任務的決定直接交給了應用程序員,而後者未必擁有決策所需的全部信息(例如此時系統中正在運行的任務有多少?OS顯然有更多的信息來進行決策)甚至是知識(比如啟動遠超過CPU數量的線程去計算)。

而 Apple 由於在移動設備上的業務不斷發展,因此在這些方面已經做了非常多的探索和實際研發工作,包括 Grand Central Dispatch,等等。NextBSD 的主要目標是在 FreeBSD 基礎上引入這些已經比較成熟的 Apple 技術並從中受益。

(需要說明的是所有 NextBSD 中引入的新組件基本上都是來自 Apple。libnotify 並不是 GNOME 的那個實現。)

關於採用的具體技術:

  • Mach IPC:NextBSD 中已經加入了一套相關 API(注意: Mach IPC 並不打算替換任何現有的 IPC 機制)。引入 Mach IPC 的主要原因是兩個:方便後續移植(OS X代碼中大量使用了 Mach IPC,如果把這些替換成傳統 Unix IPC,就必須把已有的 OS X 代碼打上像篩子一樣的補丁,不僅費時,而且將來合併上游版本的更新也會變的更加困難)和簡化某些安全特性。已經實現的部分在 NextBSD/sys/compat/mach at NextBSD-CURRENT · NextBSD/NextBSD · GitHub 。
  • 目前沒有任何計劃替換掉 FreeBSD 內核,在結構方面和 xnu 沒有太多的共同點。(有些媒體報道認為會把 FreeBSD 換成 Mach,如果真是這樣的話,還不如直接把 xnu 拿來把裡面 FreeBSD 的部分更新一下算了……)

  • libdispatch:這個在幾年前已經移植到 FreeBSD 上了,只是沒有放進 base system 而已。
  • ASL:現有的 syslogd 機制是無格式的,例如,任何客戶端都可以在日誌中以自己希望的樣式記錄日誌,而用來讀取和解析日誌又需要重新將這些文本過濾、解析成其他格式。ASL 希望能夠以可擴展的格式化數據來一次性解決掉這些問題。
  • launchd:launchd 本身並不直接讀取配置文件,配置文件的解析是由 launchctl 完成的,採用 JSON 主要是便於理解和實現。
  • 除此之外,NextBSD 還引入了許多來自 HardenedBSD 的改進,但這些主要是小修補。

NextBSD 的源代碼在 NextBSD/NextBSD · GitHub 可以找到,這個項目目前主要還是試驗性質,因為這種規模的改動直接放到 FreeBSD -CURRENT 的影響太大,而 API/ABI 一旦確定,再改起來就比較難了。


感覺像是把OS X 已成熟的開源的技術反向移植,做出一個類似於OS X Server的伺服器系統。這樣的好處是顯而易見的:打通個人電腦端和伺服器端,一次開發,處處實現。


從定位戰略上來說,可以看出NeXTBSD是打算接已經停止開發的OS X Server Edition的班,這很聰明:目前Server-side程序員正在忍受一種分裂的開發方式,即用OS X開發,用Linux部署和運行。有了NeXTBSD的話,開發機和生產機就高度統一了,可以大膽用Mach/Darwin的技術了

而且Server OS本來也只能做成開源的,不適合Apple去做


宏內核的勝利。微內核的特性移到用戶層。

以後性能會向宏內核靠攏。mach依賴部分可能會有性能損失。。

各種特性都是向現有linux系統發展靠攏。


看到 Delphij 的專業解答了!我這BSD白菜就補充一張NextBSD的架構圖片吧~


什麼叫下一代的FreeBSD?FreeBSD停止開發了嗎?


推薦閱讀:

系統運行速度的快慢,硬碟比CPU更重要?
對於不同架構處理器,不同操作系統,相同編譯器對源碼編譯的結果有什麼不同?
Android操作系統還會流行多久?
微軟實現新版本操作系統向下兼容困難嗎?

TAG:操作系統 | FreeBSD | Unix |