站在高处看iOS开发(2) ——— iOS系统架构

引言:

在之前的一篇文章站在高处看iOS开发 ——— 深入浅出iOS操作系统,从Mac OS和iOS的历史开始,重点讲解操作系统内核以及之间的核心关系,本章是对上一章的具体分析 ——— iOS系统架构。

iOS系统架构

系统构架是对已确定的需求的技术实现构架、作好规划,运用成套、完整的工具,在规划的步骤下去完成任务百度百科-系统架构。例如服务端经常提到的微服务架构,支付宝的支付架构等。
操作系统架构抽象来说,它是计算机系统结构,或称计算机体系结构,是一个系统在其所处环境中最高层次的概念;它确定一台计算机硬件和软件之间的衔接。具体地说计算机体系结构指的是计算机系统设计的观念与架构,描述计算机在实做的设计原则。它确定一个计算机设计的部件功能 ,部件间接口 并且计算机体系结构着重于“负责了计算机架构的中心功能:计算”的中央处理器内部的运行动作与存储器的访问。
iOS系统架构,简单理解就是使iOS软件在iOS硬件上完整、高效运转所构建的一系列工具。

学习的最基础也是最重要的部分就是官方文档。OS X 系统框架官方文档


这是官网上面关于iOS的系统架构,主要分为五个层次,由内而外依次是:

  • 核心操作系统层(Core OS layer)
  • 核心服务层(Core Services layer)
  • 媒体层(Media layer)
  • 可触摸层(Cocoa Touch layer)
  • 应用层(Application layer)

1. Core OS layer

核心操作系统层实现了与应用程序安全性相关的功能。框架提供与硬件和网络相关的低级服务。这些服务基于内核和设备驱动程序层中的设施。

  • Darwin
    核心操作系统层内核就是我们经常提到的Darwin,Darwin(达尔文)是苹果公司于2000年发布的一个开源操作系统,Darwin是macOS 和 iOS的一部分。可以将Darwin理解为操作系统的代号。Darwin由XNU和一些其他的Darwin库组成。

    Darwin架构模型 —— 图片引用自《深入解析Mac OS X & iOS 操作系统》.png

  • XNU
    XNU是由苹果公司发布的操作系统内核,即Darwin的内核是XNU,是Darwin操作系统的一部分。除macOS外,XNU还是iOS、tvOS、watchOS操作系统的内核。XNU是X is not Unix的缩写。XNU包含三部分:Mach内核、BSD、I/O Kit。

  • Mach
    XNU内核以一个被深度定制的Mach3.0内核作为基础。Mach是一个由卡内基梅隆大学开发的计算机操作系统微内核,主要是为了用于操作系统研究,特别是在分布式与并行运算上。XNU中的Mach所负责的功能非常少(核心功能),只能完成操作系统最基本的职责,比如任务调度、消息传递、进程间通信等。

  • BSD
    BSD,伯克利软件套件(Berkeley Software Distribution),也被称为伯克利Unix(Berkeley Unix),是一个操作系统的名称。XNU中的BSD部分提供了POSIX应用程序接口(BSD系统称之为API):进程模型、网络协议栈、虚拟文件系统等。

Darwin内核.png

如果对Darwin和Mach有兴趣,可参阅:

  • iOS系统的封闭性
    而iOS作为一个移动平台操作系统,苹果一直竭尽全力保证iOS系统的封闭性。实际上,这种做法就是将操作系统限制为只允许开发者访问苹果公司认为是“安全”或“推荐”的功能,而不允许开发者访问整个硬件的功能。那iOS操作系统在Darwin操作系统上做了哪些人为的限制去保证iOS系统的封闭性?这个问题,大家可以私聊我进行探讨。这两年风头正盛的"越狱",实际上就是破坏这层iOS系统的封闭性限制。
    • Code Signing 代码签名:使用SSL验证身份,通过发布者的私钥对公钥进行签名,来验证应用程序的来源以及在传输过程中是否被篡改
    • App Sandbox 隔离机制(沙盒化):不受信任的应用程序必须在一个独立的隔间中运行,隔间实际上就是一个隔离的环境,在这个环境所有的操作都会受到限制,采用“黑名单”风格方法来阻止已知的危险操作,只有在列表具有足够的限制性时才有效果
    • Entitlement:更为严格的沙盒,采用“白名单”的方式,只允许那些已知是安全的操作,其他所有操作都不允许,替换当前沙盒机制中采用的“黑名单”方式

核心操作系统框架

  • Accelerate
  • Disk Arbitration
  • OpenCL
  • Open Directory
  • System Configuration

2. Core Services layer

为应用程序提供基本服务,但与应用程序的用户界面没有直接关系。通常,这些技术取决于OS X最低的两个层(即核心OS层以及内核和设备驱动程序层)中的框架和技术。

核心服务层框架

  • Foundation Framework
  • Accounts Framework
  • Maps Framework
  • Address Book Framework
  • CFNetwork Framework
  • Core Data Framework
  • Core Foundation Framework
  • Core Location Framework
  • Core Media Framework
  • Core Telephony Framework
  • Event Kit Framework
  • Mobile Core Services Framework
  • Quick Look Framework
  • Store Kit Framework
  • Notification Center
  • Block Objects
  • Grand Central Dispatch
  • In App Purchase
  • Location Services
  • SQLite Database
  • XML Support
  • Automator framework
  • Social Framework
  • WebKit

3. Media layer

  • 顾名思义,媒体层可以在应用程序中使用各种媒体文件,进行音频与视频的录制,图形的绘制,以及制作基础的动画效果。

媒体层框架

  • AVFoundation
  • Core Graphics
  • Core Text
  • Core Audio
  • Core Animation
  • Core Image
  • OpenAL
  • OpenGL
  • OpenGL ES
  • Image I/O
  • ImageKit
  • ColorSync
  • Audio Mixing
  • Audio Recording
  • Video Playback
  • Video Toolbox
  • Audio Toolbox
  • Audio Unit
  • JPG
  • PNG
  • TIFF
  • PDF
  • Quartz
  • GLKit
  • Quartz Core
  • Scene Kit
  • QuickTime Kit
  • Sprite Kit

4. Cocoa Touch layer

  • 本质上来说它负责用户在iOS设备上的触摸交互操作
  • 包括以下这些组件: Multi-Touch Events Core Motion Camera View Hierarchy Localization Alerts Web Views Image Picker Multi-Touch Controls.
  • cocoa 很多组件都有两种实现,一种是基于 C 的以 CF 开头的类(CF=Core Foundation),这是比较底层的;另一种是基于 Obj-C 的以 NS 开头的类(NS=NExT STEP),这种类抽象层次更高,易于使用。
  • 大部分iOS开发者都是跟Cocoa Touch layer打交道

触摸层框架

  • UIKit

5. 应用层

  • SpringBoard
    SpringBoard.app是一个系统进程,可以理解为桌面系统,可以统一管理和分发系统接收到的触摸事件。
  • Spotlight
    系统搜索功能。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,569评论 25 707
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,100评论 18 139
  • 前言 2016年4月21日,阿里巴巴在Qcon大会上宣布跨平台移动开发工具Weex开放内测邀请。Weex能够完美兼...
    一缕殇流化隐半边冰霜阅读 38,785评论 137 366
  • css颜色表示方式: css3新增颜色表示方式 css1&css2的颜色方式: color name--颜色名称方...
    love2013阅读 269评论 0 0
  • 海浪平了铃声最后一个音符 一片灯光等一群人 海风卷走最后几嘴喧闹 月光只留一个人 七十盏灯只亮一盏 六十九只笔仅用...
    漾溪阅读 339评论 0 2