(57)【要約】【課題】シングルコア用に開発されたソフトウェアをマルチコアに移行する。【解決手段】タスクにタグを設定するタグ設定部１１と、各コアで実行中のタスクのタグを管理する実行中タグ管理部１４と、タスクの同時実行を許可するか禁止するかを、タグ同士のタグ間の関係性から判定するタグ関係性判定部１５と、実行中タグ管理部１４とタグ関係性判定部１５とを制御して、各コアに割り当てるタスクを決定する割り当てタスク決定部１３と、を備え、割り当てタスク決定部１３は、各コアのうち一のコアに割り当てるタスクを決定する際に、実行中タグ管理部１４を呼び出して、一のコア以外の他のコアで実行中のタスクのタグを参照させ、タグ関係性判定部１５を呼び出し、一のコアへ割り当てる予定のタスクに設定されたタグと他のコアで実行中のタグとのタグ間の関係性に基づいて、割り当てる予定のタスクが前記一のコアで実行可能かを判定させる。【選択図】図７
2010244332.tif 000002
【特許請求の範囲】
【請求項１】
マルチコアプロセッサを用いたマルチタスクシステムにおける各コアへのタスクの割り当てを決定するタスク割り当て手段において、
一のコアへの割り当て予定のタスクに付けられたタグと、他のコアで実行中のタスクのタグとでの、これらのタスクの同時実行を禁止するか許可するかのタグ間の関係性に基づいて、前記一のコアに割り当てるタスクを決定する割り当てタスク決定部を備えることを特徴とするとタスク割り当て手段。
【請求項２】
マルチコアプロセッサを用いたマルチタスクシステムにおける各コアへのタスクの割り当てを決定するタスク割り当て手段において、
前記タスクにタグを設定するタグ設定部と、
前記タスクに設定されたタグを記録したタグ表と、
前記各コアで実行中のタスクのタグを管理する実行中タグ管理部と、
前記各コアでタスクの同時実行を許可するか禁止するかを、これらのタスクに付されたタグ同士のタグ間の関係性から判定するタグ関係性判定部と、
前記実行中タグ管理部と前記タグ関係性判定部とを制御して、前記各コアに割り当てるタスクを決定する割り当てタスク決定部と、
を備え、
前記割り当てタスク決定部は、前記各コアのうち一のコアに割り当てるタスクを決定する際に、前記実行中タグ管理部を呼び出して、前記各コアで実行中のタスクのタグの更新をロックさせるとともに前記一のコア以外の他のコアで実行中のタスクのタグを参照させ、
かつ、前記タグ関係性判定部を呼び出し、前記一のコアへ割り当てる予定のタスクに設定されたタグと前記他のコアで実行中のタグとのタグ間の関係性に基づいて、前記割り当てる予定のタスクが前記一のコアで実行可能かを判定させることを特徴とするタスク割り当て手段。
【請求項３】
タスク毎の優先度を記録したタスク優先度表と、
タスクを実行中のコアに対して該実行中のタスクを中断させる割り込み信号を送る割り込み信号送信部と、
を更に備え、
前記割り当てタスク決定部は、前記一のコアへ割り当てる予定のタスクの中から、前記タスク優先度表を参照して最も優先度の高いタスクを抽出し、該抽出したタスクを候補タスクとし、該候補タスクが前記一のコアで実行が禁止されている場合は、前記他のコアで実行中のタスクの中で最も優先度の高いタスクの優先度を前記タスク優先度表を参照して調べ、該調べた優先度が前記候補タスクの優先度より低い場合は、前記割り込み送信部を呼び出して、前記他のコアで実行中のタスクの中で最も優先度の高いタスクを実行中のコアに対して該実行中のタスクを中断させる割り込み信号を送り、前記一のコアに前記候補タスクを割り当てることを特徴とする請求項２に記載のタスク割り当て手段。
【請求項４】
タスクの同時実行を許可するか禁止するかの関係を、該タスクに設定されたタグに基づいて記述したタグ関係として記録するタグ関係表と、
前記タグ関係表に前記タグ関係を登録し、前記タグ関係表を更新するタグ関係設定部と、
を更に備え、
前記タグ関係性判定部は、前記タグ関係表を用いて、前記タスクが実行可能であるか否かを判定し、該判定結果を前記割り当てタスク決定部に通知することを特徴とする請求項２に記載のタスク割り当て手段。
【請求項５】
タスクを識別するタスク識別子であるタスク番号と、タグと、を関連付けて記録するタグ設定表と、
タスクを生成するタスク生成部と、
前記タグ設定表を参照して、前記生成されたタスクに、前記タグ設定表に記録されたタグを設定するようにする管理タスクと、
を更に備えることを特徴とする請求項２又は３に記載のタスク割り当て手段。
【請求項６】
タスクを識別するタスク識別子であるタスク番号と、タグと、を関連付けて記録するタグ設定表と、
タスクを生成するタスク生成部と、
前記タグ設定表を参照して、前記生成されたタスクに設定するタグを指定して前記タスク生成部を呼び出す管理タスクと、
を更に備え、
前記タスク生成部は、前記生成されたタスクに該タグを設定することを特徴とする請求項２に記載のタスク割り当て手段。
【請求項７】
タスクの動作とタグとを記述したプログラムファイルからタスクを生成するタスク生成部を更に備え、
前記タスク生成部は、前記プログラムファイルから該タグを読み出し、前記タグ設定部を呼び出して該生成したタスクに該タグを設定することを特徴とする請求項２に記載のタスク割り当て手段。
【請求項８】
タスクが前記タグ設定部を呼び出してタグを設定することを特徴とする請求項２に記載のタスク割り当て手段。
【請求項９】
タスクの同時実行を許可するか禁止するかの関係を、該タスクに設定されたタグに基づいて記述したタグ関係として記録するタグ関係設定表と、
タスクを識別するタスク識別子であるタスク番号と、タグと、を関連付けて記録するタグ設定表と、
タスクを生成するタスク生成部と、
前記タグ設定表を参照して、前記生成されたタスクに、前記タグ設定表に記録されたタグを設定するようにする管理タスクと、
を更に備え
前記管理タスクは、前記タグ関係設定表に記録されている前記タグ関係を読み出し、前記タグ関係設定部を呼び出して該読み出したタグ関係を前記タグ関係表に設定させることを特徴とする請求項４に記載のタスク割り当て手段。
【請求項１０】
前記タグ間の関係性は、同じタグは同時実行を許可し、異なるタグは同時実行を禁止するものであることを特徴とする請求項１乃至９のいずれか１項に記載のタスク割り当て手段。
【請求項１１】
前記タグ間の関係性は、異なるタグは同時実行を許可し、同じタグは同時実行を禁止するものであることを特徴とする請求項１乃至９のいずれか１項に記載のタスク割り当て手段。
【請求項１２】
タスクを識別するタスク識別子であるタスク番号と、タグと、を関連付けて記録するタグ設定表と、
タスクを生成するタスク生成部と、
前記タグ設定表を参照して、前記生成されたタスクに設定するタグを指定して前記タスク生成部を呼び出す管理タスクと、
を更に備え、
前記管理タスクは、前記タグ設定表に未記録のタスクには前記タグ設定部を呼び出して共通のタグを設定し、前記タグ関係性判定部は、共通タグ同士は同時実行を禁止し、異なるタグは同時実行を禁止し、同じタグは同時実行を許可する判定をすることを特徴とする請求項２に記載のタスク割り当て手段。
【請求項１３】
前記タグ関係性判定部は、共通タグ同士は同時実行を許可し、異なるタグは同時実行を許可し、同じタグは同時実行を禁止する判定をすることを特徴とする請求項１２に記載のタスク割り当て手段。
【請求項１４】
前記タグ設定部は、タスクに複数のタグを設定し、前記タグ関係性判定部は、同じタグを含むタスクは同時実行許可し、同じタグを含まないタグは同時実行禁止と判定することを特徴とする請求項２乃至１３のいずれか１項に記載のタスク割り当て手段。
【請求項１５】
排他的手段を更に備え、
前記排他制御手段は、同時実行を許可するようにタグが設定されたタスク同士であっても、該タスク同士の中に同時に実行されると問題のある部分が含まれる場合は、該問題のある部分の同時実行が行われないようにすることを特徴とする請求項１乃至１４のいずれか１項に記載のタスク割り当て手段。
【請求項１６】
マルチコアプロセッサを用いたマルチタスクシステムにおける各コアへのタスクの割り当てを決定するタスク割り当て方法において、
一のコアへの割り当て予定のタスクに付けられたタグと、他のコアで実行中のタスクのタグとでの、これらのタスクの同時実行を禁止するか許可するかのタグ間の関係性に基づいて、前記一のコアに割り当てるタスクを決定する割り当てタスク決定手順を備えることを特徴とするタスク割り当て方法。
【請求項１７】
マルチコアプロセッサを用いたマルチタスクシステムにおける各コアへのタスクの割り当てを決定するタスク割り当て方法において、
前記タスクにタグを設定するタグ設定手順と、
前記タスクに設定されたタグを記録する手順と、
前記各コアで実行中のタスクのタグを管理する実行中タグ管理手順と、
前記各コアでタスクの同時実行を許可するか禁止するかを、これらのタスクに付されたタグ同士のタグ間の関係性から判定するタグ関係性判定手順と、
前記各コアに割り当てるタスクを決定する割り当てタスク決定手順と、
を備え、
前記割り当てタスク決定手順は、前記各コアのうち一のコアに割り当てるタスクを決定する際に、前記実行中タグ管理手順を呼び出して、前記各コアで実行中のタスクのタグの更新をロックさせるとともに前記一のコア以外の他のコアで実行中のタスクのタグを参照させ、
かつ、前記タグ関係性判定手順を呼び出し、前記一のコアへ割り当てる予定のタスクに設定されたタグと前記他のコアで実行中のタグとのタグ間の関係性に基づいて、前記割り当てる予定のタスクが前記一のコアで実行可能かを判定させることを特徴とするタスク割り当て方法。
【請求項１８】
タスク毎の優先度をタスク優先度表に記録する手順と、
タスクを実行中のコアに対して該実行中のタスクを中断させる割り込み信号を送る割り込み信号送信手順と、
を更に備え、
前記割り当てタスク決定手順は、前記一のコアへ割り当てる予定のタスクの中から、前記タスク優先度表を参照して最も優先度の高いタスクを抽出し、該抽出したタスクを候補タスクとし、該候補タスクが前記一のコアで実行が禁止されている場合は、前記他のコアで実行中のタスクの中で最も優先度の高いタスクの優先度を前記タスク優先度表を参照して調べ、該調べた優先度が前記候補タスクの優先度より低い場合は、前記割り込み送信手順を呼び出して、前記他のコアで実行中のタスクの中で最も優先度の高いタスクを実行中のコアに対して該実行中のタスクを中断させる割り込み信号を送り、前記一のコアに前記候補タスクを割り当てることを特徴とする請求項１７に記載のタスク割り当て方法。
【請求項１９】
タスクの同時実行を許可するか禁止するかの関係を、該タスクに設定されたタグに基づいて記述したタグ関係としてタグ関係表に記録する手順と、
前記タグ関係表に前記タグ関係を登録し、前記タグ関係表を更新するタグ関係設定手順と、
を更に備え、
前記タグ関係性判定手順は、前記タグ関係表を用いて、前記タスクが実行可能であるか否かを判定し、該判定結果を前記割り当てタスク決定手順に通知することを特徴とする請求項１７に記載のタスク割り当て方法。
【請求項２０】
タスクを識別するタスク識別子であるタスク番号と、タグと、を関連付けてタグ設定表に記録する手順と、
タスクを生成するタスク生成手順と、
前記タグ設定表を参照して、前記生成されたタスクに、前記タグ設定表に記録されたタグを設定するようにする管理タスク手順と、
を更に備えることを特徴とする請求項１７又は１８に記載のタスク割り当て方法。
【請求項２１】
タスクを識別するタスク識別子であるタスク番号と、タグと、を関連付けてタグ設定表に記録する手順と、
タスクを生成するタスク生成手順と、
前記タグ設定表を参照して、前記生成されたタスクに設定するタグを指定して前記タスク生成手順を呼び出す管理タスク手順と、
を更に備え、
前記タスク生成手順は、前記生成されたタスクに該タグを設定することを特徴とする請求項１７に記載のタスク割り当て方法。
【請求項２２】
タスクの動作とタグとを記述したプログラムファイルからタスクを生成するタスク生成手順を更に備え、
前記タスク生成手順は、前記プログラムファイルから該タグを読み出し、前記タグ設定手順を呼び出して該生成したタスクに該タグを設定することを特徴とする請求項１７に記載のタスク割り当て方法。
【請求項２３】
タスクが前記タグ設定手順を呼び出してタグを設定することを特徴とする請求項１７に記載のタスク割り当て方法。
【請求項２４】
タスクの同時実行を許可するか禁止するかの関係を、該タスクに設定されたタグに基づいて記述したタグ関係としてタグ関係設定表に記録する手順と、
タスクを識別するタスク識別子であるタスク番号と、タグと、を関連付けてタグ設定表に記録する手順と、
タスクを生成するタスク生成手順と、
前記タグ設定表を参照して、前記生成されたタスクに、前記タグ設定表に記録されたタグを設定するようにする管理タスク手順と、
を更に備え
前記管理タスク手順は、前記タグ関係設定表に記録されている前記タグ関係を読み出し、前記タグ関係設定手順を呼び出して該読み出したタグ関係を前記タグ関係表に設定させることを特徴とする請求項１９に記載のタスク割り当て方法。
【請求項２５】
前記タグ間の関係性は、同じタグは同時実行を許可し、異なるタグは同時実行を禁止するものであることを特徴とする請求項１６乃至２４のいずれか１項に記載のタスク割り当て方法。
【請求項２６】
前記タグ間の関係性は、異なるタグは同時実行を許可し、同じタグは同時実行を禁止するものであることを特徴とする請求項１６乃至２４のいずれか１項に記載のタスク割り当て方法。
【請求項２７】
タスクを識別するタスク識別子であるタスク番号と、タグと、を関連付けてタグ設定表に記録する手順と、
タスクを生成するタスク生成手順と、
前記タグ設定表を参照して、前記生成されたタスクに設定するタグを指定して前記タスク生成手順を呼び出す管理タスク手順と、
を更に備え、
前記管理タスク手順は、前記タグ設定表に未記録のタスクには前記タグ設定手順を呼び出して共通のタグを設定し、前記タグ関係性判定手順は、共通タグ同士は同時実行を禁止し、異なるタグは同時実行を禁止し、同じタグは同時実行を許可する判定をすることを特徴とする請求項１７に記載のタスク割り当て方法。
【請求項２８】
前記タグ関係性判定手順は、共通タグ同士は同時実行を許可し、異なるタグは同時実行を許可し、同じタグは同時実行を禁止する判定をすることを特徴とする請求項２７に記載のタスク割り当て方法。
【請求項２９】
前記タグ設定手順は、タスクに複数のタグを設定し、前記タグ関係性判定手順は、同じタグを含むタスクは同時実行許可し、同じタグを含まないタグは同時実行禁止と判定することを特徴とする請求項１６乃至２８のいずれか１項に記載のタスク割り当て方法。
【請求項３０】
排他的手順を更に備え、
前記排他制御手順は、同時実行を許可するようにタグが設定されたタスク同士であっても、該タスク同士の中に同時に実行されると問題のある部分が含まれる場合は、該問題のある部分の同時実行が行われないようにすることを特徴とする請求項１６乃至２９のいずれか１項に記載のタスク割り当て方法。
【請求項３１】
マルチコアプロセッサを用いたマルチタスクシステムにおける各コアへのタスクの割り当てを決定するタスク割り当てプログラムにおいて、
一のコアへの割り当て予定のタスクに付けられたタグと、他のコアで実行中のタスクのタグとでの、これらのタスクの同時実行を禁止するか許可するかのタグ間の関係性に基づいて、前記一のコアに割り当てるタスクを決定する割り当てタスク決定処理をコンピュータに実行させることを特徴とするタスク割り当てプログラム。
【請求項３２】
マルチコアプロセッサを用いたマルチタスクシステムにおける各コアへのタスクの割り当てを決定するタスク割り当てプログラムにおいて、
前記タスクにタグを設定するタグ設定処理と、
前記タスクに設定されたタグを記録する処理と、
前記各コアで実行中のタスクのタグを管理する実行中タグ管理処理と、
前記各コアでタスクの同時実行を許可するか禁止するかを、これらのタスクに付されたタグ同士のタグ間の関係性から判定するタグ関係性判定処理と、
前記各コアに割り当てるタスクを決定する割り当てタスク決定処理と、
をコンピュータに実行させ、
前記割り当てタスク決定処理は、前記各コアのうち一のコアに割り当てるタスクを決定する際に、前記実行中タグ管理処理を呼び出して、前記各コアで実行中のタスクのタグの更新をロックさせるとともに前記一のコア以外の他のコアで実行中のタスクのタグを参照させ、
かつ、前記タグ関係性判定処理を呼び出し、前記一のコアへ割り当てる予定のタスクに設定されたタグと前記他のコアで実行中のタグとのタグ間の関係性に基づいて、前記割り当てる予定のタスクが前記一のコアで実行可能かを判定させることを特徴とするタスク割り当てプログラム。
【請求項３３】
タスク毎の優先度をタスク優先度表に記録する処理と、
タスクを実行中のコアに対して該実行中のタスクを中断させる割り込み信号を送る割り込み信号送信処理と、
を更にコンピュータに実行させ、
前記割り当てタスク決定処理は、前記一のコアへ割り当てる予定のタスクの中から、前記タスク優先度表を参照して最も優先度の高いタスクを抽出し、該抽出したタスクを候補タスクとし、該候補タスクが前記一のコアで実行が禁止されている場合は、前記他のコアで実行中のタスクの中で最も優先度の高いタスクの優先度を前記タスク優先度表を参照して調べ、該調べた優先度が前記候補タスクの優先度より低い場合は、前記割り込み送信処理を呼び出して、前記他のコアで実行中のタスクの中で最も優先度の高いタスクを実行中のコアに対して該実行中のタスクを中断させる割り込み信号を送り、前記一のコアに前記候補タスクを割り当てることを特徴とする請求項３２に記載のタスク割り当てプログラム。
【請求項３４】
タスクの同時実行を許可するか禁止するかの関係を、該タスクに設定されたタグに基づいて記述したタグ関係としてタグ関係表に記録する処理と、
前記タグ関係表に前記タグ関係を登録し、前記タグ関係表を更新するタグ関係設定処理と、
を更にコンピュータに実行させ、
前記タグ関係性判定処理は、前記タグ関係表を用いて、前記タスクが実行可能であるか否かを判定し、該判定結果を前記割り当てタスク決定処理に通知することを特徴とする請求項３２に記載のタスク割り当てプログラム。
【請求項３５】
タスクを識別するタスク識別子であるタスク番号と、タグと、を関連付けてタグ設定表に記録する処理と、
タスクを生成するタスク生成処理と、
前記タグ設定表を参照して、前記生成されたタスクに、前記タグ設定表に記録されたタグを設定するようにする管理タスク処理と、
を更にコンピュータに実行させることを特徴とする請求項３２又は３３に記載のタスク割り当てプログラム。
【請求項３６】
タスクを識別するタスク識別子であるタスク番号と、タグと、を関連付けてタグ設定表に記録する処理と、
タスクを生成するタスク生成処理と、
前記タグ設定表を参照して、前記生成されたタスクに設定するタグを指定して前記タスク生成処理を呼び出す管理タスク処理と、
を更にコンピュータに実行させ、
前記タスク生成処理は、前記生成されたタスクに該タグを設定することを特徴とする請求項３２に記載のタスク割り当てプログラム。
【請求項３７】
タスクの動作とタグとを記述したプログラムファイルからタスクを生成するタスク生成処理を更にコンピュータに実行させ、
前記タスク生成処理は、前記プログラムファイルから該タグを読み出し、前記タグ設定処理を呼び出して該生成したタスクに該タグを設定することを特徴とする請求項３２に記載のタスク割り当てプログラム。
【請求項３８】
タスクが前記タグ設定処理を呼び出してタグを設定することを特徴とする請求項３２に記載のタスク割り当てプログラム。
【請求項３９】
タスクの同時実行を許可するか禁止するかの関係を、該タスクに設定されたタグに基づいて記述したタグ関係としてタグ関係設定表に記録する処理と、
タスクを識別するタスク識別子であるタスク番号と、タグと、を関連付けてタグ設定表に記録する処理と、
タスクを生成するタスク生成処理と、
前記タグ設定表を参照して、前記生成されたタスクに、前記タグ設定表に記録されたタグを設定するようにする管理タスク処理と、
を更にコンピュータに実行させ、
前記管理タスク処理は、前記タグ関係設定表に記録されている前記タグ関係を読み出し、前記タグ関係設定処理を呼び出して該読み出したタグ関係を前記タグ関係表に設定させることを特徴とする請求項３４に記載のタスク割り当てプログラム。
【請求項４０】
前記タグ間の関係性は、同じタグは同時実行を許可し、異なるタグは同時実行を禁止するものであることを特徴とする請求項３１乃至３９のいずれか１項に記載のタスク割り当てプログラム。
【請求項４１】
前記タグ間の関係性は、異なるタグは同時実行を許可し、同じタグは同時実行を禁止するものであることを特徴とする請求項３１乃至３９のいずれか１項に記載のタスク割り当てプログラム。
【請求項４２】
タスクを識別するタスク識別子であるタスク番号と、タグと、を関連付けてタグ設定表に記録する処理と、
タスクを生成するタスク生成処理と、
前記タグ設定表を参照して、前記生成されたタスクに設定するタグを指定して前記タスク生成処理を呼び出す管理タスク処理と、
を更にコンピュータに実行させ、
前記管理タスク処理は、前記タグ設定表に未記録のタスクには前記タグ設定処理を呼び出して共通のタグを設定し、前記タグ関係性判定処理は、共通タグ同士は同時実行を禁止し、異なるタグは同時実行を禁止し、同じタグは同時実行を許可する判定をすることを特徴とする請求項３２に記載のタスク割り当てプログラム。
【請求項４３】
前記タグ関係性判定処理は、共通タグ同士は同時実行を許可し、異なるタグは同時実行を許可し、同じタグは同時実行を禁止する判定をすることを特徴とする請求項４２に記載のタスク割り当てプログラム。
【請求項４４】
前記タグ設定処理は、タスクに複数のタグを設定し、前記タグ関係性判定処理は、同じタグを含むタスクは同時実行許可し、同じタグを含まないタグは同時実行禁止と判定することを特徴とする請求項３１乃至４３のいずれか１項に記載のタスク割り当てプログラム。
【請求項４５】
排他的処理を更にコンピュータに実行させ、
前記排他制御処理は、同時実行を許可するようにタグが設定されたタスク同士であっても、該タスク同士の中に同時に実行されると問題のある部分が含まれる場合は、該問題のある部分の同時実行が行われないようにすることを特徴とする請求項３１乃至４４のいずれか１項に記載のタスク割り当てプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はマルチコアシステムのためのタスク割り当て手段、その方法及びそのプログラムに関する。
【背景技術】
【０００２】
プロセッサの動作周波数の向上が停滞し、プロセッサの性能向上は複数のプロセッサコアを搭載することによるマルチコア化によって進むようになってきている。このため、従来シングルコアプロセッサを利用していた用途にもマルチコアプロセッサが利用されるようになってきている。
【０００３】
ＯＳ（Operating System）を用いて複数のタスクを処理するマルチタスクシステムでは、ＯＳのタスクスケジューラが実行可能なタスクをプロセッサコア（以下単にコアと呼ぶ）に割り当てて実行する。マルチコアは複数のコアを持つため、実行可能なタスクが複数ある場合は、タスクは異なるコアに割り当てられて同時に動作する。従って、タスク自体が並列化されていなくても性能向上が期待できるため、シングルコア用に開発されたソフトウェアをマルチコアで実行したいという要求がある。
【０００４】
例えば、ある時刻１で実行可能なタスクが三つある場合、シングルコアでは、図１に示すように、一つのタスクが選ばれコアに割り当てられて実行される（図ではタスク０）。次の時刻２でタスク０が停止すると、次のタスクが割り当てられ実行される。このように、シングルコアでは逐次的に実行が行われる。
【０００５】
一方、マルチコアでは、図２に示すように、時刻１ではタスク０とタスク１が同時に異なるコアに割り当てられて実行される。
【０００６】
一方、一般にタスクの処理内容によっては、他のタスクと同時に動作すると不具合を起こす可能性がある。マルチコアでは複数のコアでタスクが同時に実行されるため、シングルコアでは不具合が起こらなかったタスクでも、他のタスクと同時に実行されることによって不具合が生じる可能性がある。
【０００７】
例えば、前述の例で、タスク０とタスク２が同時に実行すると不具合を起こす部分を含んでいるとする。このタスクが図３の様に実行されると、不具合を起こす部分（図中の斜線部分）が同時に実行されるため、不具合を起こす。
【０００８】
同時実行によって不具合を起こす可能性を考慮すると、シングルコア用に開発されたソフトウェアをマルチコアで動作させる場合は、同時に実行される可能性があるタスク間で、同時に実行しても問題がないか確認し、必要に応じて同時実行を禁止するための指定を行う必要がある。
【０００９】
既存の指定方法としてセマフォアがある。セマフォアを利用すると、クリティカルセクションを定義し、同時にクリティカルセクションに入るタスクを一つに制限することができる。
【００１０】
図４に、前述の例でセマフォアを用いて、同時実行を禁止した場合のスケジューリング結果を示す。同時実行をすると不具合を起こす部分をクリティカルセクションと定義し、クリティカルセクションに入る前にはロックを取得する必要があるようにする。これにより、時刻１でタスク２がクリティカルセクションを実行するためにロックを取得しようとすると、コア０のタスク０がクリティカルセクションを実行中のためロックが取得できず、タスク０がロックを解除する時刻２まで、実行を停止する。
【００１１】
セマフォアを利用する場合は、各タスクの同時実行をさせない部分を調べ出し、タスクのソースコードの該当部分を囲むようにＡＰＩコールを挿入することで、該当部分をクリティカルセクションと定義する。従って、セマフォアには全てのタスク間で同時に実行可能かの確認を行い、必要ならばソースコードを修正するという膨大な手間がかかることが問題である。
【００１２】
又、関連技術には指定方法としてプロセッサaffinityを用いることができる。プロセッサaffinityは、タスク毎に利用可能なコアを指定する機能である。プロセッサaffinityを用いると、同時に実行されるべきではないタスクを同一のコアに割り当てることによって、同時に動作することがないようにできる。しかしながら、別コアに割り当てるために、そのほかのコアで動く可能性のある全てのタスクと同時に実行しても良いかを確認する必要がある。
【００１３】
図５に、前述の例でプロセッサaffinityを用いてタスク０とタスク２をコア０に割り当て、タスク１をコア１に割り当てた場合のスケジューリング結果を示す。この場合は、タスク０とタスク２は同じコアに割り当てられているため、同時に実行されない。しかし、タスク１はタスク０とタスク２のどちらとも同時に実行される可能性があるため、例えばタスク０とタスク１のみ同時に動かしたい場合でも、タスク１とタスク２が同時に動いても問題ないかを確認しなければならず、余計な手間がかかるという問題がある。
【００１４】
そのため、特許文献１には、マスタプロセッサ内のタスク割り当て管理部が、各スレーブプロセッサ割り当てるべきタスク量を決定し、タスクキューに保持されているタスクを各スレーブプロセッサに供給し、タスク割り当て管理部は、タスクキューに保持されているタスク残存量を監視し、タスク残存量に応じて割り当てるタスク量を決定する発明が開示されている。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開平１１−１９５００７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１６】
しかしながら、特許文献１に開示されている発明は、タスクの同時実行を許可するか禁止するかを指定する手段を開示していないという問題点がある。
【００１７】
本発明は上記に鑑みてなされたもので、タスクの同時実行を許可するか禁止するかを指定することにより、シングルコア用に開発されたソフトウェアをマルチコアに移行する場合のコストを軽減することができる、マルチコアシステムのためのタスク割り当て手段、その方法及びそのプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１８】
上述の問題を解決するため、本発明に係るタスク割り当て手段は、マルチコアプロセッサを用いたマルチタスクシステムにおける各コアへのタスクの割り当てを決定するタスク割り当て手段において、前記タスクにタグを設定するタグ設定部と、前記タスクに設定されたタグを記録したタグ表と、前記各コアで実行中のタスクのタグを管理する実行中タグ管理部と、前記各コアでタスクの同時実行を許可するか禁止するかを、これらのタスクに付されたタグ同士のタグ間の関係性から判定するタグ関係性判定部と、前記実行中タグ管理部と前記タグ関係性判定部とを制御して、前記各コアに割り当てるタスクを決定する割り当てタスク決定部と、を備え、前記割り当てタスク決定部は、前記各コアのうち一のコアに割り当てるタスクを決定する際に、前記実行中タグ管理部を呼び出して、前記各コアで実行中のタスクのタグの更新をロックさせるとともに前記一のコア以外の他のコアで実行中のタスクのタグを参照させ、かつ、前記タグ関係性判定部を呼び出し、前記一のコアへ割り当てる予定のタスクに設定されたタグと前記他のコアで実行中のタグとのタグ間の関係性に基づいて、前記割り当てる予定のタスクが前記一のコアで実行可能かを判定させることを特徴とする。
【００１９】
上述の問題を解決するため、本発明に係るタスク割り当て方法は、マルチコアプロセッサを用いたマルチタスクシステムにおける各コアへのタスクの割り当てを決定するタスク割り当て方法において、前記タスクにタグを設定するタグ設定手順と、前記タスクに設定されたタグを記録する手順と、前記各コアで実行中のタスクのタグを管理する実行中タグ管理手順と、前記各コアでタスクの同時実行を許可するか禁止するかを、これらのタスクに付されたタグ同士のタグ間の関係性から判定するタグ関係性判定手順と、前記各コアに割り当てるタスクを決定する割り当てタスク決定手順と、を備え、前記割り当てタスク決定手順は、前記各コアのうち一のコアに割り当てるタスクを決定する際に、前記実行中タグ管理手順を呼び出して、前記各コアで実行中のタスクのタグの更新をロックさせるとともに前記一のコア以外の他のコアで実行中のタスクのタグを参照させ、かつ、前記タグ関係性判定手順を呼び出し、前記一のコアへ割り当てる予定のタスクに設定されたタグと前記他のコアで実行中のタグとのタグ間の関係性に基づいて、前記割り当てる予定のタスクが前記一のコアで実行可能かを判定させることを特徴とする。
【００２０】
上述の問題を解決するため、本発明に係るタスク割り当てプログラムは、マルチコアプロセッサを用いたマルチタスクシステムにおける各コアへのタスクの割り当てを決定するタスク割り当てプログラムにおいて、前記タスクにタグを設定するタグ設定処理と、前記タスクに設定されたタグを記録する処理と、前記各コアで実行中のタスクのタグを管理する実行中タグ管理処理と、前記各コアでタスクの同時実行を許可するか禁止するかを、これらのタスクに付されたタグ同士のタグ間の関係性から判定するタグ関係性判定処理と、前記各コアに割り当てるタスクを決定する割り当てタスク決定処理と、をコンピュータに実行させ、前記割り当てタスク決定処理は、前記各コアのうち一のコアに割り当てるタスクを決定する際に、前記実行中タグ管理処理を呼び出して、前記各コアで実行中のタスクのタグの更新をロックさせるとともに前記一のコア以外の他のコアで実行中のタスクのタグを参照させ、かつ、前記タグ関係性判定処理を呼び出し、前記一のコアへ割り当てる予定のタスクに設定されたタグと前記他のコアで実行中のタグとのタグ間の関係性に基づいて、前記割り当てる予定のタスクが前記一のコアで実行可能かを判定させることを特徴とする。
【発明の効果】
【００２１】
本発明によれば、タスクにタグを設定し、一のコアへ割り当てる予定のタスクに設定されたタグと他のコアで実行中のタグとのタグ間の関係性に基づいて、割り当てる予定のタスクが一のコアで実行可能かを判定させることにより、シングルコア用に開発されたソフトウェアをマルチコアに移行する場合のコストを軽減することができる、マルチコアシステムのためのタスク割り当て手段、その方法及びそのプログラムを提供することができる。
【図面の簡単な説明】
【００２２】
【図１】本発明の背景を説明するための図面である。
【図２】本発明の背景を説明するための図面である。
【図３】本発明の背景を説明するための図面である。
【図４】本発明の関連技術を説明するための図面である。
【図５】本発明の関連技術を説明するための図面である。
【図６】本発明の手段を説明するための図面である。
【図７】本発明の第１の実施の形態の構成を説明するための図面である。
【図８】本発明の第２の実施の形態の構成を説明するための図面である。
【図９】本発明の第３の実施の形態の構成を説明するための図面である。
【図１０】本発明の第１の実施例を説明するための図面である。
【図１１】本発明の第１の実施例を説明するための図面である。
【図１２】本発明の第１の実施例を説明するための図面である。
【図１３】本発明の第１の実施例を説明するための図面である。
【図１４】本発明の第３の実施例を説明するための図面である。
【図１５】本発明の第４の実施例を説明するための図面である。
【図１６】本発明の第５の実施例を説明するための図面である。
【図１７】本発明の第６の実施例を説明するための図面である。
【図１８】本発明の第７の実施例を説明するための図面である。
【図１９】本発明の第７の実施例を説明するための図面である。
【図２０】本発明の第７の実施例を説明するための図面である。
【図２１】本発明の第７の実施例を説明するための図面である。
【図２２】本発明の第７の実施例を説明するための図面である。
【図２３】本発明の第７の実施例を説明するための図面である。
【図２４】本発明の第８の実施例を説明するための図面である。
【図２５】本発明の第８の実施例を説明するための図面である。
【図２６】本発明の第８の実施例を説明するための図面である。
【図２７】本発明の第８の実施例を説明するための図面である。
【図２８】本発明の第８の実施例を説明するための図面である。
【図２９】本発明の第８の実施例を説明するための図面である。
【図３０】本発明の第９の実施例を説明するための図面である。
【図３１】本発明の第９の実施例を説明するための図面である。
【発明を実施するための形態】
【００２３】
次に発明を実施するための最良の形態について図面を参照して詳細に説明する。
【００２４】
本発明は、図６に示すように、
（１）タスクに付けられたタグ１と
（２）タグ同士の同時実行禁止するか許可するかのタグ関係２と
（３）タグと関係を用いてコアへタスクを割り当てるタスクスケジューラ３と
を用いてコアにタスクを割り当てるというものである。
【００２５】
［第１の実施の形態］
図７に本発明の第１の実施の形態の構成を示す。本実施の形態は、タグ設定部１１と、タグ表１２と、割り当てタスク決定部１３と、実行中タグ管理部１４と、タグ関係性判定部１５とを備える。
【００２６】
タグ設定部１１は、タスクにタグを設定する機能を有し、タグ表１２はタスクに設定されたタグを記録する機能を有する。
【００２７】
実行中タグ管理部１４は、各コアで実行しているタスクのタグ（実行中タグ）を管理する機能を有する。より具体的には、実行中タグを参照する機能と実行中タグを更新する機能と、参照と更新を不可分に行うためのロック機能とを提供する。以下、単に「タグ」と称する場合は、タスクのタグを意味するものとする。
【００２８】
タグ関係性判定部１５は、タスクの同時実行を許可するか禁止するかを、これらのタスクに付されたタグ同士のタグ間の関係性から判定する機能を有する。
【００２９】
割り当てタスク決定部１３は、タグ表１２と実行中タグ管理部１４とタグ関係性判定部１５とを制御し、タスクにつけられたタグと他のコアで実行中のタスクのタグとのタグ間の関係性に基づいて、コアに割り当てるタスクを決定する機能を有する。
【００３０】
本発明によるタスク割り当て手段は、タグ表１２、実行中タグ管理部１４とタグ関係性判定部１５とを備えることにより、他のコアで実行中のタスクを考慮して、コアに割り当てるタスクを決定することを特徴とする。
【００３１】
次に、本実施の形態の動作について説明する。本発明によるタスク割り当て手段の特徴的な動作は、タスクにタグを設定する動作と、コアに割り当てるタスクを決定する動作であるので、ここではこれらの動作について詳細に説明する。
【００３２】
まず、タスクにタグを設定する動作の手順は以下の様になる。
（１）タグ設定部１１が、タスク識別子とタグを指定して呼び出される
（２）タグ設定部１１は、タグ表１２の指定されたタスク識別子に対応するタスクのタグとして、指定されたタグを記録する。上記の（１）、（２）の手順で、タグ設定部１１は、タスク識別子を媒介として、タスクにタグを設定する。
【００３３】
次に、コアに割り当てるタスクを決定する動作について説明する。本動作は、割り当て対象のコアと、割り当て候補のタスクの集合（以下割り当て候補タスク集合と呼ぶ）を指定して開始される。なお、割り当て候補タスク集合とは、タグとタグ関係を考慮する以前のタスクの集合である。前記各コアのうち一のコアに割り当てるタスクを決定する際の、本実施の形態の動作の手順は次の様になる。
【００３４】
（１）割り当てタスク決定部１３が、割り当て対象のコアと割り当て候補タスク集合を指定して呼び出される。
【００３５】
（２）割り当てタスク決定部１３は、実行中タグ管理部１４を呼び出し、実行中タグの更新をロックさせるとともに他のコアで実行中のタスクのタグを参照させる。
【００３６】
（３）割り当てタスク決定部１３は、タグ関係性判定部１５を呼び出し、割り当て候補タスク集合に含まれるタスクのタグと他コアで実行中のタグとのタグ間の関係性に基づいて、割り当て候補タスク集合に含まれるタスクが、前述の一のコアで実行可能かを判定させる。この場合、割り当て候補タスク集合に含まれるタスクは、前述の一のコアに割り当てる予定のタスクということになる。
【００３７】
（４）割り当てタスク決定部１３は、割り当て候補タスク集合に含まれ、前述の一のコアで実行可能なタスクの集合である割り当て可能タスク集合を決定する。
【００３８】
（５）割り当てタスク決定部１３は、割り当て可能タスク集合の中から一つのタスクを選び、割り当てタスクとする。なお、集合から一つのタスクを選ぶ方法は本発明の範囲外であることは、当業者には明らかである。
【００３９】
（６）割り当てタスク決定部１３は、実行中タグ管理部１４を呼び出し、前述の一のコアのタグを割り当てタスクのタグに設定するとともに、ロックを解除する。
【００４０】
（７）割り当てタスク決定部１３は、割り当てタスクを決定結果として返す。
【００４１】
決定された割り当てタスクはタスクスケジューラによってコアに割り当てられ実行される。以上の動作により、同時実行が許可されているタグを持つタスクがコアに割り当てられて実行される。従って、タグを用いた同時実行の許可及び禁止を考慮したタスク割り当てを行うことができる。
【００４２】
なお、本動作の説明では、他のコアで実行中のタグの更新をロックしたが、ロックを用いずに、（６)の前述の一のコアのタグを更新する際に、実行中タグ管理部１４が、タグ関係性判定部１５を呼び出し、実行中タグの更新を許可するかどうかを判定し、許可されなかった場合は、割り当てタスク決定部１３が（２）からの処理を再び実行し、他のタスクの割り当てを試みるという動作としてもよい。
【００４３】
［第２の実施の形態］
次に本発明の第２の実施の形態について説明する。図８に本実施の形態の構成を示す。本実施の形態は、第１の実施の形態と同様に、タグ設定部２１と、タグ表２２と、割り当てタスク決定部２３と、実行中タグ管理部２４と、タグ関係性判定部２５とを備える。
【００４４】
又、本実施の形態は、本発明の第１の実施の形態に加えて、タスク優先度表２６と割り込み送信部２７とを備えることを特徴とする。
【００４５】
タスク優先度表２６は、タスク毎の優先度を記録する表である。タスクのその他の情報を記録する表の一部であっても良いし、タグ表と同一の表としてもよい。又、タスクの優先度はＯＳのタスクスケジューラで一般的に用いられているので、詳細な説明は省略する。割り込み送信部２７は、指定されたコアに対して、再スケジューリングを行うことを指示するために、コア間割り込みを送信する機能を有する。本実施の形態は、割り込みを用いて他のコアに再スケジューリングを指示する事によって、タスクの優先度を考慮したタグを用いた同時実行制御が行えることを特徴とする。
【００４６】
次に本実施の形態の動作について説明する。タスクにタグを設定する場合の動作は本発明の第１の実施の形態と同じであるため、ここでは、コアに割り当てるタスクを決定する場合の動作について説明する。本動作の手順は次の様になる。
【００４７】
（１）割り当てタスク決定部２３が、割り当て対象のコアと割り当て候補タスク集合を指定して呼び出される。
【００４８】
（２）割り当てタスク決定部２３は、実行中タグ管理部２４を呼び出し、実行中タグの更新をロックするとともに他のコアで実行中のタグを参照する。
【００４９】
（３）割り当てタスク決定部２３は、割り当て候補タスク集合の中から、タスク優先度表２６を参照して最も優先度の高いタスクを抽出し、該抽出されたタスクを候補タスクとする。
【００５０】
（４）割り当てタスク決定部２３は、タグ表２２を用いて候補タスクのタグを調べる。
【００５１】
（５）割り当てタスク決定部２３は、タグ関係性判定部２５を呼び出し、他のコアでの実行中タグと候補タスクのタグから、候補タスクが前述の一のコアで実行が許可されているかを判定する。
【００５２】
（６）候補タスクが前述の一のコアで実行が禁止されている場合は、候補タスクと同時実行が禁止されているタグを持つ他のコアで実行中のタスクの中で最も優先度の高いタスクの優先度をタスク優先度表２６を参照して調べる。
【００５３】
（７．１）調べた優先度が候補タスクの優先度より高い場合は、候補タスクを割り当て候補タスク集合から外し、（３）に戻る。
【００５４】
（７．２）調べた優先度が候補タスクの優先度より低い場合は、割り込み送信部２７を呼び出して、候補タスクと同時実行が禁止されているタグを持つタスクを実行中のコア、すなわち他のコアで実行中のタスクの中で最も優先度の高いタスクを実行中のコアに対して、その実行中のタスクを中断させる割り込み信号を送り、再スケジューリングを行わせる。
【００５５】
（８）割り当てタスク決定部２３は、候補タスクを割り当てタスクとし、実行中タグ管理部２４を呼び出し、前述の一のコアのタグを割り当てタスクのタグに設定するとともに、タグの更新のロックを解除する。
【００５６】
（９）割り当てタスク決定部２３は、割り当てタスクを決定結果として返す。
【００５７】
決定された割り当てタスクはタスクスケジューラによってコアに割り当てられ実行される。又、割り込みを受けたコアは、そのコアに次に割り当てるタスクを決定するためのスケジューリングが行われる。
【００５８】
このスケジューリングでは、割り当てタスク決定部２３が呼び出され、上述した動作が行われる。この時、割り込みを受けるまで割り当てられていたタスクは、そのタスクより優先度が高く、かつ同時実行が禁止されているタスクが他のコアで実行されているために、再び割り当てられない。従って、当該コアでは他のタスクが実行されるか、アイドル状態になる。
【００５９】
本実施の形態により、他のコアで優先度が低いが同時実行が禁止されているタスクが動作している場合にも、前述の一のコアに優先度が高いタスクを割り当てることが可能となり、優先度を考慮したタスクのコアへの割り当てが可能となる。
【００６０】
［第３の実施の形態］
次に本発明の第３の実施の形態について説明する。図９に本実施の形態の構成を示す。本実施の形態は、第１の実施の形態と同様に、タグ設定部３１と、タグ表３２と、割り当てタスク決定部３３と、実行中タグ管理部３４と、タグ関係性判定部３５とを備える。
【００６１】
又、本実施の形態は、本発明の第１の実施の形態に加えて、タグ関係表３６とタグ関係設定部３７とを備えることを特徴とする。タグ関係表３６は、タスクの同時実行を許可するか禁止するかの関係を、これらタスクに設定されたタグに基づいて記述したタグ関係を記録する機能を有する。又、タグ関係設定部３７はタグ関係表３６にタグ関係を登録し、タグ関係表３６を更新する機能を有する。
【００６２】
次に本実施の形態の動作について説明する。本実施の形態のほとんどの動作は本発明の第１の実施の形態から明らかであるため、本実施の形態に特徴的な動作のみ説明する。本実施の形態に特徴的な動作は、タグ関係性を登録する動作とタスクに割り当てるコアを決定する際に前述の一のコアで実行が許可されるタスクを判定する動作の二つである。
【００６３】
前者は以下のような動作である。
（１）タグ関係設定部３７は、タグ間の関係性（同時実行を許可するか禁止するか）を指定して呼び出される。
【００６４】
（２）タグ関係設定部３７は、指定されたタグ関係をタグ表に記録する。
【００６５】
又、後者の動作は以下のような動作である（割り当てタスク決定動作の関連部分のみを示す）。
【００６６】
（１）割り当てタスク決定部が、他のコアで実行中のタグ集合とタスクのタグを指定してタグ関係性判定部を呼び出す。
【００６７】
（２）タグ関係性判定部は、タグ関係表３６を用いて、指定されたタスクが実行可能であるか否かを判定する。
【００６８】
（３）タグ関係性判定部は、判定結果を割り当てタスク決定部３３に通知する。
【００６９】
本実施の形態では、タグ関係表３６を用いることで、タグの関係性を任意に設定することが可能である。従って、あらかじめ決定されている関係以外の関係を用いることや、複雑なタグ関係性を用いることができるという特徴がある。
【実施例】
【００７０】
［第１の実施例］
次に、具体的な実施例を用いて本発明の第１の実施の形態の動作を説明する。第１の実施例は、本発明の第１の実施の形態に対応する実施例である。ここで、図１０に本実施例の構成を示す。
【００７１】
図１０によると、本実施例は、ＯＳがタグ設定部１０１１、タグ表１０１２、割り当てタスク決定部１０１３、実行中タグ管理部１０１４及びタグ関係性判定部１０１５を備え、その他にユーザーレベルの管理タスク１０１６、タグ設定表１０１７及びＯＳのタスク生成部１０１８を有する。
【００７２】
タグ設定部１０１１、タグ表１０１２、割り当てタスク決定部１０１３、実行中タグ管理部１０１４、タグ関係性判定部１０１５の機能と動作については、本発明の第１の実施の形態の説明から明らかである。
【００７３】
管理タスク１０１６は、ＯＳのタスク生成部１０１８を呼び出してタスクを生成するとともに、タグ設定部１０１１を呼び出して、タスクにタグを付ける機能を有する。
【００７４】
タグ設定表１０１７は、タスクを識別するタスク識別子であるタスク番号とタグとを関連付けて記録する機能を有し、管理タスク１０１６はタグ設定表１０１７を参照して、後述するタスク生成部１０１８が生成したタスクにタグ設定表１０１７に記録されたタグを設定する。
【００７５】
又、ＯＳはタグを設定するためのシステムコールを提供している。タグ設定表１０１７は、例えばシステム管理者やソフトウェア開発者がタスクに設定したいタグを記述したファイルとして、記憶装置に設置することができる。ＯＳのタスク生成部１０１８は、通常のＯＳのタスク生成部１０１８が備えるタスクを生成するタスク生成機能に加えて、タグ設定部１０１１を呼び出して生成したタスクにタグを付けさせる機能を有する。
【００７６】
次に、本実施例の構成で、タグ関係性判定部１０１５は、一のコアへの割り当て予定のタスクに付けられたタグと、他のコアで実行中のタスクのタグとでの、これらのタスクの同時実行を禁止するか許可するかのタグ間の関係性において同じタグに対しては同時実行を許可し、異なるタグに対しては同時実行を禁止するという判定を行い、タスク生成部１０１８は、生成したタスクに対してそれぞれ固有のタグを設定する場合について説明する。
【００７７】
本実施例のタスク生成時の動作の手順を以下に示す。
【００７８】
（１）管理タスク１０１６が、生成するタスク名を指定して呼び出される。
【００７９】
（２）管理タスク１０１６は、ＯＳのタスク生成部１０１８にタスクの生成を指示する。タスク生成の詳細な動作については、当業者には明らかであるため詳細な説明は省略する。
【００８０】
（３）ＯＳのタスク生成部１０１８はタスクを生成して、タスクを識別するタスク識別子である固有のタスク番号を割り当てる。
【００８１】
（４）ＯＳのタスク生成部１０１８は、タスク番号とタグを指定してタグ設定部１０１１を呼び出す。このときタグとして「ｔａｇ＿ｔａｓｋタスク番号」を設定する。ここで「タスク番号」は（３）で設定したタスクを識別する固有の数値が入る。例えばタスク番号が１の場合は、ｔａｇ＿ｔａｓｋ１を設定する。
【００８２】
（５）タグ設定部１０１１は、タグ表１０１２にタスク番号とタグを記録する。
【００８３】
（６）ＯＳのタスク生成部１０１８は、生成したタスクのタスク番号を管理タスク１０１６に返す。
【００８４】
（７）管理タスク１０１６は、生成したタスク番号に対応するタグがタグ設定表１０１７に記録されているか検索する。
【００８５】
（８）管理タスク１０１６は、タグ設定表１０１７にタグが記録されている場合は、タスク番号とタグを指定してタグ設定部１０１１を呼び出すシステムコールを発行する。記録されていない場合は動作を終了する。
【００８６】
（９）システムコールが発行されると、タスク設定部がタグ表１０１２で指定されたタスク番号に対応するタグを指定されたタグに更新する。
【００８７】
以上の手順により、タグ設定表１０１７に記録されていないタスクについては、タスク番号に基づくそれぞれ固有のタグが付けられる。又、タグ設定表１０１７に記録されているタスクについて、タグ設定表１０１７中のタグが付けられる。
【００８８】
次に、本実施例の効果について説明する。本実施例では、タグ設定表１０１７に記録されていないタスクは、タスク生成部１０１８によってそれぞれ固有のタグを付けられるが、タグ関係性判定部１０１５は異なるタグに対しては同時実行を禁止と判定するため、本実施例のタスク割り当て手段によって、これらのタスクは同時に実行されない。従って、同時に実行しても問題ないか確認していないタスクについては、タグ設定表１０１７に記録しないことによって、同時に実行されないようにすることができる。
【００８９】
一方、同時に動作しても問題ないことが確認できたタスクに対しては、タグ設定表１０１７に同じタグを記録することによって、同じタグを付けることで、同時実行を許可できる。これにより、マルチコアの複数のコアを利用した性能向上が期待できる。
【００９０】
従って、シングルコア用に開発されたほとんどのタスク間で同時に実行しても問題ないか確認ができていない場合にも、本発明を用いることにより、同時に実行したいタスク間のみを確認することによって、マルチコアを利用することができる。このため、シングルコアからマルチコアに移行する際のコストを低く抑えることができる。
【００９１】
次に本実施例の動作を具体的に説明するため、三つのタスク０、タスク１、タスク２に対してコア割り当てを行う場合を例に説明する。説明では、タスク０とタスク２は同時に実行しても問題がないことが確認されており、それ以外のタスク間については確認が行われていない場合を想定する。
【００９２】
まず、本動作例のタグ設定表１０１７を図１１に示す。前述したようにタスク０とタスク２のみが同時実行の確認がされているため、これのタスクにはタグとしてｔａｇ０が記録されている。
【００９３】
各タスクが生成された後のタグ表１０１２を図１２に示す。タスク０とタスク２に対しては、タグ設定表１０１７に基づきｔａｇ０が付けられ、ｔａｓｋ１に対しては、タスク生成部１０１８が付与したｔａｇ＿ｔａｓｋ１が付けられている。なお、ここではタスク生成部１０１８によって、タスク０のタスク番号として０、タスク１のタスク番号として１、タスク２のタスク番号として２が割り当てられたとしている。
【００９４】
次に本動作例でのタスクスケジューリング動作について説明する。ここでは、図１３の時刻１に示すように、二つのコアを持つマルチコアで、コア０でタスク０を実行中に、コア１に割り当てるタスクを決定するスケジューリング動作について説明する。この時、割り当て候補タスクはタスク１とタスク２であるとする。この時のスケジューリング動作は以下の様になる。なお、説明を簡略にするため実行中タグのロックと更新については省略する。
【００９５】
（１）割り当てタスク決定部１０１３が、コア番号としてコア１と割り当て候補タスク集合として｛タスク１、タスク２｝を指定されて呼び出される。
【００９６】
（２）割り当てタスク決定部１０１３は、実行中タグ管理部に問い合わせて、他のコアで実行中のタグとしてｔａｇ０を得る。
【００９７】
（３）割り当てタスク決定部１０１３は、タグ関係性判定部１０１５を用いて、ｔａｇ＿ｔａｓｋ１のタグを持つタスク１はコア１で実行中のｔａｇ０とは同時実行禁止、ｔａｇ０を持つタスク２はコア０で実行中のｔａｇ０と同時実行許可であることを得る。
【００９８】
（４）割り当てタスク決定部１０１３は、タスク２がコア１への割り当て可能タスクであることが分かり、コア１への割り当てタスクと決定する。
【００９９】
次に、コア０でタスク０が停止し、次に割り当てるタスクを決定する場合について説明する（図１３の時刻２）。この時、コア１ではタスク１が実行中で、割り当て候補タスク集合は｛タスク１｝とする。同様にスケジューリング動作が行われると、割り当て可能タスク集合は空となるため、タスクは割り当てられない。
【０１００】
次に、時刻２でコア１でタスク１が停止し、コア０で割り当て候補タスク集合を｛タスク１｝としてスケジューリング動作が行われたとする。このとき、同様にスケジューリング動作が行われると、割り当て可能タスク集合は｛タスク１｝となり、コア０には、タスク１が割り当てられる。
【０１０１】
［第２の実施例］
次に本発明の第２の実施例について説明する。本実施例は本発明の第１の実施の形態に対応する実施例であり、図１０に示した第１の実施例の構成において、タグ関係性判定部１０１５は、前述のタグ間の関係性において同じタグに対しては同時実行を禁止し、異なるタグに対しては同時実行を許可するという判定を行い、タスク生成部１０１８は、生成したタスクに対してそれぞれ固有のタグを設定する場合の実施例である。
【０１０２】
本実施例の動作については、第１の実施例から明らかであるため、ここでは本実施例の効果について説明する。本実施例でも、タグ設定表１０１７に記録されていないタスクに対しては、それぞれ固有のタグが設定され、記録されているタスクに対してはタグ設定表中１０１７のタグが設定されるのは同様である。
【０１０３】
一方、タグ関係性判定部１０１５の関係が第１の実施例と逆になっているため、タグ設定表中１０１７に記録されていないタスクに対しては、同時実行が許可される。又、タグ設定表中１０１７を利用し、タスクに同じタグを付けることによってタスクの同時実行を禁止することができる。
【０１０４】
従って、シングルコア用に開発されたソフトウェアにおいて、多くのタスクは同時に実行しても問題がなく、いくつかのタスクについては同時に実行すると問題があると分かっている場合に、同時に実行すると問題があるタスクが同じタグを持つようにタグ設定表１０１７に記録することによって、マルチコア上で問題なく実行することができる。このため、本実施例を用いると上記のような特徴を持つソフトウェアの場合に、タグ設定表中１０１７への記録を少なくすることができるという効果がある。
【０１０５】
［第３の実施例］
次に本発明の第３の実施例について説明する。本実施例の構成を図１４に示す。本実施例は、第１の実施例に対して、タスク生成部１０１８がタグ設定部１０１１を呼び出さない構成となっていることが特徴である。このため、本実施例ではタスクが生成されると、タグが設定されていないことを意味するあらかじめ決められた共通のタグが設定される。以下の説明ではこのタグを共通タグと呼ぶことにする。
【０１０６】
又、本実施例のタグ関係性判定部１０１５は、以下のような判定を行う。
・共通タグ同士は同時実行を禁止
・異なるタグは同時実行を禁止
・同じタグは同時実行を許可
本実施例のその他の構成要素の機能と動作については、第１の実施例と同様である。
【０１０７】
次に、本実施例の効果を説明する。本実施例では、タスク生成部１０１８によるタグ設定が行われないため、タグ設定表１０１７に記録されていないタスクには、管理タスク１０１６によるタグ設定が行われないため、管理タスク１０１６がタグ設定部１０１１を呼び出して共通タグを設定することになる。共通タグを持つタスクは、その他のタグを持つタスクと同時実行を禁止と判定されるため、同時に動作しても問題ないか確認できていないタスクはタグ設定表１０１７に記録しないことによって、同時実行されないようにすることができる。
【０１０８】
一方で、同時実行が問題ないことが確認できたタスクに対しては、共通タグとは異なる同じタグを割り当てることによって、それらのタスク間でのみ同時実行を行わせる事ができる。このため、本実施例では、第１の実施例と同様に、シングルコア用に開発されたソフトウェアで、少数のタスクに対してのみ同時実行しても問題ないことが確認できている場合に、シングルコアからマルチコアへ移行するコストを少なくすることができる。
【０１０９】
又、本実施例の別の形態として、タグ関係性判定部１０１５の動作を、
・共通タグ同士は同時実行を許可
・異なるタグは同時実行を許可
・同じタグは同時実行を禁止
とすることによって、第２の実施例と同様に、多くのタスクは同時に実行しても問題がなく、いくつかのタスクについては同時に実行すると問題があると分かっている場合に、同時に実行すると問題があるタスクが共通タグとは異なる同じタグを持つようにタグ設定表１０１７に記録することによって、マルチコア上で問題なく実行することができる。
【０１１０】
本実施例はこれらの効果に加えて、タスク生成部１０１８がタグ設定部１０１１を呼び出さないため、本発明によるタスク割り当て手段を既存のＯＳに実装する際に、タスク生成部１０１８を修正する必要が無く、ＯＳの修正箇所を少なくすることができるという効果がある。
【０１１１】
［第４の実施例］
次に、本発明の第４の実施例について説明する。図１５に本実施例の構成を示す。本実施例は、管理タスク１０１６がタグ設定表１０１７を参照して、タスク生成部１０１８が生成したタスクに設定するタグを指定してタスク生成部１０１８を呼び出すことを特徴とする。
【０１１２】
タスク生成部１０１８は、新しく生成したタスクに指定されたタグを設定するように、タグ設定部１０１１を呼び出す。その他の構成要素については、第１の実施例と同様である。
【０１１３】
本実施例が、第１の実施例及び第２の実施例と同様に、シングルコアからマルチコアへの移行コストを少なくすることができるという効果を持つことは明らかである。この効果に加えて、本実施例では、管理タスク１０１６がタスク生成部１０１８への呼び出しとは別に、タグ設定部１０１１を呼び出す必要がないため、処理を減らすことができるという効果がある。
【０１１４】
又、タスク生成と同時に指定したタグに設定できるため、生成されたタスクに指定したタグが設定されるまで遅延を無くすことができるという効果もある。
【０１１５】
［第５の実施例］
次に、本発明の第５の実施例について説明する。図１６に本実施例の構成を示す。本実施例は、タスクの動作を記述したプログラムが記録されたファイルにタグを記録しておき、タスク生成部１０１８がこのタスクの動作とタグとを記述したプログラムファイル１６０１からタスクを生成する時に、プログラムファイル１６０１からタグを読み出し、タグ設定部１０１１を呼び出してタグを設定するという動作をすることを特徴とする。
【０１１６】
一般に、タスク生成部１０１８は、タスクの動作を記述したプログラムが記録されたファイル名を指定して呼び出される。そこで、このファイル中にタグを記録しておくことによって、タスク生成部１０１８が直接タグを設定することを可能とし、管理タスクを用いてタスクにタグを設定する必要がなくなる。このため、本実施例では管理タスクが不要になるという効果がある。
【０１１７】
又、本実施例の別形態として、プログラムファイル１６０１ではなく、異なる方法にタグを記録しておき、タスク生成部１０１８がその記憶手段を参照して、タグを設定するという構成をとっても良い。この構成では、タスク生成部１０１８が当該方法を参照するように変更する必要があるが、プログラムファイル１６０１中にタグを記録する必要がなく、プログラムファイル１６０１を修正することが困難な場合にも用いることができるという効果がある。
【０１１８】
［第６の実施例］
次に、本発明の第６の実施例について説明する。図１７に本実施例の構成を示す。本実施例は、タスク１７０１が自らシステムコールを発行してタグ設定部１０１１を呼び出し、タグを設定することを特徴とする。
【０１１９】
タスク１７０１が設定するタグは、プログラムのオプションとして与える方法や、実行時にタスク１７０１が参照する設定情報に記録する方法や、あらかじめタグをプログラムに記述しておくと言った方法がある。これらのいずれの方法をとった場合でも、タスク１７０１が実行中に自らタグ設定部１０１１を呼び出すことによって、タスク１７０１にタグを設定することができる。
【０１２０】
本実施例においても、これまでの実施例で説明したようにタグを設定することで、シングルコアからマルチコアへの移行のコストを少なく抑えることができることは明らかである。
【０１２１】
これに加えて、本実施例では、タスク１７０１の動作を記述したプログラムを修正して、タグ設定を行う様にする必要があるが、それが許される場合は、管理タスクが不要であること、タスク生成部がタグ設定部１０１１を呼び出したり、第５の実施例の様にプログラムファイル中にタグを読み出すように修正する必要がないと言う効果がある。
【０１２２】
又、本実施例の別形態として、タスク１７０１が実行途中にタグ設定部１０１１を呼び出してタグを変更しても良い。例えば、タスク１７０１の動作フェーズによって同時に実行すると問題があるタスク１７０１が変わる場合に、タグを変更することによって対応できる。
【０１２３】
このため、各動作フェーズで同時に実行すると問題がある全てのタスク１７０１と同時実行を禁止するようにタグを設定する場合に比べて、他のタスクと同時に実行する機会を増やし、マルチコアをより有効に利用することができるという効果がある。
【０１２４】
［第７の実施例］
次に、本発明の第７の実施例について説明する。図１８に本実施例の構成を示す。本実施例は、本発明の第２の実施の形態に対応する実施例で、ＯＳが第２の実施の形態の構成要素であるタグ設定部１８２１、タグ表１８２２、割り当てタスク決定部１８２３、実行中タグ管理部１８２４、タグ関係性判定部１８２５、タスク優先度表１８２６及び割り込み送信部１８２７を備えている。これらに加えて、第１の実施例に対応するユーザーレベルの管理タスク１０１６、タグ設定表１０１７及びＯＳのタスク生成部１０１８を有する。
【０１２５】
又、タグ関係性判定部１８２５は、第１の実施例と同様に以下の様に判定し、タスク生成部１０１８は各タスクに固有のタグを設定するとする。
・同じタグに対しては同時実行を許可
・異なるタグに対しては同時実行を禁止
各構成要素については、第２の実施の形態の説明と第１の実施例の説明から明らかであるため、ここではタスクをコアに割り当てる例を用いて、動作と効果を説明する。
【０１２６】
以下の説明では、二つのコアに三つのタスクを割り当てる場合を想定する。図１９に、管理タスク１０１６によるタグ設定が終了した後のタグ表１８２２を示す。このタグ表１８２２を見ると分かるようにタスク０とタスク２は同時実行許可で、その他の組み合わせは同時実行禁止である。
【０１２７】
図２０に、本実施例でのタスク優先度表１８２６を示す。優先度の数値が小さいほど優先度が高いことを示しており、本実施例ではタスク０、タスク１、タスク２の順番に優先度が高い。
【０１２８】
ここで、図２１の時刻１に示すように、コア０にタスク０、コア１にタスク２が割り当てられて同時に実行されている状態でタスク０が停止して、コア０へのタスク割り当てを行う場合を想定する。又、このときの割り当て候補タスク集合は｛タスク１｝であるとする。
【０１２９】
本実施例と他の実施例の効果の違いをわかりやすく説明するため、まず第１の実施例によって割り当てを行う場合について説明する。図２２に、第１の実施例によるスケジューリング結果を示す。
【０１３０】
第１の実施例の割り当て方法では、コア１でｔａｇ０を持つタスク１が実行されているため、異なるタグｔａｇ＿ｔａｓｋ１を持つタスク１は、同時実行が禁止される。したがって割り当て可能タスク集合は空になるため、この時点ではコア０にはタスクは割り当てられず、コア０はアイドル状態となる。
【０１３１】
次に、図２２に示す時刻２において、タスク２が停止し、コア１に割り当てるタスクを決定するためのスケジューリングが起こったとする。この時の割り当て候補タスク集合は｛タスク１｝とする。この時、他のコアで実行中のタスクは無いため、割り当て可能タスク集合は｛タスク１｝となり、タスク１がコア１に割り当てられる。このスケジューリング結果では、タスク１の開始が優先度の低いタスク２のために遅れるという結果になっている。
【０１３２】
次に、本実施例によるスケジューリング結果を図２３に示す。本実施例では、時刻１で同様のスケジューリングが起きたときに、タスク優先度表１８２６を参照してタスク１はタスク２より優先度が高いことが分かるため、コア１に割り込みを送信して、タスク１の実行を止め、コア０にタスク２を割り当てる。この時割り込みを受けたコア１では、次のタスクを割り当てるためのスケジューリングが行われるが、コア０でタスク１が実行中のため、同時実行が禁止されているタスク２は割り当てられず、アイドル状態となる。
【０１３３】
次に、時刻３において、タスク１が停止し、次に割り当てるタスクを決定するためのスケジューリングが行われると、タスク２が割り当てられる。本実施例のスケジューリング結果では、タスク１は優先度が低いタスク２に待たされること無く、コア０に割り当てられて実行される。この様に、本実施例では、優先度を考慮したコア割り当てができるという効果がある。
【０１３４】
本実施例は、第２の実施の形態とタグ設定部１８２１を呼び出す手段として第１の実施例の管理タスク１０１６、タスク生成部１０１８、タスク設定表を組み合わせた実施例であるが、第２の実施の形態と第２の実施例乃至６に示したタグ設定部１８２１を呼び出す手段を組み合わせる構成をとっても良い。
【０１３５】
［第８の実施例］
次に、本発明の第８の実施例について説明する。図２４に本実施例の構成を示す。本実施例は、本発明の第３の実施の形態に対応する実施例であり、タグ設定部２４３１、タグ表２４３２、割り当てタスク決定部２４３３、実行中タグ管理部２４３４、タグ関係性判定部２４３５、タグ関係表２４３６及びタグ関係設定部２４３７を備えている。又、本実施例では、ユーザーレベルの管理タスク２４１６、タグ設定表２４１７及びタグ関係設定表２４３８を備える。
【０１３６】
本実施例に特徴的な動作は、タグ関係表２４３６の設定動作である。この動作は、例えばシステムの起動時に管理タスク２４１６が起動されると、管理タスク２４１６が、タスクの同時実行を許可するか禁止するかの関係を、該タスクに設定されたタグに基づいて記述したタグ関係として記録しているタグ関係設定表２４３８からタグ関係を読み出すことによって行われる。タグ関係設定表２４３８は、第１の実施例で説明したタグ設定表２４１７と同様に、システム開発者などがファイルとして記憶装置に設置することができる。
【０１３７】
本実施例の効果を説明するため、二つのコアへの四つのタスクの割り当てを行う例を用いて説明する。この例では、タスク間で同時実行しても問題ないかの確認が、
・タスク０とタスク１は問題ない
・タスク０とタスク２は確認できていない
・タスク０とタスク３は確認できていない
・タスク１とタスク２は問題ない
・タスク１とタスク３は確認できていない
・タスク２とタスク３は確認できていない
となっているとする。
【０１３８】
まず、この時に、
・異なるタグは同時実行禁止
・同じタグは同時実行許可
というタグ関係を用いる場合について説明する。
【０１３９】
この場合に、タスク０とタスク１の同時実行を許可するために同じタグとしてｔａｇ０を付けたとする。従って、タスク２とタスク３はタスク０と同時実行が許可されていないので、別のタグを付けることになり、またタスク２とタスク３も同時実行は許可されていないので、それぞれをｔａｇ２、ｔａｇ３と設定する。このタグ設定を図２５に示す。
【０１４０】
このタグを設定ではタスク１とタスク２は異なるタグを持つことになり、同時に実行が許可されない。この場合のスケジューリング結果の例を図２６に示す。
【０１４１】
この図２６の例では、タスク０とタスク１が同時に実行中に、時刻１でコア０で実行中のタスク０が停止した場合である。この時、タスク２が実行中であったとしても、タスク１とタスク２は同時実行が許可されていないので、タスク２はコア０に割り当てられない。時刻２でタスク１が停止すると、タスク２の実行が開始される。従って、タスク２が実行開始が遅れることになる。
【０１４２】
次に、本実施例では、タグ設定表２４１７、タグ関係設定表２４３８をぞれぞれ図２７の様に作成することができる。ここでは、タグ関係設定表２４３８を用いて、管理タスク２４１６によって、同じ内容のタグ関係表２４３６が作成されている。
【０１４３】
この場合、管理タスク２４１６は、タグ関係設定表２４３８に記録されているタグ関係を読み出し、タグ関係設定部２４３７を呼び出して読み出したタグ関係をタグ関係表２４３６に設定させる。
【０１４４】
この場合に、三つのタスクの同じ状況のスケジューリング結果を図２８に示す。まず、この例ではタスク０はｔａｇ０を持ち、タスク１はｔａｇ１を持つが、タグ関係としてｔａｇ０とｔａｇ１は同時実行が許可されているため、同時に実行される。
【０１４５】
時刻１でタスク０が停止すると、コア１ではｔａｇ１が実行されており、タスク２ｔａｇ２を持つが、タグ関係としてｔａｇ１とｔａｇ２は同時実行が許可されているため、コア１にはタスク２が割り当てられる。従って、タスク２は時刻１で実行を開始することができる。
【０１４６】
以上の例で明らかなように、本実施例では、タスク間の同時実行許可、禁止の設定をより柔軟に行えるため、コアの利用効率が向上するといった効果や、タスクの実行開始を早くすることができるという効果がある。
【０１４７】
又、第１の実施例から第８の実施例の別形態として、タグ設定部がタスクに複数のタグを設定しても良い。図２９にタスクが複数のタグを持つ例を示す。
【０１４８】
この例では、例えばタグ関係性判定部２４３５が、
・同じタグを含むタスクは同時実行許可
・同じタグを含まないタグは同時実行禁止
と判定することによって、タスク０とタスク１は同時実行許可し、タスク１とタスク２は同時実行許可、タスク０とタスク２は同時実行禁止と設定することができる。
【０１４９】
このように、複数のタグを設定することによって、柔軟な同時実行の関係性の設定が出きるという効果がある。
【０１５０】
［第９の実施例］
次に、本発明の第９の実施例について説明する。本実施例は、本発明によるタスク割り当て手段とセマフォアを合わせて利用した場合の実施例である。本実施例では、三つのタスクを二つのコアに割り当てる場合の例について説明する。
【０１５１】
本例では、タスク０とタスク１は、同時に実行すると問題がある部分を含むことが確認できており、排他制御手段としてセマフォアが用いられているとする。又、タスク０とタスク２、タスク１とタスク２は同時実行を行っても問題がないか確認できていないとする。この場合のタグ表を図３０に示す。
【０１５２】
本実施例のスケジューリング結果を図３１に示す。本実施例では、タスク０とタスク１が同時に実行中の時刻１で、コア０のタスク０がロックを獲得してクリティカルセクション（同時に実行すると問題がある部分）の実行を始める。
【０１５３】
時刻２でコア１のタスク１がクリティカルセクションを実行するためにロックを獲得しようとするが、タスク０が獲得しているため獲得することができず、実行を停止する。この時、コア１に割り当てる次のタスクを決めるためのスケジューリングが行われるが、タスク２はタスク０とは同時実行が禁止されているため、コア１には割り当てられない。
【０１５４】
次に時刻３で、タスク０がロックを解除すると、タスク１が実行可能になり再びコア１で実行される。最後に時刻４でタスク０とタスク１ともに停止すると、タスク２が実行される。
【０１５５】
セマフォアを用いない場合は、タスク０とタスク１のクリティカルセクションが同時に実行されないように、タスク０とタスク１を同時実行禁止となるように、異なるタグを設定することができる。しかし、この場合は、クリティカルセクション以外の部分でも同時実行が禁止されるため、実行効率が落ちる。従って、本実施例のように、本発明によるタスク割り当て手段とセマフォアを同時に利用することで、コアの利用効率を向上させることができる。
【０１５６】
本発明の各実施例は、第２の実施例を除いて、一のコアへの割り当て予定のタスクに付けられたタグと、他のコアで実行中のタスクのタグとでの、これらのタスクの同時実行を禁止するか許可するかのタグ間の関係性において同じタグに対しては同時実行を許可し、異なるタグに対しては同時実行を禁止するという判定を原則とする。しかし、これらの実施例においても、第２の実施例と同様に、タグ間の関係性が、異なるタグに対しては同時実行を許可し、同じタグに対しては同時実行を禁止するというものでもよい。
【０１５７】
なお、本発明は、物の発明である手段のみならず、方法の発明及びプログラムの発明として実施できる。
【産業上の利用可能性】
【０１５８】
本発明は、ＰＣやサーバーや組み込み機器などの機器でマルチコアを利用する用途に適用できる。特にシングルコアからマルチコアへの移行コストを低く抑えたい場合に好適である。
【符号の説明】
【０１５９】
１  タグ
２  タグ関係
３  タスクスケジューラ
１１  タグ設定部
１２  タグ表
１３  割り当てタスク決定部
１４  実行中タグ管理部
１５  タグ関係性判定部
２１  タグ設定部
２２  タグ表
２３  割り当てタスク決定部
２４  実行中タグ管理部
２５  タグ関係性判定部
２６  タスク優先度表
２７  割り込み送信部
３１  タグ設定部
３２  タグ表
３３  割り当てタスク決定部
３４  実行中タグ管理部
３５  タグ関係性判定部
３６  タグ関係表
３７  タグ関係設定部
１０１１  タグ設定部
１０１２  タグ表
１０１３  割り当てタスク決定部
１０１４  実行中タグ管理部
１０１５  タグ関係性判定部
１０１６  管理タスク
１０１７  タグ設定表
１０１８  タスク生成部
１６０１  プログラムファイル
１７０１  タスク
１８２１  タグ設定部
１８２２  タグ表
１８２３  割り当てタスク決定部
１８２４  実行中タグ管理部
１８２５  タグ関係性判定部
１８２６  タスク優先度表
１８２７  割り込み送信部
２４１６  管理タスク
２４１７  タグ設定表
２４１８  タスク生成部
２４３１  タグ設定部
２４３２  タグ表
２４３３  割り当てタスク決定部
２４３４  実行中タグ管理部
２４３５  タグ関係性判定部
２４３６  タグ関係表
２４３７  タグ関係設定部
２４３８  タグ関係設定表
【図１】
2010244332.tif 000003
【図２】
2010244332.tif 000004
【図３】
2010244332.tif 000005
【図４】
2010244332.tif 000006
【図５】
2010244332.tif 000007
【図６】
2010244332.tif 000008
【図７】
2010244332.tif 000009
【図８】
2010244332.tif 000010
【図９】
2010244332.tif 000011
【図１０】
2010244332.tif 000012
【図１１】
2010244332.tif 000013
【図１２】
2010244332.tif 000014
【図１３】
2010244332.tif 000015
【図１４】
2010244332.tif 000016
【図１５】
2010244332.tif 000017
【図１６】
2010244332.tif 000018
【図１７】
2010244332.tif 000019
【図１８】
2010244332.tif 000020
【図１９】
2010244332.tif 000021
【図２０】
2010244332.tif 000022
【図２１】
2010244332.tif 000023
【図２２】
2010244332.tif 000024
【図２３】
2010244332.tif 000025
【図２４】
2010244332.tif 000026
【図２５】
2010244332.tif 000027
【図２６】
2010244332.tif 000028
【図２７】
2010244332.tif 000029
【図２８】
2010244332.tif 000030
【図２９】
2010244332.tif 000031
【図３０】
2010244332.tif 000032
【図３１】
2010244332.tif 000033