Mac OS 和 iOS 操作系統(tǒng)架構(gòu)

轉(zhuǎn)載?。?!

http://www.cnblogs.com/zhangmangyuan/archive/2013/03/28/iOS.html

做iOS開發(fā)已經(jīng)半年多了,但是感覺對(duì)iOS開發(fā)的理解卻還只停留在表面,昨天剛把兩個(gè)項(xiàng)目結(jié)了,今天打算學(xué)了一下iOS系統(tǒng)的架構(gòu),以便于更好的理解和開發(fā)。

首先看一下Mac OS 和 iOS 系統(tǒng)架構(gòu)的對(duì)比圖:

從圖上可以看出Mac OS和iOS的系統(tǒng)架構(gòu)層次只有最上面一層不同,Mac是Cocoa框架,而iOS是Cocoa Touch框架,因此Mac OS開發(fā)和iOS開發(fā)是相似的。這里我只分析iOS的系統(tǒng)架構(gòu):

一、核心操作系統(tǒng)層(Core OS layer):

Core OS是用FreeBSD和Mach所改寫的Darwin,

是開源、符合POSIX標(biāo)準(zhǔn)的一個(gè)Unix核心。這一層包含或者說(shuō)是提供了整個(gè)iPhone OS的一些基礎(chǔ)功能,比如:硬件驅(qū)動(dòng),

內(nèi)存管理,程序管理,線程管理(POSIX),文件系統(tǒng),網(wǎng)絡(luò)(BSD

Socket),以及標(biāo)準(zhǔn)輸入輸出等等,所有這些功能都會(huì)通過C語(yǔ)言的API來(lái)提供。另外,值得一題的是,這一層最具有UNIX色彩,如果你需要把

UNIX上所開發(fā)的程序移植到iPhone上,多半都會(huì)使用到Core OS的API.

核心OS層的驅(qū)動(dòng)也提供了硬件和系統(tǒng)框架之間的接口。然而,由于安全的考慮,只有有限的系統(tǒng)框架類能訪問內(nèi)核和驅(qū)動(dòng)。

iPhone OS提供了許多訪問操作系統(tǒng)低層功能的接口集,iPhone 應(yīng)用通過LibSystem庫(kù)來(lái)訪問這些功能,這些接口集如下所示:

線程(POSIX線程);

網(wǎng)絡(luò)(BSD sockets);

文件系統(tǒng)訪問;

標(biāo)準(zhǔn)I/O;

Bonjour和DNS服務(wù);

現(xiàn)場(chǎng)信息(Locale Information);

內(nèi)存分配;

數(shù)學(xué)計(jì)算。

許多Core OS技術(shù)的頭文件位于目錄/usr/include/,iPhoneSDK是SDK的安裝目錄。

二、核心服務(wù)層(Core Services layer):

Core Services在Core OS基礎(chǔ)上提供了更為豐富的功能, 它包含了Foundation.Framework和Core Foundation.Framework,

之所以叫Foundation

,就是因?yàn)樗峁┝艘幌盗刑幚碜执?,排列,組合,日歷,時(shí)間等等的基本功能。Foundation是屬于Objective-C的API,Core

Fundation是屬于C的API。另外Core servieces還提供了其他的功能,比如:

Security,

Core Location, SQLite, 和Address Book. 其中Security是用來(lái)處理認(rèn)證,密碼管理,按安全性管理的;

Core

Location是用來(lái)處理GPS定位的;SQLLite是輕量級(jí)的數(shù)據(jù)庫(kù),而AddressBook則用來(lái)處理電話薄資料的。下面是具體介紹:

(1)電話本

話本框架(AddressBook.framework)提供了保存在手機(jī)設(shè)備中的電話本編程接口。開發(fā)者能使用該框架訪問和修改存儲(chǔ)在用戶聯(lián)系

人數(shù)據(jù)庫(kù)里的記錄。例如,一個(gè)聊天程序可以使用該框架獲得可能的聯(lián)系人列表,啟動(dòng)聊天的進(jìn)程(Process),并在視圖上顯示這些聯(lián)系人信息等。

(2)核心基礎(chǔ)框架

核心基礎(chǔ)框架(CoreFoundation.framework)是基于C語(yǔ)言的接口集,提供iPhone應(yīng)用的基本數(shù)據(jù)管理和服務(wù)功能。該框架 支持如下功能:

Collection數(shù)據(jù)類型(Arrays、 Sets等);

Bundles;

字符串管理;

日期和時(shí)間管理;

原始數(shù)據(jù)塊管理;

首選項(xiàng)管理;

URL和Stream操作;

線程和運(yùn)行循環(huán)(Run Loops);

端口和Socket通信。

核心基礎(chǔ)框架與基礎(chǔ)框架是緊密相關(guān)的,它們?yōu)橄嗤幕竟δ芴峁┝薕bjective-C接口。如果開發(fā)者混合使用

Foundation Objects 和Core Foundation類型,就能充分利用存在兩個(gè)框架中的"toll-free

bridging"。toll-free

bridging意味著開發(fā)者能使用這兩個(gè)框架中的任何一個(gè)的核心基礎(chǔ)和基礎(chǔ)類型,例如Collection和字符串類型等。每個(gè)框架中的類和數(shù)據(jù)類型的

描述注明該對(duì)象是否支持toll-free bridged。如果是,它與哪個(gè)對(duì)象橋接(toll-free bridged)。

(3)CFNetwork

CFNetwork框架(CFNetwork.framework)是一組高性能的C語(yǔ)言接口集,提供網(wǎng)絡(luò)協(xié)議的面向?qū)ο蟮?/p>

抽象。開發(fā)者可以使用 CFNetwork框架操作協(xié)議棧,并且可以訪問低層的結(jié)構(gòu)如BSD

Sockets等。同時(shí),開發(fā)者也能簡(jiǎn)化與FTP和HTTP服務(wù)器的通信,或解析DNS等任務(wù)。使用CFNetwork框架實(shí)現(xiàn)的任務(wù)如下所示:

BSD Sockets;

利用SSL或TLS創(chuàng)建加密連接;

解析DNS Hosts;

解析HTTP協(xié)議,鑒別HTTP和HTTPS服務(wù)器;

在FTP服務(wù)器工作;

發(fā)布、解析和瀏覽Bonjour服務(wù)。

(4)核心位置框架(Core Location Framework)

核心位置框架(CoreLocation.framework)主要獲得手機(jī)設(shè)備當(dāng)前的經(jīng)緯度,核心位置框架利用附近

的GPS、蜂窩基站或Wi-

Fi信號(hào)信息測(cè)量用戶的當(dāng)前位置。iPhone地圖應(yīng)用使用這個(gè)功能在地圖上顯示用戶的當(dāng)前位置。開發(fā)者能融合這個(gè)技術(shù)到自己的應(yīng)用中,給用戶提供一些位

置信息服務(wù)。例如可以提供一個(gè)服務(wù):基于用戶的當(dāng)前位置,查找附近的餐館、商店或設(shè)備等。

(5)安全框架(Security Framework)

iPhone

OS除了內(nèi)置的安全特性外,還提供了外部安全框架(Security.framework),從而確保應(yīng)用數(shù)據(jù)的安全性。該框架提供了管理證書、公鑰/私

鑰對(duì)和信任策略等的接口。它支持產(chǎn)生加密安全的偽隨機(jī)數(shù),也支持保存在密鑰鏈的證書和密鑰。對(duì)于用戶敏感的數(shù)據(jù),它是安全的知識(shí)庫(kù)(Secure

Repository)。CommonCrypto接口也支持對(duì)稱加密、HMAC和數(shù)據(jù)摘要。在iPhone

OS里沒有OpenSSL庫(kù),但是數(shù)據(jù)摘要提供的功能在本質(zhì)上與OpenSSL庫(kù)提供的功能是一致的。

(6)SQLite

iPhone應(yīng)用中可以嵌入一個(gè)小型SQL數(shù)據(jù)庫(kù)SQLite,而不需要在遠(yuǎn)端運(yùn)行另一個(gè)數(shù)據(jù)庫(kù)服務(wù)器。開發(fā)者可以創(chuàng)建

本地?cái)?shù)據(jù)庫(kù)文件,并管理這些

文件中的表格和記錄。數(shù)據(jù)庫(kù)SQLite為通用的目的而設(shè)計(jì),但仍可以優(yōu)化為快速訪問數(shù)據(jù)庫(kù)記錄。訪問數(shù)據(jù)庫(kù)SQLite的頭文件位

于/usr/include/sqlite3.h,其中是SDK安裝的目標(biāo)路徑。

(7)支持XML

基礎(chǔ)框架提供NSXMLParser類,解析XML文檔元素。libXML2庫(kù)提供操作XML內(nèi)容的功能,這個(gè)開放源代

碼的庫(kù)可以快速解析和編輯

XML數(shù)據(jù),并且轉(zhuǎn)換XML內(nèi)容到HTML。訪問libXML2庫(kù)的頭文件位于目錄/usr/include

/libxml2/,其中是SDK安裝的目標(biāo)目錄。

三、媒體層(Media layer):

如同其名,Media層提供了圖片,音樂,影片等多媒體功能。圖像分為2D圖像和3D圖像,

前者由Quartz2D來(lái)支持,后者則是用OpenglES.與音樂對(duì)應(yīng)的模組是Core Audio和OpenAL, Media Player

實(shí)現(xiàn)了影片的播放, 而最后還提供了Core Animation來(lái)對(duì)強(qiáng)大動(dòng)畫的支持。具體介紹如下:

(1)圖像技術(shù)(Graphics Technologies)

高質(zhì)量圖像是所有iPhone應(yīng)用的一個(gè)重要的組成部分。任何時(shí)候,開發(fā)者可以采用UIKit

框架中已有的視圖和功能以及預(yù)定義的圖像來(lái)開發(fā)iPhone應(yīng)用。然而,當(dāng)UIKit

框架中的視圖和功能不能滿足需求時(shí),開發(fā)者可以應(yīng)用下面描述的技術(shù)和方法來(lái)制作視圖。

① Quartz。核心圖像框架(CoreGraphics.framework)包含了Quartz

2D畫圖API,Quartz與在Mac

OS中采用的矢量圖畫引擎是一樣先進(jìn)的。Quartz支持基于路徑(Path-based)畫圖、抗混淆(Anti-aliased)重載、梯度

(Gradients)、圖像(Images)、顏色(Colors)、坐標(biāo)空間轉(zhuǎn)換(Coordinate-space

Transformations)、pdf文檔創(chuàng)建、顯示和解析。雖然API是基于C語(yǔ)言的,它采用基于對(duì)象的抽象表征基礎(chǔ)畫圖對(duì)象,使得圖像內(nèi)容易于保

存和復(fù)用。

② 核心動(dòng)畫(Core

Animation)。Quartz核心框架(QuartzCore.framework)包含CoreAnimation接口,Core

Animation是一種高級(jí)動(dòng)畫和合成技術(shù),它用優(yōu)化的重載路徑(Rendering

Path)實(shí)現(xiàn)復(fù)雜的動(dòng)畫和虛擬效果。它用一種高層的Objective-C接口配置動(dòng)畫和效果,然后重載在硬件上獲得較好的性能。Core

Animation集成到iPhone OS

的許多部分,包括UIKit類如UIView,提供許多標(biāo)準(zhǔn)系統(tǒng)行為的動(dòng)畫。開發(fā)者也能利用這個(gè)框架中的Objective-C接口創(chuàng)建客戶化的動(dòng)畫。

③ OpenGL ES。OpenGL ES框架(OpenGLES.framework)符合OpenGL ES

v1.1規(guī)范,它提供了一種繪畫2D和3D內(nèi)容的工具。OpenGL ES

框架是基于C語(yǔ)言的框架,與硬件設(shè)備緊密相關(guān),為全屏游戲類應(yīng)用提供高幀率(high frame

rates)。開發(fā)者總是要使用OpenGL框架的EAGL接口,EAGL接口是OpenGL ES框架的一部分,它提供了應(yīng)用的OpenGL

ES畫圖代碼和本地窗口對(duì)象的接口。

(2)音頻技術(shù)(Audio Technologies)

iPhone OS的音頻技術(shù)為用戶提供了豐富的音頻體驗(yàn)。它包括音頻回放,高質(zhì)量的錄音和觸發(fā)設(shè)備的振動(dòng)功能等。

iPhone OS的音頻技術(shù)支持如下音頻格式:AAC、Apple Lossless(ALAC)、A-law、IMA/ADPCM(IMA4)、Linear PCM、μ-law和Core Audio等。

① 核心音頻(Core Audio Family)。核心音頻框架家族(Core Audio family of

frameworks)提供了音頻的本地支持,如表16-1所示。Core Audio是一個(gè)基于C語(yǔ)言的接口,并支持立體聲(Stereo

Audio)。開發(fā)能采用iPhone OS 的Core Audio框架在iPhone

應(yīng)用中產(chǎn)生、錄制、混合和播放音頻。開發(fā)者也能通過核心音頻訪問手機(jī)設(shè)備的振動(dòng)功能。

核心音頻框架:

框架(Framework)

服務(wù)(Service)

CoreAudio.framework

定義核心音頻的音頻數(shù)據(jù)類型

AudioUnit.framework

提供音頻和流媒體文件的

回放和錄制,并且管理音

頻文件和播放提示聲音

AudioToolbox.framework

提供使用內(nèi)置音頻單元服務(wù),

音頻處理模塊

② OpenAL。iPhone OS 也支持開放音頻庫(kù)(Open Audio Library, OpenAL)。OpenAL是一個(gè)跨平臺(tái)的標(biāo)準(zhǔn),它能傳遞位置音頻(Positional Audio)。開發(fā)者能應(yīng)用OpenAL在需要位置音頻輸出的游戲或其他應(yīng)用中實(shí)現(xiàn)高性能、高質(zhì)量的音頻。

由于OpenAL是一個(gè)跨平臺(tái)的標(biāo)準(zhǔn),采用OpenAL的代碼模塊可以平滑地移植到其他平臺(tái)。

(3)視頻技術(shù)(Video Technologies)

iPhone OS通過媒體播放框架(MediaPlayer.framework)支持全屏視頻回放。媒體播放框架支持的視頻文件格式包括.mov, .mp4,.m4v和.3gp,并應(yīng)用如下壓縮標(biāo)準(zhǔn):

① H.264 Baseline Profile Level 3.0 video,在30 f/s 的情況下分辨率達(dá)到640×480像素。注意:不支持B frames;

② MPEG4規(guī)范的視頻部分;

③ 眾多的音頻格式,包含在音頻技術(shù)的列表里,如AAC、Apple Lossless (ALAC)、A-law、IMA/ADPCM(IMA4)、線性PCM、μ-law和Core Audio等。

四、可觸摸層(Cocoa Touch layer):

最上面一層是Cocoa Touch,它是Objective-C的API,

其中最核心的部分是UIKit.Framework,應(yīng)用程序界面上的各種組件,全是由它來(lái)提供呈現(xiàn)的,除此之外它還負(fù)責(zé)處理屏幕上的多點(diǎn)觸摸事件,文字

的輸出,圖片,網(wǎng)頁(yè)的顯示,相機(jī)或文件的存取,以及加速感應(yīng)的部分等。具體介紹如下:

(1)UIKit框架

UIKit框架(UIKit.framework)包含Objective-C程序接口,提供實(shí)現(xiàn)圖形,事件驅(qū)動(dòng)的iPhone應(yīng)用的關(guān)鍵架構(gòu)。 iPhone OS中的每一個(gè)應(yīng)用采用這個(gè)框架實(shí)現(xiàn)如下核心功能:

應(yīng)用管理;

支持圖形和窗口;

支持觸摸事件處理;

用戶接口管理;

提供用來(lái)表征標(biāo)準(zhǔn)系統(tǒng)視圖和控件的對(duì)象;

支持文本和Web內(nèi)容;

通過URL scheme與其他應(yīng)用的集成。

為提供基礎(chǔ)性代碼建立應(yīng)用,UIKit也支持一些與設(shè)備相關(guān)的特殊功能,如下所示:

加速計(jì)數(shù)據(jù);

內(nèi)建Camera;

用戶圖片庫(kù);

設(shè)備名稱和模式信息。

(2)基礎(chǔ)框架(Foundation Framework)

基礎(chǔ)框架(Foundation.framework)支持如下功能:

Collection數(shù)據(jù)類型(包括Arrays、Sets);

Bundles;

字符串管理;

日期和時(shí)間管理;

原始數(shù)據(jù)塊管理;

首選項(xiàng)管理;

線程和循環(huán);

URL和Stream處理;

Bonjour;

通信端口管理;

國(guó)際化。

(3)電話本UI框架(Address Book UI Framework)

話本UI框架(AddressBookUI.framework)是一個(gè)Objective-C標(biāo)準(zhǔn)程序接口,主要用來(lái)創(chuàng)建新聯(lián)系人,編輯和選擇

電話本中存在的聯(lián)系人。它簡(jiǎn)化了在iPhone應(yīng)用中顯示聯(lián)系人信息,并確保所有應(yīng)用使用相同的程序接口,保證應(yīng)用在不同平臺(tái)的一致性。

總結(jié):

當(dāng)我們要開發(fā)iPhone程序的時(shí)候,首先要現(xiàn)從上層入手,優(yōu)先使用Objective-C封裝后的庫(kù),也就是通過

UIKit.framework搭配Foundation.framework來(lái)進(jìn)行開發(fā),而當(dāng)面對(duì)一些比較復(fù)雜的功能時(shí),像是多媒體的處理或是繪圖,再

往下層去找尋相關(guān)的framwork開完成。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • iOS的系統(tǒng)架構(gòu)分為四個(gè)層次:核心操作系統(tǒng)層(Core OS layer)、核心服務(wù)層(Core Services...
    zhaihongxia閱讀 3,269評(píng)論 0 3
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,148評(píng)論 4 61
  • 感謝陳詠老師的分享,讓我能夠覺察自己的情緒,知道負(fù)面情緒背后的積極意義,并能通過積極主動(dòng)情緒的覺察表,在刺...
    鞠曉艷37101閱讀 336評(píng)論 0 0
  • 糾結(jié)小姐是我身邊最可怕的糾結(jié)魔人。 早餐吃豆?jié){油條還是牛奶面包,出門不知道該挑哪只口紅,買衣服是偏暖色系還是冷色系...
    閆曉雨閱讀 848評(píng)論 4 7
  • 每個(gè)人在人生的舞臺(tái)都會(huì)有很多角色,從哇哇落地開始,就有了為人兒女的角色,隨著成長(zhǎng)的足跡,我們的角色越來(lái)越多,越來(lái)越...
    巍然0619閱讀 872評(píng)論 1 5

友情鏈接更多精彩內(nèi)容