一位脚踏实地,拥有梦想的90后!
本来小编想先把内存这块梳理下,但是联系到内存在 iOS
平台中也是 app
编译后的 Mach-O
可执行文件,所以就先把 OS
编译启动过程来讲述。
因为小编是一位 iOSer
这里讲解进程可以大概理解为:进程 == App
,下面给出进程的生命周期。进程的生命周期可以分为:创建(SIDL)、运行(SRUN)、睡眠(SSLEEP)、停止(SSTOP)、退出ing(SZONE)和终止(Dead)。
SIDL
这个状态是被父进程刚刚 Fork
创建生成一个唯一的 PID
,处于一个临时空闲状态。此时让然被称为:“正在初始化”,不会响应任何的信号和操作。这个初始化的过程是在单线程中来进行内存布局设置和加载所需要的引来模块。
实现处理完成只有进程可以执行,同时不会返回 SIDL
状态。相当与用户在手机屏幕点击 ICON
按钮后执行。
本来小编想先把内存这块梳理下,但是联系到内存在 iOS
平台中也是 app
编译后的 Mach-O
可执行文件,所以就先把 OS
编译启动过程来讲述。
因为小编是一位 iOSer
这里讲解进程可以大概理解为:进程 == App
,下面给出进程的生命周期。进程的生命周期可以分为:创建(SIDL)、运行(SRUN)、睡眠(SSLEEP)、停止(SSTOP)、退出ing(SZONE)和终止(Dead)。
SIDL
这个状态是被父进程刚刚 Fork
创建生成一个唯一的 PID
,处于一个临时空闲状态。此时让然被称为:“正在初始化”,不会响应任何的信号和操作。这个初始化的过程是在单线程中来进行内存布局设置和加载所需要的引来模块。
实现处理完成只有进程可以执行,同时不会返回 SIDL
状态。相当与用户在手机屏幕点击 ICON
按钮后执行。
上面是 XNU
内核在架构图,由上图我们可以看出 XNU
包含:Mach
微内核、BSD
层、libKern
和 I/O Kit
。
Mach
微内核Mach
微内核研发者是卡内基梅隆大学开发的操作系统,主要是致力于开发一套轻量级且高效平台。这个成果的就是我们讲述的 Mach
内核。
该操作系统包含:
1、进程和线程的抽象;
2、虚拟内存管理;
3、任务调度;
4、进程间通信和消息传递机制。
BSD
BSD
是建立在 Mach
基础上,同样也是 XNU
不可分割的一部分。这一层也是提供了 POSIX
兼容性,提供的更高层次的抽象。包含:
1、
UNIX
进程模型;
2、POSIX
线程模型及其相关的同步原语;
3、UNIX
用户模型和组;
4、网络协议栈;
5、文件访问系统;
6、设备访问。
libKern
在内核构建时都会采用 C
和汇编来实现,而 XNU
是采用 I/O Kit
来实现驱动,再次基础上可以瞒住 C++
来实现编写。于是就在此的基础上包含 libKern
库。
I/O Kit
这是 Apple
对常见 XNU
引入 I/O Kit
设备驱动框架,是一个完整的自包含执行环境,让开发者快速创建设备驱动程序。I/O Kit
形成了受限环境 C++
,并且带有 C++
提供的功能:继承和重载。
在 Core Graphics
后面一篇文章本该对 Core Image
框架进行整理,但是基于 Core Graphics
的富文本编辑 Core Text
框架更方便讲述。而且结合自己兴趣和好玩的程度在讲述自己对 Texture
即 ASDK
和 YYKit
详细描述。
这里小编对 Core Text
在实现的层次结构上所处位置,以及在对 UIKit
框架我们常见控件 UITextFiled
、UITextView
和 UILabel
具体实现基础。
more >>上图是小编根据 2018 WWDC 中 TextKit Best Practices 和 Introducing Text Kit 得出
Core Graphics
、Core Text
和UIKit
中能够实现文本绘制的控件实现结构图。
根据上面结构可以看出:
(1)基于Quartz
封装的Core Graphics
为Core Text
的实现基础。而且Quartz
可以直接处理字体和字形将文字渲染到界面,也是在 Apple 基础库中唯一一个处理字体模块。
(2)基于Core Text
封装实现的Text Kit
为在UIKit
和AppKit
中文本显示控件TypeTextFiled
、TypeTextView
等提供最直接的接口。
在 Core Graphics
后面一篇文章本该对 Core Image
框架进行整理,但是基于 Core Graphics
的富文本编辑 Core Text
框架更方便讲述。而且结合自己兴趣和好玩的程度在讲述自己对 Texture
即 ASDK
和 YYKit
详细描述。
这里小编对 Core Text
在实现的层次结构上所处位置,以及在对 UIKit
框架我们常见控件 UITextFiled
、UITextView
和 UILabel
具体实现基础。
more >>上图是小编根据 2018 WWDC 中 TextKit Best Practices 和 Introducing Text Kit 得出
Core Graphics
、Core Text
和UIKit
中能够实现文本绘制的控件实现结构图。
根据上面结构可以看出:
(1)基于Quartz
封装的Core Graphics
为Core Text
的实现基础。而且Quartz
可以直接处理字体和字形将文字渲染到界面,也是在 Apple 基础库中唯一一个处理字体模块。
(2)基于Core Text
封装实现的Text Kit
为在UIKit
和AppKit
中文本显示控件TypeTextFiled
、TypeTextView
等提供最直接的接口。
又是一个常用但是不知怎么开篇博文。🤔🤔🤔
Core Graphics
在 iOS
整个架构的层次结构可以和上篇 Core Animation
实现,这里仅仅展示 Core Graphics
实现的基础实现架构。
在讲解 Core Graphics
之前还是按照小编的🍉惯,对该框架 API
的接口进行整理。