IT之家学院:macOS结构知多少,一看就懂了

2018-09-17 12:27IT之家 - njlyf2011
感谢IT之家网友 软媒用户1358495 的线索投递!

很多朋友虽然知道Mac OS X,然而并不是很了解其中的组成,本文将从底层开始,依次介绍macOS的几个重要组成部分。

图片许可:CC BY-SA 3.0

说到macOS(Mac OS X、OS X),我们不能不提到它的前身——NeXTSTEP。

前身

1985年,乔布斯在内部斗争失败,离开苹果创建了NeXT,在NeXT中,他的团队基于Mach和BSD创建了一款类Unix的面向对象的操作系统——NeXTSTEP,1996年乔布斯回归苹果之后,这款先进于Classic Mac OS的操作系统也随之来到了苹果,最终取代了比较原始的Classic Mac OS。

图片许可:Fair Use

Darwin Operarting System

Darwin是macOS的基础部分(或者称为Core OS),它也是一款开放源代码的类Unix操作系统。它大体由两部分组成:XNU内核和Unix工具。

由于开放源代码的特性,所以一些组织正在利用苹果释出的Darwin源码进行二次开发,比如PureDarwin项目。

XNU

我们通常会说macOS的内核是“Darwin”,其实这是一个不严谨的说法,因为Darwin不只包含内核,还包括其他东西。严格来说macOS的内核是XNU。

说到这里,插一句题外话,苹果有一个自相矛盾的地方,虽然macOS已经通过Unix认证,然而XNU的全称和GNU格式一样,是XNU’s not Unix,顾名思义,XNU不是Unix。

XNU是macOS的核心部分,它是一款结合了微内核与宏内核特性的混合内核,它包括三个部分:Mach、BSD和I/O Kit。

Mach

Mach原来是一款微内核,XNU中的Mach来自于OSFMK 7.3(Open Software Foundation Mach Kernel))它负责CPU调度、内存保护等功能。它是macOS内核中最重要的部分,XNU中大部分代码来自于它,而且macOS中的可执行文件也是mach-o格式。

BSD

XNU中包含一个经过修改的BSD,它负责进程管理、Unix文件权限、网络堆栈、虚拟文件系统、POSIX兼容。macOS之所以符合单一Unix规范,也正是因为如此。

I/O Kit

I/O Kit是XNU内核中的开源框架,可帮助开发人员为Apple的macOS和iOS操作系统编写设备驱动程序代码。I/O Kit框架由NeXTSTEP的DriverKit演变而来,与Mac OS 9的设备驱动程序框架或BSD的没有任何相似之处。

命令行工具

除了内核以外,Darwin还包括一些Unix工具,这些Unix工具一些是Apple开发,一些来自于第三方,比如FreeBSD Project、GNU Project、Apache。

这里说一说它的初始化程序launchd。

Launchd由苹果开发,它是一款统一服务管理框架,用于启动,停止和管理macOS中的守护进程,应用程序,进程和脚本。由于它支持多线程,所以它比传统的Unix初始化程序SysVinit要高,launchd同时正在被移植到FreeBSD平台,它的设计思想也被systemd所借鉴,后者成为目前Linux发行版中的主流系统初始化程序。

Core Foundation

Core Foundation(也称为CF)是macOS和iOS中的C应用程序编程接口(API),是低级例程和包装函数的混合。

Quartz

macOS毕竟是类Unix操作系统,类Unix操作系统想要进行图形化操作,必须要有一个图形框架,在Linux上我们有X11,有Wayland,在macOS中,我们有Quartz。它是一款基于PDF技术的图形框架。

作为一个类unix,不兼容X11是不可能的,如果你想在macOS中运行X11应用,也可以,有个开源项目叫XQuartz了解一下。

Cocoa

Cocoa是苹果公司为Mac OS X所创建的原生面向对象的API,是Mac OS X上五大API之一(其它四个是Carbon、POSIX、X11和Java)。

苹果的面向对象开发框架,用来生成Mac OS X的应用程序。主要的开发语言为Objective-c,一个c的超集。Cocoa开始于1989年9月上市的NeXTSTEP 1.0,当时没有Foundation框架,只有动态运行库,称为kit,最重要的是AppKit. 1993年NeXTSTEP 3.1被移植到了Intel, Sparc, HP的平台上,Foundation首次被加入,同时Sun和NeXT合作开发OpenStep也可以运行在Windows系统上VCV。

据说Cocoa API里面到现在还有不少NS开头的API,何为NS?NS者,NeXTSTEP也。

Aqua UI

macOS的桌面环境,类似Linux中的GNOME。

不过,不是所有Mac OS X都是Aqua UI,在Mac OS X早期测试版Rhapsody中,用的还是经典的Classic Mac OS界面。

好了,macOS的一些重要部件就介绍完了,感谢大家的阅读。

部分资料来自百科Cocoa词条和英文维基百科macOS Darwin launchd条目,本文的撰写也得到了一些朋友的帮助,在此表示感谢。

广告声明:文内含有的对外跳转链接(包括不限于超链接、二维码、口令等形式),用于传递更多信息,节省甄选时间,结果仅供参考,IT之家所有文章均包含本声明。

文章价值:
人打分
有价值还可以无价值
置顶评论
    热门评论
      文章发布时间太久,仅显示热门评论
      全部评论
      一大波评论正在路上
        取消发送
        软媒旗下人气应用

        如点击保存海报无效,请长按图片进行保存分享