OSは,ハードウエアを利用可能にする基本機能を提供するソフトだ。では,具体的にどのような機能を提供しているのだろうか。Part7では,タスク制御,プロセス間通信,仮想記憶といったOSの基本的な機能について解説する
大半のエンジニアはご存じだと思うが,「OS(Operating System)」OSはコンピュータのハードウエアを利用可能にしてくれるソフトウエアである。JISではOSのことを「プログラムの実行を制御するソフトウエアであって,資源割り振り,スケジューリング,入出力制御,データ管理などのサービスを提供するもの」と定義している。
それでは,私たちITエンジニアは,OSとどう付き合うべきだろうか。私たちはOSを通してコンピュータを利用している。したがって,OSにできることが,コンピュータにできることのすべてだと言える。私たちはOSが持つ様々な機能(サービス)の種類と使い方を知り,それらを効果的に応用したコンピュータシステムを構築し,エンドユーザーに提供していかなければならない。
Part7では,改めてOSの主要な機能を見てみよう。なお,具体例を示すときは,パソコン用OSであるWindows(Windows 95以降)を使うことにする。
限られたハードを有効活用
ソフトウエアの種類は,「OS」と「アプリケーション」に大別できる。OSがコンピュータのハードウエアを利用可能にしてくれた状態で,アプリケーションが動作する。このことから,OSのことを「基本ソフトウエア」と呼び,アプリケーションのことを「応用ソフトウエア」とも呼ぶ。アプリケーションがOSの持つ機能を応用しているというわけだ。
アプリケーションとは,特定の用途に適用(apply)させたソフトウエアという意味である。OSが汎用的な実行環境を用意し,その上で特定の用途向けのアプリケーションが動作するのだ。OSは,エンドユーザーからの要求に応じて,任意のアプリケーションをメモリにロードして実行する。
コンピュータが複数のアプリケーションを同時に実行できるのは,OSに「資源割り振り」や「スケジューリング」という機能があるからだ。OSが複数のアプリケーションにハードウエア資源(CPU,メモリ,I/O)を割り振り,実行の順序をスケジューリングするのである。
キーボードやディスプレイ,ディスク装置などの周辺装置と入出力制御(I/O制御)を操作するのも,OSの役割だ。またファイルシステムやアクセス権限など,データ管理の仕組みも提供してくれる。
同時実行はCPUの空きを利用
OSから見れば,CPUもアプリケーションに割り当てて使わせるハードウエア資源の1つに過ぎない。つまり,CPUはプログラムを解釈して実行する機能を持ったハードウエア資源なのだ。
OSがCPUに割り当てて実行させるプログラムの単位を「タスク」と呼ぶ。タスクと似た概念の言葉として「プロセス」と「スレッド」がある。タスクとプロセスは,同義語だと考えてよい。CPUから見たプログラムの実行単位であり,メモリ空間(後で説明するプロセス空間)を割り当てる単位でもある。複数のプログラムが同時に動作することを「マルチタスク」あるいは「マルチプロセス」とも呼ぶ(「マルチプログラミング」とも呼ぶ)。
スレッドは,1つのプロセスをさらに小さな単位に分けたものだ。複数のスレッドが同じメモリ空間を共有するため,高速に切り替えて実行できるという特徴がある。
1つのプロセスの中にある複数のスレッドを同時に実行することを「マルチスレッド」と呼ぶ。荒っぽく言えば,Windows上で「Word」と「Excel」を同時に実行することがマルチタスク(マルチプロセス)であり,Wordの文書ファイルを印刷中に,文書の編集を行うことがマルチスレッドである(図1)。
では,タスク,プロセス,スレッドのいずれであれ,1つのCPUを使ってなぜ複数のプログラムを同時に実行させられるのか。ポイントは,プログラムは実行される際に常にCPUを必要としているわけではない,ということだ(図2)。