谁能详细介绍一下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