いづいづブログ

アジャイルコーチになりたい札幌在住SEです。アジャイル札幌スタッフ&ScrumFestSapporo実行委員。Like:パクチー/激辛/牡蠣/猫/初期仏教

UNIXの基礎

CodeZineUNIX基礎講座の内容を読んで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を参考にしてリーナス・トーバルズというフィンランドの天才大学生が開発し誕生したのがLinuxUNIXを真似してこそあるが、独自に開発した別のOSである。

ちなみにリーナスが作ったUNIX(っぽいOS)で「Linux」。なるほどー!

つまりLinuxUNIXではない。そして「Unixシステムライク」でもない。完全に別のもの。 リーナスはソースコードを無料で公開し数々のエンジニアと協力しながらLinuxの改良を重ねた。その結果Linuxは高性能OSに成長し市場にどんどん広まっていった。

参考

3分間で人に説明できるようになるUnixとLinuxの違い

【初心者向け】Linuxの歴史解説! OS誕生からLINUXへ

Linuxの歴史ってかいてあるけどUNIXの歴史についても前段で触れている

WindowsUNIXの違い

WindowsGUI(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ファイルシステムでは、全てのファイルやディレクトリはルートディレクトリ(最上位層にあるディレクトリ。全ての枝の開始点である木の幹に例えることができる)から始まる。

WindowsUNIXファイルシステムの違い

Windowsは、ひとつのディスクやCD-ROMといった装置を、論理ボリューム(「C:」とか「D:」といったもの)という単位に分けている。

一方UNIXの場合は、すべてのファイルやディレクトリはルートディレクトリから始まる。よって、UNIXでCD-ROMなどのディスク資源を利用するためには、このディレクトリ構造の中へ組み込む必要があり、これをマウントと呼ぶ。

シェル

シェルはキーボードから入力されたコマンドを解釈するプログラムのことで、ユーザーとカーネルの仲介役のようなイメージ。

リダイレクションとパイプ

リダイレクションとパイプについては、CodeZineを読んでもいまいちイメージがわかなかった。 わかったのはファイルとリダイレクションとパイプがUNIXを理解する上で重要なポイントであるということくらい。

ここが比較的わかりやすかったけどまだピンとこないので後日別な学習時間で理解を深めることにする。

UNIXことはじめ

Linux - ストリーム、パイプ、リダイレクトの使用

標準入出力とリダイレクション、パイプライン - 入門 UNIX / Linux

エイリアス

別名のことで、コマンドの名前を変更することができる機能。aliasコマンドを使用する。エイリアスを解除するにはunalias。通常ログアウトすると自動的に設定が解除されるが常に設定を有効にしたい場合はカスタマイズすることができる。

パーミッション

f:id:izumii-19:20181115230344p:plain

参考

ここがとてもわかりやすかった。UNIXLinuxどっちがどっちで何が違うんだっけ?となりやすいので歴史とか経緯から覚えるといいかも。

eng-entrance.com

*1:けどだんだん軽いともいいきれなくなってきているらしい

*2:電話を発明したグラハム・ベルが設立したベル電話会社が前身となる