許多朋友知道麥克·OS X,但他們不太了解它的組成部分。本文將從底層介紹macOS的幾個(gè)重要組件。
映像許可證:抄送-服務(wù)協(xié)議3.0
說到蘋果電腦(OS X的蘋果OS X),我們不得不提到它的前身——下一步。
前任
1985年,喬布斯內(nèi)部斗爭失敗,離開蘋果,創(chuàng)建了NeXT。在NeXT中,他的團(tuán)隊(duì)創(chuàng)建了一個(gè)類似Unix的面向?qū)ο蟛僮飨到y(tǒng)——NeXtStep。1996年喬布斯回到蘋果后,這個(gè)操作系統(tǒng)進(jìn)階到Classic Mac OS來到蘋果,最終取代了原來的Classic Mac OS。
照片許可:合理使用
達(dá)爾文操作系統(tǒng)
達(dá)爾文是macOS(或Core OS)的基礎(chǔ)部分,也是一個(gè)開源的類似Unix的操作系統(tǒng)。它由兩部分組成:XNU內(nèi)核和Unix工具。
由于開源代碼的特點(diǎn),一些組織正在使用蘋果發(fā)布的達(dá)爾文源代碼進(jìn)行二次開發(fā),比如PureDarwin項(xiàng)目。
XNU
我們通常說macOS的內(nèi)核是“達(dá)爾文”,其實(shí)這是一個(gè)不嚴(yán)謹(jǐn)?shù)恼f法,因?yàn)檫_(dá)爾文不僅包括內(nèi)核,還包括其他東西。嚴(yán)格來說,macOS的內(nèi)核是XNU。
在這一點(diǎn)上,以題外話的方式,蘋果有一個(gè)矛盾。雖然macOS通過了Unix認(rèn)證,但是XNU的全稱是XNU的不是Unix,就像GNU格式一樣。顧名思義,XNU不是Unix。
XNU是macOS的核心部分。它是一種混合內(nèi)核,結(jié)合了微內(nèi)核和宏內(nèi)核的特點(diǎn)。它包括三個(gè)部分:馬赫,平衡計(jì)分卡和輸入輸出套件。
馬赫
mach最初是一個(gè)微內(nèi)核,XNU中的Mach來自O(shè)SF MK 7.3(開放軟件基金會(huì)Mach內(nèi)核),負(fù)責(zé)CPU調(diào)度、內(nèi)存保護(hù)等功能。它是macOS內(nèi)核最重要的部分,XNU中的大部分代碼都來自于它,macOS中的可執(zhí)行文件也是mach-o格式。
加州大學(xué)伯克利分校軟件(Berkeley Software Distribution)
XNU包含一個(gè)修改后的BSD,負(fù)責(zé)進(jìn)程管理、Unix文件權(quán)限、網(wǎng)絡(luò)棧、虛擬文件系統(tǒng)、POSIX兼容性。這就是為什么macOS符合單一的Unix規(guī)范。
輸入輸出套件
I/O Kit是XNU內(nèi)核中的開源框架,可以幫助開發(fā)者為蘋果的macOS和iOS操作系統(tǒng)編寫設(shè)備驅(qū)動(dòng)程序代碼。I/O Kit框架是從NeXTSTEP的DriverKit演變而來的,與Mac OS 9的設(shè)備驅(qū)動(dòng)框架或BSD沒有相似之處。
命令行工具
除了內(nèi)核之外,達(dá)爾文還包括一些Unix工具,有些是蘋果開發(fā)的,有些是第三方開發(fā)的,比如FreeBSD項(xiàng)目、GNU項(xiàng)目、Apache。
先說它的初始化程序,launchd。
Launchd由蘋果公司開發(fā),是一個(gè)統(tǒng)一的服務(wù)管理框架,用于啟動(dòng)、停止和管理macOS中的守護(hù)進(jìn)程、應(yīng)用程序、進(jìn)程和腳本。因?yàn)橹С侄嗑€程,所以高于傳統(tǒng)的Unix初始化器SysVinit。launchd同時(shí)被移植到FreeBSD平臺(tái),其設(shè)計(jì)思想也被已經(jīng)成為Linux發(fā)行版主流系統(tǒng)初始化器的systemd借鑒。
核心基礎(chǔ)
Core Foundation(也叫CF)是macOS和iOS中的一個(gè)C應(yīng)用編程接口(API),是低級(jí)例程和包裝函數(shù)的混合。
石英
MacOS畢竟是一個(gè)類似Unix的操作系統(tǒng)。一個(gè)類似Unix的操作系統(tǒng)想要圖形化操作,就必須有一個(gè)圖形化的框架。在Linux上,我們有X11和Wayland,在macOS上,我們有Quartz。它是一個(gè)基于PDF技術(shù)的圖形框架。
作為一個(gè)類似unix的,不可能和X11不兼容。如果想在macOS中運(yùn)行X11應(yīng)用,也可以了解一下。有一個(gè)開源項(xiàng)目叫XQuartz。
可可粉
Cocoa是蘋果為Mac OS X創(chuàng)建的一個(gè)原生面向?qū)ο驛PI,是Mac OS X上的五個(gè)API之一(另外四個(gè)是Carbon、POSIX、X11和Java)。
蘋果的面向?qū)ο箝_發(fā)框架用于生成Mac OS X應(yīng)用。主要的開發(fā)語言是Objective-c,它是c. Cocoa的超集,從1989年9月的NeXTSTEP 1.0開始。當(dāng)時(shí)沒有Foundation框架,只有動(dòng)態(tài)運(yùn)行時(shí),叫kit,最重要的是AppKit。1993年,NeXTSTEP 3.1被移植到英特爾、SPARC和惠普的平臺(tái)上,首次加入Foundation。同時(shí),孫和NeXT合作開發(fā)了OpenStep,它也可以在Windows系統(tǒng)上運(yùn)行。
據(jù)說可可API中還有很多以NS開頭的API。NS是什么?NS,下一步也。
Aqua UI
MacOS桌面環(huán)境,類似于Linux中的GNOME。
然而,并非所有的蘋果OS X都是Aqua UI。在《狂想曲》中,蘋果OS X的早期測(cè)試版,使用了經(jīng)典的蘋果操作系統(tǒng)界面。
好了,已經(jīng)介紹了macOS的一些重要組件。感謝閱讀。
部分信息來自維基百科中的Cocoa詞條和英文維基百科中的macOS Darwin詞條。本文的寫作也得到一些朋友的幫助,在此表示感謝。
1.《macosx IT之家:macOS結(jié)構(gòu)知多少,一看就懂了》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識(shí),僅代表作者本人觀點(diǎn),與本網(wǎng)站無關(guān),侵刪請(qǐng)聯(lián)系頁腳下方聯(lián)系方式。
2.《macosx IT之家:macOS結(jié)構(gòu)知多少,一看就懂了》僅供讀者參考,本網(wǎng)站未對(duì)該內(nèi)容進(jìn)行證實(shí),對(duì)其原創(chuàng)性、真實(shí)性、完整性、及時(shí)性不作任何保證。
3.文章轉(zhuǎn)載時(shí)請(qǐng)保留本站內(nèi)容來源地址,http://f99ss.com/guonei/808630.html