Click here to load reader

コンピュータ技術 ~基本構造と理論的概念~€¦ · Web view各セルのサイズとセルの数はコンピュータごとに大きく異なる。また、メモリを実装する技術も時代とともに大きく変化してきた。最初は電磁

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

コンピュータ技術 〜基本構造と理論的概念〜

コンピュータ技術 ~基本構造と理論的概念~

                                 2006.11.17

                              アドバンテック研究所

                                村上 (文責)

a.コンピュータの概要 コンピュータ

 プログラムに従って演算を行う機械の総称。スーパーコンピュータや汎用コンピュータ、サーバなどからパソコンやワープロ、あるいは電卓まで、非常に広い範囲のものを指す。

 コンピュータ(computer)は、広義には計算機、狭義には計算開始後は人手を介さずに計算終了まで動作する計算機。純理論的には、チューリングマシンと等価なものを指す。日常的にはパーソナルコンピュータ(パソコン)を指して「コンピュータ」と呼ぶことも多い。

なお、日本の法律上での呼称は「電子計算機」(でんしけいさんき、略称・電算機)とされている。「電子頭脳」(略称・電脳)という通称でも呼ばれる。

ハードウェアの構造からデジタルコンピュータとアナログコンピュータに大別されるが、現在使われているほとんどのコンピュータはデジタルコンピュータである。

 デジタルコンピュータは、おもに半導体素子を用いて作られた論理回路の組み合わせによって構成される。演算の対象は通常2進数によって表され、桁数を増やしていけば原理的にいくらでも計算精度を上げられるが、ほとんどの演算では、桁数が多くなれば必要な計算が増えて遅くなる。

対してアナログコンピュータは、加減算や微積分などを行うアナログ電子回路を演算増幅器によって構成し、それらを組み合わせて所望の演算を行う。演算の対象は電圧によって表され、演算結果はオシロスコープやペンレコーダなどに出力される。入力の変化に対してほぼリアルタイムで出力が得られる特徴があり、各種シミュレーションなどに利用されたが、演算内容を変更するためには回路を変更する必要があり、得られる精度にも限界があるので、デジタルコンピュータの高速化に伴ってその役割を終えた。

古くはチャールズ・バベッジによって開発された階差機関などがデジタルコンピュータの元祖であった。現在のデジタルコンピュータは、ストアードプログラム方式で逐次処理をして駆動するノイマン型コンピュータがほとんどであるが、量子コンピュータやDNAコンピュータなどのノイマン型でないコンピュータも研究され、1990年代後半から画像解析分野などで実用化されている。例を挙げるならば、地球観測プラットフォーム技術衛星の映像解析など地球自然環境調査などの分野で利用されている。

・語源

 computer という語は元々は算術計算を行う人を指す言葉だった。この用法は(アメリカやイギリスでは非常に稀になりつつあるが)今でも有効である。オックスフォード英語辞典第2版 (OED2) では、この語が機械的な計算装置を指す言葉として使われた最初の年を1897年と記している。1946年までには、異なるタイプの計算機を区別するために、OED2によってcomputerに付く修飾語句がいくつか導入されている。これらの修飾語の中には analogue、digital、electronicといった語が含まれている。しかし様々な引用文から、1946年以前にこれらの語が既に使われていたことは明らかである。

・ コンピュータの仕組み

1940年に最初の電子式汎用計算機が登場して以来、コンピュータに使われる技術は劇的に変化してきたが、ほとんどのコンピュータは今なおノイマン型アーキテクチャを採用している。

 ノイマン型コンピュータの機能は原理的には非常に素直なものである。典型的には、クロックサイクルごとにコンピュータは命令とデータをメモリから取り出す (fetch)。取り出した命令を実行し、結果を格納し、次の命令を取り出す。「停止」の命令に遭遇するまでこの手順が繰り返される。

 フォン・ノイマン型アーキテクチャではコンピュータは次の4つの主要な部分からなるとされる。すなわち、算術論理ユニット (Arithmetic and Logic Unit, ALU)、制御回路、記憶装置(メモリ)、入出力装置(まとめて I/O と呼ぶ)である。これらの部分はバスと呼ばれる導線の束で相互に接続され、通常はタイマまたはクロックによって動作する(別のイベントが制御回路を動作させる場合もある)。

・ 命令

 コンピュータの命令は人間の言語に比べるとずっと貧弱である。コンピュータは限られた数の明確で単純な命令しか持っていないが、曖昧さは全くない。多くのコンピュータで使われている命令の典型的な例としては、「5番地のメモリの中身をコピーしてそのコピーを10番地に書け」とか「7番地の中身を13番地の中身に加算して結果を20番地に書け」とか「999番地の中身が0なら次の命令は30番地にある」といったものである。

コンピュータの内部では命令は二進コード、つまり2を底とする計数法で表現される。例えば、インテル系のマイクロプロセッサで使われるあるコピー命令のコードは10110000である。ある特定のコンピュータがサポートする特定の命令セットをそのコンピュータの機械語 (machine language) と呼ぶ。

 実際には、人間がコンピュータへの命令を機械語で直接書くことは通常はなく、高水準のプログラミング言語を使う。プログラミング言語で書かれた命令が、インタープリタやコンパイラと呼ばれる特別なコンピュータプログラムによって自動的に機械語に翻訳されて実行される。プログラミング言語の中にはアセンブリ言語(低水準言語)のように、機械語に非常に近いレベルで対応付けられるものもある。逆に Prolog のような高水準言語は計算機の実際の演算の詳細とは完全に切り分けるという絶対原理に基づいている。

・記憶装置(メモリ)

 メモリは番地を付けられたセルの列で、各々のセルには小さな量の情報が格納される。この情報はある場合にはコンピュータに何をすべきかを教える命令である。また、セルにはコンピュータが命令を実行する対象となるデータも格納される。全てのセルはこのどちらかを格納し、ある時はデータを、またある時は命令を格納する。

一般的には、メモリセルの中身はいつでも書き換えられる。すなわち石板というよりは落書き帳に近い。

各セルのサイズとセルの数はコンピュータごとに大きく異なる。また、メモリを実装する技術も時代とともに大きく変化してきた。最初は電磁リレーが、続いて水銀の入った管(水銀遅延線)やバネに音波を通す方法が使われた。次には永久磁石の配列(磁気コアメモリ)やトランジスタが使われた。現在では1つの半導体チップの上に数百万個のコンデンサとトランジスタを集積した集積回路(DRAM)が主に使われている。

・ 演算処理(プロセッサ)

 算術論理演算ユニット (ALU) は算術演算(加算・減算など)のような基本的な演算やAND、OR、NOTといった論理演算、比較演算(2つのバイトの中身が等しいかどうかの比較など)、シフト演算などを行う装置である。コンピュータの中で真の仕事(情報処理)を行う部分と言える。

・ 制御

 制御ユニットはメモリの中でどのバイトがコンピュータが現在実行中の命令を格納しているかを追いかけ、どの命令を実行すべきかを ALU に教え、実行に必要な情報をメモリから受け取り、実行結果を適切なメモリ位置に運ぶといった仕事をする。一度これらの仕事を終えると、制御ユニットは次の命令に飛ぶ。(次の命令は普通、次のメモリ番地に位置しているが、命令がジャンプ命令の場合には別の場所にある。)

メモリを参照する際に、現在の命令はメモリ内で関連する番地を指定するために様々なアドレッシングモードを使う場合がある。コンピュータのマザーボードの中には2つまたはそれ以上のプロセッサをサポートするものもある。コンピュータサーバでは2つまたは複数のプロセッサを使うのが一般的である。

・ 入出力

 入出力(Input/Outputを略してI/Oとも言う)はコンピュータが外の世界から情報を得たり、計算結果を外に送り返したりすることを可能にするためのものである。外部から見て、コンピュータに情報を送ることを入力、逆にコンピュータから情報を得ることを出力という。

入出力には、入出力インターフェースを介して、入出力装置(I/O装置)が接続される。入出力装置としては例えば、キーボード、マウス、スキャナ、モニタやプリンタ、磁気ディスク装置、光学ドライブ装置などといった馴染み深いものから、3次元ディスプレイやデータグローブといったものまで、幅広いものが存在する。

入出力装置は、主として入力を得るためのもの(キーボード、スキャナなど)、出力するためのもの(モニタ、プリンタなど)、入力と出力を兼ね備え情報を蓄積して後からそれを読み出すことのできるもの(磁気ディスク装置など)に大別することができる。

・ アーキテクチャ

現代のコンピュータではALUと制御ユニットを中央処理装置 (CPU ;central processing unit) と呼ばれる一つの集積回路にまとめている。典型的には、コンピュータのメモリは数個の小さな集積回路の形で CPU の近くに配置する。コンピュータの質量の圧倒的大部分を占めているのは電源装置のような付属システムかあるいは入出力装置である。

大型のコンピュータでは、上記のようなモデルとは違って複数のCPUと制御ユニットが同時に動いているものもある。さらに、主に研究用途や科学計算に使われるコンピュータでは上に書いたモデルとは大きく異なっている。しかしこういったタイプのコンピュータはプログラミングの方式が標準化されていないため、商用目的の機種にはほとんど見られない。

・ プログラム

 コンピュータプログラムは単にコンピュータに実行させる命令の大きなリストである。場合によってはデータの表が付属することもある。現在でも1行~数1000行程度のプログラムが用いられているが、ワープロソフトやOSなどのコンピュータプログラムは数百万行の命令からなる。これらの命令の多くは繰り返し実行される。2003年時点での典型的なPCは1秒間に20~30億個の命令を実行できる。コンピュータのこのような並外れた能力は、複雑な命令を実行できる能力に由来するものではない。むしろ、コンピュータはプログラマと呼ばれる人々によって組まれた何百万もの単純な命令を実行しているのである。プログラムごとに全てを新規に書き下すことは効率が悪いため、画面に点を描くといったよく使われる仕事を行う命令のセット(ライブラリ)が多数用意されている。

今日では、ほとんどのコンピュータは同時にいくつものプログラムを実行するように見える。これは通常、マルチタスクと呼ばれている。実際には、CPUはあるプログラムの命令を実行した後、短い時間の後でもう一つのプログラムに切り替えてその命令を実行している。この短い時間の区切りをタイムスライスと呼ぶ。これによって、複数のプログラムがCPU時間を共有して同時に実行されるように見える。これは動画が実は静止画のフレームの短い連続で作られているのと似ている。このタイムシェアリングは通常、オペレーティングシステムというプログラムで制御されている。

・ オペレーティングシステム (OS)

処理すべき仕事があるかないかによらず、コンピュータが動作するためにはある種のプログラムが必要である。典型的なデスクトップコンピュータでは、このプログラムはオペレーティングシステム (Operating System = OS) と呼ばれている。コンピュータが動作するための最も基本となるプログラムであることから、「基本ソフト(基本ソフトウェア)」と翻訳されることもある。

 コンピュータを動作するためオペレーティングシステムは、ユーザ、もしくは他のプログラムからの要求に応じてプログラム (この意味では、アプリケーションソフトウェアもしくは単にアプリケーションという用語も使用される。ソフトウェアという用語も似た意味合いだが、これはプログラム一般を指すより広い概念である。)をメモリー上にロードし、プログラムからの要求に応じていつ、どのリソース(メモリやI/O)をそのプログラムに割り当てるかを決定する。

 オペレーティングシステムはハードウェアを抽象化した層を提供し、他のプログラムがハードウェアにアクセスできるようにする。例えばデバイスドライバと呼ばれるコードがその例である。これによってプログラマは、コンピュータに接続された全ての電子装置について、その奥深い詳細を知る必要なくそれらの機械を使うプログラムを書くことができる。

ハードウェアの抽象層を持つ多くのオペレーティングシステムは標準化されたユーザインターフェースも持っている。かつてはキャラクターユーザインターフェースのみが提供されていたが、Mac OSがグラフィカルユーザインターフェースの概念を普及させた。現在、デスクトップコンピュータ用として最も良く知られているOSはマイクロソフト社のWindowsである。

 コンピュータのほとんどはデスクトップコンピュータではなく、携帯電話や炊飯器などの電気製品、各種の測定機器、乗用車や工作機械などの装置に組み込まれた非常に小さく安価なコンピュータである。これを組み込みシステムと呼ぶ。一般に組み込みOS (embedded OS) と呼ばれる専用のOSを用いる。TRONプロジェクトのITRON、米WindRiver社のVxWorks、米Symbian社のSymbian OS、米LinuxWorks社のLynxOSなどが利用されている。ただし、近年は開発期間の短縮などの目的で、WindowsやLinuxといったデスクトップコンピュータで使われているOSと同系統のOSを搭載する場合もある。また、組み込みシステムのなかには、明確なOSを内蔵していないものも多い。

・インタープリタ

 インタプリタ(interpreter)とは、プログラミング言語で書かれたソースコードを逐次解釈しながら実行するソフトウェアである。プログラムの実行に主としてインタプリタが用いられるプログラミング言語をインタプリタ言語と呼ぶ。

インタプリタの中には、実行直前に一度ソースコードを中間的なコード(中間言語)に変換し、それを逐次解釈するものもある。

コンパイラ方式と比較して、

会話的な応答性に優れる。(プログラムを作成/変更してから実行するまでの手間がない)。

単純な実装では実行に時間がかかる。しかし動的に最適化を施すことができるので一概にコンパイラより遅いとは言えない。

実行には言語に対応するインタプリタ(ランタイム)環境が必要

という特徴をもつ。

主としてソースコードを逐次解釈しつつ実行することを意図して作られたコンピュータ言語は、その仕様がインタプリタ向きに作られていることが多い。たとえば、ソースコードのある部分を実行するのに、他の部分と比較しながら解釈するといったことをしないで、なるべく最初から順番に解釈するだけで実行できるような仕様になっている、などである。

主にインタプリタで実行されるプログラミング言語をスクリプト言語と呼ぶこともある。スクリプト言語の定義は非常にあいまいで、インタプリタで実行されることと必ずしも対応しない。スクリプト(言語)と呼んだ場合、そのプログラムは多くの場合インタプリタで実行される。

主にインタプリタで実行される言語でも、コンパイラによって処理してから実行することが可能な場合もある。コンパイラによって処理することが一般的な言語についても、インタプリタが実装されている場合もある。

- バイトコードインタプリタ

 もともとインタプリタとして実行可能なものを、インタプリタ内でバイトコードにコンパイルして実行するものがある。次のようなものはバイトコードインタプリタなどと呼ばれる。

バーチャルマシンはバイトコードを実行するインタプリタとしてとらえることもできるので、JavaやPythonの処理系はインタプリタともコンパイラとも呼べる。

Perlの処理系はユーザーからはインタプリタで利用しているように見せるが、内部ではコンパイルを行ってメモリ上に実行コードを作ってから実行している。内部的な動作はコンパイラに分類されるが、ツールとしての役割はインタプリタであるとも解釈できる。

Javaプログラムは実行時にバイトコードから機械語へと変換されるので、このような処理系をジャストインタイムコンパイラと呼ぶ。

- デバッグ、教育用インタプリタ

 通常C言語はコンパイラで処理されるが、デバッグ目的および教育目的で、インタプリタ型のC言語もあった。MS-DOS時代に、いくつかの製品が提供されていた。C-Terpなどがその様な製品の例である。C/C++のインタプリタはほかにCINT(w:CINT)やCh(w:Ch_interpreter)がある。

・ コンピュータの歴史

1623年頃、ウィルヘルム・シッカートが、ネピアの骨を応用した、乗算と加減算を行なえる、歯車式の計算機を作った。加減算に関しては繰り上がりが出来たが、乗算に関しては繰り上がりが出来なかった。

1642年 パスカルがピン歯車式計算機(加算機)であるパスカリーヌを開発。約50台が作成された。

1664年 ライプニッツがパスカルの加算機をもとに乗算機を作成。その後の60年間に約1500台が販売された。

1698年 ライプニッツが二進法を発見。

1822年 解析機関の設計者バベッジが第1階差機関の実験モデルを作成。

1823年 バベッジによる階差機関の開発開始。

バベッジの階差機関は彼の死後に完成した

1833年 追加予算が打ち切られ、階差機関の開発が中止となる。

1843年 シュウツ親子による階差機関の完成。

1871年 バベッジが実現を見ぬまま死去。解析機関のオペレータであるエイダは世界最初のプログラマとされる。

1889年 ホレリスがパンチカード方式の自動集計機を実現。

パンチカード穿孔機

1936年 チューリングが万能計算機械(チューリングマシン)の論文を発表。

1938年 ドイツのコンラッド・ツーゼが、自宅で機械式の計算機V1(のちにZ1と改名)を作成。

1939年 ツーゼが、Z1をベースに、演算部がリレー、記憶部が機械式のテスト用の計算機、Z2を作成。

1940年 ツーゼが、Z2をベースに、全リレー式の、Z3を作成。Z3はプログラム可能な最初の計算機である。

1942年 アタナソフとベリーが電子素子を使って演算処理をする世界初の機械 ABCを作成。

1943年 ローレンツSZ42暗号機によるドイツ軍の暗号を解読するため、イギリスでColossusが発明される。

1944年 ツーゼがZ4を作成。メモリ部分は機械式に戻る。

1945年 ノイマンがストアードプログラム方式を提唱。

1946年 ペンシルバニア大学でENIACが完成。

17468本の真空管を使って作られたENIAC

1947年 AT&Tベル研究所のブラッテン、バーディーン、ショックレーらがトランジスタを発明。

1948年 マンチェスター大学のウィリアムスとキルバーンが、初のプログラム内蔵式のコンピュータThe Babyを発明。

1951年 レミントン・ランド社が初めてUNIVAC Iを商品化。

1952年

米IBM社が初の商用のプログラム内蔵式コンピュータIBM 701を発売。

日本初のデジタル式リレー計算機「ETL Mark I」を通産省工業技術院電気試験所(現:産業技術総合研究所)が開発。

1956年

初の高級プログラミング言語FORTRANが誕生。

日本初の電子計算機「FUJIC」を富士フイルム社が開発。レンズの設計用であった。

アメリカ合衆国ブルックヘブン国立研究所のウィリアム・ヒギンボーサムが、アナログ演算機とオシロスコープを用いた『Tennis for Two』を開発。

米IBM社が初のハードディスクドライブを発売。5MBであった。

1958年 米Texas Instruments社のキルビーが集積回路 (IC) を発明。

1960年 米ディジタル・イクイップメント社が、世界初のミニコンピュータPDP-1を発売。

1962年 PDP-1上で稼動するデモンストレーションプログラムとして、世界初のシューティングゲームとされている「スペースウォー!」が開発される。

1964年 IBM社が、汎用コンピュータであるシステム/360を発売。

1967年 IBM社がフロッピーディスクを開発。

1968年 エンゲルバートが、マウスやウインドウの概念を発表。

1969年 後にインターネットの母体となるアーパネットが運用開始。UNIXオペレーティングシステムの開発が始まる。

1971年 3月、米Intel社が世界最初の4bitのマイクロプロセッサi4004を開発。

1972年 アタリ社、業務用ゲーム機「PONG」(ポン)を発売。続いて家庭用ゲーム機「ODYSSEY」(オデッセイ)も発売される

1973年

米Xeroxのパロ・アルト研究所において、チャック・サッカーが Altoを製作。アラン・ケイらはこれを用い、世界初の本格的GUIを装備した暫定Dynabook環境を構築。

11月にトンプソンとリッチーがパデュー大学で行なわれたthe Symposium on Operating Systems PrinciplesでUNIXに関する最初の論文を発表。

1974年

4月、米国intel社が8bitのマイクロプロセッサi8080を発表。10 月に発売されたビジコンの電卓141-PFに搭載される。

ゲイリー・キルドールがPC用の8ビットOSであるCP/Mを開発。

1975年

4月、ビル・ゲイツがMicrosoft社を設立。同年9月にi8080用のBASICインタプリタ発売。

米MITS社が、Altair 8800というコンピューターキットを発売。

1977年 アップルコンピュータ社が初のパーソナル・コンピュータ・システム、Apple II を発売。

1978年 シャープが日本で初めての国産パソコンMZ-80K を発売。

1980年 CERNのティム・バーナーズ=リーが、WorldWideWebの元となるEnquireを開発。

1981年

IBM社がPC-DOSを搭載したパソコンIBM-PCを発売。

1981年 NEC社がPC-9801を発売。

1982年 米サン・マイクロシステムズ社がTCP/IPを採用したワークステーションを発売。

1983年

ストールマンがGNUプロジェクトを開始。

任天堂、ファミリーコンピュータ発売。

1984年

アップルコンピュータ社がMacintoshを発売。

IBM社がPC/ATを発売。ATバス、VGAなどの技術がパソコンの世界標準規格の基礎となる。

坂村健によってTRONが提唱される。

1985年

アップルコンピュータ、LaserWriterを発売。ページ記述言語としてPostScriptを採用したレーザープリンタで、ページレイアウトソフト「PageMaker」とともに、DTPの時代を切開く。

マイクロソフト社が最初のWindows製品であるWindows1.0を発売。

1986年 東芝が世界初のラップトップパソコンJ-3100を開発・商品化。

1987年 3月、シャープがX68000を発売。

1988年

ネクスト・コンピュータ社がNEXTSTEPを搭載したNeXTキューブを発売。

日本電気ホームエレクトロニクス、CD-ROM²を発売。世界で初めてCD-ROMを搭載したコンピュータ(ゲーム機)用周辺機器であった。

1989年 東芝が世界初のノートパソコンDynaBookを発売。

1991年

トーバルズが32ビットOSの一種Linuxを発表。

最初のWebサイトがCERNによって開設される。

アップルコンピュータ社がPowerBookを発売。デスクトップ同等の機能を搭載した初のノートパソコン。

1993年

NetBSD・FreeBSDが発表。

Webブラウザ・NCSA Mosaic公開。インターネットの普及が始まる。

アップルコンピュータ社がNewton MessagePadを発売。PDAと名付けられた最初の製品。

1994年 ソニー・コンピュータエンタテインメント、プレイステーションを発売。

1995年 マイクロソフト社がWindows 95を発売。

1996年 サン・マイクロシステムズ社により、Java言語の開発環境を公式にリリースされる。

1997年 チェス専用スーパーコンピュータディープ・ブルーがチェス世界チャンピオンガルリ・カスパロフに勝利した。

1998年

アップルコンピュータ社がiMacを発売。初のレガシーフリーパソコン。

マイクロソフト社がWindows 98を発売。

2000年

ソニー・コンピュータエンタテインメント、プレイステーション2を発売。DVDの普及が本格的に始まる。

マイクロソフト社がWindows 2000、Windows Meを発売。

2001年

4月、アップルコンピュータ社がMac OS Xを発売。10月にはiPodを発表。

マイクロソフト社がWindows XPを発売。

・ コンピュータの種類

スーパーコンピュータ(スパコン)

メインフレーム(大型汎用機、汎用機)

ミニコンピュータ(ミニコン)

オフィスコンピュータ(オフコン)

ワークステーション

マイクロコンピュータ(マイコン)

パーソナルコンピュータ(パソコン)

PDA

グリッドコンピュータ

組み込みシステム

マイクロコントローラ(組み込み用コンピュータ)

電卓

ポケットコンピュータ

ニューロコンピータ

生体コンピュータ

DNAコンピュータ

量子コンピュータ

・サーバ

 コンピュータネットワークにおいて、クライアントコンピュータに対し、自身の持っている機能やデータを提供するコンピュータのこと。インターネットにおけるWWWサーバなどが該当する。また、クライアントソフトウェアに対し、自身の持っている機能やデータを提供するソフトウェアのこと。

 サーバは、サービスと呼ばれる特定の機能を提供するコンピュータシステムの総称である。サーバからサービスを受ける「クライアント」と対になる概念で、クライアントからの様々な要求に応答する。また、そのようなアプリケーションやプロセスをも指す。

- クライアント・サーバ・モデル

 複数台のコンピュータがネットワーク接続された環境、すなわちコンピュータネットワーク上で、各々のコンピュータが同じ情報資源(データ)を参照する状況が多い場合に、各コンピュータに格納すると記憶領域や保守などの面で多大な無駄が生じる。

サーバはこれを解決する手段で、特定のコンピュータが情報やその処理作業を集中的に管理することで、ネットワーク全体での記憶領域を最小限にとどめると共に、共有される情報の同期等の手間を省き情報伝達や保守の効率を高めるものである。 他のコンピュータはクライアントとして稼動し、必要に応じてサーバからサービスを受けとる。

このように情報を集中的に管理し、他にサービス提供するためのコンピュータをサーバと呼ぶ。 逆にサーバの機能を利用し、サービスを受ける側のコンピュータをクライアントと呼ぶ(また、これらのようなアプリケーションやプロセスをも指す。以下同じ)。

サーバとクライアントが存在しているコンピュータネットワークをクライアント・サーバ・ネットワークと呼ぶ。クライアント・サーバ・モデル/型/システム/コンピューティング、などとも言う。

-サーバの種類

 サーバの種類は、クライアントに提供するサービスにより様々な種類があり、必要に応じてネットワーク上に、複数のサーバを組み合わせることができる。電子メールなどは、この技術の代表的な例である。

また、複数台のサーバを利用することにより負荷を分散し、耐障害性を向上させるスケールアウトという見地より、省スペースでたくさんのサーバを設置できる「ラックマウント・サーバ」や「ブレードサーバ」が使用されることも多い。

インターネット上では、ウェブサイトがデータを管理しているサーバで、データが集中しすぎて負荷が増大することにより、一度に転送できる量が小さくなってクラッシュしてしまう、いわゆる「飛ぶ」状態に陥ることがある。また「飛ぶ」まではいかなくても極端に転送量が小さくなって、サイトのページを開くにも、とても長い時間がかかることになる。- 主なサーバ

 サーバには大型サーバから小型まで多種多様の物が存在する。主にハードウェアで重視されるのは、拡張性、耐障害性、処理能力などである。 ここでは代表的な物を上げる。

*フォールトトレラントコンピュータ

主にOSはUNIXかLinuxである。 本体を構成している部品の多くが二重化されており、運用中に於ける部品の交換が可能で、全ての部品がホットスワップを行うことが可能である。 主な用途は、鉄道の座席予約システム、携帯電話の中継局などインフラの主要箇所に設置されている。

*エンタープライズサーバ

 搭載される主なOSはUNIXかLinux、またはWindowsである。 主要基板、CPUはサーバ専用の物を使用する。また、CPUはその処理能力に応じて二重化もしくは四重化など拡張できる物が多い。 ハードディスクはデータの保護を優先させRAID化されている物が殆ど。また、ハードディスクにはホットスワップ機能を盛り込んだ製品も多い。 主な用途は、コンビニなどのバックヤードシステム、スーパーコンピュータの入出力系などインフラには直接影響はないが、大規模なデータを取り扱うシステムに多い。

また、近年は、サーバ機能を絞り込んで小型化し、汎用ラックに多数収容可能な製品も登場している。(写真参照)

*PCサーバ

 搭載される主なOSはPC-UNIX、またはWindowsである。 主用基板、CPUはパーソナルコンピュータの物を使用する。 今話題の自宅サーバはこの部類に入る。また、GoogleはこのPCサーバを1万台以上も繋いでシステムを構築している。

・WWWサーバ

 WWWシステムにおいて、情報送信を行なうコンピュータ。また、WWWによる情報送信機能を持ったソフトウェア。

 Webサーバは、HTML文書や画像などの情報を蓄積しておき、Webブラウザなどのクライアントソフトウェアの要求に応じて、インターネットなどのネットワークを通じて、これらの情報を送信する役割を果たす。

 初期のWebサーバは、あらかじめ用意しておいたファイルを送出する機能しか持たなかったが、最近では機能が増え、要求に応じてプログラムを実行し、結果をクライアントに送信する動的ページ生成の機能や、データベースと連携したトランザクション処理機能などを持つものも登場している。

 中でもCGIやSSIなどの拡張機能は歴史が古く、最も一般的に利用されている。Java言語を利用したJavaサーブレットやJSP、Microsoft社独自の技術であるASPなどを利用したWebサイトも増えている。

 Webサーバソフトウェアで最も人気があるのは、全世界のボランティアプログラマが共同開発しているフリーソフトウェアのApacheで、インターネット上のWebサーバの過半を占めるといわれている。企業内のイントラネットではMicrosoft社のIISの人気が高い。

・パソコン(Personal Computer, パーソナルコンピュータ)

 「PC」とも略される。もとは個人用の低価格のコンピュータ全般を指していたが、現在ではPC/AT互換機の意味で使われることが多い。

b.アーキテクチャ

 ハードウェア、OS、ネットワーク、アプリケーションソフトなどの基本設計や設計思想のことをいう。元来、建築学における設計術あるいは建築様式を表していたのが、転じて、コンピュータ用語として用いられるようになった。

・OS(基本ソフト、オペレーティングシステム)

 オペレーティングシステム(Operating System、略してOSとも呼ばれる)は、コンピュータにおいて、ハードウェアへのインターフェースを抽象化してアプリケーションソフトウェアに提供するソフトウェアで、基本ソフトウェアの一つである。なお、オペレーティングシステムのGUI

HYPERLINK "http://ja.wikipedia.org/wiki/%E3%83%95%E3%83%AD%E3%83%B3%E3%83%88%E3%82%A8%E3%83%B3%E3%83%89" \o "フロントエンド" フロントエンドであるオペレーティング環境についてもここで扱う。

ちなみにオペレーティングシステムは完全な一般名詞だが、OSは本来IBMの商標。

- OSの目的

オペレーティングシステムの主な目的は3つある。すなわち、ハードウェアの抽象化、資源の管理、そしてコンピュータ利用効率の向上である。

ハードウェアの抽象化

ハードウェアへの煩雑な命令やハードウェア構成の差違などを吸収し、OS上で動作するアプリケーションプログラムの開発を容易にする。

資源の管理

複数のアプリケーションソフトウェアを同時に利用する場合でも、資源要求の競合が起きない限りは互いに独立して動作することができるように資源を管理する。競合が起きた場合には適切に処理する(待たせる、エラーを返すなど)。

コンピュータの利用効率の向上

複数のタスクを同時に実行する場合に、資源割り当ての順番や時間を工夫することで、全体のスループットを向上させることができるようになる。これはデスクトップ環境ではあまり恩恵を感じることはないが、ウェブサーバやデータベースなど大量のアクセスをこなす用途などでは重要になる。

広義のオペレーティングシステムには、基本的なアプリケーションソフトウェア(ウィンドウシステム、ファイル管理ソフトウェア、Webブラウザ、エディタ、時計などのアクセサリ、簡単なデータベースシステム、各種設定ツールなど)を含むことがある。一般的に「オペレーティングシステム」という場合はこちらを指していることが多い。

統合環境と平易なユーザーインターフェースをうたった「マッキントッシュ」及び「マイクロソフト ウィンドウズ」の登場によりその傾向は更に強まり、MS-DOSなど初期のOSとマッキントッシュ以降の近年のOSとは、分けて扱われることが多い。

OSの中で、ハードウェアを直接管理操作するレベルの最も基本的な部分を、特にカーネルと呼んで分けることもある。

BIOSは、Basic Input/Output Systemの略で、OSではない。

・ OSの機能

- APIとABI

 OSはアプリケーションソフトウェアを動作させるのが第一の目的である。このためのインターフェースがAPI(アプリケーションプログラミング・インターフェース)とABI(アプリケーションバイナリ・インタフェース)である。カーネルはシステムコールによってアプリケーションにサービスを提供する。さらに基本ライブラリも含めた形でアプリケーションに対してAPI/ABIを提供する。アプリケーションによってはOS上のミドルウェアやアプリケーションフレームワークなどをAPIとして使用する場合もある。

APIはプログラミングのためのインターフェイスであり、プログラムを作成する際の規則を構成する。例えば、C言語での関数やFORTRAN/Pascalなどのライブラリ呼び出しといったものがそれにあたる。

 一方、ABIはコンパイルされたソフトウェアがOSの機能を呼び出す際のインターフェースであり、プロセスが動作する際の規則を構成する。例えば、UNIX系のOSはAPIがほとんど共通だが、ABIはOSによって異なる*1。従って、同じCPUを使ったシステムであってもABIが異なれば実行ファイルが異なる。ABIには、エンディアン、実行ファイルの形式、システムコールの具体的な方法、コールスタックの使い方などが含まれる。

*1: OSの垣根を越えたABIもいくつか存在する。例えば、OCMP(Open Computing Environment for MIPS Platform)というMIPS系チップを使用したUNIX機によるバイナリ共通インターフェースがNECやSONY,住友電工,日本タンデムコンピュータなどにより定義され、その定義に沿ったUNIX-OSが複数販売された。

- プロセス管理

 コンピュータ上の各動作はバックグラウンドであっても一般のアプリケーションであっても、内部的にはプロセスとして動作する。DOSのような古いOSは一度に一つのプロセスしか実行できない。最近のオペレーティングシステムは一度に複数のプロセスを動作させることができる(マルチタスク)。プロセス管理は複数のプロセスを実行するためにオペレーティングシステムが行う処理である。プロセッサをひとつだけ持つ一般的なコンピュータでは、マルチタスクは高速にプロセスからプロセスへ切り替えを行うことで実現される。ユーザがより多くのプロセスを実行すれば、個々のプロセスに割り当てられる時間は小さくなっていく。多くのシステムでは、これが音声の途切れとかマウスカーソルの奇妙な動作などを引き起こす。一般的なプロセス管理は、プロセスごとに優先度を与え、それによって配分される時間を決めている。

-メモリ管理

 パーキンソンの法則によると、「メモリを拡張するとプログラムはそれに伴って拡大する」という。プログラマは無限の容量と無限の速度のメモリを理想としている。コンピュータのメモリは階層構造になっていて、最も高速なレジスタから、キャッシュメモリ、RAM、最も低速なディスク装置がある。OS内のメモリ管理部はこのようなメモリを管理するもので、利用可能な部分、割り当てと解放、主記憶と二次記憶との間でのスワップなどを制御する。

- ファイルシステム

Linuxとマイクロソフトのオペレーティングシステムには様々な固有のファイルシステムがある。特にLinuxのファイルシステムは種類が多く、ext2、ext3、ReiserFS、Reiser4、GFS、OCFS、NILFS、Google File Systemなどがある。LinuxはFATファイルシステムやXFS、JFSも完全サポートし、NTFSを読むことも出来る。一方、Windowsが扱えるファイルシステムは限られており、FAT12、FAT16、FAT32、NTFSのみである。Windows上では NTFS が最も信頼性と効率が高いファイルシステムである。FATファイルシステムはNTFSよりも古く、パーティションやファイルのサイズに制限があるため、様々な問題を生んだ。

各OSでのファイルシステムの実装には、ジャーナル可能かどうかという違いがある(ジャーナルファイルシステム)。ジャーナル可能なものはシステムのリカバリがより安全という利点がある。システムが突然の故障などで停止した場合、ジャーナルされていないファイルシステムはチェックユーティリティを使って検査する必要があるが、ジャーナルファイルシステムではリカバリは自動的に行われる。Windows の NTFS や Linux の多くのファイルシステムはジャーナル可能である(ext2を除く)。

現在主流のOSにおいては、ほとんど全てのファイルシステムはディレクトリによる階層構造を持つ。これは、Multicsを起源とするものであり、メインフレームのOSではディレクトリを持たないものもある。また、ディレクトリ名とファイル名の区切り記号、ファイルの命名規則などはシステムによって異なる。

・ ネットワーク

 多くのオペレーティングシステムはTCP/IPプロトコルをサポートしている。歴史的に見れば、初期のコンピュータネットワークはモデムを使って電話回線で行われていた(BSC手順など)。その後、パケット通信が使われるようになり、IBMのSNAなどの各社独自のネットワークアーキテクチャが登場した。現在では、TCP/IPを中心とした通信が主流となっている。

通信プロトコルは、トランスポート層まではカーネル内モジュールとして実装し、プレゼンテーション層より上はシステムプロセスとして実装されるのが一般的である。セッション層の実装はシステムによって異なる。

・ セキュリティ

 オペレーティングシステムが関係するセキュリティは、ユーザをアクセスに先駆けて認証し、そのユーザのアクセスレベルを決定し、管理者の方針に基づいてアクセスを制限することである。一般にOSは他のネットワーク上のコンピュータやユーザに対して様々なサービスを提供している。これらのサービスはポートなどの番号付きのアクセスポイントを通して提供される。ファイル共有、プリントサービス、電子メール、ウェブサイト、ファイル転送などが一般的なサービスである。

セキュリティに特化した機器(あるいはソフトウェア)としてファイアーウォールがある。OSレベルでも各種のファイアーウォール・ソフトウェアがある。ソフトウェアによるファイアーウォールはOS上で提供されているサービスへのトラフィックを許すか許さないかと設定できる。従って、安全でないサービス(telnetやftp)をインストールして使おうとしても、そのポートへのトラフィックをファイアーウォールが許可していなければ、セキュリティ問題は発生しない。

・ グラフィカルユーザインターフェース(GUI)

最近のオペレーティングシステムはGUIを持っている。多くのプロプライエタリなシステム(Windows やMac OS)はカーネルとGUIが密接に関係している。他のOSではユーザーインターフェイスはモジュール化されていて、任意のGUIをインストールしたり、新たなGUIを作成したりできる(Linux、FreeBSD、OpenSolaris)。

Windowsでは新たなバージョンが登場する度にGUIを変更してきた。初期のWindowsからWindows XPまでを比べてみると、その変化は大きい。

Macでは初期からSystem 6.0.xまでが白黒のGUIであったが、System 7以降はカラー化されたのみでMac OS 8でプラチナアピアランスが採用されてもMac OS 9.2.2までは、基本要素はほぼ変わっていない。一方、Mac OS Xになって大幅に変更され、AquaベースのGUIになりカラム(Finder)やDockが導入され、更にMac OS X v10.3以降ではメタルアピアランスが導入されている上、X11も用意されている。

LinuxにはいくつかのGUIが存在する。Linuxで使えるGUIとして有名なものは、GNOMEとKDEがある。

・ デバイスドライバ

 デバイスドライバはハードウェア機器とのやり取りをするためのソフトウェアである。一般に機器との通信を行うインターフェイスを持ち、機器の接続される何らかの通信サブシステムやバスを経由して通信を行う。コマンドを機器に送り、データの送受信を行う。また、一方でOSやアプリケーションに対するインターフェイスも提供する。ハードウェアに強く依存するプログラムであり、OSにも依存している。これによって、OSやアプリケーションが機器を使って動作することが可能となっている。ハードウェアの非同期的な割り込みの処理もデバイスドライバの役割である。

デバイスドライバの主たる設計目標は抽象化である。ハードウェアは同種のものであってもそれぞれ異なる。新たな機能や性能を提供する機器が登場したとき、それらは従来とは異なった制御方式を採用していることが多い。オペレーティングシステムを将来にわたってあらゆる機器を制御できるように設計するのは困難である。従って、個別の機器の制御をOSから切り離す必要がある。デバイスドライバはOSとのインターフェイス(関数呼び出し)をデバイス固有の処理に変換することが主たる機能となる。理論的には、新たな制御方法の新しいデバイスは対応するドライバが適切に機能すれば古いOSで制御可能となる。OSから見れば、新たなドライバによって新たなデバイスが利用可能になる。

・ OSの歴史

- 第1世代

1950年代。OSという概念が登場し始めた時代。初期のコンピュータはオペレーティングシステムを持たなかった。しかし、システム管理用ソフトウェアツールやハードウェアの使用を簡素化するツールはすぐに出現し、徐々にその範囲を拡大していった。最初のOSは、IBM 701用にゼネラルモーターズが開発したもの、IBM 704用にゼネラルモーターズとノースアメリカン航空が共同開発したもの等、多くの候補があるが、どういった機能が搭載された時点でOSと呼ぶかによる。(この時代のものをOSとは呼ばない場合もある。)

当時は、パンチカード等から入力されたプログラムを磁気テープに一旦保存し、その磁気テープを大型コンピュータに接続後、プログラムをロードして実行していた。そのため、入出力装置のドライバにあたるものが作成されていた。また、アセンブラやコンパイラが登場し始めた時代なので、一旦、コンパイラをロードしてからプログラムをロードし、コンパイラが出力したアセンブリ言語をアセンブルするために、アセンブラをロードするといった手続きが必要だった。こうした作業を自動化するバッチ処理がOSの機能として実現されていた。また、プロセスの状態を監視するモニタも実装されていた。

- 第2世代

1960年代前半。OSの機能が増強された時代。スプール、ジョブ管理、記憶保護、マルチプログラミング、タイムシェアリングシステム、そして、仮想記憶の概念が登場し始めた。これらの概念を複数搭載するOSも登場していた。また、マルチプロセッシングシステム- 第3世代

1960年代後半。OSが著しい進化を遂げた時代。正確には、1964年に発売されたIBM System/360に搭載されていたOS/360登場以後の時代。IBMのメインフレームであるシステム/360シリーズは非常に幅広い性能/容量と価格帯をカバーするもので、それを単一のオペレーティングシステムOS/360でカバーするよう計画されていた(従来は機種ごとにツールが開発されていた)。このような全製品ラインを一つのOSでまかなうというコンセプトはシステム/360の成功を決定づけた。実際、現在のIBMのメインフレーム上のオペレーティングシステムは、そのオリジナルのOSの系統を受け継いでおり、OS/360向けのアプリケーションは最新のマシンでも動作する。OS/360は他にも重要な進歩に対応していた。それはハードディスクドライブへの対応である。もうひとつの重要な概念としてタイムシェアリングシステムがある。高価なコンピュータの資源を複数のユーザーが同時並行的にリアルタイムでシステムを使うことで有効利用するものである。タイムシェアリングは、各ユーザーにマシンを独占しているかのような幻想を抱かせた。Multicsのタイムシェアリングシステムはその種のシステムの中でも特に有名である。

タイムシェアリングシステムや仮想記憶等の機能が、本格的に実現された。

- 第4世代

Multics は1970年代の様々なオペレーティングシステム、特にUNIXに影響を与えた。もうひとつのミニコンピュータ用オペレーティングシステムとしてVMSが有名である。

初期のマイクロコンピュータはメインフレームやミニコンピュータのような精巧なOSを必要としていなかったし、それを搭載するだけの容量もなかった。そこで、必要最小限のオペレーティングシステムが開発された。初期の特筆すべきオペレーティングシステムとしてCP/Mがある。これは8ビットのマイクロコンピュータではよく使われ、その大雑把なクローンとしてMS-DOSが生まれた。MS-DOSはIBM PCのオペレーティングシステムとして採用されたため、広く使われるようになった(IBM版は IBM-DOS または PC-DOSである)。その後継OSによってマイクロソフト社は世界有数のソフトウェア企業となったのである。1980年代の他の流れとして、アップル・コンピュータ社のMac OSがある。

- 第5世代

1990年代には、パーソナルコンピュータがGUI機能や頑健性と柔軟性を備えたオペレーティングシステムを搭載できるまでに進化した。マイクロソフト社はこのためにWindows NTを開発した。Windows NT は1999年以降のマイクロソフト社の全OS製品のベースとなった。アップル社は2001年、UNIXをベースとしたMac OS Xを新たにリリースした。また、オープンソースの流れでは、GNUプロジェクトがUNIX向けのツール群を開発し、Linuxがカーネルとして主流となった。BSDもUNIX市場の一部を占めている。 1990年代までに、マイクロコンピュータは、広いGUIの施設と同様に、より大きなコンピュータのオペレーティング・システムの頑強性と柔軟性がますます望ましくなったポイントに発展した。

 組み込みシステムの複雑さが高まると、組み込みオペレーティングシステムの利用が拡大していった。

・UNIX

 UNIX® (or ユニックス) は、マルチタスク、マルチユーザ機能を有するオペレーティングシステムの一種、またはこれから派生した一連のOSの総称。

-概説

 主に企業や教育機関における研究で、または安定性や高い情報セキュリティが要求されるサーバを提供する目的で使われる。

ミニコンやワークステーション用のOSとして広く採用され、メインフレームの一部やスーパーコンピュータにも用いられている。1990年代のIntel80386発売以降、Linux、FreeBSDなどの『PC-UNIX』の公開によって最近では個人レベルで使用されることも多くなった。

現役のOSとしては比較的長い歴史を持ち、優れたパフォーマンス、堅牢性を持つ。

UNIXの中核を成すカーネルは大部分がC言語で記述されている。その結果、異なるプラットフォームに対する移植性が高いこと、また、可読性が高いため、機能の改変を行なうことが比較的容易なことで知られている。

UNIXシステムの系統図

- BSD系UNIX

 カリフォルニア大学バークレー校は同校で開発されたUNIX用のPASCALコンパイラやエディタなどの配布活動を行っていた。これが、BSD UNIX(Berkeley Software Distribution)の始まりである。

1980年ごろ、DECのスーパーミニコンVAX-11のリリースにより、ミニコンは32ビットの時代に突入した。LISPやリレーショナルデータベースなど大規模アプリケーションのため32ビット仮想記憶対応のUNIXが求められていたが、AT&Tから提供された UNIX 32VはV7を32ビット対応にしただけのもので仮想記憶機能を持っていなかった。そこで、カリフォルニア大学バークレー校ではV7と32Vをベースに仮想記憶機能の追加を行い、バークレー版のUNIXを開発した。これによりBSDはUNIXオペレーティングシステムそのものを含む大規模なものとなった。 さらに同校はDARPAよりUNIXにTCP/IPネットワーキング機能を追加する研究プロジェクトを受託し、BSD UNIXは、TCP/IP

HYPERLINK "http://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%83%BB%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF" \o "コンピュータ・ネットワーク" ネットワーク機能を持つことになった。特にTCP/IPがBSD UNIXに標準採用されたことは、インターネットの創生期の発展に大きく寄与した。

 BSD UNIXはAT&Tから公式に配布許可を得たUNIXのバリエーションであり、入手のためにはまずAT&T UNIXのソースライセンスを得た上でバークレー校とのあいだでライセンス契約を結ぶ必要があった。当時はUNIXのライセンス費が教育機関向けには非常に安く、また同校のライセンス費も実費程度であったのでBSD UNIXは広く普及した。BSDベースの商用UNIXも登場したが、これはAT&Tからバイナリ再配布ライセンスを得て販売されていたのであり、ソースコードは付属しておらず、カーネル再構成用にリロケータブルオブジェクトファイル(.oファイル)が添付されていた。

 なお、BSD開発の中心となったのが、後にSUNの設立メンバーとなるビル・ジョイである。その後、1995年まで同校のCSRG(Computer Systems Research Group)でBSD版UNIXの開発が続けられた。4.3BSDの出荷後、CSRGではAT&T由来のソースコードの分別と除去を推し進め、AT&T UNIX由来ではないソースコードを無償公開した。これがNetwork Release 1(NET/1)やNET/2である。特にNET/2ではカーネルのソースのほぼ全てが含まれており、欠落した数個のファイルを開発することにより動作するカーネルを作ることができた。 しかしUNIXのソースコード、特許等のライセンスを管理してきたAT&Tは、BSDに対して快く思わなかった。特に、BSDi社がNET/2を商用化してソースコードを販売したことがきっかけとなり、USL(当時UNIXを保有していたAT&Tの子会社)はBSDi社及び、BSDを開発したカルフォルニアバークレイ校に対し、BSDによるAT&Tが保有する特許及び、著作権の侵害に対して訴訟を起こす。この訴訟の和解の結果、1994年には、NET/2の公開を取りやめることととなったが、4.4BSDからAT&TUNIXに依存した部分を取り除いた4.4BSD-Liteを同校が公開できることになった。しかし、裁判の間BSD系のオペレーティングシステムは急激に開発のスピードが落ちたとされる。

最後に出荷されたBSDは4.4BSD encumberd(フリーではない)と、そのフリーなソースコードだけを抜き出して作られた4.4BSD-Lite2である。こうしてAT&Tとのライセンス問題を回避したBSDは後に述べるオープンソースUNIXへとつながっていく。

- V7系UNIX

 商用UNIXには、V7→32V→4.xBSD→SunOS(Sun)という流れと、V7(→32V)→System-III→System-V(AT&T)という流れがある。なお、System-IVは開発に失敗して出荷されなかった。その後、AT&TとSunによって、BSD系の機能を追加した統合UNIXが System-V Release4(SVR4)として開発された。

その後、AT&TはSVR4をノベル社に売却した。なお、ノベル社はこれを基礎にUNIXwareを開発し、マイクロソフト社のWindows NTに対抗しようとした。

1994年にノベル社はUNIXの標準規格を確立するために設立されたX/OpenコンソーシアムへUNIXの商標を売却した。その後、X/OpenコンソーシアムとはOSF/1(SVR4との競合規格)は統一化され、この規格の管理を目的としてOpen Groupが設立された。

V7系UNIXの系譜はUNIX V8につながる。UNIX V8は一般に公開されることはなく、ベル研究所内で研究用途にのみ使われた。

ベル研究所ではUNIXを開発した同じチームによって、UNIXの思想を受け継ぎ、分散環境上におけるUNIXの問題点を解消したPlan 9が作られ、2004年現在も開発が続けられている。なお、Plan9は組込み向けに再構成されインフェルノ(Inferno)として通信機器に使われている。

-オープンソース系UNIX

 UNIXが商用の「閉じた」OSとなっていく中で、現在につながるフリーソフトウェア/オープンソースのムーブメントが勃興し、UNIX同様の操作性と機能を提供するフリーなOSが生み出された。以下に挙げるOSは、ライセンスなどの問題からUNIXとは公称しない。

*GNU/Linux

 1983年にリチャード・ストールマンはFSF(Free Software Foundation/フリーソフトウェア財団)を設立し、GNU(Gnu's Not Unix)プロジェクトを開始した。このプロジェクトの目的は、再配布自由・改変自由なUNIXクローンのOSを作成することであった。このプロジェクトにより、多くのUNIXシステム上で動作するソフトウェア、例えばemacsやgcc等が作成され、これらソフトウェアは多くのUNIXシステムで使用されるようになった。しかしながら、OSの中核をなす“Hurd”の完成に手間取った(Hurdは2006年現在も開発中)。

1991年にリーナス・トーバルズがLinuxのカーネルを開発した。Linuxカーネルの特徴として、POSIXに準拠するように設計されたこと、GNUプロジェクトによって開発された様々なツールが動作するように作成されたこと、またライセンスにGPLが採用されたこと等が挙げられる。その結果、GNUプロジェクトの開発したソフトウェア等と共に、完全フリーのUNIXクローンとして利用されるようになった。有名なディストリビューションとしてRed Hat LinuxやTurbo Linux等がある。

なおLinuxという名称は本来カーネルのみの名称にすぎず、OSとして完成させるための他のシステムの多くはGNUプロジェクトの産物である。そのためFSF側ではOSとしての名称は「GNU/Linux」とすべきだと主張しており、この名称を採用した最も有名なディストリビューションのひとつとして「Debian GNU/Linux」がある。

* オープンソース系BSD

 4.3BSD Network Release 2 (Net/2)に起源を持つのがFreeBSD・NetBSD・OpenBSD・DragonFly BSD・PC-BSDのいわゆるBSD系UNIXである。FreeBSDは安定性重視、NetBSDは新機能対応と移植性に優れ、OpenBSDはセキュリティを重視し、DragonFly BSDはマルチCPU構成での高性能という特徴を有し、PC-BSDはカジュアルユーザにおいて簡単に導入して使えることを目指しており、特にFreeBSDはウェブ・ホスティングなどで標準的に使用されている。

USLとの和解以降これらBSD系UNIXはライセンス問題を排除した4.4BSD-Lite2をベースに移行し、いずれもフリーなOSとなっている。

- UNIXの商標

 UNIXの商標とソースコードの権利はAT&Tから子会社のUSL(Unix Systems Laboratory)、Novelなどの間で転売が繰り返された。現在ではUNIXのソースコードはSCOが持っている。登録商標としてのUNIXはThe Open groupが保有している。

日本では、日本マランツ(現在は合併してディーアンドエムホールディングス)が、電気機器分野でUNIXという名前で先行して商標登録を行なっていた。そのため、日本ではOSの商標として使えない時があった。現在は音響機器用に「unix」を日本マランツが利用している。電子計算機関連の「unix」という商標は複数の区分で登録されており、アメリカン テレフォン アンド テレグラム カムパニ―やエックス/オープン・カンパニー・リミテッドが保有している。

- UNIXの定義

 現実には、UNIXは以下に示す四種類の条件をひとつでも満たすOSを指す言葉として使われている。

①UNIXの商標を管理する団体The Open Groupより、同団体が定義したUNIXの定義(Single UNIX Specification)を満たすことの認証を受けたOS。

②ベル研究所で開発されたオリジナルのUNIX及び、オリジナルのUNIXの派生OSとしてベルの認可を得た過去のOS。

③オリジナルのUNIXを起源にもつOS。

④POSIXなどのUNIXに関連する規格をみたす、UNIX互換なOS。

しかしながら現在、UNIXの公式な定義は、1のみである。アメリカや日本を含む多くの国においては、UNIXはThe Open Groupの登録商標であり、1を満たすOSのみがUNIXを名乗ることができる。かつてAT&TがUNIXという言葉の使用に細かい制限をかけたために、Un*xなどといったよびかえがされることもある。Linuxは4のみに当てはまるが、規格を満たしたことを正式に認定されたわけではない。

・Mac OS

 Mac OSとは、アップルコンピュータのマッキントッシュと共に登場したオペレーティングシステムのことである。GUIの普及に大きく貢献したOSである。現在のOSは技術的に直系ではないMac OS Xであるため、単にMac OSといった場合は概ねバージョン9までのクラシックOSを指す。この記事でも基本的にクラシックOSについて記述する。

- 概要

 発表当時マッキントッシュはハードウェアとソフトウェアが不可分な存在であり、当初はMacのOSのことを便宜的にSystem(日本では漢字Talk)と呼んでいた。Mac OSという呼称は一般に広く使われていたものの、正式なものではなかった。Mac OSという呼び名が通称から正式なものになったのは、1997年1月Mac OS 7.6がリリースされたときである。Macintosh互換機の普及とともに、MacのハードとOSを明確に区分する必要が生じたことによる。その後アップル社の方針転換によりMacintosh互換機は市場から姿を消したが、Mac OSという名前はその後のアップルのOS製品に引き継がれている。

ビットマップディスプレイとマウスの利用を前提としたり、オーバーラップするマルチウインドウやメニュー操作、マルチスタイルフォントに代表されるWYSIWYG表示など、Xeroxで1970年代に研究開発されていた暫定Dynabook環境(SmalltalkをOSとして動作するAlto)から多くの特徴を拝借してはいたが、マウスボタンを一つに限って操作体系を簡略化にしたり、プルダウンメニューやゴミ箱を発明するなど、多くの独自のアレンジを加えることで使い勝手を向上させ、なにより、GUIというものをコンピュータの世界に広く浸透させた功績は大きい。

 また、Macに追従してマウスが付きはじめた他のパーソナルコンピュータでは、アプリケーションソフトのGUIのデザインは統一性が全くない時代が長く続いたが、Macでは最初のモデルからアプリケーションソフトの開発環境で、そのデザインの正則となる材料(Macintosh Toolbox)を定め、アプリケーションソフトのGUIのデザイン開発をある程度まで標準化/作法化したことで、ひとつのソフトが使えれば、他のソフトも使えるというコンピュータ利用の形態を、パーソナルコンピュータにおいて初めて可能にした。

- 得意分野

 Mac OSは画像処理を非常に得意としており、デザイナーや出版業界、グラフィッカーなどの間で広く愛用されている。

そのほかの画像処理を得意とする理由としては、Lisa のためにビル・アトキンソンが中心となって開発したグラフィックルーチン LisaGraf が Macintosh に移植され、 QuickDraw としてはじめの機種から ROM の状態で搭載された。その完成度の高さから、かねてからグラフィックスに強いOSだとされてきた。グラフィックルーチンは Mac OS X から PDF をベースとした Quartz に替わったが、互換性を考慮して現在も残されている。

- デスクアクセサリ

 デスクアクセサリ(Desk Accessary、DA)は、Systemと呼ばれていたころのMac OSにおいて、使用中のアプリケーションとは別に起動しておける小物的なアプリケーションのこと。

当時、Mac OSはシングルタスクであった。そのため、別のアプリケーションを使用するには一旦終了させなければならない。これは、搭載していたメモリが少なかったことに起因する。

デスクアクセサリは起動と終了の手間を省くための手段として用意された。デスクアクセサリはわずかなメモリしか使わないため、使用中のアプリケーションとは別に起動しておくことができるため、このころのMacには欠かせないものだった。 そういったこともあり、小物の位置づけであるにもかかわらず多機能なデスクアクセサリが多数開発された。 Mac OSにあらかじめ搭載されていたデスクアクセサリもある。Mac OS 9まで残された「計算機」や「スクラップブック」がそうである。

- 使用方法

 デスクアクセサリを使用するためには、まず「Font/DA Mover」と呼ばれるユーティリティでシステムにインストールする。インストールしたデスクアクセサリはアップルメニューから起動できるようになる。

OSが疑似マルチタスクになるとデスクアクセサリは不要になり、アップルメニューはアプリケーションやファイルを起動するためのランチャーとなった。Mac OS 9まではデスクアクセサリのランチャーであったことの名残だということがうかがえる。

・Linux

 Linux(リナックス、リーヌークス、リヌックス、リヌクス、ライナックス、リーナクス)とは、UNIXライクな(UNIXに似た)コンピュータ用オペレーティングシステム (OS) である。

現在では、パーソナルコンピュータに限らず、携帯電話のような組み込みシステムからメインフレームやスーパーコンピュータまで、幅広く利用されている。

- 概要

 Linuxとは本来、OSの基盤となる中核ソフトウェア「カーネル」のみを指す呼称であるが、今日ではこのLinuxカーネルにGNU ProjectのソフトウェアやX Window Systemなど、別のプロジェクトやライセンスのもとで開発が行われたソフトウェア製品群をパッケージ化し、Linuxカーネルと同時に配布するLinuxディストリビューションを指して、単にLinuxと呼ぶこともある。

Linuxカーネルはその名の通り、OSの根幹としてコンピュータのシステム資源を統括するカーネルであり、これを用いて具体的な応用を可能とするオペレーティングシステムを構成する場合には、他の多数のソフトウェアの助力を必要とする。各種のライブラリやサブシステムを抜きにしてこれらを構成することは不可能であり、さらに具体的な作業や業務に応用する際には、各種サーバやアプリケーション等のソフトウェアも必要となる。GNU Projectではこうしたソフトウェアをフリーで開発・提供しており、実際に大多数のLinuxディストリビューションではライブラリ環境(glibc、GNU Cライブラリ)やツール環境(GNU bintuilsやfile utils等)をGNUのプロダクトに依存しているという事実、またGNU自身のプロダクトではないものの、Linuxカーネルを含め多くのソフトウェアがGNUが提唱するパブリックライセンス(GPL、乃至はLGPL等)に則って開発・提供され、これらのソフトウェアが事実上相互依存している点などからも、Linuxカーネルを用いてUNIXと同等のシステムを構成する場合には、そうしたシステムは「GNU/Linux」などと呼ぶべきとする者もいる(リチャード・ストールマン、またリーナス・トーバルズ自身もGNU/Linuxと呼称している)。

Linuxカーネルを用いて構築されたOS環境は、UNIXと同等、あるいはそれ以上の機能を有するものと見做されるため、一般的にはUNIX系OS、UNIX互換OS等として分類される。ただし厳密には、UNIXの標準的なAPIなどを定めたPOSIXは大きく満たしているが、UNIXの商標を取得していない(商標UNIXではない)こと、たとえ実質的にPOSIXを満たしていたとしてもPOSIX自体を取得していない(POSIXでもない)こと、既存のUNIXからのforkやソースコードの流用等も行われていない(血統上のUNIXでもない)ことなどから、本来のUNIXと混同して扱うことは適切ではない。

後付けではあるが、LinuxをLinux Is Not UniXの略としたり(GNU's Not UNIX)、LINus UniXの略としたりする者もいる。

- "Linux"の読み方

 Linuxはリーヌークス、リナックス、リヌックス、リヌクス、ライナックス、リーナクス等様々な読み方をされている。開発者であるスウェーデン系フィンランド人リーナス・トーバルズ本人のスウェーデン語の名前に由来していることから、スウェーデン語の発音「リーヌークスと表記するのが正しいとされているが、リーナス個人が英語を母語とする文化圏の出身ではないため、「どのように呼んでもらっても構わない」としている。

日本では各種の読み方が混在していたが、日本で最初のLinux専門誌LINUX JAPANが「リナックス」の読み方を採用し、一般紙が同名称に追従した事から、この読み方が一般に広まった。この「リナックス」の発音から、"Linax"と誤表記されることも多い。

- Linuxディストリビューション

 Linuxのカーネル自体はソースリストとして単独で公開されており、他の応用プログラム等と組み合わせてコンパイルし実行バイナリを得ることによって初めて、各種サーバやアプリケーション、ウィンドウシステム等を動作させることができる。しかしながら、このような環境をゼロから構築し維持運用してゆく作業は難解且つ煩雑なものであり、少なくともパーソナルコンピュータの一般的なエンドユーザーの知見やスキルでは実質的に不可能と言ってよい。

 このため、ライブラリやシステムソフトウェア、アプリケーション等を、ソースリストの状態ではなくあらかじめコンパイルして実行バイナリとし、さらに設定の雛型などを添付した上で、tar形式のアーカイブやrpm/deb形式などのパッケージとしてまとめ、サポートスクリプトやパッケージマネージャ、インストールソフトウェア等と組み合わせた形で提供されることが多い。このようなひとまとめにされた環境を、Linuxディストリビューションと呼ぶ。

多くのLinuxディストリビューションでは、カーネル、ライブラリ、ツール環境、コマンドラインシェル、コンパイラ、テキストエディタ、X Window System、ウィンドウマネージャ、科学技術計算用ツール、その他オフィスアプリケーションソフトなど、何千ものアプリケーションパッケージを選択できるようになっている。

・ 特殊な利用分野

 LinuxはオープンソースのOSであるため、Microsoft Windowsなどの一般的にソースの開示や参照がほぼ不可能なプロプライエタリOSと比較した場合、よりニッチな用途への対応や調整のキャパシティを広く取れることから、応用範囲はより広範であるとされる。

1CD Linuxでは、充分な搭載メモリ容量を確保できるPCでは、データの編集や蓄積などを要求されない参照や閲覧主体の作業であれば、そのほとんどの作業をCDからの起動で利用可能となる。一方、特殊な用途としては、X Window Systemを組み込まず、ごく短時間で起動するメディアプレーヤーシステムや、囲碁などの専用のもの等もある。

1FD Linuxでは、一枚のFDに(時として特殊なフォーマット形式を利用して)Linuxを組み込み、PCルーターやSambaサーバーを構築できるものなどがある。

NASでは、NFSやSamba等によるUNIX環境やWindowsネットワークへの対応だけでなく、NetatalkによるAppleTalkへの対応を実現したものもある。また一部のNAS装置では、内部のLinuxカーネルを再構築することで、NASでありながら、ストリーミングサーバーなどの機能を追加できるものもある。

HDDレコーダー、携帯電話端末などの組み込みシステム用OS

スーパーコンピュータ 現在、汎用機やスーパーコンピュータ用カーネルとしてLinuxは広く採用されている。特にクラスター型HPCにおいてLinuxはかなり普及している。

・Windows

 Microsoft Windows(マイクロソフト・ウィンドウズ)は、米国

HYPERLINK "http://ja.wikipedia.org/wiki/%E3%83%9E%E3%82%A4%E3%82%AF%E3%83%AD%E3%82%BD%E3%83%95%E3%83%88" \o "マイクロソフト" マイクロソフト社が開発及びライセンス販売を行うコンピュータのオペレーティング環境(Windows3.0まで)及びオペレーティングシステム(Windows3.1以降)である。

「Windows」は、これまで同社から出荷された数多くのオペレーティング環境及びオペレーティングシステムに付けられているシリーズ名である。「Windows 3.0」や「Windows NT」(ウィンドウズ・エヌティー)、「Windows XP」(ウィンドウズ・エックスピー) などの連続した製品を総じて指し、それぞれの間で改良・機能追加が施されている。

Windowsの特徴

 グラフィカルユーザインターフェース(GUI)を採用し、主に「インテル・アーキテクチャ」と呼ばれるプロセッサーを搭載したコンピュータで動作する。APIの統一などによる、ハードウェア抽象化の徹底によりアーキテクチャの異なる機種でもアプリケーションなどが同じバイナリで動作すると考えられたが、実際にはPentium(x86互換CPU)など特定のアーキテクチャに限られる。そしてWindows NT系においては各種システム向けのコンパイラを利用することで単一のソースコードで全てのアーキテクチャで使うことが可能とされている。ただし、Windows NT系でもWindows 2000以降はIntel Architecture系のWindowsしか発売されておらず、検証は出来ない状況にある。パソコン用市場においては、パソコンのセット・部品メーカー、ソフトウェア開発企業がWindowsへの対応と互換性を念頭において製品開発を進めているため、市場におけるコンピュータソフト・ハードとの互換性・対応数はOSの中で最も高い。

 店頭のメーカー製パソコンにプレインストール販売することに成功し、パソコンの入門者・初期導入者をユーザーとして得たことから、パソコン用としては世界一の販売数、パソコン市場のOSシェアでは約90%を越すという驚異的な数字を誇る。Windowsの操作法を知るユーザーと対応ソフトウェア・ハードウェアの多さから、サーバーなどパソコン以外の市場においても大きくシェアを伸ばした。

近年においては、セキュリティや信頼性・安定性の面でもMicrosoft社による改善が進み、Windows XP以後は大きなバージョンアップもないため、古くなったパソコンの買い替え需要とともに安定した販売を記録している。

なおマイクロソフト・インテル両社の組み合わせは「Windows」搭載パソコンの大多数を占め、パソコン市場全体で見ても圧倒的な規模に達するため、特にウィンテルと呼ばれることもある。

・Macintosh

 Macintosh(マッキントッシュ)はアップルコンピュータが開発および販売を行っているパーソナルコンピュータ。

リンゴの品種名 (McIntosh) から命名されたが、オーディオ製品メーカーMcIntoshとの争いを避けるために、Macintoshという綴りが選ばれた(Son of を意味するMac-とMc-は等価な接頭語である)。通称は、Mac(マック)、リンゴ。

- 概説

 Macintoshは、デザイン・出版 (DTP)・音楽 (DTM) など、表現の分野でのコンピュータとして、よく利用されてきた。

アメリカでは、昔から教育分野で強かったが、特にOSがUNIXから派生したBSDの流れを組むMach系の Mac OS X に移行して以来、カスタマイズ及びUNIX系ソフトの移植の容易さ、Xcodeなどの強力な開発環境が無料で提供され、気軽に使える完成度の高いGUIを併せ持つところなどから、理学・工学研究の分野での採用例が増えつつある。OSとしてのコア部分Darwinは完全に公開されていることもあって、UNIXユーザーに好まれる場合が多い。

- 互換性に対する二面性戦略

 アップル社は、Mac以前の製品Apple IIや本格的なDTP時代の到来をもたらしたMacintosh IIシリーズのように、高い拡張性をそなえ、ボードの交換などで旧機種との互換性を保ち製品の陳腐化を避け、長寿命を実現した製品を発表してきた。その一方で、初代Macintoshで見られた様な追加ボードを刺す為のスロットが設けられなかった事を再現するかの様に、iMacにおけるSCSIやフロッピーディスクドライブの廃止や、iBookにおけるPCカードスロットの不採用に見られるように、簡潔なデザインに到達するためにも、「過去との互換性は画期的な製品進歩の抵抗である」(創業者であるジョブスの発言)として大胆に切り捨てるのも、よく知られた同社の伝統である。

 実際、当時の同業他社はフロッピーなどのデバイスを依然として標準採用していたが(Windows自体がシステムの再インストールを行う際に、当時はフロッピーデバイスを必要としていた事等が理由の一つ)、フロッピー誕生時と異なり、画像・映像など大容量のデータを扱うことが多くなったコンピューターユーザーに、遅くて低容量なフロッピーの不便を押しつけない決断は、ひとつのデザイン的な思考であった。ジョブスは同様の理由で、自身がアップル復帰以前に率いていたNeXTコンピューターでも、リード・ライトが遅いフロッピーデバイスを利用する事より、高容量の光ディスク(5インチサイズのMO)をNeXT Cubeで採用していた事からも察する事が出来る。 とはいえ、この当時、ドキュメント分野においてはフロッピーは依然として重要なメディアであり、またQuarkXPress 3.3等古いソフトのインストールのためのキー・ディスクが必需品であるなどの理由で、外付けドライブを購入したユーザーも少なくなかった。

 拡張性のためのスロットがiMac・iBookで採用されなかったことは、最初のMacintoshからの伝統の再現にすぎないが、PowerBookやPowerMacなどの拡張性の高い機種でハードの拡張を行うことによって、随時OS等の進歩についていくことが容易になる一方、ハードウェアの高性能化に追随するには内部拡張を行うより買い替えてしまったほうが割安な場合もあることから、Mac購入時には、拡張性を期待するか否かという視点をもって製品ラインを選択する必要がある。かつての低価格路線であるPerformaやLC、Classic等のシリーズでは拡張スロット(バス)が1つないしは2つ採用されて来たが、iMacやiBookではIEEE1394(Fire Wire)やUSBによる外部拡張のみとする設計思想が明確になった。

一時期、ハードウェアの製造ライセンスを他社(日本国内企業ではパイオニア、AKIAなど)に与えて互換機が登場したこともあった�