3. コンピュータシステムやアーキテクチャに関する知識 I

シラバス: 

1. 科目の概要

 OSSが動作する基盤となるコンピュータシステムやアーキテクチャについて、ハードウェア、ソフトウェア、ミドルウェア等それぞれに関するアーキテクチャの種類、基本的な構成、特徴、役割について解説する。

2. 習得ポイント

 本科目の学習により習得することが期待されるポイントは以下の通り。

3. IT知識体系との対応関係

「3.コンピュータシステムやアーキテクチャに関する知識Ⅰ」とIT知識体系との対応関係は以下の通り。

[シラバス:http://www.ipa.go.jp/software/open/ossc/download/Model_Curriculum_05_03.pdf]

<IT知識体系上の関連部分>

4. OSSモデルカリキュラム固有の知識

OSSモデルカリキュラム固有の知識として、コンピュータアーキテクチャの各構成要素とオープンソース化との関わりが挙げられる。構成要素として、CPU、ハードディスク、インターフェイス、OSなどが含まれる。

(網掛け部分はIT知識体系で学習できる知識を示し、それ以外はOSSモデルカリキュラム固有の知識を示している)

I-3-1. システムの構成とは

システムとは何か、コンピュータシステムという考え方について基本的な説明を行う。様々なシステムアーキテクチャが存在することを示し、システムアーキテクチャとは何か、システムアーキテクチャ設計の概要についての解説も行う。

【学習の要点】

* コンピュータシステムとは、コンピュータを中心にして情報処理を行うための仕組みのことである。

* オープンなシステムとは、システムの外側との入出力が可能なシステムのことである。

* システムアーキテクチャとは、システムを構成する要素間の関係全体を指す用語である。

図I-3-1. コンピュータ・システム

【解説】

1) システムとは何か

様々な機能やサービスを提供する様々な項目が集まり、お互いに相手に対して何らかの影響を与え合いながら、全体としての目標を達成するものを「システム」という。

またそのシステムの中でのみにおいて処理が完結し、外部とは一切情報共有のないものを閉じたシステム(クローズドシステム)といい、外部から与えられた情報を分析・処理し、再び外部に出力するものを開かれたシステム(オープンシステム)という。

情報分野におけるシステムとは、外部から何らかの情報を得て、その情報の分析・処理を行い、外部に対してその処理結果を出力する仕組みを指す。

2) コンピュータシステムとは何か

コンピュータを利用して何らかの処理を行い目的を達成するシステムをコンピュータシステムという。コンピュータシステムの基本はオープンシステムであり、外部から得た情報を分析して何らかの処理を行い、その結果を出力(必要に応じて保存)する。コンピュータシステムは、ハードウェアやソフトウェア、そして通信機器などにより構成される。

* オンラインリアルタイム(即時)システムとは

通信網で接続され、外部から入力されたデータを処理、結果の出力までを即時(リアルタイム)に実行することが求められているシステムをオンラインリアルタイムシステムという。

* バッチ(一括処理)型システム

リアルタイムシステムと異なり、決められた時間に一括してデータを処理(バッチ処理)し、結果を出力するシステムをバッチ型システムという。データの即時処理を必要としない場合にはバッチ型のシステムとすることでコストを下げることができる。

3) システムアーキテクチャとは何か

システムアーキテクチャとは、コンピュータシステムを構成するハードウェア・ソフトウェア、そして通信機器などの機能構成を示す言葉である。システムアーキテクチャを明確にすることにより、効率よく動作するコンピュータシステムを設計することができる。

システムアーキテクチャを検討する際のポイントを以下に示す。

* コンピュータシステムを構成する各機器の、動作原理を明確にする。

* コンピュータシステムを構成する各機器の、必要性と実装方法を記述する。

* 外部の環境と、入力される情報および結果として求められている情報を明確にする。

* 長期的な改善計画を明確にする。

I-3-2. コンピュータシステムの構成要素

コンピュータシステムの基本構成、構成する各部品の役割、特徴、発展の歴史などについて説明する。さらにこれらの事項とOSSのかかわりに関する話題(デバイスドライバのLinux対応、オープンBIOS、ハードウェア技術情報の開示とOSS利用、等)を紹介する。

【学習の要点】

* 周辺機器も含めたコンピュータハードウェアの機能は、常に向上している。

* 目的に応じたハードウェアと、機能に対応したOSやデバイスドライバを選択しないと、その機能が有効的に活用されることはない。

* OSSとして公開され自由な開発、改良ができるデバイスドライバも多い。

図I-3-2. コンピュータの構成

 

【解説】

1) コンピュータハードウェアの基本構成

一般的に周辺機器なども含んだコンピュータハードウェアの機能は、日々向上している。しかしながら、目的に応じたハードウェアを正しく選択しない限り、その機能を有効的に利用することは不可能である。

* コンピュータの構成

コンピュータシステムを構成するハードウェアは、以下のような装置である。

- 中央演算処理装置( CPU、MPU )

- 主記憶装置( メモリ、RAM、ROM、DRAM )

- 補助記憶装置( HDD、CD-ROM、DVD、磁気テープ )

- 表示装置( モニタ、液晶ディスプレイ )

- 通信装置( ネットワークカード )

* コンピュータ構成に求められること

補助記憶装置などの機器類は、準備されていればよいというわけではない。

- 補助記憶装置の容量:発生が予測されるデータ量を保存することが可能であるか。

- 通信装置:通信速度やトラフィックで問題となることはないか。

2) コンピュータハードウェアの必要要件

ベンダがOSSの動作を保証しているコンピュータの数はあまり多くはない。

* 接続性

OSSの動作確認が取れているものが望ましい。

- プラグアンドプレイ:対応しているものであれば、OSSのドライバが使用可能である。

- デバイスドライバ:ベンダのWebサイトより、デバイスドライバが入手可能である。

* 信頼性

ドライバが準備されていても、信頼性の高いハードウェアであるとは限らない。

* 移植性

3) OSSとの関わりに関して

Linux対応のデバイスドライバは、OSSとして開発・公開されているものも多い。各ベンダより提供されるハードウェア情報も多いが、各ベンダも積極的に開発を進めている。

* デバイスドライバのOSS対応

様々なデバイスドライバが、OSSとして公開されている。

* オープンBIOS

BIOSはOSの処理とも重複するような処理を多く残している。マザーボードベンダが提供するBIOSプログラムよりも、高速で本当に必要な機能を提供するOSSのBIOSプログラムが公開されている。

- Open Firmware:主にSUNとAppleで使用されている。

- Linux BIOS:主にLinuxを対象としているが、他のOSでも使用することが可能。

I-3-3. CPUの基本構成と役割

CPUの基本構成と役割、特徴、発展の歴史について解説する。代表的なアーキテクチャとしてRISCやCISCがあることを紹介し、高速化の仕組みとして各種のパイプライン処理やマルチプロセッサ構成についても触れる。

【学習の要点】

* CPUは、各種プログラムによって数量計算やデータ処理、機器制御などを行う中心的な回路である。

* CPUを構成する各要素の処理は、クロック信号によって動作するように設計されている。

* 現在は、1クロックで同時に多数の処理が行われるようになっており、OSや一部のアプリケーションでは、CPUの動作や制限を意識したプログラムであることが必要とされる。

図I-3-3. CPUの基本構成

 

【解説】

1) CPUの仕組み

CPUとは、各種プログラムによって様々な数量計算やデータ処理、および機器制御などを行う中心的な回路である。

* CPU の構造

CPUは以下の要素により構成されている。

- ALU:演算を行う。

- レジスタ:データを一時記憶する。

- バスインタフェース:周辺機器との入出力を行う。

- 制御部:CPU全体を制御する。

- FPU:浮動小数点演算を行う。

- キャッシュメモリ:レジスタよりも多くの情報を一時的に記憶する。

- その他:DMAコントローラ、タイマー、シリアルインタフェース。

* ソフトウェア処理の流れ

CPUを構成する各要素は、クロック信号によって規則正しく処理が実行されるように決められている。そのため、同じCPUであればクロック周波数の高いCPUの方が、一定の時間内に数多くの処理を行うことが可能である。大まかには、フェッチ、デコード、実行の順となる。

- フェッチ:これから実行すべき命令をメモリから取り出す。

- デコード:取り出した命令をCPUにとって意味のある形式に分割する。

- 実行:CPUの多くの部分が接続され、指定された操作を実行する。

* CPU デザイン

- RISC アーキテクチャ

命令そのものの数を減らして、単純な組み合わせのみとし、演算速度の向上を図っている。

- CISC アーキテクチャ

複雑で高度な命令とデータの組合せを処理することが可能である。従来型のアーキテクチャである。

* ビット幅の意味

CPUが数値として扱うビット数を「ビット幅」という。32ビットのCPUがアドレス指定できるメモリ量は、4ギガバイトとなる。

2) CPU 高速化の仕組み

CPUはクロック信号によって動作するように設計されているが、そのための問題点なども存在する。その問題点に対処するためにパイプライン処理・マルチプロセッサなどの手法が採られてきた。

* パイプライン処理

パイプライン処理とは、CPU内部処理の高速化技術である。これは、1回のクロック信号でデコード処理を行いながら、次の命令のフェッチも行う機能である。

* マルチプロセッサ

複数の処理・プロセスを、同一システム内で並行的に実行させる機能。1つのシステム内にある複数のCPUが、複数の処理・プロセスを並行して動作させる。

I-3-4. メモリの役割(メモリシステムの構成と記憶階層の概念)

メモリの基本構成と役割、特徴、発展の歴史について解説する。主記憶装置として利用されるメモリや、1次、2次キャッシュといった階層的記憶装置の概念、CPUとの接続方法などを説明し、コンピュータにおける各メモリの役割を紹介する。

【学習の要点】

* メモリとは、コンピュータにおいて情報の記憶を行う記憶装置のことである。

* CPUは、メモリに記憶されているプログラムの命令を読み込んで実行する。

* キャッシュメモリは、CPUなどの処理装置と主記憶装置との性能差を埋めるために用いる。

図I-3-4. 主なメモリ

【解説】

1) メモリの役割

メモリは、コンピュータにおいて情報の記憶を行う装置のことであり、主記憶装置と補助記憶装置の2つに分類される。主記憶装置は半導体によるものが多く、一方、補助記憶装置には磁気式、光学式など様々な形態の記憶装置が利用されている。

* プログラムの格納

起動されたプログラムは、数値列として何らかのメモリに格納されている。CPUはこのメモリに記憶されている命令を読み込み、該当する処理(演算処理など)を実行する。

* CPU演算結果の格納

演算結果はメモリに格納される。ただし、その結果が一時的なものか即時利用される場合には、レジスタと呼ばれる高速なメモリ領域に格納される。

2) 主なメモリ(記憶装置)

補助記憶装置を除いた主なメモリは、以下の通り。

* レジスタ

フリップフロップなどの回路素子を用いてデータを保持する回路のこと。主な役割は以下の通り。

- 計算結果を一時的に保持する。

- RAMやROMなどのメモリを、読み書きする際のアドレスを保持する。

- 周辺機器の動作状態を保持・変更する。

* キャッシュメモリ

CPUなどの処理装置と、バスも含めた主記憶装置との性能差を埋めるために用いる高速小容量メモリのこと。さらに、1次キャッシュ・2次キャッシュと呼ばれる階層的なメモリも用意されている。以前のCPUでは、CPUと別のSRAMをキャッシュとして使っていたが、近年ではCPUの内部に演算回路と一緒に組み込まれることが多い。

- 1次キャッシュ

CPUのアーキテクチャと密接に連動して動くキャッシュ。高速だが容量を増やすことが難しい。

- 2次キャッシュ

メインメモリよりは高速で、1次キャッシュよりも容量を増やすことが容易なキャッシュ。

* メインメモリ

メインメモリとは、CPUが直接アクセスすることのできる記憶装置のことである。書き込みも読み込みも可能なRAMと読み取り専用のROMとがあるが、ともに現在は半導体メモリが主流となっている。RAMは、高速ではあるものの容量が限られており、さらに電源の供給がなくなるとデータが消滅してしまうといった注意点もある。

- RAM(SRAMとDRAM)

RAMには、一定時間経過するとデータが消失するDRAMと、電気が供給されていれば内容を保持が可能なSRAMの2種類がある。 SRAMはDRAMより高速であるが、DRAMの方が集積度を高めることができる。

- ROM : ROMとは、読み取り専用のメモリである。

I-3-5. 周辺機器の基本構成と役割

各種の周辺機器について、その基本構成と役割、特徴、発展の歴史について解説する。周辺機器としては、補助記憶装置としてFD、MO、CD-Rなど、入力装置としてキーボード、マウス、スキャナとタブレット、出力装置としてディスプレイとプリンタを挙げる。

【学習の要点】

* 補助記憶装置とは、情報を永続的に保存しておくために使用される。

* 利用者がデータ・情報などを伝えたい場合に、利用する装置が入力装置である。

* 出力装置とは、実行プログラムからの実行結果の報告、および実行結果が表示される装置である。

図I-3-5. 周辺機器の基本構成

 

【解説】

1) 補助記憶装置の種類と特徴

補助記憶装置とは、データを永続的に保存しておくための装置である。データを保存する電子媒体と読み書きを行う駆動装置とで構成されている。

* フロッピーディスクドライブ

フロッピーディスクの読み取りと書き込みを行なう装置。磁気ヘッドを接触させて、データの読み書きを行なう。

* MOドライブ

MOディスクにデータの読み込みと書き込みを行う装置。メディアの大きさによって数種類に分けられる。メディアの大きさには3.5インチと5インチのものがある。

* CD-ROM/DVD-ROMドライブ

CDやDVDに記録されたデータを読み込むための装置。書き込み可能なCD-Rは、CD-ROMドライブで読み込み可能である。DVD-ROMドライブはCD-ROMの上位機種に相当する。

2) 入力装置の種類と特徴

コンピュータに対して、利用者がデータ・情報などを伝えたい場合に、利用する装置が入力装置。

* キーボード

キーボードは、コンピュータへの入力装置の1つ。コンピュータ全般の操作に利用する。文字の入力・項目の移動・特定の操作の実行など。

* マウス

本体を手に持って水平に移動させ、ボールや赤外線などを利用したセンサで移動を検知し、移動距離をコンピュータへ伝える。

* イメージスキャナ

画像や文書などをデジタル静止画像に情報化するための機器である。

* タブレット

板状のボードにX軸とY軸方向にセンサとなる線を埋め込んだ板と、コイル状の線を埋め込んだカーソルからなる。電磁誘導にて、X軸、Y軸の位置をコンピュータに入力する。

3) 出力装置の種類と特徴

オペレーティングシステムからの実行結果、もしくは実行プログラムからの実行結果の報告が表示される装置である。

* ディスプレイ

コンピュータから出力される静止画、または動画の映像信号を表示する機器。以前はCRT(ブラウン管)が主流であったが、現在では液晶を用いたディスプレイ装置が主流となっている。

* プリンタ

プリンタとは、印刷用の機器の総称である。

- 印字方式による区分け。

熱転写方式・感熱式・インクジェット方式・ドットインパクト方式

- 印字動作による区分け。

シリアルプリンタ・ラインプリンタ・ページプリンタ・フィルムプリンタ。

I-3-6. 様々なインタフェースの特徴

インタフェースの基本構成と役割、特徴、発展の歴史について解説する。USB、IEEE1394、eSATAなどホットプラグのインタフェースや、SCSI、IDE、PCI、シリアルといったレガシーインタフェースなど、代表的なインタフェースを個別に取り上げる。

【学習の要点】

* インタフェースとは、2つのものの間に立って、対話・情報交換などのやり取りを仲介するものである。

* ハードウェアインタフェースとは、複数個の装置と装置を接続して、通信する際の規約のことである。

* ユーザインタフェースとは、OSとユーザ間での情報表示と入力の方式を定めたものである。

図I-3-6. インタフェースの特徴

 

【解説】

1) インタフェースとは何か

インタフェースとは、2つのものの間に立って、対話・情報交換などのやり取りを仲介するもの。または、その規格のこと。以下の3つに分類することができる。

* ハードウェアインタフェース

複数個の装置と装置を接続して、通信する際の規約のこと。コネクタの形状などを定めている。

* ソフトウェアインタフェース

プログラム間で通信を行い、データの送受信を行う手順や形式を定めたもの。

* ユーザインタフェース

OSがユーザに対して情報を表示する方式や、ユーザの情報入力方式を定めたもの。

2) ホットプラグのインタフェース

ホットプラグとは、コンピュータの電源を投入したまま、装置の装着を可能にするものである。

* USB

周辺機器とパソコンを接続するデータ伝送路の規格。

* IEEE1394

コンピュータと周辺機器を接続する、次世代の高速なSCSI規格。

* ExpressCard

規格策定団体にて策定されたパソコン用カード型インタフェース、および拡張カード。

* eSATA

パソコンに外付けHDDなどを接続するための、シリアルATAインタフェースの一種。

3) その他のインタフェース

* SCSI

コンピュータと周辺機器間のデータの送受信を行うインタフェースであり、各機器が対等の動作をすることを基本として設計されている規格である。

* IDE

パソコンにハードディスクを接続するための規格。

* PCI

パソコン内部の個々の装置間を結ぶデータ伝送路の規格。

* AGP

ビデオカードとメインメモリ間の専用データ伝送路の規格。

* シリアル

本体と周辺機器との間で、1本の信号線を使って1ビットずつデータを転送する方式。

* シリアルATA

パソコンにHDDや光学ドライブを接続する為の規格。

* PS/2

キーボードとマウスを接続するためのコネクタの規格。

* RS-232C

標準化されたシリアル通信の規格。

I-3-7. コンピュータシステムの評価指標

コンピュータハードウェアの評価指標として、接続性(プラグアンドプレイやデバイスドライバ)、信頼性(故障率、MTTRとMTBF)、効率性(パフォーマンスとスループット、性能評価)、移植性(インタフェースの標準化、等)があることを説明する。

【学習の要点】

* システムが優れていると評価するための指標として、接続性・信頼性・効率性・移植性などがある。

* プラグアンドプレイに対応していることで、接続性は高いと思われる。

* 故障率が低く、MTTRが小さくてMTBFが大きいコンピュータは、信頼性も高い。

図I-3-7. コンピュータシステムの評価指標

 

【解説】

1) 接続性

コンピュータのハードウェア評価の指標のひとつとして、接続性がある。接続性を高めるためには、プラグアンドプレイに対応したハードウェアが用意されていることや、デバイスドライバが入手しやすくなっていることなどが重要である。

* プラグアンドプレイ

「繋いだら、特別なことをしなくても実行できる」という意味で、コンピュータに周辺機器等を接続したことで、ハードウェアと全てのプログラムが協調して、機器の認識とドライバの設定などを自動的に行う仕組みのことである。

以下の規格は、プラグアンドプレイに対応している。

- PCカード、CardBus、ExpressCard、PCI、AGP、PCI Express、USB、IEEE1394、eSATA

* デバイスドライバ

デバイスドライバを簡単に導入できるかどうかは、接続性を左右する要因のひとつである。インストールを行ったLinuxディストリビューションに最初から組み込まれていれば、そのデバイスを即座に使用できる可能性は高い。最新のハードウェアの場合は、インターネットよりソースコードを入手してコンパイルを行うことでデバイスドライバを導入しなければならない場合もある。

2) 信頼性

ハードウェアを評価するための2つ目の指標として、信頼性が挙げられる。故障率が低く、MTTR(平均復旧時間)が小さくてMTBF(平均故障間隔)が大きいコンピュータは、信頼性においても高い評価を得られる。

* 故障率

故障率とは、単位時間内での故障が発生する確率(頻度)を示したものである。例えば、あるハードウェアが1年の間に3回故障したとすると、故障率は0.25(件/月)となる。

* MTTR(平均復旧時間)

故障したコンピュータの復旧にかかる時間の平均。修理時間の合計÷故障回数で計算する。

* MTBF(平均故障間隔)

コンピュータが故障するまでの時間の平均値。稼動時間の合計をその期間に起きてしまった故障回数で割って計算する。

3) 効率性

3つ目の評価指標としては、効率性が挙げられる。

* パフォーマンスとスループット

一定時間内に処理できるデータ量のこと。データ処理におけるスループット・ネットワークにおけるスループットのそれぞれにおいて、高い評価を得ることが望ましい。

* 性能評価

測定法には様々な方法がある。専用の測定機器を使用することも1つの選択肢となる。

4) 移植性

近年では、周辺機器や拡張カードを接続するインタフェースの世代交代により、インタフェースは標準化されていると考えてよい。

I-3-8. コンピュータソフトウェアの構成要素

基本ソフトウェア(OS)、ミドルウェア、アプリケーションといった個別のソフトウェアについて、その機能と役割、構成、発展の歴史、OSSの実装状況について解説する。またライセンス形態による分類についても触れる

【学習の要点】

* 基本ソフトウェアとは、もっとも基本的な機能を提供するプログラムである。

* ミドルウェアとは、OSとアプリケーションプログラムの中間的な処理を行うプログラムである。

* 応用ソフトウェアとは、ある特定の目的のために作成されたプログラムである。

図I-3-8. コンピュータソフトウェア

 

【解説】

1) 基本ソフトウェア

ソフトウェアとは、実行させる命令やその手順、および情報の入力元と結果の出力先を、コンピュータに理解できる形式で記述したものである。ソフトウェアには、ワープロソフトや表計算ソフトなどのアプリケーションソフトと、アプリケーションソフトウェアを動作させるためにハードウェアとのインタフェースを抽象化した基本ソフトウェアがある。基本ソフトウェアの構成要素を以下に示す。

* ファームウェア

ハードウェアを制御するための基本的な機能を提供するソフトウェア。個々の機器に組み込まれているため、変更されることは少ない。

* Basic Input/Output System(BIOS)

コンピュータに接続された様々な周辺機器を制御するプログラム。いろいろな機器に対する基本的な入出力手段をOSやアプリケーションソフトに対して提供する。

* オペレーティングシステム

入出力機能やディスク管理、さらにはメモリの管理など、多くのアプリケーションプログラムから共通で利用されるもっとも基本的な機能を提供し、コンピュータシステム全体を管理している。

* デバイスドライバ

OSが周辺機器を制御するための橋渡し的な機能を提供するプログラム。

2) ミドルウェア

ミドルウェアとは、一般的にソフトウェアと呼ばれるプログラム群の中の、OSとアプリケーションプログラムの間の中間的な処理・動作を行うソフトウェアのことである。

* ライブラリ

ライブラリは、汎用性の高いプログラムを集めて、誰もが簡単に利用できるようにしたプログラムの集合体である。ライブラリ自体はプログラムとして動作するものではなく、あくまでも、他のプログラムに機能を提供するものである。

3) 応用ソフトウェア

ある特定の目的のために作成されたソフトウェアを応用ソフトウェアという。アプリケーションソフトウェアともいう。

* アプリケーションソフトウェア

会計、描画、ワープロ、表計算など、特定の目的のために作成されたもの。

4) ライセンス形態による分類

近年のソフトウェアは、大きくオープンソースソフトウェアと呼ばれるものとプロプライエタリソフトウェアと呼ばれるものに大きく分類される。それぞれのライセンスに関しては、以下の通り。

* オープンソース

ソフトウェアの著作者の権利を守りながら、ソースコードの公開・改変・再配布を可能とするライセンス。

* プロプライエタリ

WindowsやMacOSはプロプライエタリ・ソフトである。知的所有権はそれぞれのベンダが所有している。

I-3-9. OSの基本的な構成と役割

OSの基本構成と役割、特徴、発展の歴史、OSSの実装状況について解説する。OSのしくみについて概説し、ファイルやネットワーク、入出力インタフェースといった資源管理について説明する。

【学習の要点】

* OSは基本ソフトウェアである。APIの提供やプロセス管理・メモリ管理・入出力管理・デバイス管理などの機能を提供している。

* OSは、アプリケーションプログラムに対してシステムコールのインタフェースを提供し、インタフェースを通じてシステムサービスを実行している。

* OSは、プロセスごとに優先度を与え、それによって配分される時間を決めている。

* OSは、メモリ管理を行っており、利用可能な部分・割り当てと解放・主記憶と二次記憶との間でのページングなどを制御する。

* OSは、接続されているハードウェアに対応したデバイスドライバのロード・有効化・入出力の抽象化などの機能を提供する。

図I-3-9. OSの基本的な構成

 

【解説】

1) OSの仕組み

OSは基本ソフトウェアである。代表的なサービスとしては、API・プロセス管理・メモリ管理・ハードウェア管理などがある。

* OSの発展の歴史

1950年代には、基本ソフトウェアとしてまとまったものはなく、基本ソフトウェアとして今日提供されている機能の一部分のみが利用されていた。1960年代になってから「ジョブ管理」「マルチプログラミング」といった機能が組み込まれ、1964年にはタイムシェアリングシステムが本格的に実用化された。1970年代になるとMS-DOSがリリースされ、1990年代になってGNUプロジェクトがUNIX向けのツール群を開発し、これらをLinuxカーネルと組み合わせた。

* API(アプリケーションプログラミングインタフェース)

OSの主な目的は、アプリケーションプログラムを動作させることにある。このため、OSはアプリケーションプログラムに対してAPIを提供し、APIを介して呼び出されるシステムコールを実行する。

* プロセス管理

複数のプロセス実行を管理する機能である。CPUが1個しかないコンピュータであっても、この機能により、複数個のプロセスをあたかも同時に実行しているように見せることができる。

* メモリ管理

メモリ管理は、補助記憶装置などの管理、メモリ内の利用可能な領域の検索および割り当てと解放などである。

* ハードウェア管理

ハードウェアの管理もOSの機能のひとつである。この機能により接続されているハードウェアが認識され、デバイスドライバのロード・有効化などが行われる。

2) OSの管理対象

OSは基本ソフトウェアとして、コンピュータの以下のリソースの管理を行う。

* ファイルシステム

記憶装置に記録されているデータを管理する。ジャーナル機能を持ったファイルシステムもあり、処理が完了していないジャーナルなどが残っていた場合は、修復処理を行う。

* ネットワーク

コンピュータに内蔵されているネットワークカードに、IPアドレスなどを割り当てる。

* セキュリティ

コンピュータ上で実行されているプログラム宛に送られてきたリクエスト(=パケット)を、実際に受け付けてよいか無視すべきかを判断し、必要な処理を行う。

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

出力装置の仕様を判断し、内蔵されているグラフィックカードのためのドライバを使用して、GUI環境を表示させる。

3) オープンソースとのかかわり

Linuxは、オープンソースソフトウェアによるOS実装のうち、もっとも著名なもののひとつである。

I-3-10. ミドルウェアの種類と役割、その特徴

Webサーバ、アプリケーションサーバ、データベース管理システムといったミドルウェアの基本構成と役割、特徴、OSSの実装状況について解説する。また、それぞれに関して代表的なOSSを紹介する。

【学習の要点】

* ミドルウェアとは、OSのレベルよりもアプリケーションプログラムのレベルに近い機能を提供するソフトウェア。

* 特定の分野でしか使われないが、その分野では必ず使用される機能は、ミドルウェアの形で提供されている。

* 具体的な例として、Web サーバの通信に使われるhttpサーバのほか、業務ロジックを実行するアプリケーションサーバや、データの保存・検索を行うデータベース管理システムなどがある。

図I-3-10. ミドルウェアの種類

【解説】

1) ミドルウェアの役割

様々なアプリケーションに対して特定の機能を提供するソフトウェアをミドルウェアという。OSよりは上のレイヤに位置付けられ、一般にはそれ単独で利用されることはない。Webサーバ、アプリケーションサーバ、データベース管理サーバなどは典型的なミドルウェアである。

* Webサーバ

Webサーバは、クライアントコンピュータ上のウェブブラウザから送られたリクエストに対し、HTMLや画像などWebページを構成するコンテンツを送信する。

- Apache

Apacheはオープンソースとして公開され、世界中のボランティアのプログラマたちの手によって長年に渡って開発が続けられている。世界におけるWebサーバの60%以上が、Apache Web Serverもしくは、その派生製品である。

* アプリケーションサーバ

ユーザからのリクエストを受け付けて、その内容をデータベース管理サーバに橋渡しする機能を提供するプログラム。以下に代表的なアプリケーションサーバを紹介する。

- JBoss

プログラミング言語Javaにより開発されたOSSの総称。40以上の様々なプロジェクトがあり、Webサイトより自由にダウンロードして使うことが可能である。

- Tomcat

OSSとして公開されているアプリケーションサーバ。JavaサーブレットやJSPを処理することが可能である。単独でWebサーバとして利用することも可能だが、Apache Web Serverのプラグインとして動作させることも可能である。実際にはこの方が実績も多い。

* データベース管理サーバ

共有データとしてのデータベースを管理し、このデータベースに対するアクセス要求を管理、リクエストされた処理を行うソフトウェア。データのフォーマットや利用手順を標準化し、この利用手順を守ることで、いかなるアプリケーションプログラムからもアクセスが可能となる。

- MySQL

オープンソースとして公開されているリレーショナルデータベース管理システム。マルチユーザ・マルチスレッドで動作し、高速性と堅牢性に定評がある。世界的にも導入実績は多い。

- PostgreSQL

オープンソースとして公開されているオブジェクトリレーショナルデータベース管理システムの1つ。主にLinuxとApache Web Serverを連携させて使用されることが多い。近年では企業のOSS活用の流れを受けて、商用システムに代わり採用される事例が増えている。トランザクションやサブクエリ、トリガなど主要な機能をサポートしている。

- Firebird

Firebirdは、ボーランド株式会社のInterBase6.0ソースコードを流用したリレーショナルデータベースである。オープンソースとして公開されている。20年以上使用されてきており、大変成熟して安定している製品である。