谁能详细介绍一下MAC系统的内核?

Mac OS X系统的内核是一个混合内核,称为XNU。XNU的核心是Mach,BSD层建立在Mach之上。它们都在相同的地址空间中,具有与单核相同的高效率。

混合内核:

混合内核希望结合单核和微内核的优点。核心底层服务(包括调度、进程通信和虚拟内存)都包含在核心位置,就像微内核一样。对于这个内核之外的服务,内核状态和这个内核在同一个内存空间。

XNU马赫:

Mach和BSD有各自的职责分工,就说Mach有这些核心职责吧。

进程和线程管理:我们平时用的POSIX thread和NSThread是和Mach层线程一一对应的。POSIX线程是线程的BSD层的更高级抽象。

虚拟内存分配和管理。

分配和调度物理设备,如CPU。

异常:Mach在现有的消息传递机制上实现了异常处理机制。下面是应用级开发者的详细介绍。如何捕捉Mach异常可以用来收集一些崩溃信息。其他崩溃收集文章可以在这里找到。

如果你想捕捉mach异常,你需要注册一个异常端口,它对当前任务的所有线程都有效。如果你想定位一个单独的线程,你可以使用thread_set_exception_ports来注册你自己的异常端口。

当异常发生时,首先将异常抛出到线程的异常端口,然后尝试抛出任务的异常端口。在捕捉异常时,您可以自己完成工作,例如当前堆栈收集。

扩展数据:

HFS+文件系统分析:

除了让用户稳定存储文件的目标之外,文件系统还是各种操作系统功能的基础。MacOSX的每个主要版本都添加了数百个新功能,其中许多功能严重依赖于文件系统实现。MacOSX 10.3提供FileVault对用户文件进行加密,因此用户的主目录存储在HFS+文件系统的加密镜像中。

参考资料:

百度百科-Mac OS