GNU/Linux >> Linux の 問題 >  >> Linux

LinuxカーネルとMacカーネル

両方のLinuxカーネル およびmacOSカーネルはUNIXベースです。 macOSは「Linux」であると言う人もいれば、コマンドとファイルシステム階層が類似しているために両方とも互換性があると言う人もいます。

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

macOSのカーネル

1985年、スティーブジョブズはCEOのジョンスカリーとアップルの取締役会との意見の不一致のためにアップルを去りました。その後、彼はNeXTと呼ばれる新しいコンピューター会社を設立しました。 Jobsは、(新しいオペレーティングシステムを搭載した)新しいコンピューターを迅速にリリースすることを望んでいました。時間を節約するために、NeXTチームはカーネギーメロンマッハカーネルとBSDコードベースの一部を使用してNeXTSTEPオペレーティングシステムを作成しました。 。

NeXTは、ジョブズがまだAppleにいるかのようにお金を使う習慣があることもあり、経済的な成功を収めたことはありません。一方、Appleは、IBMと提携していても、何度かオペレーティングシステムの更新に失敗しました。 1997年、AppleはNeXTを4億2900万ドルで購入しました。 。取引の一環として、スティーブジョブズ Appleに戻り、NeXTSTEPがmacOSとiOSの基盤になりました。

Linuxカーネル

macOSとは異なり カーネル、Linuxは営利企業の一部として作成されていません。代わりに、1991年にコンピューターの学生であるLinusTorvaldsによって作成されました。もともと、カーネルは、Linusの新しい80386プロセッサを利用したかったため、Linusのコンピュータの仕様に従って作成されていました。

Linusは、1991年8月に新しいカーネルのコードをWebに投稿しました。まもなく、彼は世界中でコードとリソースの提案を受け取りました。翌年、OrestZborowskiはXWindows SystemをLinuxに移植し、グラフィカルユーザーインターフェイスをサポートできるようにしました。

MacOSカーネルリソース

ma​​cOSカーネル 正式にはXNUとして知られています。頭字語は「XNUはUnixではありません」の略です。 Appleの公式Githubページによると、XNUは「カーネギーメロン大学で開発されたMachカーネルとドライバー用のFreeBSDおよびC++コンポーネントを組み合わせたハイブリッドカーネル」です。

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

MacOSの地図:すべての中心はダーウィンと呼ばれています。その中には、別々のシステムユーティリティとXNUカーネルがあり、MachカーネルとBSDカーネルによって部分的に構成されています。

Linuxとは異なり、このカーネルはハイブリッドカーネルと呼ばれるものに分割されており、一部はメンテナンスのために停止し、別のカーネルは引き続き機能します。いくつかの議論で、これはハイブリッドカーネルがより安定しているという事実の問題も開きました。そのパーツの1つが停止した場合、もう1つはそれを再開できます。

Linuxカーネルリソース

macOSカーネルは、マイクロカーネルとMachの機能、およびBSDのようなモノリシックカーネルを組み合わせていますが、Linuxは単なるモノリシックカーネルです。モノリシックカーネルは、CPU、メモリ、プロセス間通信、デバイスドライバー、ファイルシステム、およびシステムサービス呼び出しの管理を担当します。つまり、細分化せずにすべてを実行します。

明らかに、これは、モノリシックカーネルが遅いだけでなくエラーの影響を受けやすいと主張するLinus自身や他の開発者とさえすでに多くの議論を集めています。しかし、Linuxは毎年これとは逆であり、ハイブリッドカーネルとして最適化することができます。さらに、 RedHatの助けを借りて 、カーネルにライブパッチが含まれるようになり、再起動を必要とせずにリアルタイムのメンテナンスが可能になりました。

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

  1. macOSカーネル(XNU)は、Linuxよりも長い間存在しており、2つのさらに古いコードベースの組み合わせに基づいていました。これは、安定性と歴史のために有利に働きます。
  2. 一方、Linuxは新しく、ゼロから作成され、他の多くのデバイスで使用されています。非常に多く、最高のスーパーコンピューターの中で最高の500台すべてに存在し、最近発足した北米のスーパーコンピューターにも存在します。

システムスコープには、macOSターミナルのコマンドラインからのパッケージマネージャーはありません。

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

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

注: MacOS.pkgはBSD.pkgとはまったく異なります!

macOSがBSDプログラムをサポートしているとは思わないでください。その逆も同様です。サポートしておらず、インストールもしません。次の2つのオプションで、macOSのaptと同等のコマンドを使用できます。

自作をインストールする またはMacPorts。 最終的に、次の構文になります。$ brew install PACKAGE

$ port install PACKAGE

LinuxまたはBSDで利用可能なすべてのプログラム/パッケージがMacOSポートに含まれるわけではないことに注意してください

互換性

互換性に関しては、言うことはあまりありません。 DarwinコアとLinuxカーネルは、WindowsNTカーネルとBSDカーネルを比較するのと同じくらい明確です。 Linux用に作成されたドライバーはmacOSでは実行されません。その逆も同様です。それらは事前にコンパイルする必要があります。不思議なことに、LinuxにはCUPSプリントサーバーを含む一連のmacOSデーモンがあります!

共通の互換性があるのは、実際には、GNUUtilsパッケージやBusyboxなどのターミナルツールです。 BASHだけでなく、gcc、rm、dd、top、nano、vimなどもあります。これはすべてのUNIXベースのアプリケーションに固有のものです。さらに、ファイルシステムフォルダアーキテクチャ、 /、/ lib、/ var、/ etc、/devなどのrootに共通の共通フォルダがあります

結論

ma​​cOSとLinux Linuxと比較したBSDのように、類似点と相違点があります。ただし、UNIXをベースにしているため、環境に馴染みのあるパターンを共有しています。 Linuxを使用してpromacOSを移行する人、またはその逆の人は、多くのコマンドと機能に精通しているでしょう。

最も顕著な違いはグラフィカルインターフェイスであり、その問題は個人的な適応の問題です。


Linux
  1. Linux –カーネル:名前空間のサポート?

  2. Linux –カーネルIP転送?

  3. Linux –LinuxでMacOs Xアプリケーションを実行しますか?

  1. Linuxカーネルテストのライフサイクル

  2. Linuxカーネル4.12をopenSUSEにインストールします

  3. Linux – Linuxの汚染されたカーネル?

  1. Linuxデスクトップでカーネルをアップグレードする方法

  2. Linuxカーネルは2.35.25に更新されませんか?

  3. Mac OS X と Linux での dd パフォーマンス