Darwin 有哪些其他 Unix 沒有的功能,反之亦然?

Darwin 有哪些其他 Unix 沒有的功能,反之亦然?

達爾文有什麼特有的特徵嗎?其他 Unixe 是否具有 Darwin 所缺乏的功能?

答案1

OS X 是僅存的作業系統基於Mach微內核這也仍然具有商業意義。有一些正在進行的研究項目和過時的作業系統無疑仍在舊機器的生產環境中使用,但今天您無法在新機器上購買任何東西。

OS X 具有任何 *ix 都具有的常見核心功能不相容性。我最近必須解決的最大問題是缺乏系統V訊息隊列。 (msgget(2)和朋友。)我們必須用TCP/IP 替換我們的訊息佇列程式碼(該程式碼是為「真正的」System V 變體編寫的,後來移植到Linux),以使我們的軟體能夠在OS X 上運行。

答案2

歸根究底,Darwin 不只是 Mach 2.0 之上的一個薄薄的 BSD 層嗎?

我曾經使用NeXTStep,我不知道目前的MacOSX與NeXTStep有多少差距,但...

Mach 2.0 在核心層級提供了一組不同的抽象:

  1. “任務”:這是一個位址空間+一組“連接埠”,可能有一個執行緒在其中運行。
  2. 線程。這是可調度的執行單元。一個任務(位址空間)中可以運行多個任務。我相信 Mach-O 檔案(Mach 的可執行檔格式)可以在進程運行時指定多個執行緒:沒有啟動更多 Cthreads 的 main() 函數,作業系統將啟動一個。
  3. 港口。這些連接埠與 TCP 或 UDP 連接埠不同。它們是打字的、有序的訊息流。更像是 RPC。您編寫了一個協定規範文件,然後透過編譯器執行該文件以取得伺服器和客戶端存根、編組和解組例程等。
  4. 使用者層級記憶體分頁器。您可以設定一個任務+執行緒來處理其他任務位址空間的分頁。

最初的 CMU Mach 人員使用這些抽象來模擬BSD Unix 進程、MS-DOS 進程,以及非常奇怪的 VMS 任務。每個 VMS 任務需要 2 Mach 任務以及許多執行緒。有人曾經出售 NeXTStep 的 Mac OS(OSX 之前)模擬器,該模擬器使用用戶空間尋呼機取得了良好的效果。

舊的卡內基美隆大學馬赫出版品頁面: http://www.cs.cmu.edu/afs/cs/project/mach/public/www/doc/documents_top.html

VMS-on-Mach 論文: http://www.sture.ch/vms/Usenix_VMS-on-Mach.pdf

答案3

這不是一個完整的答案,但是,DTrace是一個很棒的系統偵錯工具,適用於 Solaris、Darwin/OS X 和 *BSD,但不適用於 Linux。

答案4

我認為最好將達爾文描述為另一個人UNIX 風格。索拉里斯就是其中之一。 HP/UX 是另一個。有很多更多的,也許沒有那麼“高調”,但他們就在那裡。每種口味都有其獨特的特點。這就是為什麼首先會有口味。一些公司想出一些有助於銷售它的東西(或只是使用它,甚至管理它),然後創建它並給它自己的名字。

相關內容