複数のデバイスと、該複数のデバイス毎のデバイスドライバと、カーネルソースコードが格納されたカーネルソースコード記憶部と、前記複数のデバイス毎のデバイス起動待ち時間が格納された起動待ち時間記憶部と、区画化コード記憶部と、最適化コード記憶部とを備えたコンピュータによって前記カーネルソースコードを最適化するカーネルソースコード最適化方法であって、前記コンピュータが、前記カーネルソースコード記憶部から前記カーネルソースコードを入力し、該入力したカーネルソースコードを、デバイスに対する起動処理を行うデバイス毎の区画化コードと、デバイスドライバに対する初期化処理を行うデバイスドライバ毎の区画化コードと、他の処理を行う区画化コードとに区画化して前記区画化コード記憶部に格納する区画化分析ステップと、前記コンピュータが、前記区画化コード記憶部から各区画化コードを入力し、該入力した区画化コードの内のデバイスに対する起動処理を行う区画化コードをデバイス起動待ち時間が長い順に配置し、その後ろに、前記複数のデバイス毎に起動が完了したか否かを判定し起動が完了したと判定したデバイスに対応するデバイスドライバの初期化処理を開始させるコードを配置し、その後ろに、前記入力した区画化コードの内のデバイスドライバに対する初期化を行う区画化コードを配置した最適化コードを生成し、該生成した最適化コードを前記最適化コード記憶部に格納する再配置ステップとを含むことを特徴とするカーネルソースコード最適化方法。請求項1記載のカーネルソースコード最適化方法において、前記区画化分析ステップでは、前記カーネルソースコード記憶部から入力したカーネルソースコードを関数呼び出し単位で区画化することにより、区画化コードを生成することを特徴とするカーネルソースコード最適化方法。請求項1または2記載のカーネルソースコード最適化方法において、前記コンピュータが、前記複数のデバイスそれぞれのデバイス起動待ち時間を測定し、測定したデバイス起動待ち時間を前記起動待ち時間記憶部に格納する情報採取ステップを含むことを特徴とするカーネルソースコード最適化方法。複数のデバイスと、該複数のデバイス毎のデバイスドライバと、カーネルソースコードが格納されたカーネルソースコード記憶部と、前記複数のデバイス毎のデバイス起動待ち時間が格納された起動待ち時間記憶部と、区画化コード記憶部と、最適化コード記憶部と、前記カーネルソースコード記憶部から前記カーネルソースコードを入力し、該入力したカーネルソースコードを、デバイスに対する起動処理を行うデバイス毎の区画化コードと、デバイスドライバに対する初期化処理を行うデバイスドライバ毎の区画化コードと、他の処理を行う区画化コードとに区画化して前記区画化コード記憶部に格納する区画化分析手段と、前記区画化コード記憶部から各区画化コードを入力し、該入力した区画化コードの内のデバイスに対する起動処理を行う区画化コードをデバイス起動待ち時間が長い順に配置し、その後ろに、前記複数のデバイス毎に起動が完了したか否かを判定し、起動が完了したと判定したデバイスに対応するデバイスドライバの初期化処理を開始させるコードを配置し、その後ろに、前記入力した区画化コードの内のデバイスドライバに対する初期化を行う区画化コードを配置した最適化コードを生成し、生成した最適化コードを前記最適化コード記憶部に格納する再配置手段とを備えたことを特徴とするカーネルソースコード最適化装置。請求項4記載のカーネルソースコード最適化装置において、前記区画化分析手段が、前記カーネルソースコード記憶部から入力したカーネルソースコードを関数呼び出し単位で区画化することにより、区画化コードを生成することを特徴とするカーネルソースコード最適化装置。請求項4または5記載のカーネルソースコード最適化装置において、前記複数のデバイスそれぞれのデバイス起動待ち時間を測定し、測定したデバイス起動待ち時間を前記起動待ち時間記憶部に格納する情報採取手段を備えたことを特徴とするカーネルソースコード最適化装置。複数のデバイスと、該複数のデバイス毎のデバイスドライバと、カーネルソースコードが格納されたカーネルソースコード記憶部と、前記複数のデバイス毎のデバイス起動待ち時間が格納された起動待ち時間記憶部と、区画化コード記憶部と、最適化コード記憶部とを備えたコンピュータを、前記カーネルソースコード記憶部から前記カーネルソースコードを入力し、該入力したカーネルソースコードを、デバイスに対する起動処理を行うデバイス毎の区画化コードと、デバイスドライバに対する初期化処理を行うデバイスドライバ毎の区画化コードと、他の処理を行う区画化コードとに区画化して前記区画化コード記憶部に格納する区画化分析手段、前記区画化コード記憶部から各区画化コードを入力し、該入力した区画化コードの内のデバイスに対する起動処理を行う区画化コードをデバイス起動待ち時間が長い順に配置し、その後ろに、前記複数のデバイス毎に起動が完了したか否かを判定し、起動が完了したと判定したデバイスに対応するデバイスドライバの初期化処理を開始させるコードを配置し、その後ろに、前記入力した区画化コードの内のデバイスドライバに対する初期化を行う区画化コードを配置した最適化コードを生成し、生成した最適化コードを前記最適化コード記憶部に格納する再配置手段として機能させるためのプログラム。特許文献1に記載されている従来の技術では、或るデバイスのデバイス起動待ち時間において、他のデバイスを起動し、複数のデバイスの初期化を並行して行うようにしているので、初期化処理に必要となる時間を短縮化することができる。しかし、特許文献1には、複数のデバイスをどのような順番で起動されるかは全く記載されていない。このため、デバイス起動待ち時間が短いデバイスから順に起動される場合があり、このような場合、CPUが何も実行しない無駄な時間が多くなり、十分な高速化が見込めないという問題がある。発明の目的そこで、本発明の目的は、デバイス起動待ち時間を考慮した順番で各デバイスを起動することにより、CPUが何も実行しない無駄な時間を極力少なくし、カーネル初期化処理に要する時間を短縮させることにある。本発明にかかる第1のカーネルソースコード最適化方法は、複数のデバイスと、該複数のデバイス毎のデバイスドライバと、カーネルソースコードが格納されたカーネルソースコード記憶部と、前記複数のデバイス毎のデバイス起動待ち時間が格納された起動待ち時間記憶部と、区画化コード記憶部と、最適化コード記憶部とを備えたコンピュータによって前記カーネルソースコードを最適化するカーネルソースコード最適化方法であって、前記コンピュータが、前記カーネルソースコード記憶部から前記カーネルソースコードを入力し、該入力したカーネルソースコードを、デバイスに対する起動処理を行うデバイス毎の区画化コードと、デバイスドライバに対する初期化処理を行うデバイスドライバ毎の区画化コードと、他の処理を行う区画化コードとに区画化して前記区画化コード記憶部に格納する区画化分析ステップと、前記コンピュータが、前記区画化コード記憶部から各区画化コードを入力し、該入力した区画化コードの内のデバイスに対する起動処理を行う区画化コードをデバイス起動待ち時間が長い順に配置し、その後ろに、前記複数のデバイス毎に起動が完了したか否かを判定し、起動が完了したと判定したデバイスに対応するデバイスドライバの初期化処理を開始させるコードを配置し、その後ろに、前記入力した区画化コードの内のデバイスドライバに対する初期化を行う区画化コードを配置した最適化コードを生成し、該生成した最適化コードを前記最適化コード記憶部に格納する再配置ステップとを含むことを特徴とする。本発明にかかる第2のカーネルソースコード最適化方法は、第1のカーネルソースコード最適化方法において、前記区画化分析ステップでは、前記カーネルソースコード記憶部から入力したカーネルソースコードを関数呼び出し単位で区画化することにより、区画化コードを生成することを特徴とする。本発明にかかる第3のカーネルソースコード最適化方法は、第1または第2のカーネルソースコード最適化方法において、前記コンピュータが、前記複数のデバイスそれぞれのデバイス起動待ち時間を測定し、測定したデバイス起動待ち時間を前記起動待ち時間記憶部に格納する情報採取ステップを含むことを特徴とする。本発明にかかる第1のカーネルソースコード最適化装置は、複数のデバイスと、該複数のデバイス毎のデバイスドライバと、カーネルソースコードが格納されたカーネルソースコード記憶部と、前記複数のデバイス毎のデバイス起動待ち時間が格納された起動待ち時間記憶部と、区画化コード記憶部と、最適化コード記憶部と、前記カーネルソースコード記憶部から前記カーネルソースコードを入力し、該入力したカーネルソースコードを、デバイスに対する起動処理を行うデバイス毎の区画化コードと、デバイスドライバに対する初期化処理を行うデバイスドライバ毎の区画化コードと、他の処理を行う区画化コードとに区画化して前記区画化コード記憶部に格納する区画化分析手段と、前記区画化コード記憶部から各区画化コードを入力し、該入力した区画化コードの内のデバイスに対する起動処理を行う区画化コードをデバイス起動待ち時間が長い順に配置し、その後ろに、前記複数のデバイス毎に起動が完了したか否かを判定し、起動が完了したと判定したデバイスに対応するデバイスドライバの初期化処理を開始させるコードを配置し、その後ろに、前記入力した区画化コードの内のデバイスドライバに対する初期化を行う区画化コードを配置した最適化コードを生成し、生成した最適化コードを前記最適化コード記憶部に格納する再配置手段とを備えたことを特徴とする。本発明にかかる第2のカーネルソースコード最適化装置は、第1のカーネルソースコード最適化装置において、前記区画化分析手段が、前記カーネルソースコード記憶部から入力したカーネルソースコードを関数呼び出し単位で区画化することにより、区画化コードを生成することを特徴とする。本発明にかかる第3のカーネルソースコード最適化装置は、第1または第2のカーネルソースコード最適化装置において、前記複数のデバイスそれぞれのデバイス起動待ち時間を測定し、測定したデバイス起動待ち時間を前記起動待ち時間記憶部に格納する情報採取手段を備えたことを特徴とする。本発明にかかるプログラムは、複数のデバイスと、該複数のデバイス毎のデバイスドライバと、カーネルソースコードが格納されたカーネルソースコード記憶部と、前記複数のデバイス毎のデバイス起動待ち時間が格納された起動待ち時間記憶部と、区画化コード記憶部と、最適化コード記憶部とを備えたコンピュータを、前記カーネルソースコード記憶部から前記カーネルソースコードを入力し、該入力したカーネルソースコードを、デバイスに対する起動処理を行うデバイス毎の区画化コードと、デバイスドライバに対する初期化処理を行うデバイスドライバ毎の区画化コードと、他の処理を行う区画化コードとに区画化して前記区画化コード記憶部に格納する区画化分析手段、前記区画化コード記憶部から各区画化コードを入力し、該入力した区画化コードの内のデバイスに対する起動処理を行う区画化コードをデバイス起動待ち時間が長い順に配置し、その後ろに、前記複数のデバイス毎に起動が完了したか否かを判定し、起動が完了したと判定したデバイスに対応するデバイスドライバの初期化処理を開始させるコードを配置し、その後ろに、前記入力した区画化コードの内のデバイスドライバに対する初期化を行う区画化コードを配置した最適化コードを生成し、生成した最適化コードを前記最適化コード記憶部に格納する再配置手段として機能させる。作用カーネル起動処理において、コンピュータは、先ず、複数のデバイスをデバイス起動待ち時間が長いものから順に起動し、その後、起動が完了したデバイスに対応するデバイスドライバから順に初期化する。また、既存のカーネルソースコードから上記したようなカーネル起動処理を行う最適化コードを自動的に生成するため、区画化分析手段が、カーネルソースコードを、デバイスに対する起動処理を行うデバイス毎の区画化コードと、デバイスドライバに対する初期化処理を行うデバイスドライバ毎の区画化コードと、他の処理を行う区画化コードとに区画化し、再配置手段が、区画化コードの内の、デバイスに対する起動処理を行う区画化コードをデバイス起動待ち時間が長い順に配置し、その後ろに、起動が完了したか否かを判定し、起動が完了したと判定したデバイスに対応するデバイスドライバの初期化処理を開始させるコードを配置し、その後ろに、デバイスドライバに対する初期化処理を行う区画化コードを配置した最適化コードを生成する。本発明によれば、カーネル起動処理においてCPUが何も実行しない無駄な時間を極力少なくすることができ、その結果、カーネル起動処理に要する時間を短縮化することが可能になる。その理由は、コンピュータがカーネル起動処理を行う際、先ず、複数のデバイスをデバイス起動待ち時間が長いものから順に起動し、その後、起動が完了したデバイスに対応するデバイスドライバから順に初期化するようにしているからである。また、本発明によれば、既存のカーネルソースコードから上記したようなカーネル起動処理を行う最適化コードを生成することが可能になる。その理由は、カーネルソースコードを、デバイスに対する起動処理を行うデバイス毎の区画化コードと、デバイスドライバに対する初期化処理を行うデバイスドライバ毎の区画化コードと、他の処理を行う区画化コードとに区画化する区画化分析手段と、区画化コードの内の、デバイスに対する起動処理を行う区画化コードをデバイス起動待ち時間が長い順に配置し、その後ろに、起動が完了したか否かを判定し、起動が完了したと判定したデバイスに対応するデバイスドライバの初期化処理を開始させるコードを配置し、その後ろに、デバイスドライバに対する初期化処理を行う区画化コードを配置した最適化コードを生成する再配置手段とを備えているからである。次に、本発明を実施するための最良の形態について図面を参照して詳細に説明する。本発明の第1の実施の形態の構成の説明本実施の形態は、カーネル初期化処理が高速化されるように、カーネルソースコードを最適化するものである。図1を参照すると、本実施の形態を適用したコンピュータ1は、カーネル10と、区画化分析手段20と、再配置手段30と、記憶装置40と、複数のデバイス50とを備えている。記憶装置40には、カーネルソースコード記憶部41と、区画化コード記憶部42と、起動待ち時間記憶部43と、分類情報記憶部44と、分析結果記憶部45と、最適化コード記憶部46と、オブジェクトコード記憶部47とが設けられている。カーネルソースコード記憶部41には、カーネル10のカーネルソースコード最適化を行う前のカーネルソースコードが格納されている。カーネル10は、デバイス50毎のデバイスドライバ12を備えている。更に、カーネル10には、各デバイス50のデバイス起動待ち時間を測定し、起動待ち時間記憶部43に格納する情報採取モジュール11が組み込まれている。区画化分析手段20は、区画化手段21と、分析手段22とを含んでいる。区画化手段21は、カーネルソースコード記憶部41から入力したカーネルソースコードを関数呼び出し単位で区画化することにより、区画化コードを生成し、生成した区画化コードを区画化コード記憶部42に格納する機能を有する。なお、区画化手段21は、カーネルソースコードを関数呼び出し単位で区画化する際、関数呼び出しで使用する引数への操作部分も同じ区画に入れる。また、区画化手段21は、区画化コードを区画化コード記憶部42に格納する際、各区画化コードを一意に識別する区画化コード名を付与する。区画化コードに付与する区画化コード名は、各区画化コードを一意に識別できるものならどのようなものでも構わないが、例えば、区画化時に抽出された呼び出し関数名にREBLOCKINGなどのPrefixを付けたものを、区画化コード名とすることができる。分析手段22は、分類情報記憶部44に格納されている分類情報に基づいて、区画化コード記憶部42に格納されている各区画化コードが、次の3つのフェーズのどのフェーズに属するものであるかを判定する機能を有する。第1フェーズフェーズ1...起動コマンドの発行処理などのデバイス起動処理を行うフェーズである。第2フェーズフェーズ2...ドライバ構造体作成処理などのデバイスドライバ初期化処理を行うフェーズである。第3フェーズフェーズ3...デバイス起動処理、デバイスドライバ初期化処理以外の初期化処理を行うフェーズである。分類情報記憶部44には、第1フェーズおよび第2フェーズで使用される関数と、その関数の処理内容第1フェーズで使用されるものなのか、第2フェーズで使用されるものなのかを示すとが対応付けて登録されている。図2は、分類情報記憶部44の内容例を示す図である。同図の例は、関数iodeviceinitは、第1フェーズデバイス起動処理で使用され、関数iodevicedriverinitは、第2フェーズデバイスドライバ初期化処理で使用されることを示している。即ち、分析手段22は、区画化コード記憶部42に格納されている各区画化コードの内、分類情報記憶部44において処理内容がデバイス起動処理第1フェーズとなっている関数を含んでいるものは第1フェーズに属すると判定し、分類情報記憶部44において処理内容がデバイスドライバ初期化処理第2フェーズとなっている関数を含んでいるものは第2フェーズに属すると判定し、分類情報記憶部44に登録されている関数を含んでいないものは第3フェーズに属すると判定する。更に、分析手段22は、第1フェーズに属すると判定した区画化コードについては、起動待ち時間記憶部43を参照して、その区画化コードが起動処理を担当しているデバイスのデバイス起動時間を求める機能や、分析結果記憶部45に分析結果情報を格納する機能を有する。分析結果情報には、各区画化コードの区画化コード名と、その区画化コード名の区画化コードが属するフェーズのフェーズ識別子と、デバイス起動待ち時間第1フェーズに属する区画化コードについてのみとが含まれる。なお、第1フェーズに属する各区画化コードが、どのデバイスの起動処理を担当しているかは、各区画化コード内の引数から調べることができる。図3は、分析結果記憶部45の内容例を示す図である。同図の例は、区画化コード名K1K2K3の区画化コードは、それぞれ第1、第2、第3フェーズに属し、区画化コード名K1の区画化コードによって初期化されるデバイスは、デバイス起動待ち時間がt1であることを示している。再配置手段30は、区画化コード記憶部42に格納されている各区画化コードと、分析結果記憶部45の内容とに基づいて、図4に示すような最適化コード400を生成し、それを最適化コード記憶部46に格納する機能を有する。図4を参照すると、最適化コード400の先頭部分には、第1フェーズに属する各区画化コード401各デバイス50を起動させる区画化コードが、デバイス起動待ち時間が長いものから順に配置されている。その後ろには、各デバイス50毎に起動が完了したか否かを判定し、起動が完了したと判定したデバイスに対応するデバイスドライバの初期化処理を開始させる第1フェーズ完了判定コード402が配置されている。その後ろには、第2、第3フェーズに属する各区画化コード403、404が配置されている。なお、区画化分析手段20および再配置手段30は、CPUコンピュータによって実現可能であり、コンピュータによって実現する場合は、例えば、次のようにする。コンピュータを、区画化分析手段20、再配置手段30として機能させるためのプログラムを記録したデバイス、半導体メモリ、その他の記録媒体を用意し、コンピュータに上記プログラムを読み取らせる。コンピュータは、読み取ったプログラムに従って自身の動作を制御することにより、自コンピュータ上に、区画化分析手段20および再配置手段30を実現する。第1の実施の形態の動作の説明次に、本実施の形態の動作について詳細に説明する。本実施の形態では、図5のフローチャートに示すように、先ず、区画化手段21による区画化処理ステップS51が行われ、次いで、情報採取モジュール11による情報採取処理ステップS52が行われ、その後、分析手段22による分析処理ステップS53が行われ、最後に、再配置手段30による再配置処理ステップS54が行われる。以下では、各手段が各ステップで行う処理を詳しく説明する。区画化手段21は、図6のフローチャートに示すように、カーネルソースコード記憶部41からカーネルソースコードを入力しステップS61、入力したカーネルソースコードを関数呼び出し単位で区画化することにより、区画化コードを生成するステップS62。その際、区画化手段21は、関数呼び出しで使用する引数への操作部分も同じ区画に入れる。その後、区画化手段21は、各区画化コードにそれぞれユニークな区画化コード名を付加して区画化コード記憶部42に格納するステップS63。図7に区画化コード記憶部42の内容例を示す。同図の例は、n個の区画化コード42-1~42-nがそれぞれ区画化コード名K1~Knを付加されて区画化コード記憶部42に登録されていることを示している。区画化手段21による区画化処理図5のステップS51が完了すると、情報採取モジュール11による情報採取処理ステップS52が行われる。この情報採取処理では、まだ最適化が実施されていないカーネル10に対し、情報採取モジュール11を組み込んだ上でテストランという形で一度カーネル起動処理を実施する。情報採取モジュール11では、テストランの間に、各デバイス50のデバイス起動待ち時間を測定し図8のステップS81、各デバイスのデバイスIDと測定したデバイス起動待ち時間とを対応付けて起動待ち時間記憶部43に格納するステップS82。情報採取モジュール11による情報採取処理図5のステップS52が完了すると、分析手段22による分析処理ステップS53が実行される。分析手段22は、図9のフローチャートに示すように、先ず、区画化コード記憶部42図7参照から各区画化コード42-1~42-nを入力しステップS91、次いで、分類情報記憶部44図2参照から関数と処理内容との対からなる分類情報を入力するステップS92。次いで、分析手段22は、分類情報記憶部44から入力した分類情報に基づいて、各区画化コード42-1~42-nが属するフェーズを判定するステップS93。具体的には、区画化コード42-1~42-nの内、入力した分類情報において処理内容がデバイス起動処理第1フェーズデバイスドライバ初期化処理第2フェーズとなっている関数を含んでいる区画化コードは、それぞれ第1フェーズ、第2フェーズに属すると判定し、分類情報中の関数を含んでいない区画化コードは、第3フェーズに属すると判定する。その後、分析手段22は、起動待ち時間記憶部43から各デバイス50のデバイス起動待ち時間を入力しステップS94、第1フェーズに属する各区画化コード毎に、その区画化コードが起動処理を受け持っているデバイスのデバイス起動時間を求めるステップS95。そして、最後に、分析手段22は、各区画化コード42-1~42-nの区画化コード名K1~Knと、その区画化コード名の区画化コードが属するフェーズのフェーズ識別子と、デバイス起動待ち時間第1フェーズに属する区画化コードのみとからなる分析結果情報を、分析結果記憶部45に格納するステップS96。分析手段22による分析処理図5のステップS53が完了すると、再配置手段30による再配置処理ステップS54が実行される。再配置手段30は、図10のフローチャートに示すように、先ず、分析結果情報記憶部45図3参照から分析結果情報を入力しステップS101、次いで、区画化コード記憶部図7参照から区画化コード名が付加された区画化コード42-1~42-nを入力するステップS102。次いで、再配置手段30は、入力した分析結果情報と、区画化コード42-1~42-nとに基づいて、図4に示すような最適化コード400を生成するステップS103。即ち、再配置手段30は、デバイス起動待ち時間が長いデバイスから順にデバイス起動処理が行われるように、第1フェーズに属する各区画化コード401各デバイス50の起動処理を行う区画化コードをデバイス起動待ち時間が長いものから順に配置する。デバイス起動待ち時間が長いデバイスから順にデバイス起動処理を行うようにするのは、CPUが何もしない無駄な時間を極力少なくし、カーネル起動処理に要する時間を短縮化するためである。この次に、デバイス50の起動が完了した後に、対応するデバイスドライバ12の初期化処理が行われるようにするために、各デバイス50毎に起動が完了したか否かを判定し、起動が完了したと判定したデバイス50に対応するデバイスドライバ12の初期化処理を開始させる第1フェーズ完了判定コード402を配置する。第1フェーズ完了判定コード402の次には、第2フェーズに属する区画化コードデバイスドライバ12の初期化処理を行う区画化コード403を配置する。更に、第2フェーズの処理が完了した後、第3フェーズの処理が行われるように、第3フェーズに属する区画化コードを配置する。この再配置を行った結果として最適化コード400が生成される。ここでの最適化コード400は、カーネルソースコード記憶部41に格納されているカーネルソースコードと同等のソースコードであるので最適化コード400を用いてカーネルのビルドが可能である。最適化コード400を使用してカーネルのビルドを行えば、カーネル起動処理全体について高速化が図れるように処理の再配置が行われたカーネルが作成可能となり、カーネル起動処理の高速化としての目的が達成される。そして、最後に、再配置手段30は、生成した最適化コード400を最適化コード記憶部46に格納するステップS104。本実施の形態のカーネル起動処理の説明次に、図11を参照して、最適化コード400を利用したカーネル起動処理100について説明する。なお、カーネル起動処理100は、CPU図示せずが、最適化コード400をコンパイルしたオブジェクトコードを実行することにより行われるものであり、上記オブジェクトコードは、オブジェクトコード記憶部47に格納されている。カーネル起動処理100においては、先ず、第1フェーズフェーズ1201が実行される。第1フェーズ201においては、各デバイス50が、デバイス起動待ち時間が長い順に起動される。第1フェーズ201が完了すると、第1フェーズ完了判定処理203により、各デバイス50毎に、デバイスの起動が完了したか否かを判定する。この判定は、デバイス50に対してのポーリングによるデバイス起動判定や、デバイス起動完了後に割り込みが発生するデバイス50に関してはデバイスからの割り込み発生による判定などを指す。そして、起動完了が確認できたデバイス50については、そのデバイス50に対応するデバイスドライバ12の初期化処理第2フェーズを開始させる。第2フェーズフェーズ2204において、全てのデバイスドライバ12に対する初期化処理ドライバ構造体作成処理などが完了すると、第3フェーズメモリ初期化処理などのその他の初期化処理205が実行される。なお、上述した説明では、図5の区画化処理ステップS51、分析処理ステップS53において、区画化手段21、分析手段22がそれぞれ図6、図9のフローチャートに示す処理を行うようにしたが、区画化手段21、分析手段22がそれぞれ図12、図13のフローチャートに示す処理を行うようにしても良い。区画化手段21は、図12のフローチャートに示すように、カーネルソースコード記憶部41からカーネルソースコードを入力しステップS121、入力したカーネルソースコードを関数呼び出し単位で区画化することにより、区画化コードを生成するステップS122。その際、区画化手段21は、関数呼び出しで使用する引数への操作部分も同じ区画に入れる。その後、区画化手段21は、分類情報記憶部44図2参照から分類情報を入力し、この分類情報に基づいて、各区画化コードが第1フェーズ~第3フェーズのどのフェーズに属するか判定するステップS123、S124。その後、区画化手段21は、各区画化コードに、その区画化コードが属するフェーズのフェーズ識別子と、ユニークな区画化コード名とを付加して区画化コード記憶部42に格納するステップS125。図14に区画化コード記憶部42の内容例を示す。同図の例は、n個の区画化コード42-1~42-nがそれぞれ区画化コード名K1~Knを付加されて区画化コード記憶部42に登録されていることを示すと共に、区画化コード42-1、42-2、42-nがそれぞれ第1フェーズF1、第2フェーズF2、第3フェーズF3に属していることを示している。一方、分析手段22は、図13のフローチャートに示すように、先ず、区画化コード記憶部42図14参照から、区画化コード名およびフェーズ識別子が付加された区画化コード42-1~42-nを入力し、次いで、起動待ち時間記憶部43から各デバイス50のデバイス起動待ち時間を入力するステップS132。その後、分析手段22は、第1フェーズに属する各区画化コード毎に、その区画化コードが起動処理を受け持っているデバイスのデバイス起動待ち時間を求めるステップS133。そして、最後に、分析手段22は、各区画化コード42-1~42-nの区画化コード名K1~Knと、その区画化コード名の区画化コードが属するフェーズのフェーズ識別子と、デバイス起動待ち時間第1フェーズに属する区画化コードのみとからなる分析結果情報を、分析結果記憶部45に格納するステップS134。第1の実施の形態の効果本実施の形態によれば、カーネル起動処理においてCPUが何も実行しない無駄な時間を極力少なくすることができ、その結果、カーネル起動処理に要する時間を短縮化することが可能になる。その理由は、コンピュータ1がカーネル起動処理100を行う際、先ず、複数のデバイスをデバイス起動待ち時間が長いものから順に起動し、その後、起動が完了したデバイスに対応するデバイスドライバから順に初期化するようにしているからである。また、本実施の形態によれば、既存のカーネルソースコードから上記したようなカーネル起動処理を行う最適化コードを生成することが可能になる。その理由は、カーネルソースコードを、デバイスに対する起動処理を行うデバイス毎の区画化コードと、デバイスドライバに対する初期化処理を行うデバイスドライバ毎の区画化コードと、他の処理を行う区画化コードとに区画化する区画化分析手段20と、区画化コードの内の、デバイスに対する起動処理を行う区画化コードをデバイス起動待ち時間が長い順に配置し、その後ろに、起動が完了したか否かを判定し、起動が完了したと判定したデバイスに対応するデバイスドライバの初期化処理を開始させるコードを配置し、その後ろに、デバイスドライバに対する初期化を行う区画化コードを配置し、その後ろに、他の処理を行う区画化コードを配置した最適化コードを生成する再配置手段30とを備えているからである。本発明の第2の実施の形態次に、本発明の第2の実施の形態について説明する。図15は本実施の形態にかかるカーネル起動方法を説明するための図であり、本実施の形態のカーネル起動処理100においては、第1フェーズ201、デバイスに非依存な初期化処理202、第1フェーズ完了判定処理203a、第2フェーズ204、デバイスに依存する初期化処理206が順次実行される。第1フェーズ201においては、各デバイス50に対するデバイス起動処理を、デバイス起動待ち時間が長いものから順に実行する。第1フェーズ201の完了後、デバイスに非依存な初期化処理202を実行する。デバイスに非依存な初期化処理202においては、デバイス起動処理およびデバイスドライバ初期化処理を除いた初期化処理図19におけるその他の初期化処理101の内の、デバイスの状態によらずカーネル起動処理100内の任意のタイミングで実行可能な初期化処理を実行する。即ち、カーネル起動処理100の任意のタイミングで初期化処理を行うことができるモジュールに対する初期化処理を行う。ここで、第1フェーズ201において、デバイス起動待ち時間が長いデバイスから順に起動するようにした理由は、最も長いデバイスの起動待ち時間103の間に他のデバイスのデバイス起動処理を行うことで、待ち時間の相殺を行うことが可能となるからであり、逆に、デバイス起動待ち時間が短いデバイスから起動を行う場合で、最も長いデバイスの起動待ち時間103よりデバイスに非依存な初期化処理202にかかる時間が短かった場合には、CPUとしては何も処理しない無駄な待ち合わせ時間が発生するからである。デバイスに非依存な初期化処理202の完了後、第1フェーズ完了判定処理203aを実行する。第1フェーズ完了判定処理203aでは、全てのデバイス50の起動が完了したか否かを判定する。即ち、第1フェーズ完了判定処理203aでは、第2フェーズ204へ移行するための必要条件の判定を行う。第1フェーズ完了判定処理203aにおいて、全てのデバイス50の起動完了が確認できた場合、第2フェーズ204を実行する。第2フェーズ204では、各デバイスドライバ12に対する初期化処理ドライバ構造体作成処理などを実行する。そして、最後に、デバイスドライバの初期化完了後に実行可能となるデバイスに依存する初期化処理206を行う。即ち、デバイスドライバの初期化処理が完了しなければ初期化処理を行うことができないモジュールに対する初期化処理を行う。なお、上記した処理は、カーネルソースコードをコンパイルしたオブジェクトコードを実行するCPUによって行われる。第2の実施の形態の効果本実施の形態によれば、カーネル起動処理においてCPUが何も実行しない無駄な時間を極めて少なくすることができ、その結果、カーネル起動処理に要する時間を短縮化することが可能になる。その理由は、各デバイス50をデバイス起動待ち時間が長いものから順に起動する第1フェーズ201の次に、デバイスに非依存な初期化処理202を行うようにしているからである。本発明の第3の実施の形態本実施の形態は、カーネル起動処理において初期化の必要性が無いデバイスに関しては、カーネル起動処理の完了後に初期化を実施することにより、カーネル起動処理に要する時間を短縮化したことを特徴とする。コンピュータが備えているデバイスは、カーネル起動直後に必要となるデバイスと、必要では無いデバイスとの2種類に分類することができる。本実施の形態では、カーネル起動直後に必要となるデバイスについては、カーネル起動処理におけるドライバ初期化処理内で実行し、カーネル起動完了直後に必要では無いデバイスに対しての初期化処理は、カーネル起動完了後に行うようにする。今、コンピュータが第1デバイスデバイス1~第3デバイスデバイス3の3台のデバイスを備え、且つ第3デバイスがカーネル起動直後に必要でないデバイスであったとする。また、第1デバイスのデバイス起動待ち時間よりも、第2デバイスのデバイス起動待ち時間の方が長いとする。本実施の形態では、図16に示すように、カーネル起動処理100のドライバ初期化処理102において、先ず、第2デバイスに対するデバイス起動処理102-1が行われ、第2デバイスのデバイス起動待ち時間103の間に、第1デバイスに対するデバイス起動処理102-2、第1デバイスに対応するデバイスドライバに対する初期化処理102-3が順次行われる。そして、第2デバイスの起動が完了すると、第2デバイスに対応するデバイスドライバに対する初期化処理102-4が行われる。カーネル起動完了直後に必要のない第3デバイスに対するデバイス起動処理102-5、および第3デバイスに対応するデバイスドライバに対するデバイスドライバ初期化処理102-6は、カーネル起動処理100が完了した後に行う。なお、図15に示した第2の実施の形態に本実施の形態を適用する様にしても良い。第3の実施の形態の効果本実施の形態によれば、カーネル起動完了直後に使用しないデバイス、デバイスドライバに対する起動処理102-5、初期化処理102-6は、カーネル起動処理100の完了後に行うようにしているので、カーネル起動処理100に要する時間を短くすることができる。本発明の第4の実施の形態本実施の形態は、CPUを複数有するコンピュータにおいて、各CPUが処理を並行して行うことにより、カーネル起動処理に要する時間を短縮化させることを特徴とする。図17は、CPU1~CPU4の4台のCPUを有するコンピュータにおけるカーネル起動処理100を示した図である。先ず、各CPU1~CPU4が、それぞれ、自CPUに割り当てられているデバイスに対するデバイス起動処理フェーズ1-1~フェーズ1-4201を並行して行う。その際、各CPU1~CPU4は、デバイス起動待ち時間が長いものから順にデバイス起動処理を行う。次いで、各CPU1~CPU4が、自CPUに割り当てられているモジュールの内の、デバイスに非依存なモジュールに対する初期化処理202を行う。その後、各CPU1~CPU4が、自CPUに割り当てられている全てのデバイスの起動が完了したか否かを判定するフェーズ1完了判定処理203を行う。そして、自CPUに割り当てられている全てのデバイスの起動が完了していると判定したCPUから順に、自CPUに割り当てられているデバイスに対応するデバイスドライバのデバイスドライバ初期化処理フェーズ2-1~2-4204を行う。最後に、デバイスドライバの初期化処理が完了したCPUから順に、自CPUに割り当てられているモジュールの内の、デバイスに依存するモジュールの初期化処理205を行う。第4の実施の形態の効果本実施の形態によれば、複数のCPUが並行してカーネル起動処理100を行うので、カーネル起動処理100に要する時間を短縮化することができる。第5の実施の形態次に、本発明の第5の実施の形態について説明する。本実施の形態は、コンピュータが、ブートローダの実行時に、デバイスに対するデバイス起動処理を行うことにより、カーネル起動処理に要する時間を短縮化したことを特徴とする。本実施の形態では、図18に示すように、コンピュータがブートローダの実行時、第1デバイス~第3デバイスに対するデバイス起動処理102-1~102-3を実行する。なお、各デバイスのデバイス起動待ち時間は、第1デバイスが最も長く、第3デバイスが最も短いとする。その後、ブートローダの本来の処理であるカーネル起動処理100を開始させる処理を行う。このブートローダ実行中というタイミングにおいてデバイスのデバイス起動処理102-1~102-3の実行を前倒しすることにより、デバイスの起動待ちという時間の間、他の処理101を行うことで、無駄な待ち時間を相殺する。その後、カーネル起動処理100のドライバ初期化処理102において、各デバイスドライバの初期化処理102-4~102-6を実行する。第5の実施の形態の効果本実施の形態によれば、コンピュータがブートローダの実行時に、デバイスに対するデバイス起動処理102-1~102-3を行うようにしているので、カーネル起動処理100に要する時間を短くすることができる。