3
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

macOS と Linux は全くの別物?

Last updated at Posted at 2021-01-18

※この文章はベータ版です。

本文

「Dockerとはどういったものなのか、めちゃ
くちゃ丁寧に説明してみる」を読んで、気に
なったので、書いています。

macOSとLinux(広義のLinux)は上層では全く別物と
いっても過言ではないくらい違いますが、下層の
カーネルレベルではUNIXというOSアーキテクチャに
則って実装されているレイヤを持つ血統?的には近い?
OSです。

macOSのXNUカーネルはカーネギーメロン大学
で開発されたmachマイクロカーネル派生の
カーネルです。

XNUカーネルはFreeBSDのコードをベースとして
実装されたBSDレイヤをもっています。
(XNUカーネルのBSDレイヤには、Linuxカーネル
のAPIを採用している部分があります。)

macOSは、XNUカーネルのBSDレイヤにより、
UNIX仕様に準拠した、UNIX互換のOS、と
なっています。

Linuxカーネル(狭義のLinux)は、POSIXに準拠し、
UNIX仕様に沿って実装されていて、UNIX仕様に
ほぼ準拠している、UNIX互換のOSです。

(UNIX仕様を管理しているThe Open Group
から認証されないとUNIXとは名乗れませんし、
UNIX仕様に準拠している、とも言え(書け)
ません。

UNIX認証には費用が掛かります。OSSである
Linuxの開発サイドは費用の掛かるUNIX認証の
必要性を感じていませんでしたし、今も
感じていないでしょう。)

UNIX互換レイヤが、Linuxでは、カーネルのコア機能に
組み込まれていて不可分となっていて、macOSのXNU
カーネルでは、カーネルのコア機能と分離されている、
点が違うものの、どちらもUNIX互換のレイヤをもって
います。

macOS上のターミナルで、bash等のシェルを
介して、BSDレイヤの機能を利用しているユース
ケースでは、Linuxとの差異を感じることは
ほとんど、ありません。

両者にネイティブコードレベルでの互換性は
皆無ではあるものの、macOSでの実装において、
BSDレイヤのAPIのうちLinuxと互換性のあるもの
を利用するか、両者の上で動作する両者の差異を
吸収するライブラリを利用している、タイプの
プログラムであれば、ネイティブアプリであって
もソースコードレベルでの互換性を実現することは
可能です。

macOSは、CoreFoundation(C)とそれをラップ
したFoundation(Objective-C → Swift)という
ライブラリを持ち、その上にAppKit、Mac Catalyst
etcのライブラリ群が実装されています。

これらのライブラリ群とその上に実装された
ツール群が、macOSをmacOSたらしめ、
Linuxとは全くの別物にしています。

#オマケ

WindowsとLinuxは、上層から下層に至るまで、
全くの別物です、互換部分はどこにもありません。

Windows上でLinuxアプリを動かすしくみに
WSLがあります。

WSL1はLinuxカーネルのシステムコールを
Windowsカーネルのシステムコールに置き換えて
実行する荒技的な実装となっていましたが、
WSL2では、Windows10以降に搭載された軽量仮想
マシン(のしくみ)を利用して、仮想マシン上でカスタマイズ
したLinuxカーネルを動かす形に変更されています。

3
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?