iOS面试-系统架构
2019-06-03 本文已影响27人
Gaizka
简单来说ios系统分为4层:
- UI层: 主要springboard / spotlight狗层
- 应用框架层: 包括cocoa touch 构成
- 核心框架层 : 包括open gl 、open es 、多媒体组件
- drawin层: 操作系统核心层 ,有xnu内核和xnu shell 构成
我们重点是drawin层:核心的是xnu内核,它主要包括以下核心内容:
- bsd 用户态,
- mach 内核态
- libkern c++库
- iokit库: 外部设备驱动
bsd : 位于mach内核台的外层,用户态;
1. 建立pthread 线程模版,后续的线程都是基于他的;
2. 网络协议栈(BSD Socket API),上层的CFSocket都是基于bsd 的api标准进行开发;
3. 文件系统访问,上层的处理文件操作都是根据此机制进行的;
mach: 位于内核核心部分
1. 进程和线程的抽象层,后续的进程、线程操作都是基于它进行;
2. 任务调度
3. 虚拟内存管理
4. 负责进程和线程之间的通讯
iOS 的安全机制
- 代码签名:使用SSL验证身份,通过发布者的私钥对公钥进行签名,来验证应用程序的来源以及在传输过程中是否被篡改
- 隔离机制(沙盒化):不受信任的应用程序必须在一个独立的隔间中运行,隔间实际上就是一个隔离的环境,在这个环境所有的操作都会受到限制,采用“黑名单”风格方法来阻止已知的危险操作,只有在列表具有足够的限制性时才有效果
- Entitlement:更为严格的沙盒,采用“白名单”的方式,只允许那些已知是安全的操作,其他所有操作都不允许,替换当前沙盒机制中采用的“黑名单”方式