UNIX系列 - ntuf/Tips GitHub Wiki

UNIX サーバー等の大規模システム向けだった。
├── System V系 旧ATTユニックスから派生した商用UNIX
│ ├── AIX (IBM)
│ ├── Solaris (Oracle)
│ └── HP-UX (HP)
├── BSD系 UCバークレーで開発された無料のUNIX
│ ├── MacOS
│ ├── FreeBSD (デスクトップ)
│ ├── NetBSD (組み込み系)
│ ├── OpenBSD
│ └── DragonFly BSD
└── Linux系 Linuxカーネルを使ったディストリビューション。オープンソース
├── Debian
│ ├── Ubuntu
│ └── Linux Mint
├── RedHat
│ ├── CentOS
│ └── Fedora
├── SUSE
│ └── openSUSE
├── Slackware
├── Gentoo
└── Arch Linux

UnixのプログラムをLinuxで動かすことができます。その理由は以下の通りです。

Linuxは当初からUNIX互換を目指して設計されており、POSIX(Portable Operating System Interface)標準に準拠しています。POSIXはUNIX系OSの標準的な動作環境を定義しています。
LinuxはUNIXと同様にシェル、システムコール、ファイルシステム階層などの基本的な仕組みを共有しています。
GNUプロジェクトによって、UNIXと同等の開発ツールやユーティリティ群が提供されています。Linuxディストリビューションには通常これらがプリインストールされています。
特にLinuxのバイナリ形式であるELF(Executable and Linkable Format)は、UNIXのa.outやCOFFと高い互換性があります。
ただし、100%の互換性はありません。以下のような制限があります。

UNIXネイティブのGUIアプリはLinuxで動作しにくい場合があります。
ハードウェア依存の部分は移植が難しい場合があります。
ディストリビューションによってはマルチスレッドなどの一部機能に制限がある場合があります。
そのため、ソースコードがオープンでクロスプラットフォーム対応されているUNIXアプリであれば比較的簡単にLinuxで動作させられますが、バイナリだけの場合は互換性の確認が必要です。

LinuxはUnixライクであり、Unixから多くの影響を受けています。
具体的には以下のような関係があります。

カーネル
Linuxカーネル自体はLinus Torvaldsによってゼロから書き起こされました。
しかし、Unixカーネルの設計思想やインターフェースなどを多く参考にしています。

システムコール
Linuxカーネルに実装されているシステムコールの多くはUnixと互換性があります。
これにより、Unixアプリケーションを比較的容易にLinuxで動作させられます。

ユーザーランドのツール
Linuxでは、GNUプロジェクトによってUnixユーティリティのオープンソース実装が多数なされています。
シェル、コンパイラ、ファイルユーティリティなど、Unixに由来するツールが多数使われています。

ファイルシステム階層
Linuxでは/bin、/etc、/usr、/varなどUnixスタイルのディレクトリ階層が使われています。

アーキテクチャ
Linuxのプロセス管理、メモリ管理、ファイルシステムなどの基本設計はUnixを参考にしています。

⚠️ **GitHub.com Fallback** ⚠️