UNIXの基礎
CodeZineのUNIX基礎講座の内容を読んでUNIXの基礎について学んだ。UNIXの基礎についてまとめたけどLinuxの歴史にもちょっと触れている。(というかUNIXの歴史を調べるとだいたいLinuxの話もついてくる。それだけ関連深いということだなぁ。)
UNIXとは
UNIXは、Windowsと同じようにOSの1つで現存するOSの中では最も古い。
特徴としては余計な機能が少ないので軽い*1。そして安い。また、非常に安定したOSであることから現在稼働しているWebサーバーのほとんどがUNIX系である。
UNIXの歴史
UNIXは、1968年にアメリカ最大手の電話会社であるAT&T社*2のベル研究所にてケン・トンプソン、デニス・リッチーらが開発した、マルチタスク・マルチユーザーを実現したOS。(それと、その流れを組む派生OSのことを指す場合もある。)
実は、AT&T社は日本でいうところのNTTみたいな大企業だったので、独占禁止法によりコンピュータ産業への進出は禁止されており、UNIXを販売することができなかった。このような背景からUNIXのソースコードは無償で提供されるようになり事実上のオープンソース状態となった。
しかし、オープンソースとなったことにより、いろんな種類の派生OSが誕生し収集がつかなくなってきた。 しかも、作った側には全然お金も入ってこない。
そんなこんなで紆余曲折あり、最終的にはSingle UNIX Specificationを完全に満たすと認証を受けたシステムのみが「UNIX」の商標を得られるとした。 商標を得ていないシステムは「Unixシステムライク」「Unix系OS」「Unix」など小文字表記などで区別されている。
その後、UNIXを参考にしてリーナス・トーバルズというフィンランドの天才大学生が開発し誕生したのがLinux。 UNIXを真似してこそあるが、独自に開発した別のOSである。
ちなみにリーナスが作ったUNIX(っぽいOS)で「Linux」。なるほどー!
つまりLinuxはUNIXではない。そして「Unixシステムライク」でもない。完全に別のもの。 リーナスはソースコードを無料で公開し数々のエンジニアと協力しながらLinuxの改良を重ねた。その結果Linuxは高性能OSに成長し市場にどんどん広まっていった。
参考
【初心者向け】Linuxの歴史解説! OS誕生からLINUXへ
※Linuxの歴史ってかいてあるけどUNIXの歴史についても前段で触れている
WindowsとUNIXの違い
WindowsはGUI(Graphical User Interface:グラフィカルユーザインタフェース)ベースのOS。アイコンやメニューなどのグラフィカルな見た目をもち、それらをマウスで操作するため直感的で覚えやすい。
UNIXは、CUI(Character User Interface:キャラクタユーザインタフェース)という、文字(=コマンド)中心のOS。文字による操作を行うためには様々なコマンドを覚える必要がある(ただし、「X-WindowSystem」というアプリケーションを用いてGUIでの操作が可能)。
UNIXの基本構造
UNIXの中心部をカーネルと呼び、OSのもっとも基本的な機能を提供する核となる部分のことである。カーネルはCPU、メモリ、ハードウェアの割り込みなど、コンピューターの中心となるハードウェアのあらゆることの管理、資源の格納場所であるファイルシステムの管理などを行っている。
そして、このカーネルを中核とし、さまざまなソフトウェアが連携をとってOSの機能を実現している。例えば、ユーザやプログラムの指示をハードウェアに伝え、その結果をユーザやプログラムに渡すデバイス・ドライバ、UNIXが提供する機能や環境を使用するためのシェルなどがある。
ファイルシステム
ファイルシステムとは、OSの持つ機能の1つで、膨大なファイルを一元的に管理してくれる機能。
例えばファイルシステムが存在しない場合にデータを読み出そうとすると、「192588セクタと192589セクタのデータを取り出す」というように、ユーザーがディスクのどこに目的のデータがあるかを知った上で指示を出さなければならない。これはユーザーにとって非常に難しい操作になってしまう。っていうか無理。
これをユーザーがわかりやすい操作で実行できるよう、ユーザーと内部データの仲介役となるのがファイルシステム。 ファイルシステムがおかげでユーザーは「/etc/test.txtファイルを開く」のように簡単にファイルを操作することができる。
UNIXのファイルシステムでは、全てのファイルやディレクトリはルートディレクトリ(最上位層にあるディレクトリ。全ての枝の開始点である木の幹に例えることができる)から始まる。
WindowsとUNIXのファイルシステムの違い
Windowsは、ひとつのディスクやCD-ROMといった装置を、論理ボリューム(「C:」とか「D:」といったもの)という単位に分けている。
一方UNIXの場合は、すべてのファイルやディレクトリはルートディレクトリから始まる。よって、UNIXでCD-ROMなどのディスク資源を利用するためには、このディレクトリ構造の中へ組み込む必要があり、これをマウントと呼ぶ。
シェル
シェルはキーボードから入力されたコマンドを解釈するプログラムのことで、ユーザーとカーネルの仲介役のようなイメージ。
リダイレクションとパイプ
リダイレクションとパイプについては、CodeZineを読んでもいまいちイメージがわかなかった。 わかったのはファイルとリダイレクションとパイプがUNIXを理解する上で重要なポイントであるということくらい。
ここが比較的わかりやすかったけどまだピンとこないので後日別な学習時間で理解を深めることにする。
標準入出力とリダイレクション、パイプライン - 入門 UNIX / Linux
エイリアス
別名のことで、コマンドの名前を変更することができる機能。aliasコマンドを使用する。エイリアスを解除するにはunalias。通常ログアウトすると自動的に設定が解除されるが常に設定を有効にしたい場合はカスタマイズすることができる。
パーミッション
参考
ここがとてもわかりやすかった。UNIXとLinuxはどっちがどっちで何が違うんだっけ?となりやすいので歴史とか経緯から覚えるといいかも。