如何評價號稱下一代 FreeBSD 的 NextBSD?
Slideshare 上的 幻燈片 以及相關演講的 YouTube 鏈接。
官網:NextBSDGitHub 倉庫: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操作系統還會流行多久?
※微軟實現新版本操作系統向下兼容困難嗎?