站在高处看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
    系统搜索功能。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

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