Linux カーネルと macOS カーネルはどちらも UNIX ベースです。 macOSは「リナックス」だと言う人もいれば、コマンドやファイルシステムの階層が似ているため、両者は互換性があると言う人もいます。

今日は、以前の Linux カーネルの記事で述べたように、Linux カーネル & Mac カーネルの違いと類似点を示しながら、両方を少し紹介したいと思います。

目次

macOS のカーネル

1985年にスティーブ・ジョブズは CEO のジョン・スカリーおよび Apple の取締役会と意見の相違により Apple から去りました。 その後、彼はNeXTという新しいコンピュータ会社を設立しました。 ジョブズは新しいコンピュータ(新しいオペレーティングシステムを搭載したもの)を早くリリースしたいと考えていました。 時間を節約するために、NeXT チームはカーネギーメロンの Mach カーネルと BSD コードベースの一部を使用して、NeXTSTEP オペレーティング システムを作成しました。 一方、Apple は何度かオペレーティング システムのアップデートを試みましたが失敗し、IBM と提携することさえありました。 1997年、AppleはNeXTを4億2900万ドルで買収した。 この取引の一部として、スティーブ・ジョブズは Apple に戻り、NeXTSTEP は macOS と iOS の基礎となりました。

Linux カーネル

macOS カーネルとは異なり、Linux は商業企業の一部として作成されたわけではありません。 その代わり、1991年にコンピュータ学生であるリーナス・トーバルズによって作成された。 もともと、カーネルはLinusのコンピュータの仕様に従って書かれたもので、彼は新しい80386プロセッサを利用したかったからです。

Linus は 1991 年 8 月に彼の新しいカーネルのコードをウェブに投稿しました。 すぐに、彼はコードやリソースの提案を世界中で受けるようになりました。 翌年、Orest Zborowski は X Windows System を Linux に移植し、グラフィカルユーザーインターフェースをサポートする機能を持たせました。 この頭字語は “XNU is Not Unix” の略です。 Apple の公式 Github ページによると、XNU は “カーネギー メロン大学で開発された Mach カーネルと FreeBSD およびドライバ用の C++ コンポーネントを組み合わせたハイブリッド カーネル” とのことです。

BSDサブシステムの部分は、「通常はマイクロカーネルシステムのユーザースペースサーバとして実装される」コードです。 Mach の部分は、マルチタスク、保護メモリ、仮想メモリ管理、カーネルデバッグサポート、コンソール I/O などの低レベルの作業を担当します。

macos kernel resources

Map of MacOS: すべての中心は Darwin と呼ばれ、その中に個別のシステムユーティリティと XNU カーネル、部分的に Mach カーネルと BSD カーネルで構成されているものが入っています。

Linuxとは異なり、このカーネルはハイブリッドカーネルと呼ばれるものに分割されており、メンテナンスのために一部分が停止しても、別の部分は動作し続けることができます。 いくつかの議論では、これはまた、ハイブリッドカーネルがより安定しているという事実の問題を開いた。その部分の1つが停止した場合、他の部分は再びそれを開始することができます。 モノリシックカーネルは、CPU、メモリ、プロセス間通信、デバイスドライバ、ファイルシステム、システムサービスコールを管理する役割を担っています。 もちろん、モノリシック・カーネルは遅い上にエラーが起きやすいということで、Linus氏や他の開発者ともすでに多くの議論を呼んでいますが、Linuxは毎年この逆で、ハイブリッド・カーネルとして最適化することができるのです。 また、RedHat の協力により、カーネルには Live Patch が含まれ、再起動不要のリアルタイムメンテナンスが可能になりました。

MacOS カーネル (XNU) と Linux の違い

  1. macOS カーネル (XNU) は Linux より長く存在し、さらに古い二つのコードベースが組み合わされてベースになっているため、Linux より古いです。 一方、Linux は新しく、ゼロから書かれており、他の多くのデバイスで使用されています。そのため、最高のスーパーコンピュータ 500 台すべてと、最近発足した北米のスーパーコンピュータに搭載されています。

システム範囲では、macOS ターミナルのコマンドラインを介したパッケージマネージャはありません。

BSD などの .pkg 形式のパッケージのインストールは、GUI を介さない場合、このコマンドラインを介します:

$ sudo installer -pkg /path/to/package.pkg -target /

NOTE: MacOS .pkg は BSD .pkg と全く異なります!

macOS が BSD のプログラムをサポートしているとか考えないようにしてください。 サポートしませんし、インストールもしません。 macOSのaptに相当するコマンドは、2つのオプションで持つことができます。

Installing Homebrewor MacPortsの2つのオプションで、macOSのaptと同等のコマンドを持つことができます。 Linux や BSD で利用可能なすべてのプログラム/パッケージが MacOS Ports にあるわけではないことを覚えておいてください。 Linux 用に書かれたドライバは macOS では動作しませんし、逆もまた然りです。 それらはあらかじめコンパイルされていなければなりません。不思議なことに、Linux には CUPS プリントサーバーを含む一連の macOS デーモンがあります!

私たちが共通の互換性を持っているのは、実は GNU Utils パッケージや Busybox のようなターミナルツールで、BASH だけではなく gcc, rm, dd, top, nano, vim などを持っているからなのです。 そして、これはすべてのUNIXベースのアプリケーションに内在するものです。 さらに、ファイルシステムのフォルダアーキテクチャや、/, / lib, / var, / etc, / dev などのルートに共通するフォルダもあります。

結論

macOS と Linux には、Linux と比較した BSD のように類似点と相違点があります。 しかし、UNIXをベースにしているため、環境に馴染むパターンを共有しています。 Linuxを使っていてプロmacOSに移行する人、あるいはその逆の人は、多くのコマンドや機能を使いこなしていることでしょう。

最も顕著な違いはグラフィカル・インターフェースだろうが、その問題は個人の適応の問題だろう。


LinuxAndUbuntu ホスティングは massiveGRID

によってスポンサーされています。