XNU 的 Process(进程)的组成
Process 可以为 Program
程序 加上它所持有的 Resources
资源。资源包括 CPU时间和内存
XNU 内核主要由 BSD
和 Mach
两个部分组成。
BSD
: 作为Unix 内核提供了 Unix Process
Mach 内核
:把Process 抽象为 Task 和 Thread
https://zhuanlan.zhihu.com/p/57656644
Mach 中的抽象:
Mach Task 定义在 osfmk/kern/task.h
中。
持有 IPC space, memory address space, Mach threads, BSD info 等非常多进程相关信息。
给 App 起新线程的时候,无论是用 NSThread
还是其他上层接口。都是通过 pthread
接口实现了
内核空间中,一个 pthread
对应的是一个 Mach Thread
,结构体定义在 osfmk/kern/thread.h
,就是 struct thread
。