"オペレーティングシステムのシステムコールを発行してコマンドに対応する処理を行うコンピュータが実行するコマンド制御方法であって、コマンドが前記コンピュータに入力されると、前記コマンドより前に入力された他のコマンドに基づいて発行された、応答待ち中の第1のシステムコールが存在するか判定し、前記第1のシステムコールが存在する場合、前記第1のシステムコールの応答結果を用いて、前記コマンドに対応する処理を行い、前記第1のシステムコールが存在しない場合、第2のシステムコールを発行し、前記第2のシステムコールの応答結果を用いて、前記コマンドに対応する処理を行う、コマンド制御方法。応答待ち中であった前記第1のシステムコールの応答結果が得られるとバッファに格納し、前記バッファに格納された応答結果を、前記コマンドおよび前記他のコマンドに対応するプロセスに提供する、請求の範囲第1項記載のコマンド制御方法。前記第1のシステムコールが応答待ち中である間に入力された、前記コマンドを含む1またはそれ以上のコマンドの数を、メモリ上に生成したカウンタを用いて管理し、前記カウンタを参照して、前記バッファに格納された応答結果を前記1またはそれ以上のコマンドに対応するプロセスに提供することを制御する、請求の範囲第2項記載のコマンド制御方法。前記バッファに格納された応答結果を前記1またはそれ以上のコマンドおよび前記他のコマンドに対応するプロセスに提供した後、前記バッファを削除する、請求の範囲第3項記載のコマンド制御方法。前記第1のシステムコールを発行するとき、前記バッファをメモリ上に生成し、前記第1のシステムコールの応答結果を前記バッファに格納するとき、前記バッファをメモリ上で識別するための識別情報を書き換える、請求の範囲第2項乃至第4項の何れか一項に記載のコマンド制御方法。前記コマンドおよび前記他のコマンドは、オペレーティングシステムが管理するシステム統計情報を取得するためのコマンドである、請求の範囲第1項乃至第5項の何れか一項に記載のコマンド制御方法。オペレーティングシステムのシステムコールを発行してコマンドに対応する処理を行うコンピュータに実行させるコマンド制御プログラムであって、前記コンピュータに、コマンドが前記コンピュータに入力されると、前記コマンドより前に入力された他のコマンドに基づいて発行された、応答待ち中の第1のシステムコールが存在するか判定し、前記第1のシステムコールが存在する場合、前記第1のシステムコールの応答結果を、前記コマンドに対応するプロセスに提供し、前記第1のシステムコールが存在しない場合、第2のシステムコールを発行し、前記第2のシステムコールの応答結果を、前記コマンドに対応するプロセスに提供する、処理を実行させるコマンド制御プログラム。ところで、システムコールは、権限レベルの切り替えを伴うため、処理の負荷が比較的大きい。そのため、高い権限レベルの機能を利用するコマンド例えば、システム統計情報を取得するコマンドなどがコンピュータに複数入力され、コマンド毎にシステムコールが発行されると、コンピュータの負荷の増大が問題となる。例えば、サーバコンピュータなどの複数のユーザが利用するコンピュータには、複数のユーザから並列にコマンドが入力されることがある。また、システム統計情報を取得するコマンドは、異常の有無の監視のために、平常時でも継続的に入力される可能性がある。また、異常発生時には、異常原因を分析するために、平常時よりも多数のコマンドが入力されることが想定される。このように、多数のコマンドがコンピュータに入力される場合があり、コマンド処理の負荷が応答速度などの性能を悪化させる原因となる場合がある。本発明はこのような点に鑑みてなされたものであり、コンピュータのコマンド処理の負荷を軽減することができるコマンド制御方法およびコマンド制御プログラムを提供することを目的とする。オペレーティングシステムのシステムコールを発行してコマンドに対応する処理を行うコンピュータが実行するコマンド制御方法が提供される。コマンド制御方法では、コマンドがコンピュータに入力されると、コマンドより前に入力された他のコマンドに基づいて発行された、応答待ち中の第1のシステムコールが存在するか判定する。第1のシステムコールが存在する場合、第1のシステムコールの応答結果を用いて、コマンドに対応する処理を行う。第1のシステムコールが存在しない場合、第2のシステムコールを発行し、第2のシステムコールの応答結果を用いて、コマンドに対応する処理を行う。また、オペレーティングシステムのシステムコールを発行してコマンドに対応する処理を行うコンピュータに実行させるコマンド制御プログラムが提供される。コマンド制御プログラムは、以下の処理をコンピュータに実行させる。コマンドがコンピュータに入力されると、コマンドより前に入力された他のコマンドに基づいて発行された、応答待ち中の第1のシステムコールが存在するか判定する。第1のシステムコールが存在する場合、第1のシステムコールの応答結果を、コマンドに対応するプロセスに提供する。第1のシステムコールが存在しない場合、第2のシステムコールを発行し、第2のシステムコールの応答結果を、コマンドに対応するプロセスに提供する。上記コマンド制御方法およびコマンド制御プログラムによれば、コンピュータのコマンド処理の負荷が軽減される。本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。以下、本実施の形態を図面を参照して説明する。[第1の実施の形態]図1は、コマンド制御方法の例を示す図である。コンピュータ10は、複数のコマンドを受け付け、OSのシステムコールを発行してコマンドに対応する処理を行う。コマンドとしては、例えば、ハードウェアの利用状況やプロセスの実行状況を示すシステム統計情報を取得するコマンドが挙げられる。システム統計情報は、例えば、カーネル空間で管理される。コマンドは、ユーザ操作により入力されてもよいし、コンピュータ10または他のコンピュータ上で実行されるプロセスにより入力されてもよい。複数のコマンドは、同種のコマンドでもよいし、カーネル空間で管理される共通の情報を処理対象とする異なる種類のコマンドであってもよい。コンピュータ10は、コマンドの入力に応じてシステムコールの発行を制御するコマンド制御部11を有する。コマンド制御部11は、プログラムのモジュール例えば、ライブラリプログラムとして実装してもよい。コマンド制御部11は、コマンドがコンピュータ10に入力されると、当該コマンドより前にコンピュータ10に入力された他のコマンドに基づいて発行された、応答待ち中のシステムコールが存在するか判定する。応答待ち中のシステムコールが存在する場合、コマンド制御部11は、新たなシステムコールを発行せず、既存のシステムコールの応答を待つ。既存のシステムコールの応答結果が得られると、当該応答結果を用いて、入力されたコマンドに対応する処理が行われるようにする例えば、コマンドに対応するプロセスに応答結果を渡す。一方、応答待ち中のシステムコールが存在しない場合、コマンド制御部11は、新たなシステムコールを発行する。新たに発行したシステムコールの応答結果が得られると、当該応答結果を用いて、入力されたコマンドに対応する処理が行われるようにする。例えば、コマンド制御部11は、コマンド12aが入力されたときステップS1、応答待ち中のシステムコールが存在しなければ、システムコール1を発行するステップS2。コマンド12aの後にコマンド12bが入力されたときステップS3、システムコール1が応答待ち中であれば、新たなシステムコールを発行しない。その後、システムコール1の応答結果を用いて、コマンド12a,12bの処理が行われるようにする。コマンド12bの後にコマンド12cが入力されたときステップS4、応答待ち中のシステムコールが存在しなければシステムコール1の応答結果が得られた後であれば、システムコール2を発行するステップS5。その後、システムコール2の応答結果を用いて、コマンド12cの処理が行われるようにする。なお、コマンド制御部11は、システムコールの応答結果が得られると、メモリ上のバッファに格納し、バッファに格納された応答結果を、1またはそれ以上のコマンドに対応するプロセスに分配するようにしてもよい。また、システムコールが応答待ち中である間に入力されたコマンドの数を、メモリ上に生成したカウンタを用いてカウントしておき、カウンタを参照してバッファに格納された応答結果を分配してもよい。バッファは、システムコールを発行するときにメモリ上に生成してもよく、応答結果の分配が終わった後にメモリから削除してもよい。コマンド制御部11は、メモリ上にバッファが存在すか確認することで、応答待ち中のシステムコールが存在するか判定してもよい。第1の実施の形態のコンピュータ10によれば、コマンドがコンピュータ10に入力されると、当該コマンドより前に入力された他のコマンドに基づいて発行された、応答待ち中の第1のシステムコールが存在するか判定される。第1のシステムコールが存在する場合、第1のシステムコールの応答結果を用いて、コマンドに対応する処理が行われる。第1のシステムコールが存在しない場合、第2のシステムコールが発行され、第2のシステムコールの応答結果を用いて、入力されたコマンドに対応する処理が行われる。これにより、コマンド毎にシステムコールを発行する場合と比べて、複数のコマンドが入力されたときのシステムコールの発行回数を削減でき、コンピュータ10のコマンド処理の負荷を軽減できる。また、応答待ち中のシステムコールが存在しなければ新たなシステムコールを発行するため、古い応答結果に基づいてコマンド処理が行われてしまうことを抑制でき、カーネル空間で管理される情報とコマンド処理との間の整合性を図れる。また、カーネル空間で管理される情報のキャッシュをユーザ空間で常に保持する方法と比べて、キャッシュの整合性を維持するための負荷を削減できる。第1の実施の形態のコマンド制御方法は、前述の通り、システム統計情報を取得するコマンドの処理に適用することができる。システム統計情報は、カーネルによって高い頻度で更新され得る。システム統計情報を取得するコマンドは、異常の有無の監視のために、継続的にコンピュータ10に入力される可能性がある。また、異常発生時には、異常原因を分析するために、多数のコマンドが入力される可能性がある。また、コンピュータ10がサーバコンピュータなどの複数のユーザが利用するものである場合、複数のユーザまたは複数の他のコンピュータから並列にコマンドが入力される可能性もある。よって、上記のコマンド制御方法によってコマンド処理の負荷を軽減することは、コマンド処理の応答速度が向上して異常分析などを迅速に行えるようになる点で、特に有用である。以下に説明する第2の実施の形態では、システム統計情報を取得するコマンドの処理を行う情報処理装置の例を挙げる。ただし、第1の実施の形態で説明したコマンド制御方法は、システム統計情報を取得するコマンド以外のコマンドにも適用できる。[第2の実施の形態]図2は、情報処理装置のハードウェア例を示すブロック図である。第2の実施の形態の情報処理装置100は、CPUCentralProcessingUnit101、RAMRandomAccessMemory102、HDDHardDiskDrive103、画像信号処理部104、入力信号処理部105、ディスクドライブ106および通信部107を有する。上記ユニットは、情報処理装置100内でバスに接続されている。CPU101は、情報処理装置100における情報処理を制御する演算装置である。CPU101は、HDD103に記憶されたプログラムやデータの少なくとも一部を読み出し、RAM102に展開してプログラムを実行する。なお、情報処理装置100は、複数の演算装置を備え、情報処理を分散して実行してもよい。RAM102は、CPU101が扱うプログラムやデータを一時的に記憶する揮発性メモリである。なお、情報処理装置100は、RAM以外の種類のメモリを備えていてもよく、複数のメモリを備えていてもよい。HDD103は、OSプログラムやアプリケーションプログラムなどのプログラム、および、情報処理に用いられるデータを記憶する不揮発性の記憶装置である。HDD103は、CPU101の命令に従って、内蔵の磁気ディスクに対する読み書きを行う。なお、情報処理装置100は、HDD以外の種類の不揮発性の記憶装置例えば、SSDSolidStateDriveを備えていてもよく、複数の記憶装置を備えていてもよい。画像信号処理部104は、CPU101の命令に従って、情報処理装置100に接続されたディスプレイ21に画像を出力する。ディスプレイ21として、例えば、CRTCathodeRayTubeディスプレイや液晶ディスプレイを用いることができる。入力信号処理部105は、情報処理装置100に接続された入力デバイス22から入力信号を取得し、CPU101に通知する。入力デバイス22として、例えば、マウスやタッチパネルなどのポインティングデバイスや、キーボードを用いることができる。ディスクドライブ106は、記録媒体23に記録されたプログラムやデータを読み取る駆動装置である。記録媒体23として、例えば、フレキシブルディスクFD:FlexibleDiskやHDDなどの磁気ディスク、CDCompactDiscやDVDDigitalVersatileDiscなどの光ディスク、光磁気ディスクMO:MagnetoOpticaldiskを使用できる。ディスクドライブ106は、例えば、CPU101の命令に従って、記録媒体23から読み取ったプログラムやデータをRAM102またはHDD103に格納する。通信部107は、ネットワーク24に接続して通信を行う通信インタフェースである。ネットワーク24への接続方法は、有線でも無線でもよい。すなわち、通信部107は、有線通信インタフェースでも無線通信インタフェースでもよい。図3は、情報処理装置のソフトウェア例を示すブロック図である。情報処理装置100は、kstat記憶部111、procfs記憶部112、kstat処理部113、procfs処理部114、kstat参照部121、procfs参照部122、共有記憶部123、sarコマンド部131、vmstatコマンド部132、iostatコマンド部133、mpstatコマンド部134、psコマンド部135、prstatコマンド部136およびpfilesコマンド部137を有する。kstat記憶部111、procfs記憶部112および共有記憶部123は、RAM102上に確保されたメモリ領域として実現できる。他のユニットは、CPU101が実行するプログラムのモジュールとして実現できる。kstat記憶部111、procfs記憶部112、kstat処理部113およびprocfs処理部114は、RAM102のカーネル空間に配置される。他のユニットは、RAM102のユーザ空間に配置される。ユーザ空間に配置されるモジュールからカーネル空間に配置されるモジュールを呼び出すときには、システムコールが発行される。kstat記憶部111は、システム統計情報の一種であるkstatKernelStatistics:カーネル統計情報を記憶する。kstatには、CPU101の負荷、RAM102のメモリ領域の使用量、HDD103へのI/OInputandOutputアクセスの頻度、通信部107の帯域使用率など、ハードウェアの使用状況を示す情報が含まれる。procfs記憶部112は、システム統計情報の一種であるprocfsProcessFilesystem:プロセスファイルシステム情報を記憶する。procfsには、情報処理装置100におけるプロセスの実行状況を示す情報が含まれる。なお、第2の実施の形態では、システム統計情報の例として、kstatとprocfsを挙げたが、カーネルは他の種類のシステム統計情報を保持してもよい。kstat処理部113は、カーネル権限で、kstat記憶部111に記憶されたkstatの更新および読み出しを行う。kstat処理部113は、ハードウェアの使用状況を監視し、定期的例えば、数ミリ秒毎にkstatを更新する。kstatを更新する際には、kstatへのアクセスを一時的に排除するため排他ロックを設定する。また、kstat処理部113は、kstat参照部121からシステムコールを受け付けると、kstat記憶部111からkstatを読み出し、kstat参照部121が指定したユーザ空間のメモリ領域にkstatを書き込む。procfs処理部114は、カーネル権限で、procfs記憶部112に記憶されたprocfsの更新および読み出しを行う。procfs処理部114は、情報処理装置100のプロセスの実行状況を監視し、実行状況が変化する毎に不定期にprocfsを更新する。procfsを更新する際には、procfsへのアクセスを一時的に排除するため排他ロックを設定する。また、procfs処理部114は、procfs参照部122からシステムコールを受け付けると、procfs記憶部112からprocfsの全部または所定ブロック数分を読み出し、procfs参照部122が指定したユーザ空間のメモリ領域にprocfsを書き込む。kstat参照部121は、kstatを参照するシステムコールの発行を制御する。kstat参照部121は、例えば、sarコマンド部131、vmstatコマンド部132、iostatコマンド部133およびmpstatコマンド部134から呼び出されるライブラリプログラムとして実現できる。kstat参照部121は、kstatを格納するメモリ領域をユーザ空間に確保し、当該メモリ領域を指定してシステムコールを発行する。そして、取得したkstatを1またはそれ以上のコマンドのプロセスに分配する。なお、kstat参照部121の動作の詳細は後述する。procfs参照部122は、procfsを参照するシステムコールの発行を制御する。procfs参照部122は、例えば、psコマンド部135、prstatコマンド部136およびpfilesコマンド部137から呼び出されるライブラリプログラムとして実現できる。procfs参照部122は、procfsを格納するメモリ領域をユーザ空間に確保し、当該メモリ領域を指定してシステムコールを発行する。そして、取得したprocfsを1またはそれ以上のコマンドのプロセスに分配する。共有記憶部123は、kstat参照部121およびprocfs参照部122が使用する共有メモリ領域である。共有記憶部123内には、システムコールの応答結果であるシステム統計情報kstatやprocfsを、コマンドプロセスに分配する前に一時的に格納する共有バッファが生成される。また、システム統計情報の分配制御に用いられる参照カウンタが生成される。共有バッファや参照カウンタの詳細は後述する。なお、共有記憶部123は、複数のプロセスが共通に使用できる記憶手段例えば、メモリファイルシステムであればよく、共有メモリ領域でなくてもよい。sarコマンド部131は、sarコマンドが入力されたとき、当該コマンドに対応する処理を行う。sarコマンドは、CPU使用率などの負荷情報を取得するためのコマンドである。sarコマンド部131は、kstat参照部121を介してkstatを取得し、情報処理装置100の負荷に関連するデータをkstatから抽出し、フォーマット表示形式を整えてコマンドの入力元に出力する。vmstatコマンド部132は、vmstatコマンドが入力されたとき、当該コマンドに対応する処理を行う。vmstatコマンドは、ページングやスワップなどの仮想メモリの情報を取得するためのコマンドである。vmstatコマンド部132は、kstat参照部121を介してkstatを取得し、仮想メモリに関連するデータをkstatから抽出し、フォーマットを整えてコマンドの入力元に出力する。iostatコマンド部133は、iostatコマンドが入力されたとき、当該コマンドに対応する処理を行う。iostatコマンドは、ディスクI/Oの情報を取得するためのコマンドである。iostatコマンド部133は、kstat参照部121を介してkstatを取得し、ディスクI/Oに関連するデータをkstatから抽出し、フォーマットを整えてコマンドの入力元に出力する。mpstatコマンド部134は、mpstatコマンドが入力されたとき、当該コマンドに対応する処理を行う。mpstatコマンドは、CPUの割り込みの発生状況や待ち時間など、CPUの詳細情報を取得するためのコマンドである。mpstatコマンド部134は、kstat参照部121を介してkstatを取得し、CPUに関連するデータをkstatから抽出し、フォーマットを整えてコマンドの入力元に出力する。psコマンド部135は、psコマンドが入力されたとき、当該コマンドに対応する処理を行う。psコマンドは、情報処理装置100で実行中のプロセスの一覧を取得するためのコマンドである。psコマンド部135は、procfs参照部122を介してprocfsを取得し、プロセスの一覧を生成するためのデータをprocfsから抽出し、フォーマットを整えてコマンドの入力元に出力する。prstatコマンド部136は、prstatコマンドが入力されたとき、当該コマンドに対応する処理を行う。prstatコマンドは、プロセス毎の実行時間などの稼動状況を取得するためのコマンドである。prstatコマンド部136は、procfs参照部122を介してprocfsを取得し、プロセスの稼動状況に関連するデータをprocfsから抽出し、フォーマットを整えてコマンドの入力元に出力する。pfilesコマンド部137は、pfilesコマンドが入力されたとき、当該コマンドに対応する処理を行う。pfilesコマンドは、プロセスが参照しているファイルの一覧を取得するためのコマンドである。pfilesコマンド部137は、procfs参照部122を介してprocfsを取得し、ファイルの参照状況に関連するデータをprocfsから抽出し、フォーマットを整えてコマンドの入力元に出力する。このように、情報処理装置100には、システム統計情報を取得するコマンドとして、複数の種類のコマンドが用意されている。コマンドの種類によって、出力されるデータの内容やフォーマットが異なる。sarコマンド、vmstatコマンド、iostatコマンドおよびmpstatコマンドでは、出力されるデータがkstatに基づいて生成される。psコマンド、prstatコマンドおよびpfilesコマンドでは、出力されるデータがprocfsに基づいて生成される。コマンド処理を行う各ユニットが、システム統計情報を加工して、コマンドの入力元に応答する。なお、上記説明では7種類のコマンドの例を挙げたが、他の種類のコマンドが用意されていてもよい。コマンドは、ユーザが入力デバイス22から情報処理装置100に入力してもよい。その場合、情報処理装置100は、入力されたコマンドの処理結果を、ディスプレイ21に表示してもよい。また、コマンドは、他の情報処理装置がネットワーク24を介して情報処理装置100に入力してもよい。その場合、情報処理装置100は、入力されたコマンドの処理結果を、ネットワーク24を介して当該他の情報処理装置に送信してもよい。コマンドが情報処理装置100に入力される毎に、入力されたコマンドに対応するプロセスがユーザ空間で起動され、コマンドの種類に対応するユニットsarコマンド部131などの処理が当該プロセスにおいて開始される。ユーザ空間のプロセスは、システム統計情報を取得するため、kstat参照部121またはprocfs参照部122を呼び出す例えば、ライブラリ関数を呼び出す。呼び出されたkstat参照部121またはprocfs参照部122の処理は、呼び出し元のプロセスの中で実行される。図4は、情報処理装置上でのコマンドプロセスの実行例を示す図である。図4では、情報処理装置100に、sarコマンド、vmstatコマンド、mpstatコマンドおよびsarコマンドの4つが順に入力された場合を示している。sarコマンドが入力されると、sarコマンド部131で定義された処理を実行するコマンドプロセス141が起動する。vmstatコマンドが入力されると、vmstatコマンド部132で定義された処理を実行するコマンドプロセス142が起動する。mpstatコマンドが入力されると、mpstatコマンド部134で定義された処理を実行するコマンドプロセス143が起動する。sarコマンドが入力されると、sarコマンド部131で定義された処理を実行するコマンドプロセス144が起動する。コマンドプロセス141~144は、kstatを取得するためにkstat参照部121を呼び出し、kstat参照部121で定義された処理を各自のコマンドプロセスの中で実行する。図4は、kstat参照部121をライブラリプログラムとして実装した場合を示している。システムコールを発行する処理は、kstat参照部121の中で定義されている。コマンドの入力タイミングに応じて、コマンドプロセス141~144の一部または全部が、システムコールを発行する。メモリ領域には、コマンドプロセス141~144に対応する個別バッファ161~164が生成される。個別バッファ161~164は、コマンドの種類に応じてkstatを加工するために用いられる。また、共有記憶部123には、コマンドプロセス141~144から共通に参照可能な共有バッファ151と参照カウンタ152が生成される。共有バッファ151は、システムコールを発行することでkstat処理部113から取得された、加工前のkstatを記憶する。参照カウンタ152は、取得されたkstatを1またはそれ以上のコマンドプロセスに分配する際に参照される。また、メモリ領域には、起動しているコマンドプロセスを示すプロセスリスト153が生成される。図5は、システム統計情報の参照状態を示す状態遷移図である。参照状態は、kstat参照部121およびprocfs参照部122がシステムコール単位で管理する。参照状態は、状態0~4の5つの何れか1つをとる。状態0は、システムコールを発行していない状態である。状態0では、当該システムコールに対応する共有バッファおよび参照カウンタは、共有記憶部123に生成されていない。参照状態が状態0のときに、何れかのコマンドプロセスがkstat参照部121またはprocfs参照部122の呼び出しシステム統計情報の要求を行うと、システムコールが発行され、参照状態が状態1に遷移する。状態1は、1つのコマンドプロセスがシステム統計情報を要求し、システムコールの応答を待っている状態である。状態1では、当該システムコールに対応する共有バッファおよび参照カウンタが、共有記憶部123に生成されている。状態1では、当該共有バッファは空であり、参照カウンタの値は0である。参照状態が状態1のときに、更に何れかのコマンドプロセスがシステム統計情報を要求すると、参照状態が状態1に遷移する。一方、システムコールの応答結果kstatまたはprocfsが取得されると、参照状態が状態4に遷移する。状態2は、2つ以上のコマンドプロセスがシステム統計情報を要求し、システムコールの応答を待っている状態である。状態2では、当該システムコールに対応する共有バッファは空であり、参照カウンタの値は1以上である。参照カウンタの値は、システムコールを発行したコマンドプロセス以外に、システム統計情報を待っているコマンドプロセスの数を示している。参照状態が状態2のときに、更に何れかのコマンドプロセスがシステム統計情報を要求すると、参照状態が状態2に維持される。システム統計情報が全部でN個Nは2以上の整数のコマンドプロセスから要求されるとすると、状態2の自己遷移はN-2回行われることになる。一方、システムコールの応答結果が取得されると、参照状態が状態3に遷移する。状態3は、システムコールによってシステム統計情報が取得され、2つ以上のコマンドプロセスに対してまだ分配していない状態である。状態3では、当該システムコールに対応する共有バッファは加工前のシステム統計情報を記憶しており、参照カウンタの値は1以上である。参照状態が状態3のときに、何れかのコマンドプロセスに対応する個別バッファに加工前のシステム統計情報がコピーされると、参照カウンタの値が1だけ減少する。このとき、更新後の参照カウンタの値が1以上であれば、参照状態が状態3に維持され、更新後の参照カウンタの値が0であれば、参照状態が状態4に遷移する。なお、状態3の自己遷移はN-2回行われることになる。状態4は、システムコールによってシステム統計情報が取得され、1つのコマンドプロセスに対してまだ分配していない状態である。状態4では、当該システムコールに対応する共有バッファは加工前のシステム統計情報を記憶しており、参照カウンタの値は0である。参照状態が状態4のときに、残り1つのコマンドプロセスに対応する個別バッファにシステム統計情報がコピーされると、当該共有バッファと参照カウンタが共有記憶部123から削除され、参照状態が状態4に遷移する。なお、システム統計情報を待っているコマンドプロセスの数が、システムコールの応答が得られた時点で1つである場合参照状態が状態1から状態4に遷移した場合には、共有バッファを経由せずに個別バッファにシステム統計情報を書き込んでもよい。図6は、システム統計情報の取得処理を示すフローチャートである。kstat参照部121およびprocfs参照部122が、何れかのコマンドプロセスから呼び出される毎に、図6に示す処理を実行する。以下では、kstat参照部121が呼び出される場合を想定して、図6に示す処理をステップ番号に沿って説明する。ステップS11kstat参照部121は、sarコマンド部131、vmstatコマンド部132、iostatコマンド部133またはmpstatコマンド部134に対応するコマンドプロセスから、関数ライブラリ関数などの呼び出しを受け付ける。kstat参照部121は、呼び出し元のコマンドプロセスの識別情報例えば、プロセスIDを、プロセスリスト153に記録する。ステップS12kstat参照部121は、共有バッファ151が共有記憶部123に存在するか判断する。共有バッファ151が存在する場合、応答待ち中のシステムコールがあると判断し、処理をステップS21に進める。共有バッファ151が存在しない場合、応答待ち中のシステムコールがないと判断し、処理をステップS13に進める。ステップS13kstat参照部121は、kstat用の共有バッファ151および参照カウンタ152を共有記憶部123に生成する。このとき、共有バッファ151は空であり、参照カウンタ152の値は0に初期化されている。ステップS14kstat参照部121は、システムコールの応答結果が書き込まれるメモリ領域をユーザ空間に確保し、当該メモリ領域を指定してkstat処理部113にシステムコールを発行する。そして、kstat処理部113からの応答を待つ。ステップS15kstat参照部121は、kstat処理部113からシステムコールに対する応答があると、ステップS13で生成した共有バッファ151のバッファ名を変更する。バッファ名を変更することで、共有バッファ151の存在が隠蔽され、それ以降に実行されるステップS12の処理では、kstat用の共有バッファが共有記憶部123に存在せず応答待ちのシステムコールがないものと判断される。ステップS16kstat参照部121は、参照カウンタ152の値が0であるか判断する。値が0の場合、ステップS11の呼び出し元のコマンドプロセス以外の他のコマンドプロセスが存在しないと判断し、処理をステップS17に進める。値が1以上の場合、他のコマンドプロセスが存在すると判断し、処理をステップS19に進める。ステップS17kstat参照部121は、ステップS14で確保したメモリ領域に記憶されているシステム統計情報kstatを、ステップS11の呼び出し元のコマンドプロセスに対応する個別バッファに書き込む。共有バッファ151を経由しないことで、システム統計情報のコピー回数を削減できる。ただし、システム統計情報を共有バッファ151に一度書き込むようにしてもよい。個別バッファに書き込まれたシステム統計情報は、呼び出し元のコマンドプロセスによって加工される。ステップS18kstat参照部121は、ステップS13で生成した共有バッファ151バッファ名を変更済みおよび参照カウンタ152を、共有記憶部123から削除する。そして、kstat参照部121の処理を終了する。ステップS19kstat参照部121は、ステップS14で確保したメモリ領域に記憶されているシステム統計情報を、ステップS13で生成した共有バッファ151バッファ名を変更済みに書き込む。ステップS20kstat参照部121は、プロセスリスト153を参照して、システムコールの応答を待ち合わせてスリープしているコマンドプロセスを特定する。そして、特定したコマンドプロセスに対し、プロセス間通信によって割り込みのメッセージを通知し、スリープ状態を解除する。そして、処理をステップS23に進める。図7は、システム統計情報の取得処理を示すフローチャート続きである。ステップS21kstat参照部121は、共有記憶部123に生成されている参照カウンタ152の値を1だけ増やす。ステップS22kstat参照部121は、既に発行されているシステムコールの応答を待ち合わせるため、呼び出し元のコマンドプロセスをスリープ状態にする。これにより、システムコールの応答があるまで、当該コマンドプロセスにはCPU時間が割り当てられない。その後、当該コマンドプロセスは、他のコマンドプロセスからの通知ステップS20を受けて、スリープ状態から実行状態または実行可能状態に戻る。ステップS23kstat参照部121は、共有記憶部123に生成されている共有バッファ151から、呼び出し元のコマンドプロセスに対応する個別バッファに、システム統計情報をコピーする。なお、共有バッファ151の変更後のバッファ名は、変更を行ったコマンドプロセスから他のコマンドプロセスに通知されるようにしてもよい。ステップS24kstat参照部121は、参照カウンタ152の値が0であるか判断する。値が0の場合、システム統計情報が分配されていない他のコマンドプロセスが存在しないと判断し、処理をステップS25に進める。値が1以上の場合、他のコマンドプロセスが存在すると判断し、処理をステップS26に進める。ステップS25kstat参照部121は、共有バッファ151および参照カウンタ152を共有記憶部123から削除し、kstat参照部121の処理を終了する。ステップS26kstat参照部121は、参照カウンタ152の値を1だけ減らし、呼び出し元のコマンドプロセスに関する処理を終了する。図8は、システム統計情報の取得のシーケンス例を示す図である。ここでは、図4に示したように、コマンドプロセス141~144が順に起動する場合を考える。sarコマンドが入力されると、コマンドプロセス141が、kstat参照部121を呼び出すステップS31。kstat参照部121は、共有記憶部123に共有バッファがないことを確認すると、共有バッファ151を生成してシステムコールを発行するステップS32。その後に、vmstatコマンドが入力されると、コマンドプロセス142が、kstat参照部121を呼び出すステップS33。また、mpstatコマンドが入力されると、コマンドプロセス143が、kstat参照部121を呼び出すステップS34。kstat参照部121は、共有バッファ151が存在することを確認すると、新たなシステムコールを発行せずにシステムコールの応答を待つ。kstat処理部113からシステムコールの応答があると、kstat参照部121は、共有バッファ151のバッファ名を変更し、システム統計情報kstatを共有バッファ151に格納するステップS35。その後に、sarコマンドが入力されると、コマンドプロセス144が、kstat参照部121を呼び出すステップS36。kstat参照部121は、バッファ名を変更する前の共有バッファが共有記憶部123にないことを確認すると、新たな共有バッファを生成してシステムコールを発行するステップS37。kstat参照部121は、共有バッファ151に格納されたシステム統計情報を、コマンドプロセス141~143に対応する個別バッファ161~163にコピーするステップS38~S40。一方、kstat処理部113からシステムコールの応答があると、kstat参照部121は、コマンドプロセス144に対応する個別バッファ164にシステム統計情報を書き込むステップS41,S42。なお、個別バッファ161~164は、コマンドプロセス141~144が生成するものであり、コマンドプロセス141~144がその位置メモリアドレスを知っている。図9は、メモリ領域上のデータの変化例を示す第1の図である。コマンドプロセス141は、kstat参照部121を呼び出すとき上記ステップS31、空の個別バッファ161をRAM102に生成する。コマンドプロセス141は、kstat参照部121を通してシステムコールを発行するとき上記ステップS32、空の共有バッファ151と値が0に初期化された参照カウンタ152をRAM102に生成する。図10は、メモリ領域上のデータの変化例を示す第2の図である。コマンドプロセス142は、kstat参照部121を呼び出すとき上記ステップS33、空の個別バッファ162をRAM102に生成する。また、コマンドプロセス142は、kstat参照部121を通して、参照カウンタ152の値を1にインクリメントする。コマンドプロセス143は、kstat参照部121を呼び出すとき上記ステップS34、空の個別バッファ163をRAM102に生成する。また、コマンドプロセス143は、kstat参照部121を通して、参照カウンタ152の値を2にインクリメントする。図11は、メモリ領域上のデータの変化例を示す第3の図である。コマンドプロセス141は、kstat処理部113からシステム統計情報を取得すると上記ステップS35、共有バッファ151のバッファ名を変更し、加工前のシステム統計情報を共有バッファ151に書き込む。また、コマンドプロセス141は、プロセスリスト153に登録されているコマンドプロセス142,143のスリープ状態を解除する。図12は、メモリ領域上のデータの変化例を示す第4の図である。コマンドプロセス144は、kstat参照部121を呼び出すとき上記ステップS36、空の個別バッファ164をRAM102に生成する。コマンドプロセス144は、kstat参照部121を通してシステムコールを発行するとき上記ステップS37、新たな空の共有バッファ共有バッファ151aと値が0に初期化された新たな参照カウンタ参照カウンタ152aをRAM102に生成する。図13は、メモリ領域上のデータの変化例を示す第5の図である。コマンドプロセス141は、kstat参照部121を通して、共有バッファ151のシステム統計情報を個別バッファ161にコピーし、参照カウンタ152を1にデクリメントする上記ステップS38。コマンドプロセス142は、システム統計情報を個別バッファ162にコピーし、参照カウンタ152を0にデクリメントする上記ステップS39。コマンドプロセス143は、システム統計情報を個別バッファ163にコピーし、共有バッファ151および参照カウンタ152を削除する上記ステップS40。コマンドプロセス141~143の中では、共有バッファ151から各自の個別バッファへのシステム統計情報のコピーによって、kstat参照部121の処理が終了する。その後、コマンドプロセス141は、個別バッファ161のシステム統計情報を用いて、sarコマンドに対応するデータを生成して出力する。コマンドプロセス142は、個別バッファ162のシステム統計情報を用いて、vmstatコマンドに対応するデータを生成して出力する。コマンドプロセス143は、個別バッファ163のシステム統計情報を用いて、mpstatコマンドに対応するデータを生成して出力する。なお、共有バッファ151にシステム統計情報が格納された後のコマンドプロセス141~143の処理上記ステップS38~S40の処理は、任意の順序で実行できる。図8には、コマンドプロセス141、コマンドプロセス142、コマンドプロセス143の順序で実行される例を示したが、これと異なる順序で実行されることもある。コマンドプロセス141~143の実行順序は、OSによるプロセスのスケジューリングに依存してもよい。ただし、参照カウンタ152の値を確認してから参照カウンタ152を更新するまでの間は、プロセスの切り替えが発生しないよう制御することが望ましい。第2の実施の形態の情報処理装置100によれば、コマンドプロセス毎にシステムコールを発行する場合と比べて、システムコールの発行回数を削減でき、情報処理装置100のコマンド処理の負荷を軽減できる。また、応答待ち中のシステムコールが存在しなければ新たなシステムコールを発行するため、古いシステム統計情報に基づいてコマンド処理が行われてしまうことを抑制でき、カーネル空間で管理されるシステム統計情報とコマンド処理との間の整合性を図れる。また、システム統計情報のキャッシュをユーザ空間で常に保持する方法と比べて、キャッシュの整合性を維持するための負荷を削減できる。また、コマンドの種類に応じた加工を行う前のシステム統計情報RAWデータを共有バッファ151に格納して複数のコマンドプロセスに分配するため、1回のシステムコールで取得したシステム統計情報を、種類の異なる複数のコマンドの処理に利用することができる。また、システムコールの応答があったときに共有バッファ151のバッファ名を変更するようにしたので、所定の名称の共有バッファが共有記憶部123に存在するか確認することで、応答待ち中のシステムコールが存在するか判断することができる。なお、上記のように、第2の実施の形態のコマンド制御方法は、コンピュータとしての機能を有する情報処理装置100に、コマンド制御プログラムを実行させることで実現できる。コマンド制御プログラムは、コンピュータ読み取り可能な記録媒体例えば、記録媒体23に記録しておくことができる。記録媒体として、例えば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、FDおよびHDDが含まれる。光ディスクには、CD、CD-RRecordable/RWRewritable、DVDおよびDVD-R/RWが含まれる。プログラムを流通させる場合、例えば、当該プログラムを記録した可搬記録媒体が提供される。また、プログラムを他のコンピュータの記憶装置に格納しておき、ネットワーク24経由で当該プログラムを配布することもできる。情報処理装置100は、例えば、可搬記録媒体に記録されたプログラムまたは他のコンピュータから受信したプログラムを、HDD103などの記憶装置に格納し、当該記憶装置からプログラムを読み込んで実行する。ただし、可搬記録媒体から読み込んだプログラムを直接実行してもよく、他のコンピュータからネットワーク24を介して受信したプログラムを直接実行してもよい。上記については単に本発明の原理を示すものである。更に、多数の変形や変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応する全ての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。"