蘋果為什么只開源 OS X 的內核,而不開源 GUI?
來自知乎 @ibuick 的回答:
1. GUI 開源的后果就是你以后就能看到各種“自主知識產權”的,長得像 OS X 的 Linux,以及其他各種不知所謂的 Mod。更為重要的是,那時候開發一個 GUI 的 Hack 更為簡單,比如你現在在 Bartender 里看到的那樣,那時候不再費勁吧啦的反相工程,可以直接寫出 Menu Extra 的替代品。到那個時候,系統各類毛病鋪天蓋地,OS X 長的五花八門,這也是 Apple 不愿意看到的。值得一提的是,OS X 桌面環境在操作系統里面算是領先的,這東西舍得開源么?一旦開源,連帶 iOS 的好多東西都暴露出去了,得不償失。
2. 驅動程序是不開源的,但是驅動框架 IOKit 是開源的。IOKit 的一個好處就是它是個 OO 的框架,你可以直接通過繼承獲得你想要的特性而不必從頭開始。
3. GUI 層又稱 Aqua 層,基于 Cocoa,在系統的架構的最頂端,也是直接面向用戶和大部分應用程序開發者的層面。當然了,OS X 還支持 X11,如果你說這個的話,這東西是開源的。
4. IOKit 在 Mach 層,如果你有一點了解,OS X 剝離 Cocoa ,Carbon 相關的東西,剩下的叫做 Darwin,這是個 Unix 操作系統。OS X 之所以能夠通過 SUS 認證,Darwin 是關鍵,這里包括 POSIX 兼容,Unix 線程,進程實現。它的內核叫做 XNU,這是個混合內核,XNU 包含兩個部分,BSD 和 Mach:BSD 實現了POSIX,Networking,Filesystem 等,而 Mach 實現了最為基本的多處理器支持,虛擬內存,分頁,調度,IPC,RPC 等。在 Mach 的基礎上,就是 IOKit 和各類 Kext 了。整個 XNU 部分,跑在內核態。
5. Linux 我不懂,不過它原來是個 Monolithic 巨內核,這個跟 OS X 有很大區別,不知道現在什么樣子。它這種實現性能要好一些。
推薦你看幾篇文章:
- Kernel Programming Guide: Kernel Architecture Overview
- Architecture of OS X
- Microkernel
- Monolithic kernel
- Linux kernel
原文: http://www.zhihu.com/question/26961853/answer/34710600 作者: 王飛