"複数のプロセッサを管理するスケジューラが、第1アプリケーションが起動されたときに、アプリケーション情報テーブルに基づいて、前記第1アプリケーションと同時に実行されることのない第2アプリケーションを実行するプロセッサを検出し、前記プロセッサに前記第1アプリケーションを割り当てることを特徴とするスケジューリング方法。前記アプリケーション情報テーブルは、アプリケーション毎に、前記アプリケーションのコンテキスト情報と、前記アプリケーションと同時に実行され得る他のアプリケーション情報とを含むことを特徴とする請求項1に記載のスケジューリング方法。前記第1アプリケーションと同時に実行されることのない第2アプリケーションを実行するプロセッサが複数あるときに、前記複数のプロセッサから負荷が最小であるプロセッサが前記第1アプリケーションに割り当てられることを特徴とする請求項1に記載のスケジューリング方法。複数のプロセッサを管理するスケジューラが、第1アプリケーションが起動されたときに、アプリケーション情報テーブルに基づいて、前記複数のプロセッサの少なくとも一のプロセッサで実行される第2アプリケーションを前記第1アプリケーションに切り替えるときの負荷を計算し、前記負荷に基づいて前記第1アプリケーションを実行する第1プロセッサを選択することを特徴とするスケジューリング方法。前記第2アプリケーションは、前記第1アプリケーションと同時に実行され得ることを特徴とする請求項4に記載のスケジューリング方法。前記アプリケーション情報テーブルは、アプリケーション毎に、前記アプリケーションのコンテキスト情報と、前記アプリケーションと同時に実行され得る他のアプリケーション情報とを含むことを特徴とする請求項4または請求項5に記載のスケジューリング方法。前記負荷は、前記第2アプリケーションのコンテキストの切り替え時間と、前記第2アプリケーションと前記第1アプリケーションとの切り替え回数の期待値とに基づいて算出されることを特徴とする請求項4乃至請求項6の何れか一に記載のスケジューリング方法。前記少なくとも一のプロセッサは2個以上のプロセッサであり、前記2個以上のプロセッサで実行される第2アプリケーションを前記第1アプリケーションに切り替えるときの負荷を計算し、複数の前記負荷の中で最小の負荷を有するプロセッサを前記第1プロセッサとして選択することを特徴とする請求項4乃至請求項7の何れか一に記載のスケジューリング方法。前記アプリケーション情報テーブルに基づいて、前記複数のプロセッサの少なくとも一のプロセッサで実行される第3アプリケーションを前記第2アプリケーションに切り替えるときの負荷を計算し、前記負荷に基づいて前記第2アプリケーションを実行する第2プロセッサを選択することを特徴とする請求項4乃至請求項8の何れか一に記載のスケジューリング方法。複数のプロセッサと、前記複数のプロセッサを管理するスケジューラと、を含み、前記スケジューラは、第1アプリケーションの起動タスクを受信したときに、アプリケーション情報テーブルに基づいて、前記複数のプロセッサの少なくとも一のプロセッサで実行される第2アプリケーションを前記第1アプリケーションに切り替えるときの負荷を計算し、前記負荷に基づいて前記第1アプリケーションを実行する第1プロセッサを選択することを特徴とするスケジューリングシステム。しかしながら、従来のマルチコアプロセッサシステムでは、マルチタスク動作時に、同一CPUに頻繁に切り替えられるアプリケーションが割り当てられる場合があり、アプリケーションの切り替えにかかる時間の増大化を招くという問題があった。本発明は、上述した従来技術による問題点を解消するため、アプリケーションの切り替えの高速化を図ることができるスケジューリング方法およびスケジューリングシステムを提供することを目的とする。上述した課題を解決し、目的を達成するため、本発明の一側面によれば、複数のプロセッサを管理するスケジューラが、第1アプリケーションが起動されたときに、アプリケーション情報テーブルに基づいて、前記第1アプリケーションと同時に実行されることのない第2アプリケーションを実行するプロセッサを検出し、前記プロセッサに前記第1アプリケーションを割り当てるスケジューリング方法が提案される。また、上述した課題を解決し、目的を達成するため、本発明の一側面によれば、複数のプロセッサを管理するスケジューラが、第1アプリケーションが起動されたときに、アプリケーション情報テーブルに基づいて、前記複数のプロセッサの少なくとも一のプロセッサで実行される第2アプリケーションを前記第1アプリケーションに切り替えるときの負荷を計算し、前記負荷に基づいて前記第1アプリケーションを実行する第1プロセッサを選択するスケジューリング方法が提案される。また、上述した課題を解決し、目的を達成するため、本発明の一側面によれば、複数のプロセッサと、前記複数のプロセッサを管理するスケジューラと、を含み、前記スケジューラは、第1アプリケーションの起動タスクを受信したときに、アプリケーション情報テーブルに基づいて、前記複数のプロセッサの少なくとも一のプロセッサで実行される第2アプリケーションを前記第1アプリケーションに切り替えるときの負荷を計算し、前記負荷に基づいて前記第1アプリケーションを実行する第1プロセッサを選択するスケジューリングシステムが提案される。本発明の一側面によれば、アプリケーションの切り替えの高速化を図ることができるという効果を奏する。以下に添付図面を参照して、この発明にかかるスケジューリング方法およびスケジューリングシステムの実施の形態を詳細に説明する。本実施の形態において、スケジューリングシステムは、コアが複数搭載されたマルチコアプロセッサを含むマルチコアプロセッサシステムである。マルチコアプロセッサは、コアが複数搭載されていれば、複数のコアが搭載された単一のプロセッサでもよく、シングルコアのプロセッサが並列されているプロセッサ群でもよい。ただし、本実施の形態では、説明を単純化するため、シングルコアのプロセッサが並列されているプロセッサ群を例に挙げて説明する。スケジューリング処理の一実施例図1および図2は、実施の形態にかかるスケジューリング処理の一実施例を示す説明図である。図1および図2において、マルチコアプロセッサシステム100は、CPUCentralProcessingUnit0と、CPU1と、を含むスケジューリングシステムである。CPU0は、OSOperatingSystem0を実行し、マルチコアプロセッサシステム100の全体の制御を司る。OS0は、マスタOSであり、アプリケーションをどのCPUに割り当てるかを制御するスケジューラ101を備えている。また、CPU0は、割り当てられたアプリケーションを実行する。CPU1は、OS1を実行し、OS1に割り当てられたアプリケーションを実行する。OS1は、スレーブOSである。なお、アプリアプリケーションが割り当てられているCPUとアプリが割り当てられているOSとは同一の意味である。以下、図1を用いて、新たなアプリ5が起動された場合を例に挙げて、マルチコアプロセッサシステム100のスケジューリング処理の第1の実施例について説明する。1-1スケジューラ101は、アプリ5の起動通知を受け付ける。1-2スケジューラ101は、アプリケーション情報テーブル102を参照して、CPU0およびCPU1に割り当てられているアプリ0~アプリ4のうち、新たに起動されたアプリ5と同時に実行され得るアプリを特定する。ここで、アプリケーション情報テーブル102は、アプリケーションごとに、該アプリケーションと同時に実行され得る他のアプリケーション情報を含むものである。例えば、アプリ5をゲームアプリとすると、動画再生アプリや音楽再生アプリなどは、同時に実行される可能性が低いアプリである。一方、アプリ5を音楽再生アプリとすると、電子メールアプリやウェブブラウザなどは、上述したゲームアプリと動画再生アプリのような組合せに比べて、同時に実行される可能性が高いアプリである。アプリケーション情報テーブル102は、音楽再生アプリと電子メールアプリのような、同時に実行される可能性が高いアプリの組合せを示す。図1の例では、アプリ5と同時に実行され得るアプリとして、アプリ0およびアプリ1が特定されている。なお、アプリケーション情報テーブル102の詳細な説明は、図4を用いて後述する。1-3スケジューラ101は、マルチコアプロセッサシステム100内のCPU0およびCPU1のうち、アプリ5と同時に実行されることのないアプリを実行するCPUを検出する。具体的には、例えば、スケジューラ101が、CPU0およびCPU1のうち、アプリ5と同時に実行され得るアプリ0およびアプリ1が割り当てられていないCPU1を検出する。1-4スケジューラ101は、アプリ5をCPU1に割り当てる。これにより、新たに起動されたアプリ5を、アプリ5と同時に実行される可能性が高いアプリ0およびアプリ1が割り当てられているCPU0とは異なるCPU1に割り当てることができる。このように、実施の形態にかかるスケジューラ101によれば、同時に実行される可能性が高いアプリを異なるCPUにそれぞれ割り当てることができる。この結果、例えば、アプリ5とアプリ0またはアプリ1との切り替えが発生した際に、アプリ5,アプリ0のコンテキスト情報の退避やロードが不要となるため、アプリ5,アプリ0間の切り替えを高速に行うことができる。つぎに、図2を用いて、アプリ5が起動された場合を例に挙げて、マルチコアプロセッサシステム100のスケジューリング処理の第2の実施例について説明する。2-1スケジューラ101は、アプリ5の起動通知を受け付ける。2-2スケジューラ101は、アプリケーション情報テーブル102を参照して、CPU0およびCPU1に割り当てられているアプリ0~アプリ4のうち、新たに起動されたアプリ5と同時に実行され得るアプリを特定する。図2の例では、アプリ5と同時に実行され得るアプリとして、アプリ0、アプリ1、アプリ3およびアプリ4が特定されている。2-3スケジューラ101は、アプリケーション情報テーブル102を参照して、CPU0およびCPU1の少なくとも一のCPUで実行されるアプリを、新たに起動されたアプリ5に切り替えるときの負荷を計算する。ここで、アプリケーション情報テーブル102は、アプリケーションごとに、該アプリケーションのコンテキスト負荷情報を含むものである。コンテキスト負荷情報は、実行中の一のアプリケーションを他のアプリケーションに切り替えるときにかかる負荷に関する情報である。具体的には、例えば、スケジューラ101が、新たに起動されたアプリ5のコンテキスト負荷情報に基づいて、CPU0に割り当てられているアプリ0およびアプリ1を、アプリ5に切り替えるときの各々の負荷の合計を計算する。アプリ0およびアプリ1は、アプリ5と同時に実行され得るアプリである。また、スケジューラ101が、新たに起動されたアプリ5のコンテキスト負荷情報に基づいて、CPU1に割り当てられているアプリ3およびアプリ4を、アプリ5に切り替えるときの各々の負荷の合計を計算する。アプリ3およびアプリ4は、アプリ5と同時に実行され得るアプリである。2-4スケジューラ101は、計算した負荷に基づいて、CPU0およびCPU1の中からアプリ5を実行するCPUを選択して、アプリ5を割り当てる。具体的には、例えば、スケジューラ101が、CPU0およびCPU1のうち、計算した負荷の合計が最小となるCPUを選択して、アプリ5を割り当てる。ここでは、CPU0が選択されて、アプリ5が割り当てられている。このように、実施の形態にかかるスケジューラ101によれば、アプリ間の切り替えにかかる負荷を考慮して、新たに起動されたアプリの割当先となるCPUを選択することができる。この結果、例えば、アプリ5とアプリ0との切り替えが発生した際の負荷を抑えることができ、アプリ間の切り替えの高速化を図ることができる。マルチコアプロセッサシステム300のシステム構成つぎに、実施の形態にかかるマルチコアプロセッサシステム300のシステム構成について説明する。なお、図1および図2に示したマルチコアプロセッサシステム100は、以下に説明するマルチコアプロセッサシステム300の一例である。図3は、実施の形態にかかるマルチコアプロセッサシステムのシステム構成例を示す説明図である。図3において、マルチコアプロセッサシステム300は、CPU0~CPUnと、1次キャッシュ301-1~301-nと、スヌープ回路302と、2次キャッシュ303と、I/FInterFace304と、メモリコントローラ305と、メモリ306と、を有している。マルチコアプロセッサシステム300において、2次キャッシュ303と、I/F304と、メモリコントローラ305とは、バス320を介して接続されている。また、メモリ306は、メモリコントローラ305を介して各部と接続されている。CPU0は、OS0を実行し、マルチコアプロセッサシステム300の全体の制御を司る。OS0は、マスタOSであり、アプリケーションをどのCPUに割り当てるかを制御するスケジューラ101を備えている。また、CPU0は、割り当てられたアプリケーションを実行する。CPU1~CPUnは、それぞれOS1~OSnを実行し、各OSに割り当てられたアプリケーションを実行する。OS1~OSnは、スレーブOSである。CPU0~CPUnは、それぞれレジスタとコアとを有している。各レジスタには、プログラムカウンタやリセットレジスタがある。また、各CPU0~CPUnは、各々の1次キャッシュ301-1~301-nと、スヌープ回路302と、2次キャッシュ303とを介して各部に接続されている。1次キャッシュ301-1~301-nは、それぞれキャッシュメモリとキャッシュコントローラとを有している。例えば、1次キャッシュ301-1は、OS0が実行するアプリケーションからメモリ306への書込処理を一時的に記憶する。1次キャッシュ301-1は、メモリ306から読み出されたデータを一時的に記憶する。スヌープ回路302は、CPU0~CPUnがアクセスする1次キャッシュ301-1~301-nの整合性を取る。具体的には、例えば、スヌープ回路302は、1次キャッシュ301-1~301-nの間で共有するデータがいずれかの1次キャッシュで更新された場合、該更新を検出して、他の1次キャッシュを更新する。2次キャッシュ303は、キャッシュメモリとキャッシュコントローラとを有している。2次キャッシュ303では、各1次キャッシュ301-1~301-nから追い出されたデータを記憶する。具体的には、例えば、2次キャッシュ303は、OS0~OSnで共有するデータを記憶する。I/F304は、通信回線を通じてLANLocalAreaNetwork、WANWideAreaNetwork、インターネットなどのネットワークに接続され、ネットワークを介して他の装置に接続される。そして、I/F304は、ネットワークと内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F304には、例えば、モデムやLANアダプタなどを採用することができる。メモリコントローラ305は、メモリ306に対するデータのリード/ライトを制御する。メモリ306は、CPU0~CPUnに共有されるメモリである。メモリ306は、例えば、ROMReadOnlyMemory、RAMRandomAccessMemoryおよびフラッシュROMなどを有している。より具体的には、例えば、フラッシュROMが各OSのプログラムを記憶し、ROMがアプリケーションプログラムを記憶し、RAMがCPU0~CPUnのワークエリアとして使用される。メモリ306に記憶されているプログラムは、各CPUにロードされることで、コーディングされている処理を該各CPUに実行させることになる。ファイルシステム307は、例えば、アプリケーションの命令コードや、画像および映像などのコンテンツデータを記憶している。ファイルシステム307は、例えば、ハードディスクや光ディスクなどの補助記憶装置により実現される。なお、図示は省略するが、マルチコアプロセッサシステム300は、各部に電源電圧を供給するPMUPowerManagementUnitのほか、ディスプレイやキーボードなどを有することにしてもよい。ユースケーステーブル400の記憶内容つぎに、図3に示したスケジューラ101が用いるユースケーステーブル400について説明する。ユースケーステーブル400は、図1および図2に示したアプリケーション情報テーブル102に相当する。ユースケーステーブル400は、例えば、1次キャッシュ301-1、2次キャッシュ303、メモリ306などに記憶されている。図4は、ユースケーステーブルの記憶内容の一例を示す説明図である。図4において、ユースケーステーブル400は、アプリ名、コンテキストコスト、同時実行アプリおよび期待値のフィールドを有する。各フィールドに情報を設定することで、アプリごとのアプリケーション情報例えば、アプリケーション情報400-1~400-6がレコードとして記憶されている。アプリ名は、アプリを識別する名称である。コンテキストコストは、アプリのコンテキストスイッチにかかる負荷を表す指標値であり、例えば、アプリの起動や停止にかかる時間によって表される。より具体的には、例えば、コンテキストコストは、アプリのコンテキスト情報のメモリ306への退避または、メモリ306からのロードにかかる時間によって表される。なお、コンテキスト情報とは、各CPUのプログラムカウンタの値や、関数内の変数の値を格納する汎用レジスタの値などの情報である。同時実行アプリは、各アプリと同時に実行される可能性が高いアプリを識別する情報である。期待値は、各アプリが同時実行アプリに切り替わる割合を示すものであり、例えば、各アプリを1回実行している間に、該アプリが同時実行アプリに切り替わる割合によって表されている。一例として、アプリケーション情報400-1を例に挙げると、アプリ0のコンテキストコスト100[us]が示されている。すなわち、アプリ0のコンテキスト情報の退避または、ロードにかかる時間は100[us]である。また、アプリ0の同時実行アプリアプリ3、アプリ4、アプリ5が示されている。すなわち、アプリ0と同時に実行される可能性が高いアプリは、アプリ3、アプリ4およびアプリ5である。また、同時実行アプリごとの期待値が示されている。具体的には、例えば、アプリ0を実行中に、アプリ0からアプリ3に切り替わる割合は0.4である。また、例えば、アプリ0を実行中に、アプリ0からアプリ4に切り替わる割合は0.6である。また、例えば、アプリ0を実行中に、アプリ0からアプリ5に切り替わる割合は0.5である。なお、ユースケーステーブル400内の各アプリのコンテキストコストは、例えば、マルチコアプロセッサシステム300の設計時に、シミュレーションによって各アプリのコンテキスト情報の退避時間を測定することにより求めることにしてもよい。また、ユースケーステーブル400内の各アプリの同時実行アプリおよび期待値は、例えば、ユーザがアプリを使用するたびに、OS0が、アプリの切り替え回数の期待値を計算して更新することにしてもよい。なお、以下の説明において、特に指定する場合を除き、マルチコアプロセッサシステム300内のCPU0~CPUnのうち任意のCPUをCPUiと表記するi=0,1,...,n。スケジューラ101の機能的構成例つぎに、スケジューラ101の機能的構成例について説明する。図5は、実施の形態にかかるスケジューラの機能的構成を示すブロック図である。図5において、スケジューラ101は、受付部501と、特定部502と、検出部503と、割当部504と、第1の算出部505と、第2の算出部506と、第3の算出部507と、を含む構成である。各機能部受付部501~第3の算出部507は、具体的には、例えば、メモリ306に記憶されたスケジューラ101をCPU0に実行させることにより、その機能を実現する。なお、各機能部の処理結果は、例えば、CPU0のレジスタ、1次キャッシュ301-1、2次キャッシュ303およびメモリ306などに記憶される。受付部501は、新たなアプリ以下、アプリjというの起動通知を受け付ける。具体的には、例えば、受付部501が、アプリjの起動通知をOS0から受け付ける。特定部502は、ユースケーステーブル400図4参照を参照して、起動通知が受け付けられたアプリjと同時に実行され得るアプリ以下、アプリkというを特定する。一例として、アプリ5の起動通知を受け付けた場合を想定するj=5。この場合、特定部502が、ユースケーステーブル400の中から、アプリ5に対応するアプリケーション情報400-6を特定する。そして、特定部502が、アプリケーション情報400-6を参照して、アプリ5と同時に実行され得るアプリ0,アプリ1,アプリ3,アプリ4を特定する。検出部503は、マルチコアプロセッサシステム300内のCPU0~CPUnの中から、新たなアプリjと同時に実行され得るアプリkが割り当てられていないCPUを検出する。具体的には、例えば、検出部503が、図6に示す割当テーブル600を参照して、アプリkが割り当てられていないCPUを検出する。割当テーブル600は、CPU0~CPUnにそれぞれ割り当てられているアプリ、具体的には、各CPU0~CPUnの待ち行列に登録されているアプリを示す情報である。割当テーブル600は、例えば、1次キャッシュ301-1、2次キャッシュ303およびメモリ306などにより実現される。ここで、割当テーブル600について説明する。図6は、割当テーブルの記憶内容の一例を示す説明図である。図6において、割当テーブル600には、各CPU0~CPUnに割り当てられているアプリ名が示されている。CPU0を例に挙げると、アプリ0,アプリ1およびアプリ2が割り当てられている。なお、割当テーブル600の記憶内容は、各CPU0~CPUnに割り当てられるアプリの変更に合わせて、その都度更新される。図5の説明に戻り、割当部504は、検出された、新たなアプリjと同時に実行され得るアプリkが割り当てられていないCPU以下、CPUAというにアプリjを割り当てる。具体的には、例えば、割当部504が、CPUAの待ち行列にアプリjを登録する。これにより、新たなアプリjを、同時に実行される可能性が高いアプリkが割り当てられていないCPUAに割り当てることができる。この結果、アプリjとアプリkとの切り替えが発生した際に、アプリj,アプリkのコンテキスト情報の退避やロードが不要となるため、アプリ間の切り替えを高速に行うことができる。第1の算出部505は、新たなアプリjと同時に実行され得るアプリkが割り当てられていないCPUが複数検出された場合、検出された各CPUの負荷を算出する。具体的には、例えば、第1の算出部505が、検出された各CPUに割り当てられているアプリの数や各アプリの実行時間に基づいて、該各CPUの負荷を算出する。より具体的には、例えば、第1の算出部505が、検出された各CPUに割り当てられているアプリの数を、該各CPUの負荷として算出することにしてもよい。また、割当部504は、算出された各CPUの負荷に基づいて、検出された複数のCPUの中から、新たなアプリjの割当先となるCPUAを選択する。具体的には、例えば、割当部504が、検出された複数のCPUの中から、算出された負荷が最小となるCPUAを選択する。そして、割当部504は、選択したCPUAにアプリjを割り当てる。これにより、新たなアプリjを、同時に実行される可能性が高いアプリkが割り当てられていないCPUのうち、負荷が最小のCPUAに割り当てることができる。この結果、アプリ間の切り替えを高速に行うとともに、CPU0~CPUnに負荷を分散してシステム全体の性能を向上させることができる。第2の算出部506は、新たなアプリjと同時に実行され得るアプリkが割り当てられていないCPUが検出されなかった場合、新たなアプリjと、CPUiに割り当てられているアプリkとを切り替えるときの負荷以下、切替コストというを算出する。具体的には、例えば、第2の算出部506が、CPUiに割り当てられているアプリkのコンテキストの切替時間と、該アプリkと新たなアプリjとの切替回数の期待値とに基づいて、切替コストを算出する。ここで、アプリkのコンテキストの切替時間は、ユースケーステーブル400内のコンテキストコストに相当する。また、アプリjとアプリkとの切替回数の期待値は、ユースケーステーブル400内の期待値に相当する。より具体的には、例えば、第2の算出部506が、ユースケーステーブル400を参照して、CPUiに割り当てられているアプリkのコンテキストコストと、アプリkがアプリjに切り替わる割合を示す期待値とを乗算して切替コストを算出する。ここで、上記切替コストは、CPUiに割り当てられているアプリkごとに算出される。そこで、第2の算出部506は、CPUiに割り当てられているアプリkごとの切替コストを加算して、アプリkごとの切替コストの合計を表すコスト以下、合計コストSiというを算出することにしてもよい。なお、第2の算出部506の具体的な処理内容については、図7および図8を用いて後述する。また、割当部504は、算出された各CPUiのアプリkごとの切替コストに基づいて、CPU0~CPUnの中から、新たなアプリjの割当先となるCPUを選択する。具体的には、例えば、割当部504が、算出されたCPU0~CPUnごとの合計コストS0~Snに基づいて、新たなアプリjの割当先となるCPUを選択することにしてもよい。より具体的には、例えば、まず、割当部504が、CPU0~CPUnごとの合計コストS0~Snの中から、最小の合計コスト以下、合計コストSminというを特定する。そして、割当部504が、CPU0~CPUnの中から、合計コストSminのCPU以下、CPUBというを選択する。そして、割当部504は、選択したCPUBにアプリjを割り当てる。これにより、新たに起動されたアプリjの割り当てにともなって発生するアプリ間の切り替えにかかる負荷が最小となるCPUBに、アプリjを割り当てることができる。この結果、アプリj,k間の切り替えが発生しにくく、たとえアプリj,k間の切り替えが発生してもコンテキストスイッチにかかる時間が短いCPUBにアプリjを割り当てることができ、アプリ間の切り替えの高速化を図ることができる。第3の算出部507は、新たに起動されたアプリjと同時に実行され得るアプリkと、CPUiに割り当てられているアプリmとを切り替えるときの切替コストを算出する。ここで、アプリmは、例えば、アプリkと同時に実行され得るアプリである。具体的には、例えば、第3の算出部507が、アプリjがCPUBに割り当てられた結果、CPUBに割り当てられているアプリkと、CPUBとは異なるCPUiに割り当てられているアプリmとを切り替えるときの切替コストを算出する。より具体的には、例えば、第3の算出部507が、ユースケーステーブル400を参照して、CPUiに割り当てられているアプリmのコンテキストコストと、アプリmがアプリkに切り替わる割合を示す期待値とを乗算して切替コストを算出する。ここで、上記切替コストは、CPUiただし、i≠Bに割り当てられているアプリmごとに算出される。そこで、第3の算出部507は、CPUiに割り当てられているアプリmごとの切替コストを加算して、アプリmごとの切替コストの合計を表すコスト以下、合計コストSiというを算出することにしてもよい。なお、第3の算出部507の具体的な処理内容については、図7および図9を用いて後述する。また、割当部504は、算出された各CPUiのアプリmごとの切替コストに基づいて、CPU0~CPUnの中から、CPUBに割り当てられているアプリkの割当先となるCPUを選択する。具体的には、例えば、割当部504が、算出されたCPUiの合計コストSiに基づいて、CPUBに割り当てられているアプリkの割当先となるCPUを選択することにしてもよい。より具体的には、例えば、CPUiただし、i≠Bの合計コストSiが、上述した合計コストSmin未満の場合、割当部504が、CPUBに割り当てられているアプリkの割当先としてCPUiを選択する。そして、割当部504は、CPUBに割り当てられているアプリkを、選択したCPUiに移行いわゆる、マイグレーションする。すなわち、アプリkをCPUBから他のCPUに移行することで、アプリ間の切り替えにかかるシステム全体の負荷が少なくなる場合に、アプリkのマイグレーションを行う。これにより、新たに起動されたアプリjと同時に実行され得るCPUBのアプリkを、アプリkの割り当てにともなって発生するアプリ間の切り替えにかかる合計コストSiが合計コストSmin未満のCPUiに割り当てることができる。この結果、各CPUiにおけるアプリ間の切り替えにかかる負荷を最適化することができ、システム全体の性能を向上させることができる。また、割当部504が、CPUBとは異なるCPUのうち、算出された合計コストSiが、最小かつ合計コストSmin未満のCPUiを、CPUBに割り当てられているアプリkの割当先として選択することにしてもよい。これにより、各CPUiにおけるアプリ間の切り替えにかかる負荷をより最適化することができ、システム全体の性能を向上させることができる。なお、上述した説明では、第2の算出部506は、CPUiに割り当てられているアプリkのコンテキストコストと、アプリkがアプリjに切り替わる割合を示す期待値とを乗算して切替コストを算出することにしたが、これに限らない。例えば、第2の算出部506は、新たなアプリjのコンテキストコストと、アプリjがアプリkに切り替わる割合を示す期待値とを乗算して切替コストを算出することにしてもよい。また、上述した説明では、第3の算出部507は、CPUii≠Bに割り当てられているアプリmのコンテキストコストと、アプリmがアプリkに切り替わる割合を示す期待値とを乗算して切替コストを算出することにしたが、これに限らない。例えば、第3の算出部507は、CPUii≠Bに割り当てられているアプリkのコンテキストコストと、アプリkがアプリmに切り替わる割合を示す期待値とを乗算して切替コストを算出することにしてもよい。第2の算出部506の具体的な処理内容つぎに、図7および図8を用いて、第2の算出部506の具体的な処理内容について説明する。ここでは、実施の形態にかかるマルチコアプロセッサシステム300の一例として、図1および図2に示したマルチコアプロセッサシステム100を例に挙げて説明するn=1。図7は、アプリケーションの割当例を示す説明図である。図7において、マルチコアプロセッサシステム100内のCPU0にアプリ0,アプリ1およびアプリ2が割り当てられ、CPU1にアプリ3およびアプリ4が割り当てられている。アプリ5は、新たに起動されたアプリである。ここで、アプリ0~アプリ4のうち、アプリ0,アプリ1,アプリ3およびアプリ4は、新たに起動されたアプリ5と同時に実行され得るアプリである。以下、CPU0,CPU1の合計コストS0,S1を算出する第2の算出部506の具体的な処理内容の一例について説明する。CPU0の合計コストS0まず、第2の算出部506は、ユースケーステーブル400を参照して、CPU0に割り当てられているアプリ0のコンテキストコスト100[us]と、アプリ0がアプリ5に切り替わる割合を示す期待値0.5とを乗算して切替コストを算出する。この結果、下記式1に示すように、切替コスト50[us]が算出される。アプリ0:100[us]×0.5=50[us]1つぎに、第2の算出部506は、ユースケーステーブル400を参照して、CPU0に割り当てられているアプリ1のコンテキストコスト1[ms]と、アプリ1がアプリ5に切り替わる割合を示す期待値0.1とを乗算して切替コストを算出する。この結果、下記式2に示すように、切替コスト100[us]が算出される。アプリ1:1[ms]×0.1=100[us]2そして、第2の算出部506は、CPU0に割り当てられているアプリ0,アプリ1ごとの切替コストを加算して合計コストS0を算出する。ここでは、合計コストS0150[us]が算出される。CPU1の合計コストS1まず、第2の算出部506は、ユースケーステーブル400を参照して、CPU1に割り当てられているアプリ3のコンテキストコスト500[us]と、アプリ3がアプリ5に切り替わる割合を示す期待値0.25とを乗算して切替コストを算出する。この結果、下記式3に示すように、切替コスト125[us]が算出される。アプリ3:500[us]×0.25=125[us]3つぎに、第2の算出部506は、ユースケーステーブル400を参照して、CPU1に割り当てられているアプリ4のコンテキストコスト250[us]と、アプリ4がアプリ5に切り替わる割合を示す期待値0.3とを乗算して切替コストを算出する。この結果、下記式4に示すように、切替コスト75[us]が算出される。アプリ4:250[us]×0.3=75[us]4そして、第2の算出部506は、CPU1に割り当てられているアプリ3,アプリ4ごとの切替コストを加算して合計コストS1を算出する。ここでは、合計コストS1200[us]が算出される。算出された合計コストS0,S1は、例えば、図8に示す割当先候補コストテーブル800に記憶される。割当先候補コストテーブル800は、例えば、1次キャッシュ301-1、2次キャッシュ303およびメモリ306などにより実現される。ここで、割当先候補コストテーブル800について説明する。図8は、割当先候補コストテーブルの記憶内容の一例を示す説明図である。図8において、割当先候補コストテーブル800は、CPU0,CPU1ごとの合計コストS0,S1を記憶している。上記割当部504は、例えば、割当先候補コストテーブル800を参照して、CPU0およびCPU1のうち、合計コストSiが最小のCPU0にアプリ5を割り当てる。第3の算出部507の具体的な処理内容つぎに、図7および図9を用いて、第3の算出部507の具体的な処理内容について説明する。ここでは、アプリ5がCPU0に割り当てられた結果、CPU0に割り当てられているアプリ0,アプリ1を、CPU1にマイグレーション移行するか否かを判断する場合を例に挙げて説明する。以下、CPU0に割り当てられているアプリ0,アプリ1ごとに、CPU1に割り当てられているアプリmとの切り替えが行われるときの合計コストS1を算出する第3の算出部507の具体的な処理内容の一例について説明する。アプリ0の合計コストS1まず、第3の算出部507は、ユースケーステーブル400を参照して、CPU1に割り当てられているアプリ3のコンテキストコスト500[us]と、アプリ3がアプリ0に切り替わる割合を示す期待値0.4とを乗算して切替コストを算出する。この結果、下記式5に示すように、切替コスト200[us]が算出される。アプリ3:500[us]×0.4=200[us]5つぎに、第3の算出部507は、ユースケーステーブル400を参照して、CPU1に割り当てられているアプリ4のコンテキストコスト250[us]と、アプリ4がアプリ0に切り替わる割合を示す期待値0.6とを乗算して切替コストを算出する。この結果、下記式6に示すように、切替コスト150[us]が算出される。アプリ4:250[us]×0.6=150[us]6そして、第3の算出部507は、CPU1に割り当てられているアプリ3,アプリ4ごとの切替コストを加算して合計コストS1を算出する。ここでは、アプリ0の合計コストS1350[us]が算出される。アプリ1の合計コストS1まず、第3の算出部507は、ユースケーステーブル400を参照して、CPU1に割り当てられているアプリ3のコンテキストコスト500[us]と、アプリ3がアプリ1に切り替わる割合を示す期待値0.5とを乗算して切替コストを算出する。この結果、下記式7に示すように、切替コスト250[us]が算出される。アプリ3:500[us]×0.5=250[us]7つぎに、第3の算出部507は、ユースケーステーブル400を参照して、CPU1に割り当てられているアプリ4のコンテキストコスト250[us]と、アプリ4がアプリ1に切り替わる割合を示す期待値0.6とを乗算して切替コストを算出する。この結果、下記式8に示すように、切替コスト150[us]が算出される。アプリ4:250[us]×0.6=150[us]8そして、第3の算出部507は、CPU1に割り当てられているアプリ3,アプリ4ごとの切替コストを加算して、アプリ1の合計コストS1を算出する。ここでは、合計コストS1400[us]が算出される。算出されたアプリ0,アプリ1それぞれの合計コストS1は、例えば、図9に示すマイグレーション先候補コストテーブル900に記憶される。マイグレーション先候補コストテーブル900は、例えば、1次キャッシュ301-1、2次キャッシュ303およびメモリ306などにより実現される。ここで、マイグレーション先候補コストテーブル900について説明する。図9は、マイグレーション先候補コストテーブルの記憶内容の一例を示す説明図である。図9において、マイグレーション先候補コストテーブル900は、CPU0に割り当てられているアプリ0,アプリ1をCPU1に移行する場合のそれぞれの合計コストS1を記憶している。上記割当部504は、マイグレーション先候補コストテーブル900を参照して、CPU0に割り当てられているアプリ0の割当先となるCPUを選択することにしてもよい。ここで、合計コストSminは、上述した合計コストS0150[us]である。このため、アプリ0の合計コストS1350[us]は、合計コストSminより大きい。この場合、割当部504は、CPU0に割り当てられているアプリ0の割当先を変更しない。すなわち、アプリ0のマイグレーションは行われない。また、割当部504は、マイグレーション先候補コストテーブル900を参照して、CPU0に割り当てられているアプリ1の割当先となるCPUを選択する。ここで、アプリ1の合計コストS1400[us]は、合計コストSminより大きい。この場合、割当部504は、CPU0に割り当てられているアプリ1の割当先を変更しない。すなわち、アプリ1のマイグレーションは行われない。スケジューラ101によるスケジューリング処理手順つぎに、実施の形態にかかるスケジューラ101によるスケジューリング処理手順について説明する。図10および図11は、実施の形態にかかるスケジューラによるスケジューリング処理手順の一例を示すフローチャートである。図10のフローチャートにおいて、まず、受付部501により、新たなアプリjの起動通知を受け付けたか否かを判断するステップS1001。ここで、新たなアプリjの起動通知を受け付けるのを待ってステップS1001:No、受け付けた場合ステップS1001:Yes、特定部502により、ユースケーステーブル400を参照して、起動通知が受け付けられたアプリjと同時に実行され得るアプリkを特定するステップS1002。つぎに、検出部503により、マルチコアプロセッサシステム300内のCPU0~CPUnの中から、新たなアプリjと同時に実行され得るアプリkが割り当てられていないCPUを検出するステップS1003。このあと、割当部504により、新たなアプリjと同時に実行され得るアプリkが割り当てられていないCPUが検出されたか否かを判断するステップS1004。ここで、CPUが検出されなかった場合ステップS1004:No、図11に示すステップS1101に移行する。一方、CPUが検出された場合ステップS1004:Yes、割当部504により、複数のCPUが検出されたか否かを判断するステップS1005。ここで、複数のCPUが検出されなかった場合ステップS1005:No、割当部504により、検出されたCPUAにアプリjを割り当ててステップS1006、本フローチャートによる一連の処理を終了する。一方、複数のCPUが検出された場合ステップS1005:Yes、第1の算出部505により、検出された各CPUの負荷を算出するステップS1007。そして、割当部504により、検出された複数のCPUの中から、算出された負荷が最小となるCPUAにアプリjを割り当ててステップS1008、本フローチャートによる一連の処理を終了する。図11のフローチャートにおいて、まず、第2の算出部506により、CPUiのiをi=0とするステップS1101。そして、第2の算出部506により、CPU0~CPUnの中からCPUiを選択するステップS1102。つぎに、第2の算出部506により、CPUiに割り当てられているアプリの中からアプリkを選択するステップS1103。このあと、第2の算出部506により、新たなアプリjと、選択したアプリkとを切り替えるときの切替コストを算出するステップS1104。そして、第2の算出部506により、CPUiに割り当てられているアプリの中から選択されていない未選択のアプリkがあるか否かを判断するステップS1105。ここで、未選択のアプリkがある場合ステップS1105:Yes、ステップS1103に戻る。一方、未選択のアプリkがない場合ステップS1105:No、第2の算出部506により、算出したアプリkごとの切替コストの合計を表す合計コストSiを算出するステップS1106。つぎに、第2の算出部506により、CPUiのiをインクリメントしてステップS1107、iがnより大きいか否かを判断するステップS1108。ここで、iがn以下の場合ステップS1108:No、ステップS1102に戻る。一方、iがnより大きい場合ステップS1108:Yes、割当部504により、CPU0~CPUnごとの合計コストS0~Snの中から、最小の合計コストSminを特定するステップS1109。そして、割当部504により、CPU0~CPUnのうち合計コストSminのCPUBにアプリjを割り当てるステップS1110。最後、割当部504により、CPUBに割り当てられているアプリkのマイグレーション処理を実行してステップS1111、本フローチャートによる一連の処理を終了する。これにより、新たなアプリjを、同時に実行される可能性が高いアプリkが割り当てられていないCPUAに割り当てることができる。また、CPUAが存在しない場合は、新たに起動されたアプリjの割り当てにともなって発生するアプリ間の切り替えにかかる負荷が最小となるCPUBに、アプリjを割り当てることができる。つぎに、図11に示したステップS1111のマイグレーション処理の具体的な処理手順について説明する。図12は、マイグレーション処理の具体的処理手順の一例を示すフローチャートである。図12において、まず、第3の算出部507により、CPUBに割り当てられているアプリの中からアプリkを選択するステップS1201。このあと、第3の算出部507により、ユースケーステーブル400を参照して、アプリkと同時に実行され得るアプリmを特定するステップS1202。つぎに、第3の算出部507により、CPUiのiをi=0とするステップS1203。そして、第3の算出部507により、CPUiのiがCPUBのBと同じか否かを判断するステップS1204。ここで、CPUiのiがCPUBのBと同じ場合ステップS1204:Yes、ステップS1211に移行する。一方、CPUiのiがCPUBのBと違う場合ステップS1204:No、第3の算出部507により、CPU0~CPUnの中からCPUiを選択するステップS1205。そして、第3の算出部507により、CPUiに割り当てられているアプリの中からアプリmを選択するステップS1206。つぎに、第3の算出部507により、アプリkと、選択したアプリmとを切り替えるときの切替コストを算出するステップS1207。そして、第3の算出部507により、CPUiに割り当てられているアプリの中から選択されていない未選択のアプリmがあるか否かを判断するステップS1208。ここで、未選択のアプリmがある場合ステップS1208:Yes、ステップS1206に戻る。一方、未選択のアプリmがない場合ステップS1208:No、第3の算出部507により、算出したアプリmごとの切替コストの合計を表す合計コストSiを算出するステップS1209。そして、割当部504により、CPUiの合計コストSiが、図11に示したステップS1109において特定された合計コストSmin未満となるか否かを判断するステップS1210。ここで、CPUiの合計コストSiが合計コストSmin以上の場合ステップS1210:No、第3の算出部507により、CPUiのiをインクリメントしてステップS1211、iがnより大きいか否かを判断するステップS1212。ここで、iがn以下の場合ステップS1212:No、ステップS1204に戻る。一方、iがnより大きい場合ステップS1212:Yes、ステップS1214に移行する。また、ステップS1210において、CPUiの合計コストSiが合計コストSmin未満の場合ステップS1210:Yes、割当部504により、CPUBに割り当てられているアプリkをCPUiに移行するステップS1213。そして、第3の算出部507により、CPUBに割り当てられているアプリの中から選択されていない未選択のアプリkがあるか否かを判断するステップS1214。ここで、未選択のアプリkがある場合ステップS1214:Yes、ステップS1201に戻る。一方、未選択のアプリkがない場合ステップS1214:No、本フローチャートによる一連の処理を終了する。これにより、新たに起動されたアプリjと同時に実行され得るCPUBのアプリkを、アプリkの割り当てにともなって発生するアプリ間の切り替えにかかる負荷が最小となる他のCPUに割り当てることができる。以上説明したように、実施の形態にかかるスケジューラ101によれば、新たなアプリjを、同時に実行される可能性が高いアプリkが割り当てられていないCPUAに割り当てることができる。この結果、アプリjとアプリkとの切り替えが発生した際に、アプリj,アプリkのコンテキスト情報の退避やロードが不要となるため、アプリ間の切り替えを高速に行うことができる。また、スケジューラ101によれば、新たなアプリjを、同時に実行される可能性が高いアプリkが割り当てられていないCPUのうち、負荷が最小のCPUAに割り当てることができる。この結果、アプリ間の切り替えを高速に行うとともに、CPU0~CPUnに負荷を分散してシステム全体の性能を向上させることができる。また、スケジューラ101によれば、CPUAが存在しない場合は、新たに起動されたアプリjの割り当てにともなって発生するアプリ間の切り替えにかかる負荷が最小となるCPUBに、アプリjを割り当てることができる。この結果、アプリj,k間の切り替えが発生しにくく、また、たとえアプリj,k間の切り替えが発生してもコンテキストスイッチにかかる時間が短いCPUBにアプリjを割り当てることができ、アプリ間の切り替えの高速化を図ることができる。また、スケジューラ101によれば、新たに起動されたアプリjと同時に実行され得るCPUBのアプリkを、アプリkの移行にともなって発生するアプリ間の切り替えにかかる合計コストSiが合計コストSmin未満のCPUiに移行することができる。この結果、各CPUiにおけるアプリ間の切り替えにかかる負荷を最適化することができ、システム全体の性能を向上させることができる。また、スケジューラ101によれば、CPUBのアプリkを、アプリkの移行にともなって発生するアプリ間の切り替えにかかる合計コストSiが最小かつ合計コストSmin未満のCPUiに移行することができる。これにより、各CPUiにおけるアプリ間の切り替えにかかる負荷をより最適化することができ、システム全体の性能を向上させることができる。これらのことから、本スケジューリング方法およびスケジューリングシステムによれば、高性能化および低消費電力化とともに、アプリケーションの切り替えの高速化を図ることができる。なお、本実施の形態で説明したスケジューリング方法は、予め用意されたプログラムをパーソナルコンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本スケジューリングプログラムは、ハードディスク、フレキシブルディスク、CD-ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本スケジューリングプログラムは、インターネット等のネットワークを介して配布してもよい。"