
達爾文有什麼特有的特徵嗎?其他 Unixe 是否具有 Darwin 所缺乏的功能?
答案1
答案2
歸根究底,Darwin 不只是 Mach 2.0 之上的一個薄薄的 BSD 層嗎?
我曾經使用NeXTStep,我不知道目前的MacOSX與NeXTStep有多少差距,但...
Mach 2.0 在核心層級提供了一組不同的抽象:
- “任務”:這是一個位址空間+一組“連接埠”,可能有一個執行緒在其中運行。
- 線程。這是可調度的執行單元。一個任務(位址空間)中可以運行多個任務。我相信 Mach-O 檔案(Mach 的可執行檔格式)可以在進程運行時指定多個執行緒:沒有啟動更多 Cthreads 的 main() 函數,作業系統將啟動一個。
- 港口。這些連接埠與 TCP 或 UDP 連接埠不同。它們是打字的、有序的訊息流。更像是 RPC。您編寫了一個協定規範文件,然後透過編譯器執行該文件以取得伺服器和客戶端存根、編組和解組例程等。
- 使用者層級記憶體分頁器。您可以設定一個任務+執行緒來處理其他任務位址空間的分頁。
最初的 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。