首先,Mac OS X的内核叫 XNU ,它有许多组件构成,如: Mach 、 BSD 、 I/O Kit 、 Platform Expert 、 libkern 、 libsa 。
XNU 的Mach部分来自 Mach 3.0 (但是 XNU 不是微内核),它负责 XNU 比较底层的任务,譬如:
抢占式多任务,包括内核线程(Mac OS X用内核线程实现POSIX线程)
内存保护
虚拟内存管理
进程间通信
中断管理
实时支持
内核调试支持
控制台I/O
注意, BSD 子系统其实是内核的一部分(包括其它子系统),它主要使用FreeBSD作为主要的参考代码库(当然也有NetBSD和OpenBSD的一些代码)。 BSD 主要负责:
处理模型
用户ID、权限,基本安全策略
POSIX API,BSD风格的系统调用
TCP/IP协议栈,BSD套接字,防火墙
VFS和文件系统
System V IPC
加密框架
各种同步机制
I/O Kit 是 XNU 不同于其他传统系统的设备驱动框架,它是面向对象的,特性有:
多种设备家族
可共享设备的面向对象抽象
即插即用和热插拔
电源管理
抢占式多任务,线程,SMP,内存保护和数据管理
驱动的动态匹配和加载(多种总线类型)
一个追踪和维护实例对象详细信息的数据库
一个系统上所有可用I/O Kit类的数据库
衍生API
供应用程序和用户空间的驱动与I/O Kit通信的一套机制/接口
驱动堆栈
对于 Platform Expert ,你可以把它看作某种驱动,它能系统所运行平台的类型,它负责:
建立设备树
语法分析某个引导参数
辨认机器(包括处理器和总线的时钟频率)
万一内核崩溃就初始化一个用户界面可用
I/O Kit 使用的是C++的一个子集,由 libkern 实现,这个库的主要特性:
动态对象的分配、组建和破坏
某些微小操作和各种函数
提供追踪每个类当前的实例数
避免“Fragile Base Class Problem”
libsa 提供用于各种目的的乱七八糟的函数:二叉树搜索啊、排序啊、内核扩展管理啊...
那么,Darwin是什么?Darwin只能说是一个Mac OS X的基础,它有超过250个软体包,其中许多是Apple自己的包(包括内核和其他各种驱动),另外一些就是来自*BSD和GNU等系统,Apple作了很多努力让这些开放源代码的软体整合到Mac OS X中去
相关文章
- cocos2dx 3.x fullPathForFilename及isFileExist在ios/mac下与win32下行为不同
- \"xxx\"已被OS X使用,不能打开
- 如何将Info.plist文件从mac os项目转换为iphone项目?
- [操作系统] OS X Yosemite U盘制作
- Mac OS X相当于DirectShow,GraphEdit
- 为AM335x移植Linux内核主线代码(35)使用platform中的GPIO
- [原创]Mac系统下制作OS 10.11安装镜像
- Mac OS X: 安全警告,病毒就在你身边
- Mac OS X安装之虚拟机环境下的总结
- Windows 8.1下安装Mac OS X 10.8虚拟机