LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 3447|回复: 4

[简明辨析] Mac OS X的内核(Darwin不算是个内核吧?)[主要也是为了搞明白和*BSD的关系]

[复制链接]
发表于 2007-1-21 19:46:15 | 显示全部楼层 |阅读模式
[color="Red"]首先声明:我是菜鸟。鉴于我根本不是计算机专业的学生,如果大家觉得会由于我个人的理解有无而误导各位的话,并且需要了解更多OSX相关简明知识的话,请阅读 Amit Singh 的个人站点的 [color="Red"]What is Mac OS X? 一文(Amit Singh著有 [color="Red"]Mac OS X Internals: A Systems Approach 一书,Mac程序员必读佳作之一哦。)

听到过说Mac OS X的内核是Darwin,Darwin呢,又是Mach 3.0 + FreeBSD layer...查了一下,和这种说法有出入。

首先,Mac OS X的内核叫 [color="Blue"]XNU ,它有许多组件构成,如: [color="Blue"]Mach[color="Blue"]BSD[color="Blue"] I/O Kit[color="Blue"]Platform Expert[color="Blue"]libkern[color="Blue"]libsa

[color="Blue"]XNU 的Mach部分来自 [color="Blue"]Mach 3.0 (但是 [color="Blue"]XNU 不是微内核),它负责 [color="Blue"]XNU 比较底层的任务,譬如:


  • 抢占式多任务,包括内核线程(Mac OS X用内核线程实现POSIX线程)
  • 内存保护
  • 虚拟内存管理
  • 进程间通信
  • 中断管理
  • 实时支持
  • 内核调试支持
  • 控制台I/O


注意, [color="Blue"]BSD 子系统其实是内核的一部分(包括其它子系统),它主要使用FreeBSD作为主要的参考代码库(当然也有NetBSD和OpenBSD的一些代码)。 [color="Blue"]BSD 主要负责:

  • 处理模型
  • 用户ID、权限,基本安全策略
  • POSIX API,BSD风格的系统调用
  • TCP/IP协议栈,BSD套接字,防火墙
  • VFS和文件系统
  • System V IPC
  • 加密框架
  • 各种同步机制


[color="Blue"]I/O Kit[color="Blue"]XNU 不同于其他传统系统的设备驱动框架,它是面向对象的,特性有:


  • 多种设备家族
  • 可共享设备的面向对象抽象
  • 即插即用和热插拔
  • 电源管理
  • 抢占式多任务,线程,SMP,内存保护和数据管理
  • 驱动的动态匹配和加载(多种总线类型)
  • 一个追踪和维护实例对象详细信息的数据库
  • 一个系统上所有可用I/O Kit类的数据库
  • 衍生API
  • 供应用程序和用户空间的驱动与I/O Kit通信的一套机制/接口
  • 驱动堆栈


对于 [color="Blue"]Platform Expert ,你可以把它看作某种驱动,它能系统所运行平台的类型,它负责:


  • 建立设备树
  • 语法分析某个引导参数
  • 辨认机器(包括处理器和总线的时钟频率)
  • 万一内核崩溃就初始化一个用户界面可用


[color="Blue"]I/O Kit 使用的是C++的一个子集,由 [color="Blue"]libkern 实现,这个库的主要特性:


  • 动态对象的分配、组建和破坏
  • 某些微小操作和各种函数
  • 提供追踪每个类当前的实例数
  • 避免“Fragile Base Class Problem”


[color="Blue"]libsa 提供用于各种目的的乱七八糟的函数:二叉树搜索啊、排序啊、内核扩展管理啊...

那么,Darwin是什么?Darwin只能说是一个Mac OS X的基础,它有超过250个软体包,其中许多是Apple自己的包(包括内核和其他各种驱动),另外一些就是来自*BSD和GNU等系统,Apple作了很多努力让这些开放源代码的软体整合到Mac OS X中去。

[color="Green"]最后一些废话:很显然,这篇流水账并不是要说教什么东西。正如标题所言,正是因为我总觉得大家似乎在了解OSX、Darwin和FreeBSD的关系上总是有些偏差(也许盲目的是我,那就当作自我了解后一个小小总结了),见笑了...
发表于 2007-1-21 21:56:32 | 显示全部楼层
还是没搞明白 Darwin 是什么.
Darwin只能说是一个Mac OS X的基础,它有超过250个软体包
这个基础指的是什么? 那些软件包是用来干吗的? 跟前面提到的 "Mach 、 BSD 、 I/O Kit 、 Platform Expert 、 libkern 、 libsa" 是什么关系?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-1-22 16:39:49 | 显示全部楼层
我没能力从技术角度深究...这里有篇自认为不错的文章:http://www.oreillynet.com/pub/a/ ... what-is-darwin.html

Darwin是OSX的核心,Darwin的内核也是XNU。OSX一种结构视图可以表明和Darwin的关系:

回复 支持 反对

使用道具 举报

发表于 2007-1-23 10:20:12 | 显示全部楼层
http://fink.sourceforge.net/doc/x11/x11.zh.html#intro.def-darwin

Darwin 基本上是 Mac OS X 的免费和公开源码的精简版本。它不包括 Quartz,Aqua,或其它相关技术。默认情况下,它只包括一个文字终端。



http://www.kernelthread.com/mac/osx/arch.html
Although Darwin is an operating system in itself, it can be best understood as a collection of technologies that have been integrated by Apple to form a major, central part of Mac OS X. Critical application environments of Mac OS X, such as Cocoa and Carbon, are not part of Darwin. So isn't Aqua, the overall GUI of Mac OS X (including the Windowing System), and several other components.


简单的总结: Darwin 其实本身就是个操作系统,或者说她具备了一个操作系统的所有功能/组件, 还有一个 CLI.  而 mac os x 用了Darwin , 然后除了 darwin, 其他主要的工作是在图形界面/api 上

不知道这样说是不是合理?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-1-24 15:55:38 | 显示全部楼层
我想也是这样,简单的解释就是美所在... ;-p
我怕有更技术性的深入解释而严格有悖于这种说法而不敢妄自武断。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表