(57)【要約】【課題】マルチコアＣＰＵ構成の組込み機器において、初期起動ＯＳが通常動作状態になった後でも、任意ＯＳの起動を可能にする。【解決手段】初期起動ＯＳ３００が通常動作状態になった後に被起動ＯＳ４００の起動が要求された場合に、ハードウェア管理手段２０３が、現在のハードウェア資源の割り当て状況を通知する。ハードウェア割り当て手段３０１が、ＯＳの起動に必要なハードウェア資源が示されている被起動ＯＳ用ハードウェア情報テーブル２５３を参照し、被起動ＯＳ４００の起動に必要なハードウェア資源を判断し、ハードウェア管理手段２０３から通知されたハードウェア資源の割り当て状況と被起動ＯＳの起動に必要なハードウェア資源とに基づき被起動ＯＳにハードウェア資源を割り当てる。ＯＳ起動手段２０１は、ハードウェア割り当て手段３０１により割り当てられたハードウェア資源を用いて被起動ＯＳ４００を起動する。【選択図】図１
2008033877.tif 000002
【特許請求の範囲】
【請求項１】
複数のＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）を有し、前記複数のＯＳに割り当てるハードウェア資源を備える情報処理装置であって、
ハードウェア資源の割り当て状況を管理し、いずれかのＯＳの起動が要求された場合に、ハードウェア資源の割り当て状況を通知するハードウェア管理手段と、
いずれかのＯＳの起動が要求された場合に、起動に必要なハードウェア資源がＯＳごとに示されている起動ハードウェア資源情報を参照し、起動が要求された被起動ＯＳの起動に必要なハードウェア資源を判断し、前記ハードウェア管理手段からハードウェア資源の割り当て状況を通知され、前記ハードウェア管理手段から通知されたハードウェア資源の割り当て状況と被起動ＯＳの起動に必要なハードウェア資源とに基づき被起動ＯＳに割り当てるハードウェア資源を選択し、選択したハードウェア資源を被起動ＯＳに割り当てるハードウェア割り当て手段と、
前記ハードウェア割り当て手段により割り当てられたハードウェア資源を用いて被起動ＯＳを起動するＯＳ起動手段とを有することを特徴とする情報処理装置。
【請求項２】
前記ハードウェア割り当て手段は、
前記複数のＯＳの中で最初に起動される初期起動ＯＳが起動されて初期起動ＯＳが通常動作状態になった後に他のいずれかのＯＳの起動が要求された場合に、起動が要求された被起動ＯＳに割り当てるハードウェア資源を選択し、選択したハードウェア資源を被起動ＯＳに割り当てることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記ハードウェア管理手段は、
ハードウェア資源の割り当て状況を示すハードウェア割り当て状況情報を管理し、
前記ハードウェア割り当て手段による被起動ＯＳに対するハードウェア資源の割り当て後に、被起動ＯＳに対するハードウェア資源の割り当てを反映させてハードウェア割り当て状況情報を更新することを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記情報処理装置は、
複数のＯＳの中で最初に起動される初期起動ＯＳに、前記ハードウェア割り当て手段が含まれ、
前記初期起動ＯＳは、自己の起動後に起動が要求された被起動ＯＳに対して前記ハードウェア割り当て手段によりハードウェア資源を割り当てることを特徴とする請求項１に記載の情報処理装置。
【請求項５】
前記情報処理装置は、
各ＯＳに、前記ハードウェア割り当て手段が含まれ、
各ＯＳは、自己の起動後に起動が要求された被起動ＯＳに対して前記ハードウェア割り当て手段によりハードウェア資源を割り当てることを特徴とする請求項１に記載の情報処理装置。
【請求項６】
前記情報処理装置は、更に、
割り当てが要請されている要請ハードウェア資源がＯＳごとに示されている要請ハードウェア資源情報と前記起動ハードウェア資源情報とを比較し、被起動ＯＳの要請ハードウェア資源で被起動ＯＳの起動が可能であるか否かを判断するハードウェア資源判断手段を有し、
前記ハードウェア割り当て手段は、
前記ハードウェア資源判断手段により、被起動ＯＳの要請ハードウェア資源で被起動ＯＳの起動が可能であると判断された場合に、前記ハードウェア管理手段から通知されたハードウェア資源の割り当て状況と被起動ＯＳの要請ハードウェア資源とに基づき被起動Ｏ
Ｓに割り当てるハードウェア資源を選択することを特徴とする請求項１に記載の情報処理装置。
【請求項７】
前記ハードウェア管理手段は、
ハードウェア資源の割り当て状況及びハードウェア資源の使用状況を管理し、いずれかのＯＳの起動が要求された場合に、ハードウェア資源の割り当て状況及びハードウェア資源の使用状況を通知し、
前記ハードウェア割り当て手段は、
前記ハードウェア管理手段からハードウェア資源の割り当て状況及びハードウェア資源の使用状況を通知され、前記ハードウェア管理手段から通知されたハードウェア資源の割り当て状況及びハードウェア資源の使用状況と被起動ＯＳの起動に必要なハードウェア資源とに基づき被起動ＯＳに割り当てるハードウェア資源を選択することを特徴とする請求項１に記載の情報処理装置。
【請求項８】
前記ハードウェア割り当て手段は、
既に他に割り当て済みであるが現在使用されていない状態にあるハードウェア資源を、被起動ＯＳに割り当てるハードウェア資源として選択することを特徴とする請求項７に記載の情報処理装置。
【請求項９】
前記情報処理装置は、
マルチコアＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）構成の組込み機器であることを特徴とする請求項１に記載の情報処理装置。
【請求項１０】
複数のＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）を有し、前記複数のＯＳに割り当てるハードウェア資源を備える情報処理装置においてＯＳを起動するＯＳ起動方法であって、
ハードウェア資源の割り当て状況を管理し、いずれかのＯＳの起動が要求された場合に、ハードウェア資源の割り当て状況を通知するハードウェア管理ステップと、
いずれかのＯＳの起動が要求された場合に、起動に必要なハードウェア資源がＯＳごとに示されている起動ハードウェア資源情報を参照し、起動が要求された被起動ＯＳの起動に必要なハードウェア資源を判断し、前記ハードウェア管理ステップからハードウェア資源の割り当て状況を通知され、前記ハードウェア管理ステップから通知されたハードウェア資源の割り当て状況と被起動ＯＳの起動に必要なハードウェア資源とに基づき被起動ＯＳに割り当てるハードウェア資源を選択し、選択したハードウェア資源を被起動ＯＳに割り当てるハードウェア割り当てステップと、
前記ハードウェア割り当てステップにより割り当てられたハードウェア資源を用いて被起動ＯＳを起動するＯＳ起動ステップとを有することを特徴とするＯＳ起動方法。
【請求項１１】
複数のＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）を有し、前記複数のＯＳに割り当てるハードウェア資源を備えるコンピュータに、
ハードウェア資源の割り当て状況を管理し、いずれかのＯＳの起動が要求された場合に、ハードウェア資源の割り当て状況を通知するハードウェア管理処理と、
いずれかのＯＳの起動が要求された場合に、起動に必要なハードウェア資源がＯＳごとに示されている起動ハードウェア資源情報を参照し、起動が要求された被起動ＯＳの起動に必要なハードウェア資源を判断し、前記ハードウェア管理処理からハードウェア資源の割り当て状況を通知され、前記ハードウェア管理処理から通知されたハードウェア資源の割り当て状況と被起動ＯＳの起動に必要なハードウェア資源とに基づき被起動ＯＳに割り当てるハードウェア資源を選択し、選択したハードウェア資源を被起動ＯＳに割り当てるハードウェア割り当て処理と、
前記ハードウェア割り当て処理により割り当てられたハードウェア資源を用いて被起動
ＯＳを起動するＯＳ起動処理とを実行させることを特徴とするプログラム。
【請求項１２】
前記ハードウェア割り当て手段は、
前記被起動ＯＳの起動が要求された際に既に起動されている起動済みＯＳが少なくとも一つ存在する場合に、前記起動済みＯＳに割り当て済みのハードウェア資源の前記起動済みＯＳにおける使用状況を前記ハードウェア管理手段に問合せ、前記ハードウェア管理手段からの応答に基づき、前記被起動ＯＳに割り当てるハードウェア資源を選択し、
前記ハードウェア管理手段は、
前記ハードウェア割り当て手段からの問合せに対して、前記起動済みＯＳにおける割り当て済みのハードウェア資源の使用状況を調査し、調査結果を示す応答を前記ハードウェア割り当て手段に対して行うことを特徴とする請求項１に記載の情報処理装置。
【請求項１３】
前記ハードウェア割り当て手段は、
前記ハードウェア管理手段から通知されたハードウェア資源の割り当て状況と前記被起動ＯＳの起動に必要なハードウェア資源とを比較した結果、前記被起動ＯＳの起動に必要なハードウェア資源の少なくとも一部が割り当てできないと判断した場合に、前記起動済みＯＳにおける割り当て済みのハードウェア資源の使用状況を前記ハードウェア管理手段に問合せることを特徴とする請求項１２に記載の情報処理装置。
【請求項１４】
前記ハードウェア割り当て手段は、
前記起動済みＯＳにおいて前記被起動ＯＳの起動に必要なハードウェア資源が使用されていない場合に、前記起動済みＯＳにおいて使用されていないハードウェア資源を前記被起動ＯＳに割り当てるハードウェア資源として選択することを特徴とする請求項１２に記載の情報処理装置。
【請求項１５】
前記情報処理装置は、更に、
前記ハードウェア割り当て手段に対して、既に起動されている特定の起動済みＯＳに特定種類のハードウェア資源を追加割り当てするよう指示するハードウェア追加指示手段を有し、
前記ハードウェア割り当て手段は、
前記ハードウェア追加指示手段から前記特定の起動済みＯＳへの前記特定種類のハードウェア資源の追加割り当て指示があった場合であって、前記特定の起動済みＯＳ以外に起動済みＯＳが存在する場合に、前記特定の起動済みＯＳ以外の他の起動済みＯＳに割り当て済みのハードウェア資源の前記他の起動済みＯＳにおける使用状況を前記ハードウェア管理手段に問合せ、前記ハードウェア管理手段からの応答に基づき、前記特定の起動済みＯＳに追加割り当てをするハードウェア資源を選択し、
前記ハードウェア管理手段は、
前記ハードウェア割り当て手段からの問合せに対して、前記他の起動済みＯＳにおける割り当て済みのハードウェア資源の使用状況を調査し、調査結果を示す応答を前記ハードウェア割り当て手段に対して行うことを特徴とする請求項１に記載の情報処理装置。
【請求項１６】
前記ハードウェア割り当て手段は、
前記他の起動済みＯＳにおいて前記特定種類のハードウェア資源が使用されていない場合に、前記他の起動済みＯＳにおいて使用されていない前記特定種類のハードウェア資源を前記特定の起動済みＯＳに追加割り当てをするハードウェア資源として選択することを特徴とする請求項１５に記載の情報処理装置。
【請求項１７】
前記情報処理装置は、更に、
既に起動されている特定の起動済みＯＳから特定種類のハードウェア資源の割り当てを解除しても前記特定の起動済みＯＳの継続動作が可能か否かを、前記特定の起動済みＯＳの起動ハードウェア資源情報を参照して判断し、前記特定種類のハードウェア資源の割り当てを解除しても前記特定の起動済みＯＳの継続動作が可能な場合に、前記ハードウェア割り当て手段に対して前記特定の起動済みＯＳにおける前記特定種類のハードウェア資源の割り当てを解除するよう指示するハードウェア解除指示手段を有し、
前記ハードウェア割り当て手段は、
前記ハードウェア解除指示手段からの指示に従い、前記特定の起動済みＯＳにおける前記特定種類のハードウェア資源の割り当てを解除することを特徴とする請求項１に記載の情報処理装置。
【請求項１８】
前記ハードウェア割り当て手段は、
少なくとも一つの起動済みＯＳにおいて複数の同種のハードウェア資源が使用されていないと判断され、前記複数の同種のハードウェア資源が前記被起動ＯＳの起動に必要なハードウェア資源である場合に、前記複数の同種のハードウェア資源の各々に対する優先度に基づいて、前記複数の同種のハードウェア資源のうちのいずれかを前記被起動ＯＳに割り当てることを特徴とする請求項１２に記載の情報処理装置。
【請求項１９】
前記情報処理装置は、更に、
前記ハードウェア割り当て手段からの問合せに従い、前記複数の同種のハードウェア資源の各々が割り当てられている起動済みＯＳの優先度、及び前記複数の同種のハードウェア資源の各々が割り当てられているタスクの優先度の少なくともいずれかを用いて、前記複数の同種のハードウェア資源の各々に対する優先度を判断する優先度判断手段を有し、
前記ハードウェア割り当て手段は、
前記優先度判断手段による優先度の判断に基づいて、前記複数の同種のハードウェア資源のうちのいずれかを前記被起動ＯＳに割り当てることを特徴とする請求項１８に記載の情報処理装置。
【請求項２０】
前記ハードウェア割り当て手段は、
いずれの起動済みＯＳにおいても特定種類のハードウェア資源の空きがない場合に、各起動済みＯＳに割り当てられている前記特定種類のハードウェア資源に対する優先度に基づいて、いずれかの前記特定種類のハードウェア資源を前記被起動ＯＳに割り当てることを特徴とする請求項１２に記載の情報処理装置。
【請求項２１】
前記情報処理装置は、更に、
前記ハードウェア割り当て手段からの問合せに従い、各起動済みＯＳについて、前記特定種類のハードウェア資源の割り当てを解除しても継続動作が可能か否かを、各起動済みＯＳの起動ハードウェア資源情報を参照して判断し、継続動作が可能な起動済みＯＳに割り当てられている前記特定種類のハードウェア資源に対する優先度を判断する優先度判断手段を有し、
前記ハードウェア割り当て手段は、
前記優先度判断手段による優先度の判断に基づいて、いずれかの前記特定種類のハードウェア資源を前記被起動ＯＳに割り当てることを特徴とする請求項２０に記載の情報処理装置。
【請求項２２】
前記優先度判断手段は、
各起動済みＯＳの優先度、及び各起動済みＯＳにおいて前記特定種類のハードウェア資源が割り当てられているタスクの優先度の少なくともいずれかを用いて、前記特定種類のハードウェア資源の各々に対する優先度を判断することを特徴とする請求項２１に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）を起動する技術に関し、例えば、マルチコアプロセッサ構成の組込み機器において複数のＯＳを起動する技術に関する。
【背景技術】
【０００２】
近年、家電などの組込み機器では、従来機種に対する付加機能の追加など、システムの高機能化のため、処理能力向上に対する要求がある。こうした要求に対して、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）の演算処理部（コア）を複数にすることで、消費電力の上昇を抑えながら、処理能力の向上を図る、マルチコア方式が導入されている。
【０００３】
マルチコアを搭載した計算機を効率的に利用するには、処理の並列度を向上させ、各コアに処理を分散させる必要がある。この実現方式として、マルチコアに対応した一つのＯＳで利用することが考えられる。しかし、この場合、組込み機器のリアルタイム性は、使用ＯＳのリアルタイム応答性能に大きく左右されてしまう。そのため、マルチコアを搭載した組込み機器では、コアごとにＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）やネットワークプロトコル機能を持つ汎用ＯＳや、ハードリアルタイム性を持つリアルタイムＯＳ（ＲＴＯＳ）などの各種ＯＳを動作させることで、リアルタイム性を確保しながら、処理の並列度向上を図ることが考えられる。
【０００４】
図１５は、従来のマルチコアを搭載した組込み機器２の構成を示すものである。図１５を用いて、従来の複数ＯＳ起動手段（非特許文献１に記載の方法）を説明する。
【０００５】
この組込み機器２は、マルチコアＣＰＵを搭載したハードウェア資源１００（以下、単にハードウェアという）と、ＯＳの起動を行うファームウェア２００と、ハードウェアリセット後に起動されるＯＳ（初期起動ＯＳ）３００と、初期起動ＯＳ３００によって起動されるＯＳ（被起動ＯＳ）４００からなる。
【０００６】
ハードウェア１００は、ＣＰＵ１０１とＣＰＵ１０２、メモリ１１１、二次記憶装置１２１、入出力装置１３１を備える。
ＣＰＵ１０１はハードウェアリセットによりファームウェア２００のＯＳ起動手段２０１に処理を移す機能を備える。
ＣＰＵ１０１とＣＰＵ１０２はＣＰＵ間割り込み機能を備え、ＣＰＵ間割り込みによって、ファームウェア２００のＯＳ起動手段２０１に処理を移す機能を備える。
メモリは各ＯＳがロードされる領域Ａ、領域Ｂを備える。
二次記憶装置１２１は初期起動ＯＳバイナリ１２２及び被起動ＯＳバイナリ１２３を保持する機能を備える。
入出力装置１３１は、例えばディスプレイ、キーボード、シリアルコンソール、マウス、ネットワークインタフェースデバイス、赤外線インタフェースデバイス、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）ポートといったものを指し、各ＯＳに対して入出力を実施する機能を備える。
【０００７】
ファームウェア２００はＯＳ起動手段２０１とＯＳ起動情報テーブル５００を備える。
ＯＳ起動手段２０１は、ファームウェアが静的に保持するＯＳ起動情報テーブル５００の情報を読み出し、この情報に従ってＯＳのブートを実施する機能を備える。
ＯＳ起動情報テーブル５００は初期起動ＯＳ３００の起動情報及び被起動ＯＳ４００の起動情報を保持する。情報の内容としては、ＣＰＵ間割り込みをかけるＣＰＵ番号（起動ＣＰＵ番号）、管理するＣＰＵ番号（管理ＣＰＵ番号）、管理するメモリ領域（管理メモリ領域）及び入出力装置（管理入出力装置）、二次記憶装置１２１のＯＳバイナリのアドレス、容量及び、エントリアドレスを備えている。
【０００８】
初期起動ＯＳ３００はハードウェア起動／停止手段３０２と被起動ＯＳ起動手段３０３を備える。
ハードウェア起動／停止手段３０２は組込み機器に搭載されている各ハードウェアの起動、停止機能を備える。
被起動ＯＳ起動手段３０３はファームウェア２００上のＯＳ起動情報テーブル５００から被起動ＯＳ４００の起動ＣＰＵ番号を取得し、このＣＰＵに対してＣＰＵ間割り込みを行う。
【０００９】
次に、従来技術における、組込み機器のハードウェアリセットから初期起動ＯＳ３００および被起動ＯＳ４００が起動するまでを説明する。
ハードウェアリセットにより、ＣＰＵ１０１上でＯＳ起動手段２０１が動作する。ＯＳ起動手段２０１は自身が動作しているＣＰＵ番号を取得する。
次にＯＳ起動手段２０１は、このＣＰＵ番号を利用して、ＯＳ起動情報テーブル５００内の起動ＣＰＵ番号を検索し、初期起動ＯＳ３００の起動情報（管理ＣＰＵ番号、管理メモリ領域、管理入出力装置、二次記憶アドレスなど）を取得し、この情報を用いて、初期起動ＯＳ３００の起動を行う。
初期起動ＯＳ３００はＯＳ初期化処理中に、被起動ＯＳ起動手段３０３を動作させる。
被起動ＯＳ起動手段３０３はＯＳ起動情報テーブル５００内の、被起動ＯＳ４００の起動情報から、起動ＣＰＵ番号を取得し、このＣＰＵに対してＣＰＵ間割り込みをかける。これにより、ＣＰＵ１０２上でＯＳ起動手段２０１が動作する。
ＯＳ起動手段２０１は初期起動ＯＳ３００の起動と同一の方式で被起動ＯＳ４００を起動する。
以上が従来のマルチコアを搭載した組込み機器におけるハードウェアリセット時の複数ＯＳ起動手順である。
【００１０】
また、マルチプロセッサシステムにおける起動方法として、特許文献１に記載の技術がある。
【特許文献１】特開平８−２７２７５６号公報
【非特許文献１】情報処理学会第６６回全国大会  ２Ｄ−６  シングルチップマルチプロセッサ上のハイブリッドＯＳ環境の実現  −ＯＳ間インタフェースの実装−
【発明の開示】
【発明が解決しようとする課題】
【００１１】
非特許文献１に記載された従来の複数ＯＳ起動方式は、ＯＳ起動の際に、ファームウェア（ブートローダ）が保持する静的なＯＳ起動情報テーブル５００、及び、ハードウェアリセットにより起動する初期起動ＯＳ３００が被起動ＯＳ起動手段３０３を保持していることを利用して、複数ＯＳの起動を行っている。この方法ではハードウェアリセット後の初期化処理時に複数のＯＳを起動することはできるが、初期化処理終了後に、ユーザの指示などで、更に任意のＯＳを起動させることはできないという課題がある。
つまり、被起動ＯＳが利用可能なハードウェアリソースは、静的なＯＳ起動情報テーブルにおいて固定的に設定されているため、初期化処理終了後に、ＯＳ起動情報テーブルに示されているハードウェアリソースが他に使用されている場合には、被起動ＯＳを起動することができない。
【００１２】
この発明は、上記のような問題点を解決することを主な目的としており、初期起動ＯＳが通常動作状態になった後でも、任意のＯＳの起動を可能にすること、および、複数のＯＳが起動した後でも、ＯＳ間でハードウェア資源のやり取りを可能にすることを主な目的とする。
【課題を解決するための手段】
【００１３】
本発明に係る情報処理装置は、
複数のＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）を有し、前記複数のＯＳに割り当てるハードウェア資源を備える情報処理装置であって、
ハードウェア資源の割り当て状況を管理し、いずれかのＯＳの起動が要求された場合に、ハードウェア資源の割り当て状況を通知するハードウェア管理手段と、
いずれかのＯＳの起動が要求された場合に、起動に必要なハードウェア資源がＯＳごとに示されている起動ハードウェア資源情報を参照し、起動が要求された被起動ＯＳの起動に必要なハードウェア資源を判断し、前記ハードウェア管理手段からハードウェア資源の割り当て状況を通知され、前記ハードウェア管理手段から通知されたハードウェア資源の割り当て状況と被起動ＯＳの起動に必要なハードウェア資源とに基づき被起動ＯＳに割り当てるハードウェア資源を選択し、選択したハードウェア資源を被起動ＯＳに割り当てるハードウェア割り当て手段と、
前記ハードウェア割り当て手段により割り当てられたハードウェア資源を用いて被起動ＯＳを起動するＯＳ起動手段とを有することを特徴とする。
【発明の効果】
【００１４】
本発明では、ＯＳ起動に必要なハードウェア資源を動的に選択するようにしたので、初期起動ＯＳが通常起動状態になった後でも、任意ＯＳの起動が可能となる。
【発明を実施するための最良の形態】
【００１５】
実施の形態１．
図１はこの発明の実施の形態１におけるマルチコアを搭載した組込み機器１（情報処理装置）の構成を示すものである。
この組込み機器１は、マルチコアＣＰＵを搭載したハードウェア資源１００（以下、単にハードウェアともいう）と、ＯＳの起動を行うファームウェア２００と、ハードウェアリセット後に起動されるＯＳ（初期起動ＯＳ）３００と、初期起動ＯＳ３００によって起動されるＯＳ（被起動ＯＳ）４００と、ファームウェア２００によって生成されるＯＳ起動情報テーブル５００からなる。
【００１６】
ハードウェア１００は、ＣＰＵ１０１とＣＰＵ１０２、メモリ１１１、二次記憶装置１２１、入出力装置１３１を備える。
ＣＰＵ１０１は、ハードウェアリセットによりファームウェア２００の初期起動ＯＳ起動手段２０２に処理を移す機能を備える。
ＣＰＵ１０１とＣＰＵ１０２はＣＰＵ間割り込み機能を備え、ＣＰＵ間割り込みによって、ファームウェア２００のＯＳ起動手段２０１に処理を移す機能を備える。
メモリ１１１は、ＯＳ起動情報テーブル５００がロードされる領域Ａ及び各ＯＳがロードされる領域Ｂ、領域Ｃを備える。
二次記憶装置１２１は、初期起動ＯＳバイナリ１２２及び被起動ＯＳバイナリ１２３を保持する機能を備える。
入出力装置１３１は、例えばディスプレイ、キーボード、シリアルコンソール、マウス、ネットワークインタフェースデバイス、赤外線インタフェースデバイス、ＵＳＢポートといったものを指し、各ＯＳに対して入出力を実施する機能を備える。
【００１７】
ファームウェア２００は、ＯＳ起動手段２０１と初期起動ＯＳ起動手段２０２とハードウェア管理手段２０３と初期起動ＯＳ起動情報テーブル２５１とハードウェア管理テーブル２５２（ハードウェア割り当て状況情報）と被起動ＯＳ用ハードウェア情報テーブル２５３（起動ハードウェア資源情報）とメモリ領域分割テーブル２５４を備える。
【００１８】
ＯＳ起動手段２０１は、メモリ１１１の領域Ａに展開されたＯＳ起動情報テーブル５００の情報を読み出し、この情報に従ってＯＳのブートを実施する機能を備える。
初期起動ＯＳ起動手段２０２は、初期起動ＯＳ起動情報テーブル２５１の情報を読み出し、メモリ１１１の領域ＡにＯＳ起動情報テーブル５００を書き出し、ＯＳ起動手段２０１へ処理を移す機能を備える。
ハードウェア管理手段２０３は、初期起動ＯＳ３００のハードウェア割り当て手段３０１からの読み出し指示を受け、ハードウェア管理テーブル２５２のテーブル情報を読み出し、初期起動ＯＳ３００のハードウェア割り当て手段３０１へ返答する機能を備える。
それに加えて、ハードウェア管理手段２０３は、初期起動ＯＳ３００のハードウェア割り当て手段３０１からの書き込み指示を受け、ハードウェア管理テーブル２５２にテーブル情報を書き込む機能を備える。なお、ここでいう管理とは、ハードウェアがＯＳによって管理されていることを表している。
【００１９】
初期起動ＯＳ３００は、ハードウェア割り当て手段３０１とハードウェア起動／停止手段３０２を備える。
ハードウェア起動／停止手段３０２は、組込み機器１に搭載されている各ハードウェアの起動、停止機能を備える。
ハードウェア割り当て手段３０１は、初期起動ＯＳ３００からの被起動ＯＳ４００起動指示により、ファームウェア２００の被起動ＯＳ用ハードウェア情報テーブル２５３から、被起動ＯＳ４００の起動に必要なハードウェア情報を得る機能を備える。
さらに、ハードウェア割り当て手段３０１は、ファームウェア２００のハードウェア管理手段２０３に対して、ハードウェア管理状況を問い合わせる。
さらに、ハードウェア割り当て手段３０１は、ファームウェア２００のハードウェア管理手段２０３に対して、被起動ＯＳ４００が管理するハードウェアを報告する機能を持つ。
さらに、ハードウェア割り当て手段３０１は、確保したハードウェアとファームウェア２００の被起動ＯＳ用ハードウェア情報テーブル２５３を元にＯＳ起動情報テーブル５００を生成し、メモリ１１１の領域Ａへ上書きする機能を持つ。さらにＯＳ起動情報テーブル５００の被起動ＯＳ４００用起動ＣＰＵ情報から、該当ＣＰＵに対してＣＰＵ間割り込みを行う機能を備える。
さらに、ハードウェア割り当て手段３０１は、メモリ領域分割テーブル２５４から、未管理のメモリ領域の容量を算出する機能を備える。
【００２０】
被起動ＯＳ４００はハードウェア起動／停止手段４０１を備える。ハードウェア起動／停止手段４０１は組込み機器１に搭載されている各ハードウェアの起動、停止機能を備える。
【００２１】
ここで、本実施の形態に係る組込み機器１の動作を概説する。なお、動作についての詳細な説明は後述する。
ハードウェア管理手段２０３は、ハードウェア資源の割り当て状況を示すハードウェア管理テーブル２５２（ハードウェア割り当て状況情報）を管理し、複数のＯＳの中で最初に起動される初期起動ＯＳ３００が起動されて初期起動ＯＳ３００が通常動作状態になった後に他のいずれかのＯＳ（被起動ＯＳ４００）の起動が要求された場合に、現在のハードウェア資源の割り当て状況を通知する。
ハードウェア割り当て手段３０１は、ＯＳの起動に必要なハードウェア資源がＯＳごとに示されている被起動ＯＳ用ハードウェア情報テーブル２５３（起動ハードウェア資源情報）を参照し、起動が要求された被起動ＯＳ４００の起動に必要なハードウェア資源を判断し、ハードウェア管理手段２０３からハードウェア資源の割り当て状況を通知され、ハードウェア管理手段２０３から通知されたハードウェア資源の割り当て状況と被起動ＯＳの起動に必要なハードウェア資源とに基づき被起動ＯＳに割り当てるハードウェア資源を選択し、選択したハードウェア資源を被起動ＯＳ４００に割り当てる。
そして、ＯＳ起動手段２０１が、ハードウェア割り当て手段３０１により割り当てられたハードウェア資源を用いて被起動ＯＳ４００を起動する。
また、ハードウェア管理手段２０３は、ハードウェア割り当て手段３０１による被起動ＯＳ４００に対するハードウェア資源の割り当て後に、被起動ＯＳ４００に対するハードウェア資源の割り当てを反映させてハードウェア管理テーブル（ハードウェア割り当て状況情報）を更新する。
【００２２】
図２は、ファームウェア２００が備える初期起動ＯＳ起動情報テーブル２５１の内容の例について示している。
初期起動ＯＳ起動情報テーブル２５１は初期起動ＯＳ３００を起動させるための情報を保持している。
情報の内容としては、初期起動ＯＳ３００が起動時に動作しているＣＰＵのＣＰＵ番号（起動ＣＰＵ番号）、初期起動ＯＳ３００が管理するＣＰＵ番号（管理ＣＰＵ番号）、メモリ領域（管理メモリ領域）、入出力装置、初期起動ＯＳバイナリ１２２の二次記憶アドレス、容量及びエントリアドレスを備える。
なお、管理ＣＰＵ番号、管理メモリ領域、管理入出力装置は複数存在しても良い。
【００２３】
図３は、ファームウェア２００が備えるハードウェア管理テーブル２５２の内容例を示している。
ハードウェア管理テーブル２５２はハードウェアの管理状況を保持している。
情報の内容としては、ＣＰＵ管理状況、メモリ管理状況、入出力装置管理状況である。
図３の管理中とは、あるハードウェアがＯＳによって管理されていることを表している。
図３の未管理とは、どのＯＳからも管理されていないことを表している。
また、ＯＳによって管理されているハードウェアであっても、使用されていない可能性がある（管理中であるが未使用のハードウェアが存在する可能性がある）。
【００２４】
図４は、被起動ＯＳ用ハードウェア情報テーブル２５３の内容例について示している。
被起動ＯＳ用ハードウェア情報テーブル２５３は各被起動ＯＳが起動するのに必要なハードウェア情報を保持している。
情報の内容としては、被起動ＯＳのＯＳ起動に必須のＣＰＵ数、必須のメモリ容量、必須の入出力装置、二次記憶装置１２１の被起動ＯＳバイナリのアドレス、容量及びエントリアドレスを備えている。なお、必須のＣＰＵ及び入出力装置は複数存在（必須ＣＰＵ数が２個、あるいは必須入出力装置がディスプレイとキーボード等）しても良い。
【００２５】
図５は、メモリ領域分割テーブル２５４の内容例について示している。
メモリ領域分割テーブル２５４は各メモリ領域（領域Ａ、領域Ｂ、領域Ｃ）の開始アドレス及び終了アドレスを保持している。
これにより、各メモリ領域のアドレス及び容量を取得可能となる。本アドレスはファームウェア内に静的に設定されている。
【００２６】
図６は、メモリ１１１の領域Ａに展開されたＯＳ起動情報テーブル５００の内容例について示している。
ＯＳ起動情報テーブル５００はＯＳ起動手段２０１によって利用されるＯＳ起動情報を保持している。
情報の内容としては、ＣＰＵ間割り込みをかけるＣＰＵ番号（起動ＣＰＵ番号）、管理するＣＰＵ番号（管理ＣＰＵ番号）、管理するメモリ領域（管理メモリ領域）及び入出力装置（管理入出力装置）、二次記憶装置１２１のＯＳバイナリのアドレス、容量及び、エントリアドレスを備えている。
【００２７】
次に、この実施の形態における、組込み機器１のハードウェアリセットから初期起動ＯＳ３００の起動が終了し、通常動作状態になるまでを図７を用いて説明する。なお、この図７に示す処理は、従来から存在する内容である。
先ず、外部からのハードウェアリセットにより、ＣＰＵ１０１は初期起動ＯＳ起動手段２０２に処理を移し、初期起動ＯＳ起動手段２０２が、メモリ領域分割テーブル２５４の最初のエントリに記述されているメモリ領域（領域Ａ）の一部をメモリ領域分割テーブル２５４用に確保し、内容を展開する（Ｓ１００２）。なお、内容はハードウェアリセット時に静的に設定されている。
さらに、初期起動ＯＳ起動手段２０２は、メモリ１１１の領域Ａの一部をハードウェア管理テーブル２５２用に確保し、ハードウェア管理テーブル２５２のメモリ管理状況の項目にあるメモリ領域Ａを管理中に更新する（Ｓ１００３）。
次に、初期起動ＯＳ起動手段２０２は、メモリ１１１の領域Ａの一部をＯＳ起動情報テーブル５００用に確保し、初期起動ＯＳ起動情報テーブル２５１の内容をＯＳ起動情報テーブル５００にコピーする（Ｓ１００４）。
また、初期起動ＯＳ起動手段２０２は、ＯＳ起動情報テーブル５００から、初期起動ＯＳ３００が管理するハードウェア（ＣＰＵ＝ＣＰＵ１０１、メモリ＝領域Ｂ、入出力装置＝ディスプレイ）をハードウェア管理手段２０３に報告する。
ハードウェア管理手段２０３は、初期起動ＯＳ起動手段２０２からの報告に応じて、ハードウェア管理テーブル２５２を更新する。これにより、ハードウェア管理テーブル２５２のＣＰＵ管理状況の項目にあるＣＰＵ１０１が管理中、メモリ管理状況の項目にあるメモリ領域Ｂが管理中、入出力管理状況の項目にあるディスプレイが管理中に更新される（Ｓ１００５）。
その後、初期起動ＯＳ起動手段２０２は、ＯＳ起動手段２０１に処理を移し、ＯＳ起動情報テーブル５００の内、ＯＳバイナリの二次記憶アドレス情報（０ｘ７Ａ１２００）及び容量（０ｘＦ４２４０）から初期起動ＯＳバイナリ１２２の二次記憶装置１２１上の位置を識別し、メモリ領域分割テーブル２５４の内容を取得し、初期起動ＯＳバイナリ１２２をメモリ１１１の領域Ｂにロードする。さらにＯＳ起動手段２０１はＯＳ起動情報テーブル５００のエントリアドレス情報（０ｘ７０１０）を用いて、メモリ１１１上のアドレス０ｘ７０１０にジャンプする（Ｓ１００６）。
これにより初期起動ＯＳ３００の初期化処理が実行される。
初期起動ＯＳ３００は、ＯＳ初期化処理中、ＯＳ起動情報テーブル５００で規定されている各管理ハードウェアを初期化する。つまり、管理ＣＰＵであるＣＰＵ１０１と、管理メモリ領域である領域Ｂと、管理入出力装置であるディスプレイを、ハードウェア起動／停止手段３０２を用いて初期化する（Ｓ１００７）。
以上により、初期起動ＯＳ３００の起動が終了し、組込み機器１が通常動作となる。
【００２８】
次に、この実施の形態における、組込み機器１の通常動作状態から被起動ＯＳ４００を起動する動作を図８を用いて説明する。
組込み機器１が通常動作状態で、ユーザは初期起動ＯＳ３００を通じて、被起動ＯＳ４００の起動要求をハードウェア割り当て手段３０１に伝える（Ｓ１０１２）。
ハードウェア割り当て手段３０１は被起動ＯＳ用ハードウェア情報テーブル２５３から被起動ＯＳ４００の起動に必要なハードウェア情報を取得する（Ｓ１０１３）（ハードウェア割り当てステップ）。
ハードウェア割り当て手段３０１は、ハードウェア管理手段２０３に対して、現在のハードウェア管理状況（ハードウェア資源の割り当て状況）を問い合わせる（Ｓ１０１４）（ハードウェア割り当てステップ）。
ハードウェア管理手段２０３は、ハードウェア管理テーブル２５２から各ハードウェアの管理状況（ハードウェア資源の割り当て状況）を読み込み、ハードウェア割り当て手段３０１に返答する（Ｓ１０１５）（ハードウェア管理ステップ）。
ハードウェア割り当て手段３０１はハードウェア管理手段２０３の返答結果および、被起動ＯＳ用ハードウェア情報テーブル２５３の情報から、被起動ＯＳ４００の起動に必要なハードウェアを判断する。この実施の形態の場合は、被起動ＯＳ用ハードウェア情報テーブル２５３から被起動ＯＳ４００の起動に必要なＣＰＵ数は１つであり、ハードウェア管理手段２０３の返答結果から未管理のＣＰＵがＣＰＵ１０２であることから、ＣＰＵ１０２を選択し被起動ＯＳ４００に割り当てる。管理メモリ領域については、ハードウェア割り当て手段３０１は、未管理のメモリ領域Ｃについて、メモリ領域分割テーブル２５４の内容を取得し、メモリ領域Ｃの容量を算出（０ｘ１Ｅ０００００）する。そして、メモリ領域Ｃは被起動ＯＳ用ハードウェア情報テーブル２５３の必須メモリ容量０ｘ８０００００以上の容量を持つと判断し、メモリ領域Ｃを選択し被起動ＯＳ４００に割り当てる。また、入出力装置についても、必須入出力装置であるシリアルコンソールが未管理のため、これを選択し被起動ＯＳ４００に割り当てる（Ｓ１０１６）（ハードウェア割り当てステップ）。
【００２９】
ハードウェア割り当て手段３０１は被起動ＯＳ４００に割り当てたハードウェア（ＣＰＵ＝ＣＰＵ１０２、メモリ＝領域Ｃ、入出力装置＝シリアルコンソール）を、ハードウェア管理手段２０３に報告する（Ｓ１０１７）。
ハードウェア管理手段２０３はハードウェア割り当て手段３０１からの報告に応じて、ハードウェア割り当て手段３０１による被起動ＯＳ４００に対するハードウェア割り当て結果を反映させてハードウェア管理テーブル２５２を更新する（Ｓ１０１８）。
これにより、被起動ＯＳ４００に割り当てられたＣＰＵ１０２、メモリ領域Ｃ及びシリアルコンソールが管理中に更新される。
【００３０】
ハードウェア割り当て手段３０１は被起動ＯＳ４００の起動用に確保したこれらのハードウェアと、被起動ＯＳ用ハードウェア情報テーブル２５３を元にＯＳ起動情報テーブル５００を生成し、ハードウェア１００のメモリ１１１の領域Ａに上書きする（Ｓ１０１９）。
これによりＯＳ起動情報テーブル５００は、起動ＣＰＵがＣＰＵ１０２、管理ＣＰＵがＣＰＵ１０２、管理メモリ領域が領域Ｃ、管理入出力装置がシリアルコンソール、二次記憶アドレスが０ｘ２６２５Ａ０００、容量が０ｘ１Ｅ８４８０、エントリアドレスが０ｘ７Ｃ００に上書きされる。この状態で、ハードウェア割り当て手段３０１はＯＳ起動情報テーブル５００の起動ＣＰＵ番号に記述されるＣＰＵ（ＣＰＵ１０２）に対して、ＣＰＵ間割り込みをかける（Ｓ１０２０）。
これによりＣＰＵ１０２が起動し、ＯＳ起動手段２０１が動作する。また、ＣＰＵ１０１上のハードウェア割り当て手段３０１は処理を終了し通常動作に戻る。
ＯＳ起動手段２０１は、ＯＳ起動情報テーブル５００の内、ＯＳバイナリの二次記憶アドレス情報（０ｘ２６２５Ａ０００）及び容量（０ｘ１Ｅ８４８０）から被起動ＯＳバイナリ１２３の二次記憶上の位置を識別し、被起動ＯＳバイナリ１２３をメモリ１１１の領域Ｃにロードする。さらにＯＳ起動手段２０１はＯＳ起動情報テーブル５００のエントリアドレス情報（０ｘ７Ｃ００）から、メモリ１１１上のアドレス０ｘ７Ｃ００にジャンプする。これにより被起動ＯＳ４００の初期化処理が実行される（Ｓ１０２１）（ＯＳ起動ステップ）。
被起動ＯＳ４００はＯＳ初期化処理中、ＯＳ起動情報テーブル５００で規定されている各管理ハードウェアを初期化する。つまり、管理ＣＰＵであるＣＰＵ１０２と、管理メモリ領域である領域Ｃと、管理入出力装置であるシリアルコンソールを、ハードウェア起動／停止手段４０１を用いて初期化する。
以上により、被起動ＯＳ４００の起動が終了する。
【００３１】
この実施の形態による、マルチコアを搭載した組込み機器１の複数ＯＳ起動方式では、
被起動ＯＳが必要とするハードウェア情報を保持する領域と、機器内のハードウェアを管理する領域を備え、本情報を元に被起動ＯＳが管理するハードウェアを割り当てると共に、ＯＳ起動に必要な情報を動的に生成するようにしたので、初期起動ＯＳが通常起動状態になった後でも、任意ＯＳの起動が可能となる。
【００３２】
なお、本実施の形態ではメモリ領域を３分割としたが、これは４分割以上であっても同様の効果を得られる。
また、ＣＰＵについても、２つとしたが、これは３つ以上であっても同様の効果を得られる。
【００３３】
また、被起動ＯＳとして選択できるＯＳは一つとしたが、選択できるＯＳは複数あっても同様の効果を得られる。
また、被起動ＯＳ４００の起動要求はユーザからとしたが、組込み機器上の別のアプリケーション、あるいはハードウェア割り込みでも同様の効果を得られる。
【００３４】
また、上記の例では、複数のＯＳの中で最初に起動される初期起動ＯＳに、ハードウェア割り当て手段が含まれ、初期起動ＯＳが、自己の起動後に起動が要求された被起動ＯＳに対してハードウェア割り当て手段によりハードウェア資源を割り当てることとしていたが、各ＯＳに、ハードウェア割り当て手段が含まれることとし、各ＯＳが、自己の起動後に起動が要求された被起動ＯＳに対してハードウェア割り当て手段によりハードウェア資源を割り当てるようにしてもよい。
このようにすれば、被起動ＯＳ４００がハードウェア割り当て手段３０１を保持することで被起動ＯＳ４００からも別ＯＳを起動することが可能となるという効果がある。
さらに、ＯＳ用ハードウェア情報テーブルに初期起動ＯＳ用のフィールドを保持することで、初期起動ＯＳも被起動ＯＳから起動することが可能となる。
【００３５】
また、メモリ領域分割テーブルのアドレス情報は動的に設定しても同様の効果を得られる。
また、ファームウェア上に静的に存在している初期起動ＯＳ起動情報テーブル及び、被起動ＯＳ用ハードウェアテーブルについて、メモリ上に展開し、動的に変更しても同様の効果を得られる。
【００３６】
以上のように、本実施の形態では、ＣＰＵコアを複数持ち、メモリ、入出力装置などのハードウェアを備えた構成の組込み機器において、
組込み機器の各ハードウェアが、ＯＳによって管理中かどうかを保持するフラグを格納したハードウェア管理テーブル；
ユーザ指示により、被起動ＯＳに割り当てるハードウェア管理情報を更新するハードウェア管理手段；
被起動ＯＳを起動するためのハードウェア情報を格納した、被起動ＯＳ用ハードウェア情報テーブル；
ハードウェア管理手段に対して被起動ＯＳの起動を指示するハードウェア割り当て手段；
被起動ＯＳの起動毎に更新されるＯＳ起動情報を格納した、ＯＳ起動情報テーブル；
メモリ領域を分割し、その位置情報を保持する、メモリ領域分割テーブルを備えた組込み機について説明した。
【００３７】
また、本実施の形態では、ハードウェア割り当て手段が、被起動ＯＳ用ハードウェア情報テーブルとハードウェア管理テーブルおよびメモリ領域分割テーブルの情報を元に、被起動ＯＳが管理するハードウェアを割り当てるとともに、ＯＳ起動情報テーブルを動的に生成することで、初期起動ＯＳが通常起動状態になった後でも、任意ＯＳの起動が可能となる組込み機器について説明した。
【００３８】
実施の形態２．
図９は、この発明の実施の形態２におけるマルチコアを搭載した組込み機器１の構成を示すものである。
本実施の形態において、ハードウェア１００上の二次記憶装置１２１は被起動ＯＳ起動用ユーザ設定ファイル１２４を備える。
また、初期起動ＯＳ３００はユーザ設定ハードウェア情報作成手段３０４を備える。
また、ファームウェアはユーザ設定ハードウェア情報テーブル２５５を備える。
【００３９】
ユーザ設定ハードウェア情報作成手段３０４は、被起動ＯＳ起動用ユーザ設定ファイル１２４及び、被起動ＯＳ用ハードウェア情報テーブル２５３の情報から、ユーザ設定ハードウェア情報テーブル２５５を生成する機能を持つ。本実施の形態において、ユーザ設定ハードウェア情報作成手段３０４は、ハードウェア資源判断部に相当する。
被起動ＯＳ起動用ユーザ設定ファイル１２４とは、詳細は後述するが、ユーザにより割り当てが要請されているハードウェア（要請ハードウェア資源）がＯＳごとに示されている情報であり、要請ハードウェア資源情報に相当する。
そして、本実施の形態では、ユーザ設定ハードウェア情報作成手段３０４（ハードウェア資源判断部）が、要請ハードウェア資源情報たる被起動ＯＳ起動用ユーザ設定ファイル１２４と起動ハードウェア資源情報たる被起動ＯＳ用ハードウェア情報テーブル２５３とを比較し、被起動ＯＳ４００の要請ハードウェア資源で被起動ＯＳ４００の起動が可能であるか否かを判断する。そして、ユーザ設定ハードウェア情報作成手段３０４は、被起動ＯＳ４００の要請ハードウェア資源で被起動ＯＳ４００の起動が可能である場合に、被起動ＯＳ４００の要請ハードウェア資源を示すユーザ設定ハードウェア情報テーブル２５５を生成する。
そして、ハードウェア割り当て手段３０１は、ユーザ設定ハードウェア情報作成手段３０４により、被起動ＯＳ４００の要請ハードウェア資源で被起動ＯＳ４００の起動が可能であると判断された場合に、ハードウェア管理手段２０３から通知されたハードウェア資源の割り当て状況と、ユーザ設定ハードウェア情報テーブル２５５に示された被起動ＯＳ４００の要請ハードウェア資源とに基づき被起動ＯＳ４００に割り当てるハードウェア資源を選択する。
【００４０】
前述したように、ユーザ設定ハードウェア情報テーブル２５５は、被起動ＯＳ用ハードウェア情報テーブル２５３および被起動ＯＳ起動用ユーザ設定ファイル１２４の内容から、ユーザ設定ハードウェア情報作成手段３０４によって生成される。
保持する情報としては、被起動ＯＳ起動用ユーザ設定ファイル１２４と同一の内容である。
被起動ＯＳ用ハードウェア情報テーブル２５３は、内容例は図４と同一であるが、内容の意味するところは、被起動ＯＳ４００が起動する最小のハードウェア構成を示している。
つまり、本実施の形態では、被起動ＯＳ４００の起動時のハードウェア構成として、被起動ＯＳ用ハードウェア情報テーブル２５３に示されている最小のハードウェア構成以上の構成（より豊富なハードウェア資源）が被起動ＯＳ起動用ユーザ設定ファイル１２４においてユーザにより要請されている場合は、被起動ＯＳ起動用ユーザ設定ファイル１２４に示されているより豊富なハードウェア資源を用いて被起動ＯＳ４００を起動させようとするものである。
なお、図９における他の構成は、図１における構成の同一もしくは相当部であり、説明を省略する。
【００４１】
次に、被起動ＯＳ起動用ユーザ設定ファイル１２４の記述例を図１０に示す。
本ファイルでは、被起動ＯＳを起動するために必要なハードウェア情報のうち、被起動ＯＳ４００に割り当てる情報（要請ハードウェア資源の情報）を保持している。
情報の内容としては、被起動ＯＳ４００に割り当てるＣＰＵ数（ｃｐｕ＝１）、割り当てるメモリ容量（ｍｅｍ＝０ｘ８０００００）、割り当てる入出力装置（ｉｏｄｅｖ＝ｓｅｒｉａｌ）である。
なお、ＣＰＵ及び入出力装置は複数存在（ＣＰＵ数が２個、あるいは入出力装置がディスプレイとキーボード等）しても良い。本ファイルはユーザあるいはアプリケーションによって予め準備されていることを想定している。
【００４２】
次に、この実施の形態における、組込み機器１の通常動作状態から被起動ＯＳ４００を起動する動作を図１１を用いて説明する。
なお、この実施の形態における、組込み機器１のハードウェアリセットから初期起動ＯＳ３００の起動が終了し、通常動作状態になるまでは図７と同一の処理のため、説明を省略する。
組込み機器１が通常動作状態で、ユーザは初期起動ＯＳ３００を通じて、被起動ＯＳ４００の起動要求をユーザ設定ハードウェア情報作成手段３０４に伝える（Ｓ１０３２）。
この際、被起動ＯＳ４００の起動には、被起動ＯＳ起動用ユーザ設定ファイル１２４を使用するように指定する。
ユーザ設定ハードウェア情報作成手段３０４は被起動ＯＳ起動用ユーザ設定ファイル１２４から、割り当てるＣＰＵ数（ｃｐｕ＝１）、割り当てるメモリ容量（ｍｅｍ＝０ｘ８０００００）、割り当てる入出力装置（ｉｏｄｅｖ＝ｓｅｒｉａｌ）と、被起動ＯＳ用ハードウェア情報テーブル２５３から被起動ＯＳ４００の起動に必須なＣＰＵ数、メモリ容量及び入出力装置を取得し、これらと比較を行う（Ｓ１０３３）。
比較の結果、被起動ＯＳ起動用ユーザ設定ファイル１２４に記述されているハードウェアで起動できない場合は、呼び出し元のユーザ（アプリケーション）にエラーを返し処理を終了する（Ｓ１０３４）。
割り当てるハードウェアで起動できる場合は、メモリ１１１の領域Ａにユーザ設定ハードウェア情報テーブル２５５を生成し、被起動ＯＳ起動用ユーザ設定ファイル１２４の、割り当てるＣＰＵ数、メモリ容量、入出力装置（ＣＰＵ＝１、メモリ容量＝０ｘ８０００００、入出力装置＝ｓｅｒｉａｌ）と、被起動ＯＳ用ハードウェア情報テーブル２５３の、二次記憶上の被起動ＯＳ４００のバイナリアドレス、容量およびエントリアドレス情報を、メモリ１１１の領域Ａに確保されたユーザ設定ハードウェア情報テーブル２５５に書き込む（Ｓ１０３５）。
その後、被起動ＯＳ４００の起動をハードウェア割り当て手段３０１に伝える（Ｓ１０３６）。
Ｓ１０３７からＳ１０３９は図８のＳ１０１３からＳ１０１５と同じ処理であるので説明を割愛する。
ハードウェア割り当て手段３０１はハードウェア管理手段２０３の返答結果および、ユーザ設定ハードウェア情報テーブル２５５の情報から、被起動ＯＳ４００の起動に必要なハードウェアを判断する（Ｓ１０４０）。
この実施の形態の場合は、ユーザ設定ハードウェア情報テーブル２５５から被起動ＯＳ４００の起動に必要なＣＰＵ数は１つであり、ハードウェア管理手段２０３の返答結果から未管理のＣＰＵがＣＰＵ１０２であることから、ＣＰＵ１０２を被起動ＯＳ４００に割り当てる。
管理メモリ領域については、ハードウェア割り当て手段３０１は、未管理のメモリ領域Ｃについて、メモリ領域分割テーブル２５４の内容を取得し、メモリ領域Ｃの容量を算出（０ｘ１Ｅ０００００）する。そして、メモリ領域Ｃはユーザ設定ハードウェア情報テーブル２５５の必須メモリ容量０ｘ８０００００以上の容量を持つと判断し、メモリ領域Ｃを被起動ＯＳ４００に割り当てる。
また、入出力装置についても、必須入出力装置であるシリアルコンソールが未管理のため被起動ＯＳ４００に割り当てる。
Ｓ１０４１からＳ１０４２は図８のＳ１０１７からＳ１０１８と同じ処理であるので説明を割愛する。
ハードウェア割り当て手段３０１は被起動ＯＳ４００の起動用に確保したこれらのハードウェアと、ユーザ設定ハードウェア情報テーブル２５５を元にＯＳ起動情報テーブル５００を生成し、ハードウェア１００のメモリ１１１の領域Ａに上書きする（Ｓ１０４３）。
Ｓ１０４４からＳ１０４５は図８のＳ１０２０からＳ１０２１と同じ処理であるので説明を割愛する。
以上により、被起動ＯＳ４００の起動が終了する。
【００４３】
この実施の形態による、マルチコアを搭載した組込み機器の複数ＯＳ起動方式では、ユーザ指示により被起動ＯＳに割り当てるハードウェア情報を保持する領域を備え、本情報を元に被起動ＯＳに割り当てるハードウェア情報を動的に生成するようにしたので、ユーザが指示／修正したハードウェアを割り当てたＯＳを起動することが可能となる。
【００４４】
なお、本実施の形態では被起動ＯＳ起動用ユーザ設定ファイルの作成者はユーザとしたが、組込み機器上の別のアプリケーションが作成しても同様の効果を得られる。
【００４５】
以上のように、本実施の形態では、ユーザが生成可能な、被起動ＯＳに割り当てるハードウェア情報を保持する被起動ＯＳ起動用ユーザ設定ファイルを設け、このファイルと被起動ＯＳ用ハードウェア情報テーブルを元に、ユーザ設定ハードウェア情報テーブルを生成するユーザ設定ハードウェア情報作成手段を有し、このユーザ設定ハードウェア情報テーブルで設定されているハードウェア情報から、ユーザの指定するハードウェアを割り当てた被起動ＯＳを起動することを特徴とする組込み機器について説明した。
【００４６】
実施の形態３．
本発明の他の実施形態における組込み機器１について説明する。
組込み機器１の構成は実施の形態１と同様であり、図１に示される。
本実施の形態では、ハードウェア管理テーブル２５２の構成および、ハードウェア管理手段２０３、ハードウェア割り当て手段３０１の動作以外は、実施の形態１と同様である。
【００４７】
図１２はファームウェア２００が備えるハードウェア管理テーブル２５２の内容例を示している。
実施の形態１では、ハードウェア管理テーブル２５２には、各デバイスの管理中、未管理のフラグのみを格納していたが、本実施の形態では、各ハードウェアの管理元ＯＳ及び未管理のフラグと、ＯＳがハードウェアを使用しているかを保持している。ハードウェア管理手段２０３は、これらのフラグを変更する機能を持つ。
つまり、本実施の形態では、ハードウェア管理手段２０３は、ハードウェア資源の割り当て状況及びハードウェア資源の使用状況を管理し、いずれかのＯＳの起動が要求された場合に、ハードウェア資源の割り当て状況及びハードウェア資源の使用状況を通知し、ハードウェア割り当て手段３０１は、ハードウェア管理手段２０３からハードウェア資源の割り当て状況及びハードウェア資源の使用状況を通知され、ハードウェア管理手段２０３から通知されたハードウェア資源の割り当て状況及びハードウェア資源の使用状況と被起動ＯＳ４００の起動に必要なハードウェア資源とに基づき被起動ＯＳ４００に割り当てるハードウェア資源を選択する。
【００４８】
次に、この実施の形態における、組込み機器１のハードウェアリセットから初期起動ＯＳ３００の起動が終了し、通常動作状態になるまでを図１３を用いて説明する。
ただし、本実施の形態では、初期起動ＯＳ起動情報テーブル２５１の管理ＣＰＵ番号として、ＣＰＵ１０１とＣＰＵ１０２が記述されており、他は図２と同一であるとする。
Ｓ１０５２は図７のＳ１００２と同じ処理であるので説明を割愛する。
初期起動ＯＳ起動手段２０２はメモリ１１１の領域Ａの一部をハードウェア管理テーブル２５２用に確保し、ハードウェア管理テーブル２５２のメモリ領域Ａについて、メモリ管理状況をファームウェア管理中、メモリ使用状況を使用中に変更する（Ｓ１０５３）。
Ｓ１０５４は図７のＳ１００４と同じ処理であるので説明を割愛する。
初期起動ＯＳ起動手段２０２はＯＳ起動情報テーブル５００から、初期起動ＯＳ３００が管理するハードウェア（ＣＰＵ＝｛ＣＰＵ１０１，ＣＰＵ１０２｝、メモリ＝領域Ｂ、入出力装置＝ディスプレイ）をハードウェア管理手段２０３に報告する。
ハードウェア管理手段２０３は、初期起動ＯＳ起動手段２０２からの報告に応じて、ハードウェア管理テーブル２５２を更新する。これにより、ハードウェア管理テーブル２５２のＣＰＵ１０１について、ＣＰＵ管理状況を初期起動ＯＳ３００管理中にする。また、ＣＰＵ使用状況については、ＣＰＵ割り込みを受けてＣＰＵ１０１が動作しているため、ＣＰＵ１０１のＣＰＵ使用状況を使用中、ＣＰＵ１０２については、ＯＳ起動情報テーブルの管理ＣＰＵに記述されているため、ＣＰＵ管理状況を初期起動ＯＳ３００管理中にする。しかし、ＣＰＵ１０２は使用していないため、ＣＰＵ１０２のＣＰＵ使用状況を未使用にする。他のハードウェア管理情報に関しては、メモリ領域Ｂのメモリ管理状況を初期起動ＯＳ３００管理中、メモリ使用状況を使用中、ディスプレイの入出力管理状況を初期起動ＯＳ３００管理中、入出力使用状況を使用中に変更する（Ｓ１０５５）。
Ｓ１０５６からＳ１０５７は図７のＳ１００６からＳ１００７と同じ処理であるので説明を割愛する。
以上により、初期起動ＯＳ３００の起動が終了し、組込み機器１が通常動作となる。
【００４９】
次に、この実施の形態における組込み機器１の通常動作状態から被起動ＯＳ４００を起動する動作を図１４を用いて説明する。
Ｓ１０６２からＳ１０６４は図８のＳ１０１２からＳ１０１４と同じ処理であるので説明を割愛する。
ハードウェア管理手段２０３は、ハードウェア管理テーブル２５２から各ハードウェアの管理状況（割り当て状況）および、使用状況を読み込み、ハードウェア割り当て手段３０１に返答する（Ｓ１０６５）。
ハードウェア割り当て手段３０１はハードウェア管理手段２０３の返答結果および、被起動ＯＳ用ハードウェア情報テーブル２５３の情報から、未管理のハードウェアと初期起動ＯＳ３００が管理中かつ未使用のハードウェアを、被起動ＯＳ４００に割り当てた場合、被起動ＯＳ４００が起動するか判断する（Ｓ１０６６）。
図１２のハードウェア管理テーブル２５２の場合、ＣＰＵ１０１、ＣＰＵ１０２とも初期起動ＯＳ３００が管理中であるが、ＣＰＵ１０２は未使用であるので初期起動ＯＳ３００管理中のＣＰＵ１０２を被起動ＯＳ４００に割り当てることが可能である。
管理メモリ領域および、入出力装置については実施の形態１と同様である。被起動ＯＳ４００が起動しない場合は、エラーを返し、処理を終了する（Ｓ１０６７）。
仮に全てのＣＰＵのＣＰＵ使用状況が使用中の場合は、空きＣＰＵが存在しないため、被起動ＯＳ４００は起動することができない。この場合は、エラーを返し、処理を終了する。被起動ＯＳ４００が起動する場合は、ハードウェア起動／停止手段３０２を利用して、初期起動ＯＳ３００管理中かつ未使用のハードウェアの内、被起動ＯＳ４００の起動に必要なハードウェアのみを停止させる（Ｓ１０６８）。
今回の例では、初期起動ＯＳ３００が管理中のＣＰＵ１０２を停止させる。
Ｓ１０６９は図８のＳ１０１７と同じ処理であるので説明を割愛する。
ハードウェア管理手段２０３はハードウェア割り当て手段３０１からの報告に応じて、ハードウェア管理テーブル２５２を更新する（Ｓ１０７０）。
これにより、被起動ＯＳ４００に割り当てられたＣＰＵ１０２、メモリ領域Ｃ及びシリアルコンソールが被起動ＯＳ４００による管理中かつ使用中に更新される。
Ｓ１０７１からＳ１０７３は図８のＳ１０１９からＳ１０２１と同じ処理であるので説明を割愛する。
以上により、被起動ＯＳ４００の起動が終了する。
【００５０】
この実施の形態による、マルチコアを搭載した組込み機器の複数ＯＳ起動方式では、各ハードウェアに対して管理元ＯＳと使用状況の情報を保持する領域を備え、本情報を元に、初期起動ＯＳの使用していないハードウェアを被起動ＯＳに付与するようにしたので、被起動ＯＳ起動用のハードウェアが足りない場合でも、被起動ＯＳを起動することが可能となる。
【００５１】
実施の形態４．
本実施の形態では、実施の形態２と３を合わせた構成の組込み機器を示し、被起動ＯＳ用のハードウェア資源が足りない場合に、他のＯＳと通信を行い、他ＯＳが使用していないハードウェアを確保し、被起動ＯＳへ割り当てる方式について説明する。
【００５２】
図１６はこの発明の実施の形態４におけるマルチコアを搭載した組込み機器１（情報処理装置）の構成例を示すものである。
組込み機器１は、ＣＰＵ１０１、１０２、１０３及び、メモリ領域Ａ、Ｂ、Ｃ、Ｄを持つ。これらの機能は実施の形態１と同等であり説明を省略する。
さらに、組込み機器１は、初期起動ＯＳ３００によって起動される被起動ＯＳ４００および、初期起動ＯＳ３００によって起動される被起動ＯＳ６００を備える。
被起動ＯＳ４００はハードウェア割り当て手段４０２を備える。
【００５３】
二次記憶装置１２１は、被起動ＯＳ６００バイナリ１２５及び被起動ＯＳ６００起動用ユーザ設定ファイル１２６を保持する機能を備える。
なお、被起動ＯＳ４００バイナリ１２３及び被起動ＯＳ起動用ユーザ設定ファイル１２４は被起動ＯＳ６００と区別するため名前を変更しているが、これらは実施の形態２で示した被起動ＯＳバイナリ１２３及び被起動ＯＳ起動用ユーザ設定ファイル１２４と同等、または相当部であり説明を省略する。
【００５４】
本実施の形態では、ハードウェア管理手段２０３、ハードウェア割り当て手段３０１、４０２以外について、二次記憶上の被起動ＯＳ４００起動用ユーザ設定ファイル１２４、ファームウェア２００上のユーザ設定ハードウェア情報テーブル２５５、初期起動ＯＳ３００上のユーザ設定ハードウェア情報作成手段３０４は実施の形態２と同等、または相当部であり説明を省略する。
他の構成は実施の形態３と同等、または相当部であり説明を省略する。
【００５５】
初期起動ＯＳ３００上のハードウェア割り当て手段３０１、及び、被起動ＯＳ４００上のハードウェア割り当て手段４０２は、これまでの実施の形態で説明した機能に追加して、ファームウェア上のハードウェア管理手段２０３の応答結果から、被起動ＯＳ６００の起動に際して、ハードウェア資源（ＣＰＵ、メモリ、入出力装置など）が足りなかった場合、再度ハードウェア管理手段２０３に対して、他ＯＳのハードウェア使用状況について問合せを行う機能を持つ。
さらに、ファームウェア上のハードウェア管理手段２０３から、自ＯＳのハードウェア使用状況について問合せがあった場合、自ＯＳのハードウェア利用状況を調査し、ハードウェア管理手段２０３へ、ハードウェア利用状況を報告する機能を持つ。
【００５６】
ファームウェア２００上のハードウェア管理手段２０３は、これまでの実施の形態で説明した機能に追加して、ハードウェア割り当て手段３０１から、他ＯＳの状況について問合せがあった場合、ハードウェア管理テーブル２５２に記載されている、ＯＳ起動に必要なハードウェア資源（ＣＰＵ、メモリ、入出力装置など）を保持するＯＳに対して、ハードウェアの使用状況を、問合せ元以外の各ＯＳ上のハードウェア割り当て手段に問合せる機能を持つ。
【００５７】
図１７は、メモリ領域分割テーブル２５４の内容例について示している。
メモリ全体の容量および分割数が異なること以外は実施の形態３と同等であり説明を省略する。
【００５８】
図１８は、二次記憶装置上の被起動ＯＳ４００起動用ユーザ設定ファイル１２４の内容例について示している。
割り当てるハードウェアが異なること以外は実施の形態２と同等であり説明を省略する。
【００５９】
図１９は、二次記憶装置上の被起動ＯＳ６００起動用ユーザ設定ファイル１２６の内容例について示している。
本ファイルの持つ機能は被起動ＯＳ４００起動用ユーザ設定ファイル１２４と同様であり説明を省略する。
【００６０】
図２０は、被起動ＯＳ用ハードウェア情報テーブル２５３の内容例について示している。
被起動ＯＳ６００用のエントリを追加したこと以外は、実施の形態２と同等であり説明を省略する。
【００６１】
次に、この実施の形態における、組込み機器１のハードウェアリセットから初期起動ＯＳ３００が起動するまでの動作例を図２１を用いて説明する。
ただし、本実施の形態では、初期起動ＯＳ起動情報テーブル２５１（図２）の管理ＣＰＵ番号として、ＣＰＵ１０１のみが記述されているとする。
【００６２】
Ｓ１０８２とＳ１０８３は図１３のＳ１０５２とＳ１０５３と同じ処理であるので、説明を割愛する。
初期起動ＯＳ起動手段２０２はＯＳ起動情報テーブル５００（図６）から、初期起動ＯＳ３００が管理するハードウェア（ＣＰＵ＝ＣＰＵ１０１、メモリ領域＝領域Ｂ、入出力装置＝ディスプレイ）をハードウェア管理手段２０３に報告する（Ｓ１０８４）。
ハードウェア管理手段２０３は、初期起動ＯＳ起動手段２０２からの報告に応じて、ハードウェア管理テーブル２５２（図３）を更新する。
これにより、ハードウェア管理テーブル２５２のＣＰＵ１０１について、ＣＰＵ管理状況を初期起動ＯＳ３００管理中にする。
また、ＣＰＵの使用状況については、ＣＰＵ割り込みを受けてＣＰＵ１０１が動作しているため、ＣＰＵ１０１のＣＰＵ使用状況を使用中にする。
他のＣＰＵについては、初期起動ＯＳでは管理も使用もしていないため、未管理および、未使用に設定する。
他のハードウェア管理情報に関しては、メモリ領域Ｂのメモリ管理状況を初期起動ＯＳ３００管理中、メモリ使用状況を使用中、ディスプレイの入出力管理状況を初期起動ＯＳ３００管理中、入出力使用状況を使用中に変更する（Ｓ１０８５）。
Ｓ１０８６からＳ１０８７は、図１３のＳ１０５６からＳ１０５７と同じ処理であるので説明を割愛する。
【００６３】
以上により、初期起動ＯＳ３００の起動が終了し、組込み機器１が通常動作となる。
【００６４】
次に、この実施の形態における組込み機器１の通常動作状態から被起動ＯＳ４００を起動する手順を図２２を用いて説明する。
【００６５】
Ｓ１０９２は図１１のＳ１０３２と同じ処理であるので説明を割愛する。
ユーザ設定ハードウェア情報作成手段３０４は被起動ＯＳ４００起動用ユーザ設定ファイル１２４（図１８）から、割り当てるＣＰＵ数（ｃｐｕ＝２）、割り当てるメモリ容量（ｍｅｍ＝０ｘ１Ｆ０００００）、割り当てる入出力装置（ｉｏｄｅｖ＝ｓｅｒｉａｌ）と、被起動ＯＳ用ハードウェア情報テーブル２５３（図２０）から、被起動ＯＳ４００の起動に必須なＣＰＵ数、メモリ容量、及び、入出力装置を取得し、これらと比較を行う（Ｓ１０９３）。
Ｓ１０９４は図１１のＳ１０３４と同じ処理であるので説明を割愛する。
割り当てるハードウェアで起動できる場合は、メモリ１１１の領域Ａにユーザ設定ハードウェア情報テーブル２５５を生成し、被起動ＯＳ４００起動用ユーザ設定ファイル１２４の、割り当てるＣＰＵ数、メモリ容量、入出力装置（ＣＰＵ＝２、メモリ容量＝０ｘ１Ｆ０００００、ｉｏｄｅｖ＝ｓｅｒｉａｌ）と、被起動ＯＳ用ハードウェア情報テーブル２５３の、二次記憶上の被起動ＯＳ４００のバイナリアドレス、容量およびエントリアドレス情報を、メモリ１１１の領域Ａに確保されたユーザ設定ハードウェア情報テーブル２５５に書き込む（Ｓ１０９５）。
Ｓ１０９６からＳ１０９９は図１１のＳ１０３６からＳ１０３９と同じ処理であるので説明を割愛する。
【００６６】
次に、ハードウェア割り当て手段３０１はハードウェア管理手段２０３の返答結果および、ユーザ設定ハードウェア情報テーブル２５５の情報から、被起動ＯＳ４００の起動に必要なハードウェアを判断する（Ｓ１１００）。
この実施の形態の場合は、ユーザ設定ハードウェア情報テーブル２５５から被起動ＯＳ４００の起動に必要なＣＰＵ数は２つであり、ハードウェア管理手段２０３の返答結果から未管理のＣＰＵがＣＰＵ１０２とＣＰＵ１０３であることから、ＣＰＵ１０２とＣＰＵ１０３を被起動ＯＳ４００に割り当てる。
管理メモリ領域については、ハードウェア割り当て手段３０１は、未管理のメモリ領域Ｃとメモリ領域Ｄについて、メモリ領域分割テーブル２５４の内容を取得し、メモリ領域Ｃとメモリ領域Ｄの容量を算出する。そして、メモリ領域Ｃとメモリ領域Ｄを合計した容量（０ｘ３Ｃ０００００）を割り当てることで、ユーザ設定ハードウェア情報テーブル２５５のメモリ容量（０ｘ１Ｆ０００００）以上の容量になると判断し、メモリ領域Ｃとメモリ領域Ｄを被起動ＯＳ４００に割り当てる。
また、入出力装置についても、必須入出力装置であるシリアルコンソールが未管理のため被起動ＯＳ４００に割り当てる。
Ｓ１１０１は図１１のＳ１０４１と同じ処理であるので説明を割愛する。
【００６７】
次に、ハードウェア管理手段２０３はハードウェア割り当て手段３０１からの報告に応じて、ハードウェア管理テーブル２５２を更新する（Ｓ１１０２）。
これにより、被起動ＯＳ４００に割り当てられたＣＰＵ１０２とＣＰＵ１０３、メモリ領域Ｃおよびメモリ領域Ｄ、シリアルコンソールを管理中かつ使用中に更新する。
Ｓ１１０３からＳ１１０５は図１１のＳ１０４３からＳ１０４５と同じ処理であるので説明を割愛する。
【００６８】
以上により、被起動ＯＳ４００の起動が終了する。
ここまでの状態における、ハードウェア管理テーブル２５２を図２３に示す。
【００６９】
次に、この実施の形態における組込み機器１で、初期起動ＯＳ３００と被起動ＯＳ４００が動作している状態から被起動ＯＳ６００を起動する手順を図２４を用いて説明する。
【００７０】
組込み機器１上で初期起動ＯＳ３００と被起動ＯＳ４００が通常動作している状態で、ユーザは初期起動ＯＳ３００を通じて、被起動ＯＳ６００の起動要求をユーザ設定ハードウェア情報作成手段３０４に伝える（Ｓ１１１２）。
この際、被起動ＯＳ６００の起動には、被起動ＯＳ６００起動用ユーザ設定ファイル１２６（図１９）を使用するように指定する。
ユーザ設定ハードウェア情報作成手段３０４は被起動ＯＳ起動用ユーザ設定ファイル１２６から、割り当てるＣＰＵ数（ｃｐｕ＝１）、割り当てるメモリ容量（ｍｅｍ＝０ｘ８０００００）、割り当てる入出力装置（ｉｏｄｅｖ＝ｄｉｓｐｌａｙ）と、被起動ＯＳ用ハードウェア情報テーブル２５３（図２０）から、被起動ＯＳ６００の起動に必要な必須ＣＰＵ数、メモリ容量及び入出力装置を取得し、これらと比較を行う（Ｓ１１１３）。
比較の結果、被起動ＯＳ６００起動用ユーザ設定ファイル１２６に記述されているハードウェアで起動できない場合は、呼び出し元のユーザ（アプリケーション）にエラーを返し処理を終了する（Ｓ１１１４）。
割り当てるハードウェアで起動できる場合は、ユーザ設定ハードウェア情報作成手段３０４は、メモリ１１１の領域Ａにユーザ設定ハードウェア情報テーブル２５５を生成し、被起動ＯＳ６００起動用ユーザ設定ファイル１２６の、割り当てるＣＰＵ数、メモリ容量、入出力装置（ＣＰＵ＝１、メモリ容量＝０ｘ８０００００、入出力装置＝ｋｅｙｂｏａｒｄ）と、被起動ＯＳ用ハードウェア情報テーブル２５３の、二次記憶上の被起動ＯＳ６００のバイナリアドレス、容量およびエントリアドレス情報を、メモリ１１１の領域Ａに確保されたユーザ設定ハードウェア情報テーブル２５５に書き込む（Ｓ１１１５）。
その後、ユーザ設定ハードウェア情報作成手段３０４は、被起動ＯＳ６００の起動をハードウェア割り当て手段３０１に伝える（Ｓ１１１６）。
【００７１】
ハードウェア割り当て手段３０１は被起動ＯＳ用ハードウェア情報テーブル２５３から被起動ＯＳ６００の起動に必要なハードウェア情報を取得する（Ｓ１１１７）。
ハードウェア割り当て手段３０１は、ハードウェア管理手段２０３に対して、現在のハードウェア管理状況を問合せる（Ｓ１１１８）。
ハードウェア管理手段２０３はハードウェア管理テーブル２５２から各ハードウェアの管理状況を読み込み、ハードウェア割り当て手段３０１に返答する（Ｓ１１１９）。
ハードウェア割り当て手段３０１はハードウェア管理手段２０３及び、被起動ＯＳ用ハードウェア情報テーブル２５３から、被起動ＯＳ６００にハードウェアを割り当てることができるかどうかを判断する（Ｓ１１２０）。
今回の場合、ハードウェア管理手段２０３から、被起動ＯＳ６００の起動に必要なハードウェア資源（ＣＰＵ＝１、メモリ＝０ｘ８０００００）は、既に他ＯＳが使用中であるという応答、および、自分の管理するハードウェアにも余裕がないため、被起動ＯＳ６００が起動できないと判断する。
被起動ＯＳが起動できない場合、ハードウェア割り当て手段３０１は、再度ハードウェア管理手段２０３に対して、今度は、他ＯＳの現在のハードウェア使用状況を問合せる。（Ｓ１１２７）。
【００７２】
ハードウェア管理手段２０３は、ハードウェア割り当て手段３０１の問合せに応じて、組込み機器１上で動作している、要求元ＯＳを除いた全てのＯＳに対して、現在のハードウェアの使用を、各ＯＳ上のハードウェア割り当て手段に対して、問合せを行う（Ｓ１１２８）。
今回の場合、被起動ＯＳ４００上のハードウェア割り当て手段４０２が対象となる。
ＯＳ４００上のハードウェア割り当て手段４０２は、自ＯＳのハードウェア利用状況を調査し、ハードウェア管理手段２０３に報告する（Ｓ１１２９）。
今回の場合、ハードウェア管理手段２０３からの問合せにより、ハードウェア割り当て手段４０２は、自ＯＳである被起動ＯＳ４００のハードウェア利用状況を調査する。被起動ＯＳ４００はＣＰＵ１０２と１０３、メモリ領域ＢとＣおよびシリアルコンソールが割り当てられており、調査の結果、仮に、ＣＰＵ１０３、および、メモリ領域Ｃを使用していなかった場合、ハードウェア割り当て手段４０２はハードウェア管理手段２０３に対して、ＣＰＵ１０３および、メモリ領域Ｃが未使用であることを報告する。
【００７３】
ハードウェア管理手段２０３はハードウェア割り当て手段４０２からの報告により、ハードウェア管理テーブル２５２を更新し、ハードウェア割り当て手段３０１に未使用のハードウェア情報を報告する（Ｓ１１３０）。
今回の場合、ハードウェア管理テーブル２５２のＣＰＵ１０３およびメモリ領域Ｃを未使用に変更し、ハードウェア割り当て手段３０１にＣＰＵ１０３及びメモリ領域Ｃが未使用であることを報告する。
ハードウェア割り当て手段３０１は、ハードウェア管理手段２０３の報告により、被起動ＯＳ６００が起動するかどうかを再度判断する（Ｓ１１３１）。
起動できない場合は呼び出し元のユーザ（アプリケーション）にエラーを返し処理を終了する（Ｓ１１３２）。
起動できる場合は、Ｓ１１２１からＳ１１２６の処理を行う。
これらの処理は図２２のＳ１１００からＳ１１０５の処理と同様であるので説明を割愛する。
【００７４】
以上により、被起動ＯＳ６００の起動が終了する。
【００７５】
このように、本実施の形態では、ハードウェア割り当て手段３０１は、いずれかの被起動ＯＳ（上記の説明では被起動ＯＳ６００）の起動が要求された際に既に起動されている起動済みＯＳ（上記の説明では被起動ＯＳ４００）が少なくとも一つ存在する場合に、起動済みＯＳに割り当て済みのハードウェア資源の起動済みＯＳにおける使用状況をハードウェア管理手段２０３に問合せ、ハードウェア管理手段２０３からの応答に基づき、被起動ＯＳに割り当てるハードウェア資源を選択する。
そして、ハードウェア管理手段２０３は、ハードウェア割り当て手段３０１からの問合せに対して、起動済みＯＳにおける割り当て済みのハードウェア資源の使用状況を調査し、調査結果を示す応答をハードウェア割り当て手段３０１に対して行う。
【００７６】
ハードウェア割り当て手段３０１は、ハードウェア管理手段２０３から通知されたハードウェア資源の割り当て状況と被起動ＯＳの起動に必要なハードウェア資源とを比較した結果、被起動ＯＳの起動に必要なハードウェア資源の少なくとも一部が割り当てできないと判断した場合に、起動済みＯＳにおける割り当て済みのハードウェア資源の使用状況をハードウェア管理手段に問合せる。
また、ハードウェア割り当て手段３０１は、起動済みＯＳにおいて被起動ＯＳの起動に必要なハードウェア資源が使用されていない場合に、起動済みＯＳにおいて使用されていないハードウェア資源を被起動ＯＳに割り当てるハードウェア資源として選択する。
【００７７】
この実施の形態における、マルチコアを搭載した組込み機器の複数ＯＳ起動方式では、各ハードウェアに対して、管理元ＯＳと使用状況の情報を保持する領域を備え、本情報を元に動作中の各ＯＳにハードウェアの使用状況の問合せを行い、各ＯＳが使用していないハードウェアを被起動ＯＳに割り当てるようにしたので、最新のハードウェア使用状況の情報を用いて、被起動ＯＳを起動することが可能となる。
【００７８】
また、今回被起動ＯＳ６００を起動するのは初期起動ＯＳ３００としたが、被起動ＯＳ４００上のハードウェア割り当て手段４０２が、初期起動ＯＳ３００上のハードウェア割り当て手段３０１と同様の機能を持つことで、被起動ＯＳ４００から、被起動ＯＳ６００を起動しても良い。
また、今回、被起動ＯＳは２つとしたが、被起動ＯＳが３つ以上あっても良い。
また、今回、他ＯＳのハードウェア利用状況を確認する手段として、ハードウェア管理手段を利用したが、他ＯＳ確認専用の手段をファームウェア上に用意しこの手段が他ＯＳのハードウェア利用状況の確認を実施しても同様の効果を得られる。
【００７９】
以上、本実施の形態では、被起動ＯＳが起動できない場合に、他ＯＳのハードウェア利用状況を問合せるハードウェア割り当て手段と、ハードウェア割り当て手段の指示により、組込み機器上の各ＯＳの最新のハードウェア使用状況を取得するハードウェア管理手段とを有する組込み機器について説明した。
【００８０】
また、本実施の形態では、被起動ＯＳを起動させる際に、自ＯＳのハードウェア資源で被起動ＯＳが起動できない場合、他ＯＳのハードウェア利用状況を問合せ、利用可能なハードウェアが存在する場合は、そのハードウェアを被起動ＯＳに割り当てることで、任意のＯＳの起動を可能にする組込み機器について説明した。
【００８１】
実施の形態５．
本実施の形態では、既に起動しているＯＳに対して、別のハードウェアを追加する方式について説明する。
【００８２】
図２５は、この発明の実施の形態５におけるマルチコアを搭載した組込み機器１（情報処理装置）の構成例を示すものである。
本実施の形態において、ハードウェア１００上の二次記憶装置１２１は、初期起動ＯＳ３００ハードウェア追加用ユーザ設定ファイル１２７を備える。
【００８３】
ファームウェア２００上のハードウェア管理手段２０３は、これまでの実施の形態で説明した機能に追加して、初期起動ＯＳ３００上のハードウェア割り当て手段３０１からの、ハードウェア追加の要求に応じ、組込み機器１上のハードウェアの使用状況をハードウェア管理テーブル２５２から取得し、ハードウェア割り当て手段３０１に返答するという機能を持つ。
さらに、ハードウェア割り当て手段３０１から、他ＯＳのハードウェア利用状況の問合せに応じ、呼び出し元以外のＯＳ上のハードウェア割り当て手段に対して、ハードウェアの利用状況を問合せ、返答結果から、ハードウェア管理テーブルを更新し、呼び出し元のハードウェア割り当て手段へ返答するという機能を持つ。
【００８４】
初期起動ＯＳ３００上のハードウェア割り当て手段３０１は、これまでの実施の形態で説明した機能に追加して、ユーザからのハードウェア資源追加の要求に応じ、ファームウェア２００上のハードウェア管理手段２０３に対し、ハードウェアの使用状況について、問合せを行うという機能を持つ。
【００８５】
また、各ＯＳ上のハードウェア割り当て手段４０２は図１６と同様に、ハードウェア管理手段２０３からの問合せに応じ、自ＯＳのハードウェア使用状況を調査し、ハードウェア管理手段２０３へ返答を行う。
【００８６】
また、後述するように、ユーザ設定ハードウェア情報作成手段３０４は、ハードウェア割り当て手段３０１に対して、既に起動されている特定の起動済みＯＳ（例えば、初期起動ＯＳ３００）に特定種類のハードウェア資源を追加割り当てするよう指示する。
ユーザ設定ハードウェア情報作成手段３０４は、ハードウェア追加指示手段の例である。
【００８７】
次に、初期起動ＯＳ３００ハードウェア追加用ユーザ設定ファイル１２７の記述例を図２６に示す。
本ファイルでは、初期起動ＯＳ３００及び被起動ＯＳ４００が起動し、通常状態となったあとに、初期起動ＯＳ３００に新たに割り当てるハードウェアの情報を保持している。
本記述例の情報の内容としては、初期起動ＯＳ３００に新たに割り当てるＣＰＵ数（ＣＰＵ＋＝１）である。
なお、今回はＣＰＵのみの追加としたが、追加するハードウェアとしては、メモリ、及び、入出力装置であっても良い。
また、追加するハードウェアが複数記述されていても良い。
本ファイルはユーザあるいはアプリケーションによって、予め準備されていることを想定している。
【００８８】
図２５における他の構成は、図１６における構成と同一、もしくは相当部であり、説明を省略する。
【００８９】
次に、この実施の形態における、初期起動ＯＳ３００と被起動ＯＳ４００が通常動作になってから、ユーザの指示により、初期起動ＯＳ３００に対してハードウェアを割り当てる動作を図２７を用いて説明する。
【００９０】
なお、この実施の形態における組込み機器１のハードウェアリセットから初期起動ＯＳ３００の起動が終了するまでは図２１と同様であるため、説明を省略する。
また、初期起動ＯＳ３００の起動が終了し、通常動作状態から、被起動ＯＳ４００を起動するまでは図２２と同様であるため、説明を省略する。
【００９１】
組込み機器１が通常状態で、ユーザは、初期起動ＯＳ３００を通じて、初期起動ＯＳ３００上のハードウェア追加を、ユーザ設定ハードウェア情報作成手段３０４に伝える（Ｓ１１４２）。
この際、初期起動ＯＳ３００に対して追加するハードウェアの情報は初期起動ＯＳ３００ハードウェア追加用ユーザ設定ファイル１２７（図２６）を使用するように指定する。
【００９２】
ユーザ設定ハードウェア情報作成手段３０４は初期起動ＯＳ３００ハードウェア追加用ユーザ設定ファイル１２７から、追加するＣＰＵ数、メモリ容量、入出力装置を取得する。
さらに、ファームウェア２００上のハードウェア管理手段２０３に対して、初期起動ＯＳ３００が管理しているハードウェア情報を取得し、これらの情報を統合し、メモリ１１１の領域Ａに確保されているユーザ設定ハードウェア情報テーブル２５５に書き込む（Ｓ１１４３）。
その後、ユーザ設定ハードウェア情報作成手段３０４は、初期起動ＯＳ３００に対するハードウェアの追加を、ハードウェア割り当て手段３０１に指示する（Ｓ１１４４）。
【００９３】
ハードウェア割り当て手段３０１は、ユーザ設定ハードウェア情報作成手段３０４からのハードウェアの追加指示を受け、ファームウェア２００上のハードウェア管理手段２０３に対し、組込み機器１上のハードウェアの管理状況について問合せを行う（Ｓ１１４５）。
ハードウェア管理手段２０３は、ハードウェア管理テーブル２５２の使用状況を調べ、ハードウェア割り当て手段３０１に報告する（Ｓ１１４６）。
ハードウェア割り当て手段３０１は、ハードウェア管理手段２０３からの報告の結果、および、ユーザ設定ハードウェア情報テーブル２５５から、ハードウェアを初期起動ＯＳ３００に割り当てることができるかどうかを判断する（Ｓ１１４７）。
ハードウェアを初期起動ＯＳ３００に割り当てることができる場合の処理は後述のＳ１１４８からＳ１１５０と同様である。
【００９４】
今回の場合、ハードウェア管理手段２０３から未使用のＣＰＵがないと報告されるため、ハードウェア割り当て手段３０１は、再度、ハードウェア管理手段２０３に対し、他ＯＳの現在のハードウェア使用状況を問合せるよう指示する（Ｓ１１５１）。
【００９５】
ハードウェア管理手段２０３は、ハードウェア割り当て手段３０１の問合せに応じて、組込み機器１上で動作している、要求元ＯＳを除いた全てのＯＳに対して、現在のハードウェアの使用状況を、各ＯＳ上のハードウェア割り当て手段に対して、問合せを行う（Ｓ１１５２）。今回の場合、被起動ＯＳ４００上のハードウェア割り当て手段４０２が対象となる。
【００９６】
ＯＳ４００上のハードウェア割り当て手段４０２は、自ＯＳのハードウェア利用状況を調査し、ハードウェア管理手段２０３に報告する（Ｓ１１５３）。
今回の場合、ハードウェア管理手段２０３からの問合せにより、ハードウェア割り当て手段４０２は、自ＯＳである被起動ＯＳ４００のハードウェア利用状況を調査する。
被起動ＯＳ４００はＣＰＵ１０２と１０３、メモリ領域ＢとＣおよびシリアルコンソールが割り当てられており、調査の結果、仮に、ＣＰＵ１０３、および、メモリ領域Ｃを使用していなかった場合、ハードウェア割り当て手段４０２はハードウェア管理手段２０３に対して、ＣＰＵ１０３および、メモリ領域Ｃが未使用であることを報告する。
【００９７】
ハードウェア管理手段２０３はハードウェア管理テーブル２５２の更新を行う。
今回の場合、ＣＰＵ１０３及び、メモリ領域Ｃを未使用に変更する。
その後、ハードウェア管理手段２０３は、ハードウェア割り当て手段３０１に未使用のハードウェアを報告する（Ｓ１１５４）。
【００９８】
ハードウェア割り当て手段３０１はハードウェア管理手段２０３の報告および、ユーザ設定ハードウェア情報テーブル２５５から、初期起動ＯＳ３００にハードウェアを割り当てることができるかどうか判断する（Ｓ１１５５）。
初期起動ＯＳ３００にハードウェアを割り当てることができない場合は、呼び出し元のユーザ（アプリケーション）にエラーを返し処理を終了する（Ｓ１１５６）。
初期起動ＯＳ３００にハードウェアを割り当てることが可能な場合は、ハードウェア割り当て手段３０１はハードウェア管理手段２０３に対して、初期起動ＯＳ３００が使用するハードウェアを報告する。
今回の場合はＣＰＵ１０３を使用することをハードウェア管理手段２０３に報告する（Ｓ１１４８）。
【００９９】
ハードウェア管理手段２０３はハードウェア割り当て手段３０１の報告から、ハードウェア管理テーブル２５２を更新する（Ｓ１１４９）。
また、ハードウェア割り当て手段３０１は、ハードウェア起動／停止手段３０２を用いて初期起動ＯＳ３００で追加ハードウェアを利用可能にする。
今回の場合は初期起動ＯＳ３００でＣＰＵ１０３を利用可能にする（Ｓ１１５０）。
【０１００】
以上で、初期起動ＯＳ３００と被起動ＯＳ４００が通常動作になってから、ユーザが初期起動ＯＳ３００に対してハードウェアを新たに割り当てることが可能となる。
【０１０１】
このように、本実施の形態では、ユーザ設定ハードウェア情報作成手段３０４（ハードウェア追加指示手段）が、ハードウェア割り当て手段３０１に対して、既に起動されている特定の起動済みＯＳ（上記の説明では初期起動ＯＳ３００）に特定種類のハードウェア資源を追加割り当てするよう指示し、ハードウェア割り当て手段３０１は、ユーザ設定ハードウェア情報作成手段３０４から特定の起動済みＯＳへの特定種類のハードウェア資源の追加割り当て指示があった場合であって、特定の起動済みＯＳ以外に起動済みＯＳ（上記の説明では被起動ＯＳ４００）が存在する場合に、特定の起動済みＯＳ以外の他の起動済みＯＳに割り当て済みのハードウェア資源の他の起動済みＯＳにおける使用状況をハードウェア管理手段２０３に問合せ、ハードウェア管理手段２０３からの応答に基づき、特定の起動済みＯＳに追加割り当てをするハードウェア資源を選択する。
ハードウェア管理手段２０３は、ハードウェア割り当て手段３０１からの問合せに対して、他の起動済みＯＳ（被起動ＯＳ４００）における割り当て済みのハードウェア資源の使用状況を調査し、調査結果を示す応答をハードウェア割り当て手段３０１に対して行う。
【０１０２】
また、本実施の形態では、ハードウェア割り当て手段３０１は、他の起動済みＯＳにおいて特定種類のハードウェア資源が使用されていない場合に、他の起動済みＯＳにおいて使用されていない特定種類のハードウェア資源を特定の起動済みＯＳに追加割り当てをするハードウェア資源として選択する。
【０１０３】
以上のように、本実施の形態による、マルチコアを搭載した組込み機器の複数ＯＳ起動方式では、既に動作中のＯＳに対して追加するハードウェア情報を保持する領域を備え、本情報を元に、各ＯＳに対して割り当て可能なハードウェアを問合せる機能を追加したので、最新のハードウェア使用状況の情報を用いて、ＯＳへハードウェアの追加を行うことが可能となる。
【０１０４】
なお、今回は、初期起動ＯＳ３００ハードウェア追加用ユーザ設定ファイルについて、ハードウェア資源を相対値で指定したが、絶対値で指定（ＣＰＵ＝２等）しても良い。
また、ハードウェアを追加するＯＳは初期起動ＯＳ３００としたが、被起動ＯＳ４００を用いても同様の効果を得られる。
【０１０５】
本実施の形態では、既に起動しているＯＳに対する、追加ハードウェアの情報を保持する、ＯＳハードウェア追加用ユーザ設定ファイルを有する組込み機器について説明した。
【０１０６】
また、ユーザが生成可能な、ＯＳハードウェア追加用ユーザ設定ファイルを設け、このファイルに記載されているハードウェアの利用状況を、他のＯＳに対して問合せ、未使用のハードウェアが存在する場合には、既に起動しているＯＳに対してハードウェアを追加する組込み機器について説明した。
【０１０７】
実施の形態６．
本実施の形態では、既に起動しているＯＳから、ハードウェアを削除する方式について説明する。
【０１０８】
図２８は、この発明の実施の形態６におけるマルチコアを搭載した組込み機器１（情報処理装置）の構成例を示すものである。
【０１０９】
本実施の形態において、ファームウェア２００上のハードウェア管理手段２０３は被起動ＯＳ４００からの更新依頼に基づき、ハードウェア管理テーブル２５２の該当するハードウェアを未使用に変更する。
【０１１０】
被起動ＯＳ４００上のハードウェア割り当て手段４０２は、これまでの実施の形態において説明した機能に追加して、ユーザから、ＯＳが使用しているハードウェアの削除要求により、ハードウェアを削除することで、ＯＳが動作可能かどうかを判断し、動作可能な場合は、被起動ＯＳ４００から該当するハードウェアを削除し、ハードウェア管理手段２０３に対して、ハードウェアが削除されたことを報告する機能を持つ。
【０１１１】
被起動ＯＳ用ハードウェア情報テーブル２５３は、これまでの実施の形態において説明した機能に追加して、被起動ＯＳ４００に対して、ハードウェア資源を削除する際に、ハードウェア削除後もＯＳが動作可能かどうかを判断するために使用されるという機能を持つ。
【０１１２】
また、ユーザ設定ハードウェア情報作成手段４０４は、後述するように、起動済みである被起動ＯＳ４００から特定種類のハードウェア資源の割り当てを解除しても被起動ＯＳ４００の継続動作が可能か否かを判断し、特定種類のハードウェア資源の割り当てを解除しても被起動ＯＳ４００の継続動作が可能な場合に、ハードウェア割り当て手段４０２に対して被起動ＯＳ４００における特定種類のハードウェア資源の割り当てを解除するよう指示する。
ユーザ設定ハードウェア情報作成手段４０４は、ハードウェア解除指示手段の例である。
【０１１３】
次に、被起動ＯＳ４００ハードウェア削除用ユーザ設定ファイル１２８の記述例を図２９に示す。
本ファイルでは、初期起動ＯＳ３００及び、被起動ＯＳ４００が起動し通常状態となった後に、被起動ＯＳ４００から削除するハードウェアの情報を保持している。
情報の内容としては、被起動ＯＳ４００から削除するＣＰＵ数（ＣＰＵ−＝１）である。なお、今回はＣＰＵのみの削除としたが、削除するハードウェアとしては、メモリ、及び、入出力装置であっても良い。
また、削除するハードウェアが複数記述されていても良い。
本ファイルはユーザあるいはアプリケーションによって、予め準備されていることを想定している。
【０１１４】
図２８における他の構成は、図１６における構成と同一、もしくは相当部であり、説明を省略する。
【０１１５】
次に、この実施の形態における、初期起動ＯＳ３００と被起動ＯＳ４００が通常動作になってから、ユーザの指示により、被起動ＯＳ４００が使用しているハードウェアを削除する動作を図３０を用いて説明する。
【０１１６】
なお、この実施の形態における組込み機器１のハードウェアリセットから初期起動ＯＳ３００の起動が終了するまでは図２１と同様であるため、説明を省略する。
また、初期起動ＯＳ３００の起動が終了し、通常動作状態から、被起動ＯＳ４００を起動するまでは図２２と同様であるため、説明を省略する。
【０１１７】
組込み機器１が通常状態で、ユーザは、初期起動ＯＳ３００を通じて、被起動ＯＳ４００が使用中のハードウェアの削除を、ユーザ設定ハードウェア情報作成手段４０４に伝える（Ｓ１１６２）。
この際、被起動ＯＳ４００から削除するハードウェアの情報は被起動ＯＳ４００ハードウェア削除用ユーザ設定ファイル１２８（図２９）を使用するように指定する。
【０１１８】
ユーザ設定ハードウェア情報作成手段４０４は、被起動ＯＳ用ハードウェア情報テーブル２５３および、被起動ＯＳ４００ハードウェア削除用ユーザ設定ファイル１２８の情報から、指定されたハードウェアを削除後も、被起動ＯＳ４００が動作可能かどうか判断する（Ｓ１１６３）。
動作できない場合は呼び出し元のユーザ（アプリケーション）にエラーを返し処理を終了する（Ｓ１１６４）。
【０１１９】
動作する場合、ユーザ設定ハードウェア情報作成手段４０４は、ハードウェア割り当て手段４０２に対し、指定されたハードウェアを削除するよう指示する（Ｓ１１６５）。
今回の場合はＣＰＵ一つを削除するよう指示する。
【０１２０】
ハードウェア割り当て手段４０２は、ハードウェア起動／停止手段４０１を用いて、被起動ＯＳ４００から該当するハードウェアの使用を停止し、ハードウェア管理手段２０３に対して、指定されたハードウェアの情報を更新するよう指示する（Ｓ１１６６）。
今回の場合では、例えばＣＰＵ１０２の使用を停止し、ＣＰＵ１０２の利用状況を更新するようハードウェア管理手段２０３に指示する。
【０１２１】
ハードウェア管理手段２０３は指定されたハードウェアを未管理および、未使用に変更する（１１６７）。
以上により、ユーザの指示により、被起動ＯＳ４００からハードウェアを削除することが可能となる。
【０１２２】
このように、本実施の形態では、ユーザ設定ハードウェア情報作成手段４０４（ハードウェア解除指示手段）が、既に起動されている特定の起動済みＯＳ（上記の説明では被起動ＯＳ４００）から特定種類のハードウェア資源の割り当てを解除しても特定の起動済みＯＳの継続動作が可能か否かを、特定の起動済みＯＳの起動ハードウェア資源情報を参照して判断し、特定種類のハードウェア資源の割り当てを解除しても特定の起動済みＯＳの継続動作が可能な場合に、ハードウェア割り当て手段４０２に対して特定の起動済みＯＳにおける特定種類のハードウェア資源の割り当てを解除するよう指示する。
そして、ハードウェア割り当て手段４０２は、ユーザ設定ハードウェア情報作成手段４０４からの指示に従い、特定の起動済みＯＳにおける特定種類のハードウェア資源の割り当てを解除する。
【０１２３】
本実施の形態による、マルチコアを搭載した組込み機器の複数ＯＳ起動方式では、既に起動している他ＯＳに対する、削除ハードウェアの情報を保持する領域を備え、他ＯＳからハードウェアを削除する際には本領域の情報と、ＯＳが動作する最低条件とを比較し、削除可能かどうか判断するようにしたので、動作中の他ＯＳから、ハードウェアの削除を行うことが可能となる。
【０１２４】
なお、本実施の形態では、削除するのはＣＰＵとしたが、メモリ、あるいは入出力装置であっても良い。
また、今回、初期起動ＯＳ３００から被起動ＯＳ４００に割り当てられたハードウェアを削除したが、被起動ＯＳ４００から初期起動ＯＳ３００のハードウェアを削除しても同様の効果を得られる。
【０１２５】
以上、本実施の形態では、既に起動しているＯＳに対する、削除ハードウェアの情報を保持する、ＯＳハードウェア削除用ユーザ設定ファイルを有する組込み機器について説明した。
【０１２６】
また、本実施の形態では、ユーザが生成可能な、ＯＳハードウェア削除用ユーザ設定ファイルを設け、このファイルに記載されているハードウェアと、ＯＳの最低動作要件の情報を保持する被起動ＯＳ用ハードウェア情報テーブルの情報を比較し、ユーザの指定するハードウェアが削除可能かを判断し、削除可能な場合には、ＯＳからハードウェアを削除する組込み機器について説明した。
【０１２７】
実施の形態７．
本実施の形態では、複数のＯＳでハードウェアに空きがある場合に、どのＯＳのハードウェアを割り当てるかに関して、ハードウェアを使用しているＯＳ、あるいはそのＯＳ上のプロセスの優先度に基づいて、ハードウェアの割り当てを行う。
【０１２８】
図３１は、この発明の実施の形態７におけるマルチコアを搭載した組込み機器１（情報処理装置）の構成例を示すものである。
【０１２９】
ファームウェア２００上の優先度判断手段２０４は、組込み機器１上の各ＯＳで、複数のハードウェア資源が未使用であった場合、各ＯＳ上の優先度設定テーブル３５１、４５１、６５１から各ＯＳのタスク（あるいはプロセス）の優先度及び、そのタスクが使用しているハードウェアを取得し、優先度管理テーブル２５６に格納するという機能を持つ。
さらに、優先度判断手段２０４は、優先度管理テーブル２５６の情報をあるアルゴリズムに適用し、最も優先度の低いハードウェアを決定し、ハードウェア管理手段へ報告するという機能を持つ。
優先度判断手段２０４における、ハードウェアの優先度を決定する方法としては、例えば、図３２のような評価式が考えられる。
この場合、各ＯＳ毎の優先度、ＯＳ内のタスクの優先度が定義され、さらに、複数タスクがハードウェアを共有していることを想定している。
【０１３０】
ファームウェア２００上の優先度管理テーブル２５６は、各ＯＳの優先度設定テーブル３５１、４５１、６５１の内容を統合し、さらに優先度を算出するために必要な情報を保持するという機能を持つ。
図３３に優先度管理テーブル２５６の内容例を示す。本ファイルでは、各ＯＳ持つ優先度、及び、各ＯＳ上のタスクのＯＳ内での優先度、及び、各タスクが使用しているハードウェアを保持している。
さらに、優先度を算出するために必要な項目として、ＯＳ優先度最小値、ＯＳ優先度最大値、各ＯＳのタスク優先度最小値、タスク優先度最大値を保持している。
【０１３１】
ハードウェア管理手段２０３は、これまでの実施の形態で説明した機能に追加して、各ＯＳ上の複数のハードウェアが未使用だった場合、優先度判断手段２０４に対し、どのハードウェアの優先度が最低かを問合せ、優先度判断手段２０４から回答のあったハードウェアを被起動ＯＳに対して割り当てる機能を持つ。
【０１３２】
初期起動ＯＳ３００上の優先度設定テーブル３５１は、初期起動ＯＳ３００上で動作しているタスクの優先度及び、タスクが使用しているハードウェアの情報を保持する機能を持つ。
他のＯＳ上にある優先度設定テーブル４５１、６５１も同様の機能を持つため、説明を省略する。
【０１３３】
図３１における他の構成は、図２８における構成と同一もしくは相当部であり、説明を省略する。
【０１３４】
次に、本実施の形態において、初期起動ＯＳ３００、被起動ＯＳ４００及び、被起動ＯＳ６００が起動し、通常状態になった後で、被起動ＯＳ７００を起動する手順を、図３６を用いて説明する。
【０１３５】
なお、初期起動ＯＳ３００を起動する手順は図２１と同様の処理のため省略する。
また、被起動ＯＳ４００を起動する手順は図２２と同様の処理のため省略する。
さらに、被起動ＯＳ６００を起動する手順も図２２と同様の処理のため省略する。
ただし、各ＯＳが使用するハードウェアは若干異なるため、初期起動ＯＳ３００、被起動ＯＳ４００及び、被起動ＯＳ６００が起動し、通常状態になった後における、ハードウェア管理テーブルを図３４に示す。
また、被起動ＯＳ７００に割り当てる、被起動ＯＳ７００起動用ユーザ設定ファイル１３０の内容例を図３５に示す。
【０１３６】
ユーザは、初期起動ＯＳ３００を通じて、被起動ＯＳ７００の起動要求をユーザ設定ハードウェア情報作成手段３０４に伝える（Ｓ１１７２）。
この際、被起動ＯＳ７００の起動には、被起動ＯＳ７００起動用ユーザ設定ファイル１３０（図３５）を使用するように指定する。
ユーザ設定ハードウェア情報作成手段３０４は被起動ＯＳ７００起動用ユーザ設定ファイル１３０から、割り当てるＣＰＵ数（ＣＰＵ＝１）割り当てるメモリ量（ｍｅｍ＝０ｘ８０００００）、割り当てる入出力装置（ｉｏｄｅｖ＝ｎｅｔｗｏｒｋ）と、被起動ＯＳ用ハードウェア情報テーブル２５３から、被起動ＯＳ７００の起動に必須なＣＰＵ数、メモリ容量および、入出力装置を取得し、比較を行う（Ｓ１１７３）。
比較の結果、被起動ＯＳ７００起動用ユーザ設定ファイル１３０に記述されているハードウェアで起動できない場合は、呼び出し元のユーザ（アプリケーション）にエラーを返し処理を終了する（Ｓ１１７４）。
【０１３７】
割り当てるハードウェアで起動できる場合は、ユーザ設定ハードウェア情報作成手段３０４は、ユーザ設定ハードウェア情報テーブル２５５を生成し、被起動ＯＳ７００起動用ユーザ設定ファイル１３０の、割り当てるＣＰＵ数、メモリ容量、入出力装置と、被起動ＯＳ用ハードウェア情報テーブル２５３の、二次記憶上の被起動ＯＳ７００のバイナリアドレス、容量およびエントリアドレス情報を、ユーザ設定ハードウェア情報テーブル２５５に書き込む（Ｓ１１７５）。
その後、ユーザ設定ハードウェア情報作成手段３０４は、被起動ＯＳ７００の起動をハードウェア割り当て手段３０１に伝える（Ｓ１１７６）。
【０１３８】
ハードウェア割り当て手段３０１は、ハードウェア管理手段２０３に対して、ハードウェア管理状況を問合せる（Ｓ１１７７）。
ハードウェア管理手段２０３は、被起動ＯＳ用ハードウェア情報テーブル２５３から、各ハードウェアの管理状況を読み込み、ハードウェア割り当て手段３０１に返答する（Ｓ１１７８）。
ハードウェア割り当て手段３０１はハードウェア管理手段２０３の返答結果および、ユーザ設定ハードウェア情報テーブル２５５の情報から、被起動ＯＳ７００にハードウェアを割り当てることができるかどうか比較を行う（Ｓ１１７９）。
被起動ＯＳ７００にハードウェアを割り当てることができる場合はＳ１１９０からＳ１１９５の処理を行う。
本処理は図２４のＳ１１２１からＳ１１２６と同様の処理のため説明を省略する。
【０１３９】
今回の場合、メモリ容量、入出力機器に関しては、被起動ＯＳ７００へ割り当てることができるが、組込み機器１上のＣＰＵは全て使用中であるため被起動ＯＳ７００に対して、ＣＰＵ一つを割り当てることができない。
このため、ハードウェア割り当て手段３０１は再度ハードウェア管理手段２０３に対して、組込み機器１上のＯＳのハードウェア使用状況について問合せを行う（Ｓ１１８０）。
ハードウェア管理手段２０３は、各ＯＳ上のハードウェアの使用状況を取得し（Ｓ１１８１，Ｓ１１８２）、ハードウェア管理テーブル２５２を更新し、ハードウェア割り当て手段３０１に返答する（Ｓ１１８３）。
今回、例えば、被起動ＯＳ４００上のＣＰＵ１０２と、被起動ＯＳ６００上のＣＰＵ１０４が未使用であるとハードウェア割り当て手段３０１に返答する。
【０１４０】
ハードウェア割り当て手段３０１は、未使用のハードウェアを割り当てることで、被起動ＯＳが起動するかどうかを判断する（Ｓ１１８４）。
起動できない場合は、呼び出し元のユーザ（アプリケーション）にエラーを返し処理を終了する（Ｓ１１８５）。
今回の場合は、ＣＰＵ１０２、ＣＰＵ１０４が未使用であるため、これらのＣＰＵを被起動ＯＳ７００に割り当てれば起動すると判断する。
【０１４１】
次に、ハードウェア割り当て手段３０１は、ハードウェア管理手段２０３から、必要以上のハードウェアが未使用である（割り当てるハードウェアに余裕がある）かどうかを判断する（Ｓ１１８６）。
【０１４２】
必要以上のハードウェアが未使用でない場合、つまり、最低限のハードウェアを割り当てる場合は、Ｓ１１９０からＳ１１９５の処理を行う。
本処理は、図２４のＳ１１２１からＳ１１２６と同様の処理のため説明を省略する。
【０１４３】
必要以上のハードウェアが未使用である場合、ハードウェア割り当て手段３０１は、ハードウェアの優先度を、優先度判断手段２０４に問合せる（１１８７）。
【０１４４】
優先度判断手段２０４は、各ＯＳが保持する優先度設定テーブル３５１、４５１、６５１の内容を取得し、優先度管理テーブル２５６を更新し、ある判断に基づいて、問合せのあったハードウェアの優先度を決定し、ハードウェア割り当て手段３０１に返答する（Ｓ１１８８）。
今回の場合、図３２に示される優先度算出の計算式、及び、図３３に示される優先度管理テーブル２５６の情報を利用し、優先度を算出すると、ＣＰＵ１０２の優先度は６．４、ＣＰＵ１０４の優先度は１１．２となり、ＣＰＵ１０２の方が優先度が低いと算出し、ハードウェア割り当て手段３０１に返答する。
【０１４５】
ハードウェア割り当て手段３０１は優先度判断手段２０４の返答結果から、優先度の低いハードウェアを被起動ＯＳ７００へ割り当てる（Ｓ１１８９）。
今回の場合は、ＣＰＵ１０２とＣＰＵ１０４のどちらかを割り当てる必要があったが、ＣＰＵ１０２の方が優先度が低いと返答されたため、ＣＰＵ１０２を被起動ＯＳ７００に割り当てる。
その他、メモリに関しては領域Ｅ、入出力装置に関してはネットワークを被起動ＯＳ７００に割り当てる。
以降のＳ１１９１からＳ１１９５は図２４のＳ１１２２からＳ１１２６と同様の処理であるので、説明を割愛する。
以上により、被起動ＯＳ７００の起動が終了する。
【０１４６】
このように、本実施の形態では、ハードウェア割り当て手段３０１は、少なくとも一つの起動済みＯＳ（上記の説明では初期起動ＯＳ３００、被起動ＯＳ４００、６００）において複数の同種のハードウェア資源が使用されていないと判断され、複数の同種のハードウェア資源が被起動ＯＳ（上記の説明では被起動ＯＳ７００）の起動に必要なハードウェア資源である場合に、複数の同種のハードウェア資源の各々に対する優先度に基づいて、複数の同種のハードウェア資源のうちのいずれかを被起動ＯＳに割り当てる。
【０１４７】
また、本実施の形態では、優先度判断手段２０４は、ハードウェア割り当て手段３０１からの問合せに従い、複数の同種のハードウェア資源の各々が割り当てられている起動済みＯＳの優先度、及び複数の同種のハードウェア資源の各々が割り当てられているタスクの優先度の少なくともいずれかを用いて、複数の同種のハードウェア資源の各々に対する優先度を判断し、ハードウェア割り当て手段３０１は、優先度判断手段２０４による優先度の判断に基づいて、複数の同種のハードウェア資源のうちのいずれかを被起動ＯＳに割り当てる。
【０１４８】
この実施の形態による、マルチコアを搭載した組込み機器の複数ＯＳ起動方式では、各ＯＳの優先度と各ＯＳ内のタスクの優先度を保持する領域を備え、本情報を元に、被起動ＯＳへ割り当てるハードウェアを決定するようにしたので、被起動ＯＳへハードウェアを割り当てる際に、ハードウェアの効率的な割り当てを行うことが可能となる。
【０１４９】
なお、本実施の形態では優先度算出例として図３２の式を利用したが、他の優先度を決定するアルゴリズムを使用しても同様の効果を得られる。
また、優先度を決定する際に、あるアルゴリズムを使用するのではなく、ハードウェアが備える負荷判断モジュールにより、優先度を決定しても同様の効果を得られる。
また、今回ＣＰＵのみを割り当て対象としたが、メモリおよび他のハードウェアについても同様の効果を得られる。
【０１５０】
以上のように、本実施の形態では、各ＯＳの優先度および、各ＯＳ上のタスクの情報を保持する優先度管理テーブルと、優先度管理テーブルの情報、及び、ハードウェアの優先度を算出するアルゴリズムを用いて、ハードウェアの優先度を決定する優先度判断手段とを有する組込み機器について説明した。
【０１５１】
また、本実施の形態では、優先度管理テーブルを設け、本領域の情報を用いて、優先度判断手段により決定されたハードウェアを、被起動ＯＳへ割り当てることが可能な組込み機器について説明した。
【０１５２】
実施の形態８．
本実施の形態では、ハードウェアに一つも空きがない場合に、優先度の最も低いリソースを被起動ＯＳに割り当てる形式について説明する。
【０１５３】
組込み機器１の構成は実施の形態７と同様であり、図３１に示す通りである。
本実施の形態では、ハードウェア割り当て手段３０１の動作以外は、実施の形態７と同様である。
【０１５４】
次に、本実施の形態において、初期起動ＯＳ３００、被起動ＯＳ４００及び、被起動ＯＳ６００が起動し、通常状態になった後で、被起動ＯＳ７００を起動する手順を、図３８を用いて説明する。
【０１５５】
なお、初期起動ＯＳ３００を起動する手順は図２１と同様の処理のため省略する。
また、被起動ＯＳ４００を起動する手順は図２２と同様の処理のため省略する。
さらに、被起動ＯＳ６００を起動する手順も図２２と同様の処理のため省略する。
ただし、各ＯＳが使用するハードウェアは若干異なるため、初期起動ＯＳ３００、被起動ＯＳ４００及び、被起動ＯＳ６００が起動し、通常状態になった後における、ハードウェア管理テーブルを図３４に示す。
また、被起動ＯＳ７００に割り当てる、被起動ＯＳ７００起動用ユーザ設定ファイル１２４の内容例を図３５に示す。
また、ＯＳ起動後の優先度管理テーブルの例を図３７に示す。
保持する情報としては図３３に示した優先度管理テーブルと同様のため説明を省略する。
【０１５６】
Ｓ１２０２からＳ１２１４は図３６のＳ１１７２からＳ１１８４と同様の処理であり、説明を割愛する。
次に、他のＯＳへの問合せの結果、被起動ＯＳ７００に割り当てるハードウェアで被起動ＯＳ７００が起動しない場合、ハードウェア割り当て手段３０１は、優先度判断手段２０４へ優先度の一番低いハードウェアを問合せる。
今回の場合、被起動ＯＳ７００の起動にＣＰＵが一つ必要であるが、初期起動ＯＳ３００、被起動ＯＳ４００、被起動ＯＳ６００で、共に未使用のＣＰＵが無いとした場合、ハードウェア割り当て手段３０１は、各ＯＳが使用しているＣＰＵの中から、一番優先度の低いＣＰＵを問合せる（Ｓ１２１５）。
【０１５７】
優先度判断手段２０４は、優先度管理テーブル２５６からハードウェアの優先度を取得し、最低の優先度のハードウェアの停止を各ＯＳ上のハードウェア起動／停止手段に指示する（Ｓ１２２６）。ただし、ハードウェア優先度を算出する際、被起動ＯＳ用ハードウェア情報テーブル２５３の情報から判断して、ＯＳから最低の優先度のハードウェアを削除した場合に、ＯＳが動作できない場合、当該ハードウェアは、被起動ＯＳ７００への割り当て対象のハードウェアから外す。
今回の場合であれば、ＣＰＵ１０１のハードウェア優先度は０．４、ＣＰＵ１０２のハードウェア優先度は６．４、ＣＰＵ１０３のハードウェア優先度は２０、ＣＰＵ１０４のハードウェア優先度は１１．２、ＣＰＵ１０５のハードウェア優先度は４８と算出される。
しかし、被起動ＯＳ用ハードウェア情報テーブル２５３の情報から、初期起動ＯＳ３００にはＣＰＵが最低一つ必要であるため、ＣＰＵ１０１は被起動ＯＳ７００への割り当て対象のハードウェアから外れ、優先度判断手段２０４は、その次に優先度の低いハードウェアであるＣＰＵ１０２の停止を被起動ＯＳ４００のハードウェア起動／停止手段４０１に指示する。
【０１５８】
ＯＳ上のハードウェア起動／停止手段は優先度判断手段２０４から指示のあったハードウェアを停止し、優先度判断手段２０４へ返答を行う（Ｓ１２２７）。
【０１５９】
次に、優先度判断手段２０４は、ハードウェア割り当て手段３０１に対し、優先度の一番低いハードウェアを返答する（Ｓ１２２８）。
【０１６０】
ハードウェア割り当て手段３０１は、返答のあった、優先度の一番低いハードウェアを含めたハードウェアを被起動ＯＳ７００へ割り当てる（Ｓ１２２９）。
今回の場合は、ハードウェアとして、ＣＰＵ＝ＣＰＵ１０２、メモリ＝領域Ｅ、入出力装置＝ネットワークを割り当てる。
【０１６１】
Ｓ１２１６からＳ１２２５は図３６のＳ１１８６からＳ１１９５までと同様のため、説明を割愛する。
【０１６２】
以上により、被起動ＯＳ７００の起動が終了する。
【０１６３】
このように、本実施の形態では、ハードウェア割り当て手段３０１は、いずれの起動済みＯＳにおいても特定種類のハードウェア資源の空きがない場合に、各起動済みＯＳに割り当てられている特定種類のハードウェア資源に対する優先度に基づいて、いずれかの特定種類のハードウェア資源を被起動ＯＳに割り当てる。
【０１６４】
また、本実施の形態では、優先度判断手段２０４が、ハードウェア割り当て手段３０１からの問合せに従い、各起動済みＯＳについて、特定種類のハードウェア資源の割り当てを解除しても継続動作が可能か否かを、各起動済みＯＳの起動ハードウェア資源情報を参照して判断し、継続動作が可能な起動済みＯＳに割り当てられている特定種類のハードウェア資源の優先度を判断し、ハードウェア割り当て手段３０１は、優先度判断手段２０４による優先度の判断に基づいて、いずれかの特定種類のハードウェア資源を被起動ＯＳに割り当てる。
【０１６５】
また、優先度判断手段２０４は、各起動済みＯＳの優先度、及び各起動済みＯＳにおいて特定種類のハードウェア資源が割り当てられているタスクの優先度の少なくともいずれかを用いて、特定種類のハードウェア資源の各々に対する優先度を判断する。
【０１６６】
この実施の形態による、マルチコアを搭載した組込み機器の複数ＯＳ起動方式では、各ＯＳの優先度と各ＯＳ内のタスクの優先度を保持する領域を備え、本情報に基づく優先度により、他ＯＳが使用中のハードウェアを、被起動ＯＳに割り当てるようにしたので、既に起動しているＯＳによりハードウェアが占有されている場合でも、被起動ＯＳを起動することが可能となる。
【０１６７】
本実施の形態では、初期起動ＯＳ３００がＯＳを起動するとしたが、被起動ＯＳ４００、被起動ＯＳ６００が被起動ＯＳ７００を起動しても同様の効果を得られる。
また、優先度判断手段は、ハードウェアを削除すると動作が継続できないＯＳを判断してから、当該ＯＳに割り当てられているハードウェアを除外して各ハードウェアの優先度を判断するようにしてもよいし、逆に、全てのハードウェアに対して優先度を判断してから、ハードウェアを削除すると動作が継続できないＯＳを判断し、当該ＯＳに割り当てられているハードウェアを除外するようにしてもよい。
【０１６８】
以上のように、本実施の形態では、各ＯＳの優先度および、各ＯＳ上のタスクの情報を保持する優先度管理テーブルと、優先度管理テーブルの情報、及び、ハードウェアの優先度を算出するアルゴリズムを用いて、ハードウェアの優先度を決定する優先度判断手段とを有する組込み機器について説明した。
【０１６９】
また、本実施の形態では、被起動ＯＳに対して割り当てるハードウェアが足りない場合に、ＯＳの最低動作要件の情報を保持する被起動ＯＳ用ハードウェア情報テーブルの情報から、既に起動しているＯＳからハードウェアを削除可能かどうかを判断し、既に起動しているＯＳに対して、最低動作要件よりも多くのハードウェアが割り当てられている場合には、ＯＳがそのハードウェアを使用中であっても、強制的にハードウェアの割り当てを被起動ＯＳに割り当てることで、被起動ＯＳ起動用のハードウェアが足りない場合にも、被起動ＯＳを起動させる組込み機器について説明した。
【０１７０】
このように、本実施の形態では、ハードウェア管理テーブルに、管理元ＯＳとハードウェア使用状況を格納する領域を設け、初期起動ＯＳが管理中かつ未使用のハードウェアを被起動ＯＳに割り当てることで、被起動ＯＳを起動させる組込み機器について説明した。
【０１７１】
なお、実施の形態１〜８に係る組込み機器１は、図１，図９，図１６，図２５，図２８又は図３１の構成に加えて、例えば、通信ボード、表示装置、キーボード、マウス等を備えていてもよい。更に、ＦＤＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）、コンパクトディスク装置（ＣＤＤ）、メモリカード等と接続可能な構成としてもよい。
【０１７２】
通信ボードを備える場合は、組込み機器１は、通信ボードにより、ネットワークに接続されていてもよい。例えば、通信ボードは、ＬＡＮ（ローカルエリアネットワーク）、無線ＬＡＮ、インターネット、ＷＡＮ（ワイドエリアネットワーク）などに接続されていても構わない。
【０１７３】
二次記憶装置１２１には、初期起動ＯＳバイナリ１２２、被起動ＯＳバイナリ１２３等の他に、ウィンドウシステム、プログラム群、ファイル群が記憶されている。プログラム群のアプリケーションプログラムは、ＣＰＵ１０１、１０２、ＯＳ３００、４００、ウィンドウシステムにより実行される。
【０１７４】
ファイル群には、以上の説明において、「〜の判断」、「〜の計算」、「〜の比較」、「〜の評価」、「〜の更新」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶される。「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリになどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ１０１、１０２によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのＣＰＵの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、以上で説明したフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、メモリ１１１、二次記憶装置１２１、その他の記録媒体に記録される。また、データや信号は、バスや信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【０１７５】
また、本実施の形態１〜８の説明において、「〜手段」として説明しているものは、「〜回路」、「〜装置」、「〜機器」、「〜部」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜手段」として説明しているものは、図１，図９，図１６，図２５，図２８又は図３１に示すように、ファームウェアで実現されていてもよいし、ソフトウェアで実現されていてもよい。或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。プログラムはＣＰＵ１０１、１０２により読み出され、ＣＰＵ１０１、１０２により実行される。すなわち、プログラムは、実施の形態１〜８の「〜手段」としてコンピュータを機能させるものである。あるいは、実施の形態１〜８の「〜手段」の手順や方法をコンピュータに実行させるものである。
【０１７６】
このように、実施の形態１〜８に示す組込み機器は、処理装置たるＣＰＵ、記憶装置たるメモリ、二次記憶装置、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータであり、上記したように「〜手段」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【図面の簡単な説明】
【０１７７】
【図１】実施の形態１に係る組込み機器の構成例を示す図。
【図２】実施の形態１に係る初期起動ＯＳ起動情報テーブルの内容例を示す図。
【図３】実施の形態１に係るハードウェア管理テーブルの内容例を示す図。
【図４】実施の形態１に係る被起動ＯＳ用ハードウェア情報テーブルの内容例を示す図。
【図５】実施の形態１に係るメモリ領域分割テーブルの内容例を示す図。
【図６】実施の形態１に係るＯＳ起動情報テーブルの内容例を示す図。
【図７】実施の形態１に係る組込み機器が通常動作するまでの動作例を示すフローチャート図。
【図８】実施の形態１に係る通常動作状態で初期起動ＯＳが被起動ＯＳを起動するまでの動作例を示すフローチャート図。
【図９】実施の形態２に係る組込み機器の構成例を示す図。
【図１０】実施の形態２に係る被起動ＯＳ起動用ユーザ設定ファイルの記述例を示す図。
【図１１】実施の形態２に係る通常動作状態で初期起動ＯＳが被起動ＯＳを起動するまでの動作例を示すフローチャート図。
【図１２】実施の形態３に係るハードウェア管理テーブルの内容例を示す図。
【図１３】実施の形態３に係る組込み機器が通常動作するまでの動作例を示すフローチャート図。
【図１４】実施の形態３に係る通常動作状態で初期起動ＯＳが被起動ＯＳを起動するまでの動作例を示すフローチャート図。
【図１５】従来の組込み機器の構成例を示す図。
【図１６】実施の形態４に係る組込み機器の構成例を示す図。
【図１７】実施の形態４に係るメモリ領域分割テーブルの内容例を示す図。
【図１８】実施の形態４に係る被起動ＯＳ４００起動用ユーザ設定ファイルの内容例を示す図。
【図１９】実施の形態４に係る被起動ＯＳ６００起動用ユーザ設定ファイルの内容例を示す図。
【図２０】実施の形態４に係る被起動ＯＳ用ハードウェア情報テーブルの内容例を示す図。
【図２１】実施の形態４に係るハードウェアリセットから初期起動ＯＳが起動するまでの動作例を示すフローチャート図。
【図２２】実施の形態４に係る初期起動ＯＳ３００が被起動ＯＳ４００を起動させる際の動作例を示すフローチャート図。
【図２３】実施の形態４に係る初期起動ＯＳ３００及び被起動ＯＳ４００が動作後のハードウェア管理テーブルの内容例を示す図。
【図２４】実施の形態４に係る初期起動ＯＳ３００が被起動ＯＳ６００を起動するまでの動作例を示すフローチャート図。
【図２５】実施の形態５に係る組込み機器の構成例を示す図。
【図２６】実施の形態５に係る初期起動ＯＳのハードウェア追加用ユーザ設定ファイル記述例を示す図。
【図２７】実施の形態５に係る初期起動ＯＳに対してハードウェアを追加するための動作例を示すフローチャート図。
【図２８】実施の形態６に係る組込み機器の構成例を示す図。
【図２９】実施の形態６に係る被起動ＯＳハードウェア削除用ユーザ設定ファイル記述例を示す図。
【図３０】実施の形態６に係る被起動ＯＳからハードウェアを削除するための動作例を示すフローチャート図。
【図３１】実施の形態７に係る組込み機器の構成例を示す図。
【図３２】実施の形態７に係る優先度算出例を示す図。
【図３３】実施の形態７に係る優先度管理テーブルの内容例を示す図。
【図３４】実施の形態７に係るハードウェア管理テーブルの内容例を示す図。
【図３５】実施の形態７に係る被起動ＯＳ起動用ユーザ設定ファイルの内容例を示す図。
【図３６】実施の形態７に係る組込み機器の動作例を示すフローチャート図。
【図３７】実施の形態８に係る優先度管理テーブルの内容例を示す図。
【図３８】実施の形態８に係る組込み機器の動作例を示すフローチャート図。
【符号の説明】
【０１７８】
１  組込み機器、１００  ハードウェア、１０１  ＣＰＵ、１０２  ＣＰＵ、１０３  ＣＰＵ、１０４  ＣＰＵ、１０５  ＣＰＵ、１１１  メモリ、１２１  二次記憶装置、１２２  初期起動ＯＳバイナリ、１２３  被起動ＯＳバイナリ、１２４  被起動ＯＳ起動用ユーザ設定ファイル、１２５  被起動ＯＳバイナリ、１２６  被起動ＯＳ起動用ユーザ設定ファイル、１２７  初期起動ＯＳハードウェア追加用ユーザ設定ファイル、１２８  被起動ＯＳハードウェア削除用ユーザ設定ファイル、１２９  被起動ＯＳバイナリ、１３０  被起動ＯＳ起動用ユーザ設定ファイル、１３１  入出力装置、２００  ファームウェア、２０１  ＯＳ起動手段、２０２  初期起動ＯＳ起動手段、２０３  ハードウェア管理手段、２５１  初期起動ＯＳ起動情報テーブル、２５２  ハードウェア管理テーブル、２５３  被起動ＯＳ用ハードウェア情報テーブル、２５４  メモリ領域分割テーブル、２５５  ユーザ設定ハードウェア情報テーブル、２５６  優先度管理テーブル、３００  初期起動ＯＳ、３０１  ハードウェア割り当て手段、３０２  ハードウェア起動／停止手段、３０４  ユーザ設定ハードウェア情報作成手段、３５１  優先度設定テーブル、４００  被起動ＯＳ、４０１  ハードウェア起動／停止手段、４０２  ハードウェア割り当て手段、４０４  ユーザ設定ハードウェア情報作成手段、４５１  優先度設定テーブル、５００  ＯＳ起動情報テーブル、６００  被起動ＯＳ、６０１  ハードウェア起動／停止手段、６０２  ハードウェア割り当て手段、６５１  優先度設定テーブル、７００  被起動ＯＳ、７０１  ハードウェア起動／停止手段。
【図１０】
2008033877.tif 000003
【図１６】
2008033877.tif 000004
【図１７】
2008033877.tif 000005
【図１８】
2008033877.tif 000006
【図１９】
2008033877.tif 000007
【図２０】
2008033877.tif 000008
【図２１】
2008033877.tif 000009
【図２２】
2008033877.tif 000010
【図２３】
2008033877.tif 000011
【図２４】
2008033877.tif 000012
【図２５】
2008033877.tif 000013
【図２６】
2008033877.tif 000014
【図２７】
2008033877.tif 000015
【図２８】
2008033877.tif 000016
【図２９】
2008033877.tif 000017
【図３０】
2008033877.tif 000018
【図３１】
2008033877.tif 000019
【図３２】
2008033877.tif 000020
【図３３】
2008033877.tif 000021
【図３４】
2008033877.tif 000022
【図３５】
2008033877.tif 000023
【図３６】
2008033877.tif 000024
【図３７】
2008033877.tif 000025
【図３８】
2008033877.tif 000026
【図１】
2008033877.tif 000027
【図２】
2008033877.tif 000028
【図３】
2008033877.tif 000029
【図４】
2008033877.tif 000030
【図５】
2008033877.tif 000031
【図６】
2008033877.tif 000032
【図７】
2008033877.tif 000033
【図８】
2008033877.tif 000034
【図９】
2008033877.tif 000035
【図１１】
2008033877.tif 000036
【図１２】
2008033877.tif 000037
【図１３】
2008033877.tif 000038
【図１４】
2008033877.tif 000039
【図１５】
2008033877.tif 000040