macOS结构知多少,一看就懂了

    摘要

    很多朋友虽然知道Mac OS X,然而并不是很了解其中的组成,本… 它大体由两部分组成:XNU内核和Unix工具.由于开放源代码的特…

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

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

    前身

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

    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早期测试版Rhapsoy中,用的还是经典的Classic Mac OS界面。

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

    干货分享

    更多你感兴趣的技术干货,请猛戳下面的阅读原文↓↓↓

    avatar
    • 本文由 发表于 2018年11月29日
    Mac 软件推荐(续)之程序猿篇 mac软件下载

    Mac 软件推荐(续)之程序猿篇

    在前面一篇文章“Mac 软件推荐(续) -- !程序猿篇” (文章取名装X失败, 悲伤)中, 我已经介绍了一些大众化的软件, 当然作为程序猿的你也应该参考参考(没看过前文的必须补上啊).本篇文章将介绍...
    匿名

    发表评论

    匿名网友 填写信息