(57)【要約】【課題】多数の接続デバイスを備えたコンピュータにおけるカーネル起動処理を高速化する。【解決手段】先ず、第１フェーズ２０１において、コンピュータが備えている各デバイスに対する起動処理を行う。その際、デバイス起動待ち時間が長いデバイスから順に起動処理を行う。第１フェーズ２０１が完了すると、第１フェーズ完了判定処理２０３を行う。この第１フェーズ完了判定処理２０３では、各デバイス毎に起動が完了したか否かを判定する。第２フェーズ２０４では、起動完了が確認されたデバイスに対応するデバイスドライバの初期化処理を行う。そして、最後に、メモリ初期化処理などのその他の初期化処理２０５を行う。【選択図】図１１
2008225717.tif 000002
【特許請求の範囲】
【請求項１】
複数のデバイスと、該複数のデバイス毎のデバイスドライバとを有するコンピュータにおけるカーネル起動方法であって、
前記コンピュータが、前記複数のデバイスをデバイス起動待ち時間が長いものから順に起動するデバイス起動ステップと、
前記コンピュータが、起動が完了したデバイスに対応するデバイスドライバから順に初期化するデバイスドライバ初期化ステップとを含むことを特徴とするカーネル起動方法。
【請求項２】
複数のデバイスと、該複数のデバイス毎のデバイスドライバとを有するコンピュータにおけるカーネル起動方法であって、
前記コンピュータが前記複数のデバイスをデバイス起動待ち時間が長いものから順に起動するデバイス起動ステップと、
前記コンピュータが前記デバイス起動ステップの次に実行するステップであって、デバイスに非依存なモジュールを初期化するデバイス非依存初期化ステップと、
前記コンピュータが前記デバイス非依存初期化ステップの次に実行するステップであって、前記複数のデバイスの全てで起動が完了しているか否かを判定する起動完了判定ステップと、
前記コンピュータが前記起動完了判定ステップにおいて全てのデバイスの起動が完了したと判定した後に実行するステップであって、前記複数のデバイスドライバを初期化するデバイスドライバ初期化ステップと、
前記コンピュータが前記デバイスドライバ初期化ステップの次に実行するステップであって、デバイスに依存するモジュールを初期化するデバイス依存初期化ステップとを含むことを特徴とするカーネル起動方法。
【請求項３】
請求項１または２記載のカーネル起動方法において、
前記デバイス起動ステップでは、前記複数のデバイスの内の、カーネル起動処理の完了直後に使用するデバイスのみを起動し、
前記デバイスドライバ初期化ステップでは、前記複数のデバイスドライバの内の、カーネル起動処理の完了直後に使用するデバイスドライバのみを初期化し、且つ、
前記コンピュータがカーネル起動処理の完了後に、前記複数のデバイスの内の、起動していないデバイスを起動し、その後、前記複数のデバイスドライバの内の、初期化していないデバイスドライバを初期化することを特徴とするカーネル起動方法。
【請求項４】
複数のデバイスと、該複数のデバイス毎のデバイスドライバと、複数のＣＰＵとを有するコンピュータにおけるカーネル起動方法であって、
前記複数のＣＰＵが、自ＣＰＵに割り当てられているデバイスをデバイス起動待ち時間が長いものから順に起動するデバイス起動ステップと、
前記複数のＣＰＵが前記デバイス起動ステップの次に実行するステップであって、自ＣＰＵに割り当てられているモジュールの内の、デバイスに非依存なモジュールを初期化するデバイス非依存初期化ステップと、
前記複数のＣＰＵが前記デバイス非依存初期化ステップの次に実行するステップであって、自ＣＰＵに割り当てられているデバイスの全てで起動が完了しているか否かを判定する起動完了判定ステップと、
前記複数のＣＰＵが前記起動完了ステップにおいて自ＣＰＵに割り当てられている全てのデバイスの起動が完了したと判定した後に実行するステップであって、自ＣＰＵに割り当てられているデバイスに対応するデバイスドライバを初期化するデバイスドライバ初期化ステップと、
前記複数のＣＰＵが前記デバイスドライバ初期化ステップの次に実行するステップであって、自ＣＰＵに割り当てられているモジュールの内の、デバイスに依存するモジュールを初期化するデバイス依存初期化ステップとを含むことを特徴とするカーネル起動方法。
【請求項５】
複数のデバイスと、該複数のデバイス毎のデバイスドライバとを有するコンピュータにおけるカーネル起動方法であって、
前記コンピュータが、ブートローダの実行時に前記複数のデバイスをデバイス起動待ち時間が長いものから順に起動し、全てのデバイスの起動が完了した後、カーネル起動処理を開始させるデバイス起動ステップと、
前記コンピュータが前記デバイス起動ステップの次に行うステップであって、前記デバイスドライバを初期化するデバイスドライバ初期化ステップとを含むことを特徴とするカーネル起動方法。
【請求項６】
複数のデバイスと、該複数のデバイス毎のデバイスドライバと、カーネルソースコードが格納されたカーネルソースコード記憶部と、前記複数のデバイス毎のデバイス起動待ち時間が格納された起動待ち時間記憶部と、区画化コード記憶部と、最適化コード記憶部とを備えたコンピュータによって前記カーネルソースコードを最適化するカーネルソースコード最適化方法であって、
前記コンピュータが、前記カーネルソースコード記憶部から前記カーネルソースコードを入力し、該入力したカーネルソースコードを、デバイスに対する起動処理を行うデバイス毎の区画化コードと、デバイスドライバに対する初期化処理を行うデバイスドライバ毎の区画化コードと、他の処理を行う区画化コードとに区画化して前記区画化コード記憶部に格納する区画化分析ステップと、
前記コンピュータが、前記区画化コード記憶部から各区画化コードを入力し、該入力した区画化コードの内のデバイスに対する起動処理を行う区画化コードをデバイス起動待ち時間が長い順に配置し、その後ろに、前記複数のデバイス毎に起動が完了したか否かを判定し起動が完了したと判定したデバイスに対応するデバイスドライバの初期化処理を開始させるコードを配置し、その後ろに、前記入力した区画化コードの内のデバイスドライバに対する初期化を行う区画化コードを配置した最適化コードを生成し、該生成した最適化コードを前記最適化コード記憶部に格納する再配置ステップとを含むことを特徴とするカーネルソースコード最適化方法。
【請求項７】
請求項６記載のカーネルソースコード最適化方法において、
前記区画化分析ステップでは、前記カーネルソースコード記憶部から入力したカーネルソースコードを関数呼び出し単位で区画化することにより、区画化コードを生成することを特徴とするカーネルソースコード最適化方法。
【請求項８】
請求項６または７記載のカーネルソースコード最適化方法において、
前記コンピュータが、前記複数のデバイスそれぞれのデバイス起動待ち時間を測定し、測定したデバイス起動待ち時間を前記起動待ち時間記憶部に格納する情報採取ステップを含むことを特徴とするカーネルソースコード最適化方法。
【請求項９】
複数のデバイスと、
該複数のデバイス毎のデバイスドライバと、
カーネルソースコードが格納されたカーネルソースコード記憶部と、
前記複数のデバイス毎のデバイス起動待ち時間が格納された起動待ち時間記憶部と、
区画化コード記憶部と、
最適化コード記憶部と、
前記カーネルソースコード記憶部から前記カーネルソースコードを入力し、該入力したカーネルソースコードを、デバイスに対する起動処理を行うデバイス毎の区画化コードと、デバイスドライバに対する初期化処理を行うデバイスドライバ毎の区画化コードと、他の処理を行う区画化コードとに区画化して前記区画化コード記憶部に格納する区画化分析手段と、
前記区画化コード記憶部から各区画化コードを入力し、該入力した区画化コードの内のデバイスに対する起動処理を行う区画化コードをデバイス起動待ち時間が長い順に配置し、その後ろに、前記複数のデバイス毎に起動が完了したか否かを判定し、起動が完了したと判定したデバイスに対応するデバイスドライバの初期化処理を開始させるコードを配置し、その後ろに、前記入力した区画化コードの内のデバイスドライバに対する初期化を行う区画化コードを配置した最適化コードを生成し、生成した最適化コードを前記最適化コード記憶部に格納する再配置手段とを備えたことを特徴とするカーネルソースコード最適化装置。
【請求項１０】
請求項９記載のカーネルソースコード最適化装置において、
前記区画化分析手段が、前記カーネルソースコード記憶部から入力したカーネルソースコードを関数呼び出し単位で区画化することにより、区画化コードを生成することを特徴とするカーネルソースコード最適化装置。
【請求項１１】
請求項９または１０記載のカーネルソースコード最適化装置において、
前記複数のデバイスそれぞれのデバイス起動待ち時間を測定し、測定したデバイス起動待ち時間を前記起動待ち時間記憶部に格納する情報採取手段を備えたことを特徴とするカーネルソースコード最適化装置。
【請求項１２】
複数のデバイスと、該複数のデバイス毎のデバイスドライバと、カーネルソースコードが格納されたカーネルソースコード記憶部と、前記複数のデバイス毎のデバイス起動待ち時間が格納された起動待ち時間記憶部と、区画化コード記憶部と、最適化コード記憶部とを備えたコンピュータを、
前記カーネルソースコード記憶部から前記カーネルソースコードを入力し、該入力したカーネルソースコードを、デバイスに対する起動処理を行うデバイス毎の区画化コードと、デバイスドライバに対する初期化処理を行うデバイスドライバ毎の区画化コードと、他の処理を行う区画化コードとに区画化して前記区画化コード記憶部に格納する区画化分析手段、
前記区画化コード記憶部から各区画化コードを入力し、該入力した区画化コードの内のデバイスに対する起動処理を行う区画化コードをデバイス起動待ち時間が長い順に配置し、その後ろに、前記複数のデバイス毎に起動が完了したか否かを判定し、起動が完了したと判定したデバイスに対応するデバイスドライバの初期化処理を開始させるコードを配置し、その後ろに、前記入力した区画化コードの内のデバイスドライバに対する初期化を行う区画化コードを配置した最適化コードを生成し、生成した最適化コードを前記最適化コード記憶部に格納する再配置手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、カーネル起動処理を高速化するカーネル起動技術およびカーネルソースコード最適化技術に関し、特に、デバイスを起動してからデバイスの起動が完了するまでの時間であるデバイス起動待ち時間を有効利用することにより、カーネル起動処理を高速化するカーネル起動技術およびカーネルソースコード最適化技術に関する。
【背景技術】
【０００２】
先ず、図１９を参照して従来一般的に行われているカーネル起動方法について説明する。同図に示すようにカーネル起動処理１００においては、ドライバ初期化処理１０２と、その他の初期化処理１０１（メモリの初期化処理など）とが実行される。
【０００３】
ドライバ初期化処理１０２では、デバイスを起動するためのデバイス起動処理１０２−１と、上記デバイスに対応するデバイスドライバを初期化するためのデバイスドライバ初期化処理１０２−２とが実行される。デバイスドライバ初期化処理１０２−２は、デバイスの起動が完了した後に行うことが必要であるため、デバイス起動処理１０２−１を実行してからデバイスドライバ初期化処理１０２−２が実行可能となるまでには、ある程度の時間（デバイス起動待ち時間１０３）が必要になる。このデバイス起動待ち時間１０３は、ＣＰＵが何も実行しない無駄な時間であり、デバイスの種類によってはかなり長い時間となる。また、図１９では、１つのデバイス、デバイスドライバに対するデバイス起動処理１０２−１、デバイス初期化処理１０２−２しか示していないが、複数のデバイス、デバイスドライバを有する実際のシステムでは、デバイス、デバイスドライバの数だけデバイス起動処理１０２−１、デバイスドライバ初期化処理１０２−２がシーケンシャルに実行され、デバイスの数だけデバイス起動待ち時間１０３が発生する。このため、カーネル起動処理１００において、ドライバ初期化処理１０２が最も時間のかかる処理となる。
【０００４】
上述したように、従来の一般的なカーネル起動方法では、デバイスの数だけＣＰＵが何も実行しないデバイス起動待ち時間１０３が発生するため、カーネル起動処理１００を高速化することができないという問題があった。
【０００５】
一方、コンピュータが備えている複数のデバイスを初期化する技術として、図２０に示すように、各デバイスＡ、Ｂ、Ｃ、…に対して初期化のためのコマンドを順次発行し、その後、コマンド実行終了割り込み信号を発生したデバイスから順に次のコマンドを発行する技術が従来から知られている（例えば、特許文献１参照）。
【０００６】
【特許文献１】特開平１０−３０７６４９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
特許文献１に記載されている従来の技術では、或るデバイスのデバイス起動待ち時間において、他のデバイスを起動し、複数のデバイスの初期化を並行して行うようにしているので、初期化処理に必要となる時間を短縮化することができる。しかし、特許文献１には、複数のデバイスをどのような順番で起動されるかは全く記載されていない。このため、デバイス起動待ち時間が短いデバイスから順に起動される場合があり、このような場合、ＣＰＵが何も実行しない無駄な時間が多くなり、十分な高速化が見込めないという問題がある。
【０００８】
〔発明の目的〕
そこで、本発明の目的は、デバイス起動待ち時間を考慮した順番で各デバイスを起動することにより、ＣＰＵが何も実行しない無駄な時間を極力少なくし、カーネル初期化処理に要する時間を短縮させることにある。
【課題を解決するための手段】
【０００９】
本発明にかかる第１のカーネル起動方法は、
複数のデバイスと、該複数のデバイス毎のデバイスドライバとを有するコンピュータにおけるカーネル起動方法であって、
前記コンピュータが、前記複数のデバイスをデバイス起動待ち時間が長いものから順に起動するデバイス起動ステップと、
前記コンピュータが、起動が完了したデバイスに対応するデバイスドライバから順に初期化するデバイスドライバ初期化ステップとを含むことを特徴とする。
【００１０】
本発明にかかる第２のカーネル起動方法は、
複数のデバイスと、該複数のデバイス毎のデバイスドライバとを有するコンピュータにおけるカーネル起動方法であって、
前記コンピュータが前記複数のデバイスをデバイス起動待ち時間が長いものから順に起動するデバイス起動ステップと、
前記コンピュータが前記デバイス起動ステップの次に実行するステップであって、デバイスに非依存なモジュールを初期化するデバイス非依存初期化ステップと、
前記コンピュータが前記デバイス非依存初期化ステップの次に実行するステップであって、前記複数のデバイスの全てで起動が完了しているか否かを判定する起動完了判定ステップと、
前記コンピュータが前記起動完了判定ステップにおいて全てのデバイスの起動が完了したと判定した後に実行するステップであって、前記複数のデバイスドライバを初期化するデバイスドライバ初期化ステップと、
前記コンピュータが前記デバイスドライバ初期化ステップの次に実行するステップであって、デバイスに依存するモジュールを初期化するデバイス依存初期化ステップとを含むことを特徴とする。
【００１１】
本発明にかかる第３のカーネル起動方法は、第１または第２のカーネル起動方法において、
前記デバイス起動ステップでは、前記複数のデバイスの内の、カーネル起動処理の完了直後に使用するデバイスのみを起動し、
前記デバイスドライバ初期化ステップでは、前記複数のデバイスドライバの内の、カーネル起動処理の完了直後に使用するデバイスドライバのみを初期化し、且つ、
前記コンピュータがカーネル起動処理の完了後に、前記複数のデバイスの内の、起動していないデバイスを起動し、その後、前記複数のデバイスドライバの内の、初期化していないデバイスドライバを初期化することを特徴とする。
【００１２】
本発明にかかる第４のカーネル起動方法は、
複数のデバイスと、該複数のデバイス毎のデバイスドライバと、複数のＣＰＵとを有するコンピュータにおけるカーネル起動方法であって、
前記複数のＣＰＵが、自ＣＰＵに割り当てられているデバイスをデバイス起動待ち時間が長いものから順に起動するデバイス起動ステップと、
前記複数のＣＰＵが前記デバイス起動ステップの次に実行するステップであって、自ＣＰＵに割り当てられているモジュールの内の、デバイスに非依存なモジュールを初期化するデバイス非依存初期化ステップと、
前記複数のＣＰＵが前記デバイス非依存初期化ステップの次に実行するステップであって、自ＣＰＵに割り当てられているデバイスの全てで起動が完了しているか否かを判定する起動完了判定ステップと、
前記複数のＣＰＵが前記起動完了ステップにおいて自ＣＰＵに割り当てられている全てのデバイスの起動が完了したと判定した後に実行するステップであって、自ＣＰＵに割り当てられているデバイスに対応するデバイスドライバを初期化するデバイスドライバ初期化ステップと、
前記複数のＣＰＵが前記デバイスドライバ初期化ステップの次に実行するステップであって、自ＣＰＵに割り当てられているモジュールの内の、デバイスに依存するモジュールを初期化するデバイス依存初期化ステップとを含むことを特徴とする。
【００１３】
本発明にかかる第５のカーネル起動方法は、
複数のデバイスと、該複数のデバイス毎のデバイスドライバとを有するコンピュータにおけるカーネル起動方法であって、
前記コンピュータが、ブートローダの実行時に前記複数のデバイスをデバイス起動待ち時間が長いものから順に起動し、全てのデバイスの起動が完了した後、カーネル起動処理を開始させるデバイス起動ステップと、
前記コンピュータが前記デバイス起動ステップの次に行うステップであって、前記デバイスドライバを初期化するデバイスドライバ初期化ステップとを含むことを特徴とする。
【００１４】
本発明にかかる第１のカーネルソースコード最適化方法は、
複数のデバイスと、該複数のデバイス毎のデバイスドライバと、カーネルソースコードが格納されたカーネルソースコード記憶部と、前記複数のデバイス毎のデバイス起動待ち時間が格納された起動待ち時間記憶部と、区画化コード記憶部と、最適化コード記憶部とを備えたコンピュータによって前記カーネルソースコードを最適化するカーネルソースコード最適化方法であって、
前記コンピュータが、前記カーネルソースコード記憶部から前記カーネルソースコードを入力し、該入力したカーネルソースコードを、デバイスに対する起動処理を行うデバイス毎の区画化コードと、デバイスドライバに対する初期化処理を行うデバイスドライバ毎の区画化コードと、他の処理を行う区画化コードとに区画化して前記区画化コード記憶部に格納する区画化分析ステップと、
前記コンピュータが、前記区画化コード記憶部から各区画化コードを入力し、該入力した区画化コードの内のデバイスに対する起動処理を行う区画化コードをデバイス起動待ち時間が長い順に配置し、その後ろに、前記複数のデバイス毎に起動が完了したか否かを判定し、起動が完了したと判定したデバイスに対応するデバイスドライバの初期化処理を開始させるコードを配置し、その後ろに、前記入力した区画化コードの内のデバイスドライバに対する初期化を行う区画化コードを配置した最適化コードを生成し、該生成した最適化コードを前記最適化コード記憶部に格納する再配置ステップとを含むことを特徴とする。
【００１５】
本発明にかかる第２のカーネルソースコード最適化方法は、第１のカーネルソースコード最適化方法において、
前記区画化分析ステップでは、前記カーネルソースコード記憶部から入力したカーネルソースコードを関数呼び出し単位で区画化することにより、区画化コードを生成することを特徴とする。
【００１６】
本発明にかかる第３のカーネルソースコード最適化方法は、第１または第２のカーネルソースコード最適化方法において、
前記コンピュータが、前記複数のデバイスそれぞれのデバイス起動待ち時間を測定し、測定したデバイス起動待ち時間を前記起動待ち時間記憶部に格納する情報採取ステップを含むことを特徴とする。
【００１７】
本発明にかかる第１のカーネルソースコード最適化装置は、
複数のデバイスと、
該複数のデバイス毎のデバイスドライバと、
カーネルソースコードが格納されたカーネルソースコード記憶部と、
前記複数のデバイス毎のデバイス起動待ち時間が格納された起動待ち時間記憶部と、
区画化コード記憶部と、
最適化コード記憶部と、
前記カーネルソースコード記憶部から前記カーネルソースコードを入力し、該入力したカーネルソースコードを、デバイスに対する起動処理を行うデバイス毎の区画化コードと、デバイスドライバに対する初期化処理を行うデバイスドライバ毎の区画化コードと、他の処理を行う区画化コードとに区画化して前記区画化コード記憶部に格納する区画化分析手段と、
前記区画化コード記憶部から各区画化コードを入力し、該入力した区画化コードの内のデバイスに対する起動処理を行う区画化コードをデバイス起動待ち時間が長い順に配置し、その後ろに、前記複数のデバイス毎に起動が完了したか否かを判定し、起動が完了したと判定したデバイスに対応するデバイスドライバの初期化処理を開始させるコードを配置し、その後ろに、前記入力した区画化コードの内のデバイスドライバに対する初期化を行う区画化コードを配置した最適化コードを生成し、生成した最適化コードを前記最適化コード記憶部に格納する再配置手段とを備えたことを特徴とする。
【００１８】
本発明にかかる第２のカーネルソースコード最適化装置は、第１のカーネルソースコード最適化装置において、
前記区画化分析手段が、前記カーネルソースコード記憶部から入力したカーネルソースコードを関数呼び出し単位で区画化することにより、区画化コードを生成することを特徴とする。
【００１９】
本発明にかかる第３のカーネルソースコード最適化装置は、第１または第２のカーネルソースコード最適化装置において、
前記複数のデバイスそれぞれのデバイス起動待ち時間を測定し、測定したデバイス起動待ち時間を前記起動待ち時間記憶部に格納する情報採取手段を備えたことを特徴とする。
【００２０】
本発明にかかるプログラムは、
複数のデバイスと、該複数のデバイス毎のデバイスドライバと、カーネルソースコードが格納されたカーネルソースコード記憶部と、前記複数のデバイス毎のデバイス起動待ち時間が格納された起動待ち時間記憶部と、区画化コード記憶部と、最適化コード記憶部とを備えたコンピュータを、
前記カーネルソースコード記憶部から前記カーネルソースコードを入力し、該入力したカーネルソースコードを、デバイスに対する起動処理を行うデバイス毎の区画化コードと、デバイスドライバに対する初期化処理を行うデバイスドライバ毎の区画化コードと、他の処理を行う区画化コードとに区画化して前記区画化コード記憶部に格納する区画化分析手段、
前記区画化コード記憶部から各区画化コードを入力し、該入力した区画化コードの内のデバイスに対する起動処理を行う区画化コードをデバイス起動待ち時間が長い順に配置し、その後ろに、前記複数のデバイス毎に起動が完了したか否かを判定し、起動が完了したと判定したデバイスに対応するデバイスドライバの初期化処理を開始させるコードを配置し、その後ろに、前記入力した区画化コードの内のデバイスドライバに対する初期化を行う区画化コードを配置した最適化コードを生成し、生成した最適化コードを前記最適化コード記憶部に格納する再配置手段として機能させる。
【００２１】
〔作用〕
カーネル起動処理において、コンピュータは、先ず、複数のデバイスをデバイス起動待ち時間が長いものから順に起動し、その後、起動が完了したデバイスに対応するデバイスドライバから順に初期化する。
【００２２】
また、既存のカーネルソースコードから上記したようなカーネル起動処理を行う最適化コードを自動的に生成するため、区画化分析手段が、カーネルソースコードを、デバイスに対する起動処理を行うデバイス毎の区画化コードと、デバイスドライバに対する初期化処理を行うデバイスドライバ毎の区画化コードと、他の処理を行う区画化コードとに区画化し、再配置手段が、区画化コードの内の、デバイスに対する起動処理を行う区画化コードをデバイス起動待ち時間が長い順に配置し、その後ろに、起動が完了したか否かを判定し、起動が完了したと判定したデバイスに対応するデバイスドライバの初期化処理を開始させるコードを配置し、その後ろに、デバイスドライバに対する初期化処理を行う区画化コードを配置した最適化コードを生成する。
【発明の効果】
【００２３】
本発明によれば、カーネル起動処理においてＣＰＵが何も実行しない無駄な時間を極力少なくすることができ、その結果、カーネル起動処理に要する時間を短縮化することが可能になる。その理由は、コンピュータがカーネル起動処理を行う際、先ず、複数のデバイスをデバイス起動待ち時間が長いものから順に起動し、その後、起動が完了したデバイスに対応するデバイスドライバから順に初期化するようにしているからである。
【００２４】
また、本発明によれば、既存のカーネルソースコードから上記したようなカーネル起動処理を行う最適化コードを生成することが可能になる。その理由は、カーネルソースコードを、デバイスに対する起動処理を行うデバイス毎の区画化コードと、デバイスドライバに対する初期化処理を行うデバイスドライバ毎の区画化コードと、他の処理を行う区画化コードとに区画化する区画化分析手段と、区画化コードの内の、デバイスに対する起動処理を行う区画化コードをデバイス起動待ち時間が長い順に配置し、その後ろに、起動が完了したか否かを判定し、起動が完了したと判定したデバイスに対応するデバイスドライバの初期化処理を開始させるコードを配置し、その後ろに、デバイスドライバに対する初期化処理を行う区画化コードを配置した最適化コードを生成する再配置手段とを備えているからである。
【発明を実施するための最良の形態】
【００２５】
次に、本発明を実施するための最良の形態について図面を参照して詳細に説明する。
【００２６】
〔本発明の第１の実施の形態の構成の説明〕
本実施の形態は、カーネル初期化処理が高速化されるように、カーネルソースコードを最適化するものである。図１を参照すると、本実施の形態を適用したコンピュータ１は、カーネル１０と、区画化分析手段２０と、再配置手段３０と、記憶装置４０と、複数のデバイス５０とを備えている。
【００２７】
記憶装置４０には、カーネルソースコード記憶部４１と、区画化コード記憶部４２と、起動待ち時間記憶部４３と、分類情報記憶部４４と、分析結果記憶部４５と、最適化コード記憶部４６と、オブジェクトコード記憶部４７とが設けられている。カーネルソースコード記憶部４１には、カーネル１０のカーネルソースコード（最適化を行う前のカーネルソースコード）が格納されている。
【００２８】
カーネル１０は、デバイス５０毎のデバイスドライバ１２を備えている。更に、カーネル１０には、各デバイス５０のデバイス起動待ち時間を測定し、起動待ち時間記憶部４３に格納する情報採取モジュール１１が組み込まれている。
【００２９】
区画化分析手段２０は、区画化手段２１と、分析手段２２とを含んでいる。
【００３０】
区画化手段２１は、カーネルソースコード記憶部４１から入力したカーネルソースコードを関数呼び出し単位で区画化することにより、区画化コードを生成し、生成した区画化コードを区画化コード記憶部４２に格納する機能を有する。なお、区画化手段２１は、カーネルソースコードを関数呼び出し単位で区画化する際、関数呼び出しで使用する引数への操作部分も同じ区画に入れる。また、区画化手段２１は、区画化コードを区画化コード記憶部４２に格納する際、各区画化コードを一意に識別する区画化コード名を付与する。区画化コードに付与する区画化コード名は、各区画化コードを一意に識別できるものならどのようなものでも構わないが、例えば、区画化時に抽出された呼び出し関数名に“REBLOCKING”などのPrefixを付けたものを、区画化コード名とすることができる。
【００３１】
分析手段２２は、分類情報記憶部４４に格納されている分類情報に基づいて、区画化コード記憶部４２に格納されている各区画化コードが、次の３つのフェーズのどのフェーズに属するものであるかを判定する機能を有する。
【００３２】
・第１フェーズ（フェーズ１）…起動コマンドの発行処理などのデバイス起動処理を行うフェーズである。
・第２フェーズ（フェーズ２）…ドライバ構造体作成処理などのデバイスドライバ初期化処理を行うフェーズである。
・第３フェーズ（フェーズ３）…デバイス起動処理、デバイスドライバ初期化処理以外の初期化処理を行うフェーズである。
【００３３】
分類情報記憶部４４には、第１フェーズおよび第２フェーズで使用される関数と、その関数の処理内容（第１フェーズで使用されるものなのか、第２フェーズで使用されるものなのかを示す）とが対応付けて登録されている。図２は、分類情報記憶部４４の内容例を示す図である。同図の例は、関数「io_device_init()」は、第１フェーズ（デバイス起動処理）で使用され、関数「io_device_driver_init()」は、第２フェーズ（デバイスドライバ初期化処理）で使用されることを示している。
【００３４】
即ち、分析手段２２は、区画化コード記憶部４２に格納されている各区画化コードの内、分類情報記憶部４４において処理内容が「デバイス起動処理（第１フェーズ）」となっている関数を含んでいるものは第１フェーズに属すると判定し、分類情報記憶部４４において処理内容が「デバイスドライバ初期化処理（第２フェーズ）」となっている関数を含んでいるものは第２フェーズに属すると判定し、分類情報記憶部４４に登録されている関数を含んでいないものは第３フェーズに属すると判定する。
【００３５】
更に、分析手段２２は、第１フェーズに属すると判定した区画化コードについては、起動待ち時間記憶部４３を参照して、その区画化コードが起動処理を担当しているデバイスのデバイス起動時間を求める機能や、分析結果記憶部４５に分析結果情報を格納する機能を有する。分析結果情報には、各区画化コードの区画化コード名と、その区画化コード名の区画化コードが属するフェーズのフェーズ識別子と、デバイス起動待ち時間（第１フェーズに属する区画化コードについてのみ）とが含まれる。なお、第１フェーズに属する各区画化コードが、どのデバイスの起動処理を担当しているかは、各区画化コード内の引数から調べることができる。
【００３６】
図３は、分析結果記憶部４５の内容例を示す図である。同図の例は、区画化コード名「Ｋ１」「Ｋ２」「Ｋ３」の区画化コードは、それぞれ第１、第２、第３フェーズに属し、区画化コード名「Ｋ１」の区画化コードによって初期化されるデバイスは、デバイス起動待ち時間が「ｔ１」であることを示している。
【００３７】
再配置手段３０は、区画化コード記憶部４２に格納されている各区画化コードと、分析結果記憶部４５の内容とに基づいて、図４に示すような最適化コード４００を生成し、それを最適化コード記憶部４６に格納する機能を有する。
【００３８】
図４を参照すると、最適化コード４００の先頭部分には、第１フェーズに属する各区画化コード４０１（各デバイス５０を起動させる区画化コード）が、デバイス起動待ち時間が長いものから順に配置されている。その後ろには、各デバイス５０毎に起動が完了したか否かを判定し、起動が完了したと判定したデバイスに対応するデバイスドライバの初期化処理を開始させる第１フェーズ完了判定コード４０２が配置されている。その後ろには、第２、第３フェーズに属する各区画化コード４０３、４０４が配置されている。
【００３９】
なお、区画化分析手段２０および再配置手段３０は、ＣＰＵ（コンピュータ）によって実現可能であり、コンピュータによって実現する場合は、例えば、次のようにする。コンピュータを、区画化分析手段２０、再配置手段３０として機能させるためのプログラムを記録したデバイス、半導体メモリ、その他の記録媒体を用意し、コンピュータに上記プログラムを読み取らせる。コンピュータは、読み取ったプログラムに従って自身の動作を制御することにより、自コンピュータ上に、区画化分析手段２０および再配置手段３０を実現する。
【００４０】
〔第１の実施の形態の動作の説明〕
次に、本実施の形態の動作について詳細に説明する。
【００４１】
本実施の形態では、図５のフローチャートに示すように、先ず、区画化手段２１による区画化処理（ステップＳ５１）が行われ、次いで、情報採取モジュール１１による情報採取処理（ステップＳ５２）が行われ、その後、分析手段２２による分析処理（ステップＳ５３）が行われ、最後に、再配置手段３０による再配置処理（ステップＳ５４）が行われる。以下では、各手段が各ステップで行う処理を詳しく説明する。
【００４２】
区画化手段２１は、図６のフローチャートに示すように、カーネルソースコード記憶部４１からカーネルソースコードを入力し（ステップＳ６１）、入力したカーネルソースコードを関数呼び出し単位で区画化することにより、区画化コードを生成する（ステップＳ６２）。その際、区画化手段２１は、関数呼び出しで使用する引数への操作部分も同じ区画に入れる。その後、区画化手段２１は、各区画化コードにそれぞれユニークな区画化コード名を付加して区画化コード記憶部４２に格納する（ステップＳ６３）。
【００４３】
図７に区画化コード記憶部４２の内容例を示す。同図の例は、ｎ個の区画化コード４２−１〜４２−ｎがそれぞれ区画化コード名「Ｋ１」〜「Ｋｎ」を付加されて区画化コード記憶部４２に登録されていることを示している。
【００４４】
区画化手段２１による区画化処理（図５のステップＳ５１）が完了すると、情報採取モジュール１１による情報採取処理（ステップＳ５２）が行われる。
【００４５】
この情報採取処理では、まだ最適化が実施されていないカーネル１０に対し、情報採取モジュール１１を組み込んだ上でテストランという形で一度カーネル起動処理を実施する。情報採取モジュール１１では、テストランの間に、各デバイス５０のデバイス起動待ち時間を測定し（図８のステップＳ８１）、各デバイスのデバイスＩＤと測定したデバイス起動待ち時間とを対応付けて起動待ち時間記憶部４３に格納する（ステップＳ８２）。
【００４６】
情報採取モジュール１１による情報採取処理（図５のステップＳ５２）が完了すると、分析手段２２による分析処理（ステップＳ５３）が実行される。
【００４７】
分析手段２２は、図９のフローチャートに示すように、先ず、区画化コード記憶部４２（図７参照）から各区画化コード４２−１〜４２−ｎを入力し（ステップＳ９１）、次いで、分類情報記憶部４４（図２参照）から関数と処理内容との対からなる分類情報を入力する（ステップＳ９２）。
【００４８】
次いで、分析手段２２は、分類情報記憶部４４から入力した分類情報に基づいて、各区画化コード４２−１〜４２−ｎが属するフェーズを判定する（ステップＳ９３）。具体的には、区画化コード４２−１〜４２−ｎの内、入力した分類情報において処理内容が「デバイス起動処理（第１フェーズ）」「デバイスドライバ初期化処理（第２フェーズ）」となっている関数を含んでいる区画化コードは、それぞれ第１フェーズ、第２フェーズに属すると判定し、分類情報中の関数を含んでいない区画化コードは、第３フェーズに属すると判定する。
【００４９】
その後、分析手段２２は、起動待ち時間記憶部４３から各デバイス５０のデバイス起動待ち時間を入力し（ステップＳ９４）、第１フェーズに属する各区画化コード毎に、その区画化コードが起動処理を受け持っているデバイスのデバイス起動時間を求める（ステップＳ９５）。
【００５０】
そして、最後に、分析手段２２は、各区画化コード４２−１〜４２−ｎの区画化コード名「Ｋ１」〜「Ｋｎ」と、その区画化コード名の区画化コードが属するフェーズのフェーズ識別子と、デバイス起動待ち時間（第１フェーズに属する区画化コードのみ）とからなる分析結果情報を、分析結果記憶部４５に格納する（ステップＳ９６）。
【００５１】
分析手段２２による分析処理（図５のステップＳ５３）が完了すると、再配置手段３０による再配置処理（ステップＳ５４）が実行される。
【００５２】
再配置手段３０は、図１０のフローチャートに示すように、先ず、分析結果情報記憶部４５（図３参照）から分析結果情報を入力し（ステップＳ１０１）、次いで、区画化コード記憶部（図７参照）から区画化コード名が付加された区画化コード４２−１〜４２−ｎを入力する（ステップＳ１０２）。
【００５３】
次いで、再配置手段３０は、入力した分析結果情報と、区画化コード４２−１〜４２−ｎとに基づいて、図４に示すような最適化コード４００を生成する（ステップＳ１０３）。
【００５４】
即ち、再配置手段３０は、デバイス起動待ち時間が長いデバイスから順にデバイス起動処理が行われるように、第１フェーズに属する各区画化コード４０１（各デバイス５０の起動処理を行う区画化コード）をデバイス起動待ち時間が長いものから順に配置する。デバイス起動待ち時間が長いデバイスから順にデバイス起動処理を行うようにするのは、ＣＰＵが何もしない無駄な時間を極力少なくし、カーネル起動処理に要する時間を短縮化するためである。
【００５５】
この次に、デバイス５０の起動が完了した後に、対応するデバイスドライバ１２の初期化処理が行われるようにするために、各デバイス５０毎に起動が完了したか否かを判定し、起動が完了したと判定したデバイス５０に対応するデバイスドライバ１２の初期化処理を開始させる第１フェーズ完了判定コード４０２を配置する。
【００５６】
第１フェーズ完了判定コード４０２の次には、第２フェーズに属する区画化コード（デバイスドライバ１２の初期化処理を行う区画化コード）４０３を配置する。更に、第２フェーズの処理が完了した後、第３フェーズの処理が行われるように、第３フェーズに属する区画化コードを配置する。
【００５７】
この再配置を行った結果として最適化コード４００が生成される。ここでの最適化コード４００は、カーネルソースコード記憶部４１に格納されているカーネルソースコードと同等のソースコードであるので最適化コード４００を用いてカーネルのビルドが可能である。最適化コード４００を使用してカーネルのビルドを行えば、カーネル起動処理全体について高速化が図れるように処理の再配置が行われたカーネルが作成可能となり、カーネル起動処理の高速化としての目的が達成される。
【００５８】
そして、最後に、再配置手段３０は、生成した最適化コード４００を最適化コード記憶部４６に格納する（ステップＳ１０４）。
【００５９】
〔本実施の形態のカーネル起動処理の説明〕
次に、図１１を参照して、最適化コード４００を利用したカーネル起動処理１００について説明する。なお、カーネル起動処理１００は、ＣＰＵ（図示せず）が、最適化コード４００をコンパイルしたオブジェクトコードを実行することにより行われるものであり、上記オブジェクトコードは、オブジェクトコード記憶部４７に格納されている。
【００６０】
カーネル起動処理１００においては、先ず、第１フェーズ（フェーズ１）２０１が実行される。第１フェーズ２０１においては、各デバイス５０が、デバイス起動待ち時間が長い順に起動される。
【００６１】
第１フェーズ２０１が完了すると、第１フェーズ完了判定処理２０３により、各デバイス５０毎に、デバイスの起動が完了したか否かを判定する。この判定は、デバイス５０に対しての「ポーリング」によるデバイス起動判定や、デバイス起動完了後に割り込みが発生するデバイス５０に関しては「デバイスからの割り込み発生」による判定などを指す。そして、起動完了が確認できたデバイス５０については、そのデバイス５０に対応するデバイスドライバ１２の初期化処理（第２フェーズ）を開始させる。
【００６２】
第２フェーズ（フェーズ２）２０４において、全てのデバイスドライバ１２に対する初期化処理（ドライバ構造体作成処理など）が完了すると、第３フェーズ（メモリ初期化処理などのその他の初期化処理）２０５が実行される。
【００６３】
なお、上述した説明では、図５の区画化処理（ステップＳ５１）、分析処理（ステップＳ５３）において、区画化手段２１、分析手段２２がそれぞれ図６、図９のフローチャートに示す処理を行うようにしたが、区画化手段２１、分析手段２２がそれぞれ図１２、図１３のフローチャートに示す処理を行うようにしても良い。
【００６４】
区画化手段２１は、図１２のフローチャートに示すように、カーネルソースコード記憶部４１からカーネルソースコードを入力し（ステップＳ１２１）、入力したカーネルソースコードを関数呼び出し単位で区画化することにより、区画化コードを生成する（ステップＳ１２２）。その際、区画化手段２１は、関数呼び出しで使用する引数への操作部分も同じ区画に入れる。
【００６５】
その後、区画化手段２１は、分類情報記憶部４４（図２参照）から分類情報を入力し、この分類情報に基づいて、各区画化コードが第１フェーズ〜第３フェーズのどのフェーズに属するか判定する（ステップＳ１２３、Ｓ１２４）。その後、区画化手段２１は、各区画化コードに、その区画化コードが属するフェーズのフェーズ識別子と、ユニークな区画化コード名とを付加して区画化コード記憶部４２に格納する（ステップＳ１２５）。
【００６６】
図１４に区画化コード記憶部４２の内容例を示す。同図の例は、ｎ個の区画化コード４２−１〜４２−ｎがそれぞれ区画化コード名「Ｋ１」〜「Ｋｎ」を付加されて区画化コード記憶部４２に登録されていることを示すと共に、区画化コード４２−１、４２−２、４２−ｎがそれぞれ第１フェーズ（Ｆ１）、第２フェーズ（Ｆ２）、第３フェーズ（Ｆ３）に属していることを示している。
【００６７】
一方、分析手段２２は、図１３のフローチャートに示すように、先ず、区画化コード記憶部４２（図１４参照）から、区画化コード名およびフェーズ識別子が付加された区画化コード４２−１〜４２−ｎを入力し(ステップＳ１３１)、次いで、起動待ち時間記憶部４３から各デバイス５０のデバイス起動待ち時間を入力する（ステップＳ１３２）。その後、分析手段２２は、第１フェーズに属する各区画化コード毎に、その区画化コードが起動処理を受け持っているデバイスのデバイス起動待ち時間を求める（ステップＳ１３３）。そして、最後に、分析手段２２は、各区画化コード４２−１〜４２−ｎの区画化コード名「Ｋ１」〜「Ｋｎ」と、その区画化コード名の区画化コードが属するフェーズのフェーズ識別子と、デバイス起動待ち時間（第１フェーズに属する区画化コードのみ）とからなる分析結果情報を、分析結果記憶部４５に格納する（ステップＳ１３４）。
【００６８】
〔第１の実施の形態の効果〕
本実施の形態によれば、カーネル起動処理においてＣＰＵが何も実行しない無駄な時間を極力少なくすることができ、その結果、カーネル起動処理に要する時間を短縮化することが可能になる。その理由は、コンピュータ１がカーネル起動処理１００を行う際、先ず、複数のデバイスをデバイス起動待ち時間が長いものから順に起動し、その後、起動が完了したデバイスに対応するデバイスドライバから順に初期化するようにしているからである。
【００６９】
また、本実施の形態によれば、既存のカーネルソースコードから上記したようなカーネル起動処理を行う最適化コードを生成することが可能になる。その理由は、カーネルソースコードを、デバイスに対する起動処理を行うデバイス毎の区画化コードと、デバイスドライバに対する初期化処理を行うデバイスドライバ毎の区画化コードと、他の処理を行う区画化コードとに区画化する区画化分析手段２０と、区画化コードの内の、デバイスに対する起動処理を行う区画化コードをデバイス起動待ち時間が長い順に配置し、その後ろに、起動が完了したか否かを判定し、起動が完了したと判定したデバイスに対応するデバイスドライバの初期化処理を開始させるコードを配置し、その後ろに、デバイスドライバに対する初期化を行う区画化コードを配置し、その後ろに、他の処理を行う区画化コードを配置した最適化コードを生成する再配置手段３０とを備えているからである。
【００７０】
〔本発明の第２の実施の形態〕
次に、本発明の第２の実施の形態について説明する。図１５は本実施の形態にかかるカーネル起動方法を説明するための図であり、本実施の形態のカーネル起動処理１００においては、第１フェーズ２０１、デバイスに非依存な初期化処理２０２、第１フェーズ完了判定処理２０３ａ、第２フェーズ２０４、デバイスに依存する初期化処理２０６が順次実行される。
【００７１】
第１フェーズ２０１においては、各デバイス５０に対するデバイス起動処理を、デバイス起動待ち時間が長いものから順に実行する。
【００７２】
第１フェーズ２０１の完了後、デバイスに非依存な初期化処理２０２を実行する。デバイスに非依存な初期化処理２０２においては、デバイス起動処理およびデバイスドライバ初期化処理を除いた初期化処理（図１９におけるその他の初期化処理１０１）の内の、デバイスの状態によらずカーネル起動処理１００内の任意のタイミングで実行可能な初期化処理を実行する。即ち、カーネル起動処理１００の任意のタイミングで初期化処理を行うことができるモジュールに対する初期化処理を行う。
【００７３】
ここで、第１フェーズ２０１において、デバイス起動待ち時間が長いデバイスから順に起動するようにした理由は、最も長いデバイスの起動待ち時間１０３の間に他のデバイスのデバイス起動処理を行うことで、待ち時間の相殺を行うことが可能となるからであり、逆に、デバイス起動待ち時間が短いデバイスから起動を行う場合で、最も長いデバイスの起動待ち時間１０３よりデバイスに非依存な初期化処理２０２にかかる時間が短かった場合には、ＣＰＵとしては何も処理しない無駄な待ち合わせ時間が発生するからである。
【００７４】
デバイスに非依存な初期化処理２０２の完了後、第１フェーズ完了判定処理２０３ａを実行する。第１フェーズ完了判定処理２０３ａでは、全てのデバイス５０の起動が完了したか否かを判定する。即ち、第１フェーズ完了判定処理２０３ａでは、第２フェーズ２０４へ移行するための必要条件の判定を行う。
【００７５】
第１フェーズ完了判定処理２０３ａにおいて、全てのデバイス５０の起動完了が確認できた場合、第２フェーズ２０４を実行する。第２フェーズ２０４では、各デバイスドライバ１２に対する初期化処理（ドライバ構造体作成処理など）を実行する。
【００７６】
そして、最後に、デバイスドライバの初期化完了後に実行可能となるデバイスに依存する初期化処理２０６を行う。即ち、デバイスドライバの初期化処理が完了しなければ初期化処理を行うことができないモジュールに対する初期化処理を行う。
【００７７】
なお、上記した処理は、カーネルソースコードをコンパイルしたオブジェクトコードを実行するＣＰＵによって行われる。
【００７８】
〔第２の実施の形態の効果〕
本実施の形態によれば、カーネル起動処理においてＣＰＵが何も実行しない無駄な時間を極めて少なくすることができ、その結果、カーネル起動処理に要する時間を短縮化することが可能になる。その理由は、各デバイス５０をデバイス起動待ち時間が長いものから順に起動する第１フェーズ２０１の次に、デバイスに非依存な初期化処理２０２を行うようにしているからである。
【００７９】
〔本発明の第３の実施の形態〕
本実施の形態は、カーネル起動処理において初期化の必要性が無いデバイスに関しては、カーネル起動処理の完了後に初期化を実施することにより、カーネル起動処理に要する時間を短縮化したことを特徴とする。
【００８０】
コンピュータが備えているデバイスは、カーネル起動直後に必要となるデバイスと、必要では無いデバイスとの２種類に分類することができる。本実施の形態では、カーネル起動直後に必要となるデバイスについては、カーネル起動処理におけるドライバ初期化処理内で実行し、カーネル起動完了直後に必要では無いデバイスに対しての初期化処理は、カーネル起動完了後に行うようにする。
【００８１】
今、コンピュータが第１デバイス（デバイス１）〜第３デバイス（デバイス３）の３台のデバイスを備え、且つ第３デバイスがカーネル起動直後に必要でないデバイスであったとする。また、第１デバイスのデバイス起動待ち時間よりも、第２デバイスのデバイス起動待ち時間の方が長いとする。
【００８２】
本実施の形態では、図１６に示すように、カーネル起動処理１００のドライバ初期化処理１０２において、先ず、第２デバイスに対するデバイス起動処理１０２−１が行われ、第２デバイスのデバイス起動待ち時間１０３の間に、第１デバイスに対するデバイス起動処理１０２−２、第１デバイスに対応するデバイスドライバに対する初期化処理１０２−３が順次行われる。そして、第２デバイスの起動が完了すると、第２デバイスに対応するデバイスドライバに対する初期化処理１０２−４が行われる。
【００８３】
カーネル起動完了直後に必要のない第３デバイスに対するデバイス起動処理１０２−５、および第３デバイスに対応するデバイスドライバに対するデバイスドライバ初期化処理１０２−６は、カーネル起動処理１００が完了した後に行う。なお、図１５に示した第２の実施の形態に本実施の形態を適用する様にしても良い。
【００８４】
〔第３の実施の形態の効果〕
本実施の形態によれば、カーネル起動完了直後に使用しないデバイス、デバイスドライバに対する起動処理１０２−５、初期化処理１０２−６は、カーネル起動処理１００の完了後に行うようにしているので、カーネル起動処理１００に要する時間を短くすることができる。
【００８５】
〔本発明の第４の実施の形態〕
本実施の形態は、ＣＰＵを複数有するコンピュータにおいて、各ＣＰＵが処理を並行して行うことにより、カーネル起動処理に要する時間を短縮化させることを特徴とする。
【００８６】
図１７は、ＣＰＵ１〜ＣＰＵ４の４台のＣＰＵを有するコンピュータにおけるカーネル起動処理１００を示した図である。
【００８７】
先ず、各ＣＰＵ１〜ＣＰＵ４が、それぞれ、自ＣＰＵに割り当てられているデバイスに対するデバイス起動処理「フェーズ１−１〜フェーズ１−４」２０１を並行して行う。その際、各ＣＰＵ１〜ＣＰＵ４は、デバイス起動待ち時間が長いものから順にデバイス起動処理を行う。
【００８８】
次いで、各ＣＰＵ１〜ＣＰＵ４が、自ＣＰＵに割り当てられているモジュールの内の、デバイスに非依存なモジュールに対する初期化処理２０２を行う。
【００８９】
その後、各ＣＰＵ１〜ＣＰＵ４が、自ＣＰＵに割り当てられている全てのデバイスの起動が完了したか否かを判定するフェーズ１完了判定処理２０３を行う。
【００９０】
そして、自ＣＰＵに割り当てられている全てのデバイスの起動が完了していると判定したＣＰＵから順に、自ＣＰＵに割り当てられているデバイスに対応するデバイスドライバのデバイスドライバ初期化処理「フェーズ２−１〜２−４」２０４を行う。
【００９１】
最後に、デバイスドライバの初期化処理が完了したＣＰＵから順に、自ＣＰＵに割り当てられているモジュールの内の、デバイスに依存するモジュールの初期化処理２０５を行う。
【００９２】
〔第４の実施の形態の効果〕
本実施の形態によれば、複数のＣＰＵが並行してカーネル起動処理１００を行うので、カーネル起動処理１００に要する時間を短縮化することができる。
【００９３】
〔第５の実施の形態〕
次に、本発明の第５の実施の形態について説明する。本実施の形態は、コンピュータが、ブートローダの実行時に、デバイスに対するデバイス起動処理を行うことにより、カーネル起動処理に要する時間を短縮化したことを特徴とする。
【００９４】
本実施の形態では、図１８に示すように、コンピュータがブートローダの実行時、第１デバイス〜第３デバイスに対するデバイス起動処理１０２−１〜１０２−３を実行する。なお、各デバイスのデバイス起動待ち時間は、第１デバイスが最も長く、第３デバイスが最も短いとする。その後、ブートローダの本来の処理であるカーネル起動処理１００を開始させる処理を行う。このブートローダ実行中というタイミングにおいてデバイスのデバイス起動処理１０２−１〜１０２−３の実行を前倒しすることにより、デバイスの起動待ちという時間の間、他の処理１０１を行うことで、無駄な待ち時間を相殺する。その後、カーネル起動処理１００のドライバ初期化処理１０２において、各デバイスドライバの初期化処理１０２−４〜１０２−６を実行する。
【００９５】
〔第５の実施の形態の効果〕
本実施の形態によれば、コンピュータがブートローダの実行時に、デバイスに対するデバイス起動処理１０２−１〜１０２−３を行うようにしているので、カーネル起動処理１００に要する時間を短くすることができる。
【産業上の利用可能性】
【００９６】
本発明によりカーネル起動の高速化が可能となるため、即応性が必要な組み込み機器を用いたシステムに適用出来る。また、組み込み以外でも、オペレーティングシステムが存在し、起動時にカーネルによりデバイスの初期化を実施するシステム全般に適用可能である。
【図面の簡単な説明】
【００９７】
【図１】本発明の第１の実施の形態の構成例を示すブロック図である。
【図２】分類情報記憶部４４の内容例を示す図である。
【図３】分析結果記憶部４５の内容例を示す図である。
【図４】最適化コード４００の一例を示す図である。
【図５】第１の実施の形態の処理の概要を示すフローチャートである。
【図６】区画化手段２１の処理例を示すフローチャートである。
【図７】区画化コード記憶部４２の内容例を示す図である。
【図８】情報採取モジュール１１の処理例を示すフローチャートである。
【図９】分析手段２２の処理例を示すフローチャートである。
【図１０】再配置手段３０の処理例を示すフローチャートである。
【図１１】第１の実施の形態におけるカーネル起動方法を説明するための図である。
【図１２】区画化手段２１が行う他の処理例を示すフローチャートである。
【図１３】分析手段２２が行う他の処理例を示すフローチャートである。
【図１４】区画化コード記憶部４２の内容例を示す図である。
【図１５】本発明の第２の実施の形態にかかるカーネル起動方法を説明するための図である。
【図１６】本発明の第３の実施の形態にかかるカーネル起動方法を説明するための図である。
【図１７】本発明の第４の実施の形態にかかるカーネル起動方法を説明するための図である。
【図１８】本発明の第５の実施の形態にかかるカーネル起動方法を説明するための図である。
【図１９】従来の一般的なカーネル起動方法を説明するための図である。
【図２０】特許文献１に記載されている従来の技術を説明するための図である。
【符号の説明】
【００９８】
１…コンピュータ
１０…カーネル
１１…情報採取モジュール
１２…デバイスドライバ
２０…区画化分析手段
２１…区画化手段
２２…分析手段
３０…再配置手段
４０…記憶装置
４１…カーネルソースコード記憶部
４２…区画化コード記憶部
４３…起動待ち時間記憶部
４４…分類情報記憶部
４５…分析結果記憶部
４６…最適化コード記憶部
４７…オブジェクトコード記憶部
【図１】
2008225717.tif 000003
【図２】
2008225717.tif 000004
【図３】
2008225717.tif 000005
【図４】
2008225717.tif 000006
【図５】
2008225717.tif 000007
【図６】
2008225717.tif 000008
【図７】
2008225717.tif 000009
【図８】
2008225717.tif 000010
【図９】
2008225717.tif 000011
【図１０】
2008225717.tif 000012
【図１１】
2008225717.tif 000013
【図１２】
2008225717.tif 000014
【図１３】
2008225717.tif 000015
【図１４】
2008225717.tif 000016
【図１５】
2008225717.tif 000017
【図１６】
2008225717.tif 000018
【図１７】
2008225717.tif 000019
【図１８】
2008225717.tif 000020
【図１９】
2008225717.tif 000021
【図２０】
2008225717.tif 000022