文章目錄
- 類Unix
-
- POSIX
- Unix & Linux & macOS
- macOS & Darwin
- macOS 和 iOS對比
類Unix
類Unix系統(英文:Unix-like)指各種傳統的Unix系統(比如FreeBSD、OpenBSD、SUN公司的Solaris)以及各種與傳統Unix類似的系統(例如Minix、Linux、QNX等)。
它們雖然有的是自由軟體,有的是商業軟體,但都相當程度地繼承了原始UNIX的特性,有許多相似處,并且都在一定程度上遵守 POSIX規範。
POSIX
POSIX表示 可移植作業系統接口(Portable Operating System Interface of UNIX,縮寫為 POSIX )。
POSIX标準 定義了 作業系統 應該為 應用程式 提供的 接口标準,是IEEE為要在各種UNIX作業系統上運作的軟體 而定義的一系列API标準的總稱,其正式稱呼為IEEE 1003,而國際标準名稱為ISO/IEC 9945。
POSIX标準意在期望獲得源代碼級别的軟體可移植性。
換句話說,為一個POSIX相容的作業系統編寫的程式,應該可以在任何其它的POSIX作業系統(即使是來自另一個廠商)上編譯執行。
POSIX 并不局限于 UNIX。許多其它的作業系統,例如 DEC OpenVMS 支援 POSIX 标準,尤其是 IEEE Std. 1003.1-1990(1995 年修訂)或 POSIX.1,POSIX.1 提供了源代碼級别的 C 語言應用程式設計接口(API)給作業系統的服務程式,例如讀寫檔案。
POSIX.1 已經被國際标準化組織(International Standards Organization,ISO)所接受,被命名為 ISO/IEC 9945-1:1990 标準。
Unix & Linux & macOS
通俗的說,Unix 是爸爸,Linux 和 macOS 是兄弟。
unix是最早的出來的多任務,多使用者系統,它是收費的。
Linux是一個 Linus Torvalds 為了讓人們用到免費的類unix系統,高度參考Unix系統原理,做出了一個叫做 linux 的核心。
一般可以認為,Linux是一套自由使用(一般可以免費使用)和自由傳播的類Unix作業系統。這個系統是由世界各地成千上萬的程式員設計和實作的。其目的是建立不受任何商品化軟體的版權制約、全世界都能自由使用的Unix相容産品。
嚴格來講,Linux這個詞本身隻表示Linux核心,但在實際上人們已經習慣了用Linux來形容整個基于Linux核心,并且使用 GNU 工程各種工具和資料庫的作業系統。
Linux嚴格來說已經不是Unix了,因為從核心到外層應用都是獨立開發代碼。
linux是相容unix的,或者說是linus寫的一種開源的類unix系統。
macOS,是基于Unix核心的圖形化作業系統,由Unix的一個分支(BSD)發展過來的,核心叫darwin(達爾文)。
macOS & Darwin
OS X 是整個作業系統的一個集體名稱,這個作業系統由很多元件構成,Darwin 就是其中的一個元件。
Darwin 是作業系統的類 UNIX 核心,由核心(kernel)、XNU 和 運作時(runtime) 組成。
XNU:“X is Not UNIX”的縮,這個縮寫類似于 GNU 的遞歸式縮寫。
macOS 中的 Darwin 是開源的,而OS X中的其他部分,即蘋果公司提供的各種架構,不是開源的。
但iOS 中的 Darwin 是不開源的, 是在 ARM 上的移植。
macOS 的版本和 Darwin 的版本之間有一個簡單的關系,除了 OS X 10.0 對應 Darwin 1.3.x之外,其他的版本都服從以下簡單的公式:
if (OSX.version == 10.x.y){
Darwin.version = (4+x).y
}
是以,例如 Mountain Lion 的 10.8.0 版本對應 Darwin 12.0。
Snow Leopard 的 10.6.8 版本對應 Darwin10.8。
盡管看上去有點混亂,但至少是一緻的。
macOS 和 iOS對比
-
核心
macOS 的核心是 intel,由PowerPC 改進為 intel。
iOS 核心和二進制檔案編譯的目标架構,是基于ARM架構,而不是intel i386 和 x86_84。
盡管iOS的目标處理器可能不同(A4、A5和A5X等),但都是采用ARM的設計。
相比Intel,ARM的主要優勢在于電源管理,是以ARM的處理器設計對于移動作業系統(iOS 及Android)來說都非常重要。
-
核心源碼-iOS
iOS 核心源碼閉源。
macOS 中的 Darwin 是開源的。
-
核心編譯
iOS核心的編譯關注的是嵌入式特性和一些新的API。有一些新的API最終會進入OS X,但是其他的不會。
-
GUI
iOS的系統GUI是SpringBoard,這是大家熟知的觸屏應用加載器;
macOS 中的GUI的Aqua,是滑鼠驅動的,而且特别為視窗系統所設計。
由于SpringBoard如此流行,是以在Lion中以LaunchPad(啟動台)的形式移植到了OS X中。
-
記憶體管理
iOS的記憶體管理要緊湊得多,因為在移動裝置上沒有幾乎無窮的交換空間可以使用。是以,開發者需要适應更嚴酷的記憶體限制以及程式設計模型的變化。
-
系統限制
iOS的系統的限制更嚴(或稱為jailed),應用程式不允許通路底層UNIX API(即Darwin),也沒有root通路權限,隻能通路自己的目錄裡(沙盒)的資料。
隻有蘋果的應用才能有通路整個系統的權力。App Store的應用被嚴格受限,而且必須通過蘋果的審查。
macOS 沒有上面的限制。