(57)【要約】【課題】リアルタイム性を保ちつつ、キャッシュコヒーレンシの維持にかかるオーバヘッドを低減することを目的とする。【解決手段】タスクの優先情報とタスクを直近に実行した、直近に実行する、或いは実行しているプロセッサを示すプロセッサ情報とがタスクごとに関連付けられて記憶されている記憶装置から、複数のプロセッサで実行可能なタスクのプロセッサ情報を読み出し、複数のプロセッサのうちの一のプロセッサで次に実行されるタスクとして、読み出したプロセッサ情報が一のプロセッサを示すプロセッサ情報と合致するか否かを優先情報に従って判断し、合致すると判断したとき、合致すると判断したプロセッサ情報に関連付けられたタスクを決定することによって課題を解決する。【選択図】図１
2012164050.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置と複数のプロセッサとを有する情報処理装置であって、
タスクの優先情報と前記タスクを直近に実行した、直近に実行する、或いは実行しているプロセッサを示すプロセッサ情報とがタスクごとに関連付けられて記憶されている前記記憶装置から、前記複数のプロセッサで実行可能なタスクのプロセッサ情報を読み出す読出手段と、
前記複数のプロセッサのうちの一のプロセッサで次に実行されるタスクとして、前記読出手段で読み出されたプロセッサ情報が前記一のプロセッサを示すプロセッサ情報と合致するか否かを優先情報に従って判断し、合致すると判断したとき、合致すると判断したプロセッサ情報に関連付けられたタスクを決定する決定手段と、
を有することを特徴とする情報処理装置。
【請求項２】
前記決定手段は、前記読出手段で読み出されたプロセッサ情報の全てが合致しないと判断したとき、読み出されたプロセッサ情報に関連付けられたタスクのうち最も優先情報が高いタスクを前記次に実行されるタスクとして決定することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記読出手段は、前記複数のプロセッサで実行可能なタスクのうち、規定の優先情報よりも高い優先情報のタスクのプロセッサ情報を読み出すことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記記憶装置に記憶されているタスクの優先情報は、前記タスクの優先順位と前記タスクの先着順とを示す情報であり、
前記規定の優先情報よりも高い優先情報は、最大の優先順位の優先情報であり、
前記読出手段は、前記複数のプロセッサで実行可能なタスクのうち、最大の優先順位のタスクのプロセッサ情報を読み出し、
前記決定手段は、前記次に実行されるタスクとして、前記読出手段で読み出されたプロセッサ情報が前記一のプロセッサを示すプロセッサ情報と合致するか否かを先着順に従って判断し、合致すると判断したとき、合致すると判断したプロセッサ情報に関連付けられたタスクを決定し、
前記決定手段は、前記読出手段で読み出されたプロセッサ情報の全てが合致しないと判断したとき、読み出されたプロセッサ情報に関連付けられたタスクのうち先頭の先着順のタスクを前記次に実行されるタスクとして決定することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記読出手段は、前記複数のプロセッサで実行可能なタスクのうち、優先情報が高いものからの規定数に含まれるタスクのプロセッサ情報を読み出すことを特徴とする請求項２に記載の情報処理装置。
【請求項６】
前記読出手段は、前記複数のプロセッサで実行可能なタスクのうち、規定の優先情報よりも高い優先情報のタスクであり、かつ優先情報が高いものからの規定数に含まれるタスクのプロセッサ情報を読み出すことを特徴とする請求項２に記載の情報処理装置。
【請求項７】
記憶装置と複数のプロセッサとを有する情報処理装置における、前記複数のプロセッサのうちの一のプロセッサで次に実行されるタスクを管理するタスク管理方法であって、
前記記憶装置には、タスクの優先情報と前記タスクを直近に実行した、直近に実行する、或いは実行しているプロセッサを示すプロセッサ情報とがタスクごとに関連付けられて記憶され、
前記記憶装置に記憶されている前記複数のプロセッサで実行可能な複数のタスクのうち最も優先情報の高いタスクのプロセッサ情報が前記一のプロセッサを示すプロセッサ情報と合致するか否かを判断する工程と、
前記工程で合致すると判断されたとき、前記次に実行されるタスクとして前記最も優先情報の高いタスクを決定する工程と、
前記工程で合致しないと判断されたとき、前記複数のタスクのうち２番目に優先情報の高いタスクのプロセッサ情報が前記一のプロセッサを示すプロセッサ情報と合致するか否かを判断する工程と、
を有することを特徴とするタスク管理方法。
【請求項８】
記憶装置と複数のプロセッサとを有するコンピュータを、
タスクの優先情報と前記タスクを直近に実行した、直近に実行する、或いは実行しているプロセッサを示すプロセッサ情報とがタスクごとに関連付けられて記憶されている前記記憶装置から、前記複数のプロセッサで実行可能なタスクのプロセッサ情報を読み出す読出手段と、
前記複数のプロセッサのうちの一のプロセッサで次に実行されるタスクとして、前記読出手段で読み出されたプロセッサ情報が前記一のプロセッサを示すプロセッサ情報と合致するか否かを優先情報に従って判断し、合致すると判断したとき、合致すると判断したプロセッサ情報に関連付けられたタスクを決定する決定手段と、
して機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、タスク管理方法、及びプログラムに関する。
【背景技術】
【０００２】
近年、組込みシステムにおいて、性能の向上と消費電力の抑制を同時に満足させる方法として、マルチプロセッサの搭載が増加している。組込みシステムにおいて消費電力の抑制は、組込みシステムの稼働時間に直接に結びついている。これを満足させつつ組込みシステムの性能の向上を図るには、組込みシステムのクロック周波数を上げるよりも、プロセッサ数を増加させた方が有利である。このようなことから、マルチプロセッサに対応した組込み用のリアルタイムオペレーティングシステム（リアルタイムＯＳ）の要求が高まっている。
これまでの組込みシステムでも、異種、或いは同種のプロセッサを複数搭載する組込みシステムは珍しくない。しかしながら、これらは、プロセッサ間が疎な関係であるものが大多数であり、プロセッサ間が密な関係である組込みシステムについては、近年になってから要求が高まってきている。
【０００３】
実際、このようなプロセッサを制御する組込み用のＯＳを見ても、ＴＯＰＰＥＲＳ／ＦＭＰ（いわゆるＴＯＰＰＥＲＳプロジェクトであり、非特許文献１参照。）やＳＭＰ／ＡＭＰ  Ｔ−Ｋｅｒｎｅｌ（Ｔ−Ｅｎｇｉｎｅフォーラム）といったものは、近時、議論が活発化している。
一方、密な結合に対応するマルチプロセッサに対応するＯＳについては、近年に始まった話ではなく、コンピュータ科学の黎明期から研究が行われてきた。現今の汎用コンピュータにおいても、マルチプロセッサに対応した汎用的なＯＳ（例えば、Ｌｉｎｕｘ（登録商標）、Ｗｉｎｄｏｗｓ（登録商標））を、誰でも気軽に利用することができるようになっている。また、マルチプロセッサに関する技術も開示されている（特許文献１、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第３４４４５０５号公報
【特許文献２】特開平９−３０５５５３号公報
【非特許文献】
【０００５】
【非特許文献１】本田晋也、高田広章"ＩＴＲＯＮ仕様ＯＳの機能分散マルチプロセッサ拡張"、「電子情報通信学会論文誌Ｄ  Ｖｏｌ．Ｊ９１−Ｄ  Ｎｏ．４  ９３４−９４４頁」、（社）電子情報通信学会、２００８年
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、組込み用のリアルタイムＯＳでは、組込みシステム全体のリアルタイム性を保証しなければならないという命題を持つ。
ここでリアルタイムとは、厳密には、全ての実行時間が予測可能であることを示し、そのためにＯＳは、自身の処理に要する最悪時の実行時間を保証する。また、キャッシュ等の実行時間の予測を困難にする技術の導入につれ、近年ではリアルタイムの意味合いが緩くなりつつもあるが、優先順位に従った厳格な実行やＯＳでの占有時間の極小化など、リアルタイム性の高いＯＳが要求されている。
【０００７】
このようなリアルタイム性の要求により、これまで汎用的なＯＳで培われた特許文献１、特許文献２に記載の発明を組込み用のリアルタイムＯＳで利用できないという問題がある。
実際に特許文献１に記載の発明では、リアルタイム性を鑑みておらず、リアルタイム性を保ちつつ、組込み型のリアルタイムＯＳでのキャッシュコヒーレンシの維持にかかるオーバヘッドを削減することができない。
【０００８】
本発明はこのような問題点に鑑みなされたもので、リアルタイム性を保ちつつ、キャッシュコヒーレンシの維持にかかるオーバヘッドを低減することを目的とする。
【課題を解決するための手段】
【０００９】
そこで、本発明に係る情報処理装置は、記憶装置と複数のプロセッサとを有する情報処理装置であって、タスクの優先情報と前記タスクを直近に実行した、直近に実行する、或いは実行しているプロセッサを示すプロセッサ情報とがタスクごとに関連付けられて記憶されている前記記憶装置から、前記複数のプロセッサで実行可能なタスクのプロセッサ情報を読み出す読出手段と、前記複数のプロセッサのうちの一のプロセッサで次に実行されるタスクとして、前記読出手段で読み出されたプロセッサ情報が前記一のプロセッサを示すプロセッサ情報と合致するか否かを優先情報に従って判断し、合致すると判断したとき、合致すると判断したプロセッサ情報に関連付けられたタスクを決定する決定手段と、を有することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、リアルタイム性を保ちつつ、キャッシュコヒーレンシの維持にかかるオーバヘッドを低減することができる。
【図面の簡単な説明】
【００１１】
【図１】リアルタイムＯＳの構成の一例を示す図である。
【図２】情報処理装置のハードウェア構成の一例を示す図である。
【図３】テーブルの一例を示す図である。
【図４】実行可能タスク群におけるタスクの関係の一例を示す図である。
【図５】タスクスイッチ処理に係るフローチャートの一例を示す図である。
【図６】タスクスイッチ処理に係るフローチャートの一例を示す図である。
【図７】テーブルの一例を示す図である。
【図８】実行可能タスク群におけるタスクの関係の一例を示す図である。
【図９】タスクスイッチ処理に係るフローチャートの一例を示す図である。
【図１０】テーブルの一例を示す図である。
【図１１】実行可能タスク群におけるタスクの関係の一例を示す図である。
【発明を実施するための形態】
【００１２】
以下、本発明の実施形態について図面に基づいて説明する。なお、実施形態は、本発明を限定するものではなく、また、実施形態で説明されている全ての構成が本発明の課題を解決するための手段に必須であるとは限らない。
【００１３】
＜第１の実施形態＞
図１は、本実施形態に係るマルチプロセッサに対応した組込み用のリアルタイムＯＳの構成の一例（ＯＳ１０１）を示す図である。
ＯＳ１０１は、優先順位に基づくプリエンプティブスケジューリング方式（プリエンプティブマルチタスク）のリアルタイムＯＳであり、タスク単位で負荷を各プロセッサに分散させることでプロセッサ１０２を管理する。プロセッサ１０２は、プロセッサユニット「ＰＵ０」、「ＰＵ１」、「ＰＵ２」等、複数のプロセッサユニットを含んで構成される。各プロセッサユニットは、それぞれ必要な初期化が行われた後やスケジューリングポイント毎に、タスク実行判断部１０５により決定（選定）されたタスクに処理の対象を切替えてその処理を行う。
【００１４】
ＯＳ１０１は、ＯＳ１０１の仕様情報に従って実行可能タスク群１０３を管理する。実行可能タスクとは、その時点でそのタスクが、最大の優先順位を有している場合、割込み処理が発生しない限りプロセッサ上で実行されるタスクである。ここでは、実行可能タスクの全てをまとめて実行可能タスク群１０３と称する。
ここで、一般の組込み用のリアルタイムＯＳは、実行可能タスク群を優先順位の順に、同一の優先順位内では先着順（タスクがリアルタイムＯＳに到着した順）にタスクを管理する。また、一般の組込み用のリアルタイムＯＳは、スケジューリングポイント毎に、最大の優先順位かつ先頭のタスクを１つ抽出してプロセッサ上で動作させることでリアルタイム性の一翼を実現している。
【００１５】
実行ヒント情報１０４は、実行可能タスク群１０３の中のタスクが前回の実行時にプロセッサ１０２のどのプロセッサユニットで実行されたか等を示すプロセッサ情報の一例である。
タスク実行判断部１０５は、プロセッサ１０２のプロセッサユニットで次回に実行される（動作させる）タスクを決定する。本実施形態では、タスク実行判断部１０５は、各スケジューリングポイントにおいて、この時点での実行可能タスク群１０３の最大の優先順位をもつタスクのみを対象とする。そして、タスク実行判断部１０５は、対象としたタスクの先着順に実行ヒント情報１０４を参照する。
【００１６】
例えば、タスク実行判断部１０５は、プロセッサ１０２のうちの対象としたプロセッサユニットと対象としたタスクを前回に実行したプロセッサユニットとが一致するか否かを、実行ヒント情報１０４をもとに判断する。
タスク実行判断部１０５は、一致すると判断した場合、対象としたプロセッサユニットで次回に実行されるタスクとして、一致すると判断した実行ヒント情報１０４のタスクを決定する。他方、タスク実行判断部１０５は、一致しないと判断した場合、一致すると判断するまで、対象としたタスクの実行ヒント情報１０４を順次に参照して同様に判断を行う。
また、タスク実行判断部１０５は、実行可能タスク群１０３のうちの対象としたタスクに、対象としたプロセッサユニットで前回に実行されたタスクがないと判断したとする。この場合、タスク実行判断部１０５は、最大の優先順位のタスクのうちから先頭のタスク（最も先にＯＳ１０１に到着したタスク）を次回に実行されるタスクとして決定する。
【００１７】
なお、詳細を示さないＯＳ１０１の構成については、一般の組込みＯＳの構成と同様である。
本実施形態では、一般の組込みＯＳと同様に、リアルタイム性を実現するために、実行中のタスクが別のタスクの状態へ遷移する、より高い優先順位のタスクが実行可能な状態に遷移する、割込み処理が終了する等のタイミングをスケジューリングポイントとして、次回に実行されるタスクを決定する。
なお、プロセッサユニットの数は、限定されるものではなく、２つ以上が好適である。
【００１８】
また、実行ヒント情報１０４は、実行可能タスク群１０３のタスクの情報として示したが、これに限られるものではない。即ち、実行可能タスク群１０３のタスクの情報を管理することができる構成を適宜採用できる。例えば、実行ヒント情報１０４は、ＯＳ１０１に存在する全てのタスクであったり、休止中でない全てのタスクであったり等、実行可能タスク群１０３のタスクを包含するタスクについて管理するものであってもよい。
また、説明の便宜上、実行ヒント情報１０４は、それ単体の情報として示したが、これに限られるものではない。例えば、実行ヒント情報１０４は、全てのタスクについて管理を行うタスク管理情報の一部であってもよい。また、例えば、実行ヒント情報１０４は、表の形式ではなくリストの形式であってもよい。
また、実行ヒント情報１０４は、実行可能タスク群１０３が変更される度に追加や削除が行われるものであってもよい。また、実行ヒント情報１０４は、上述した構成を適宜に組み合わせた構成であってもよい。
【００１９】
図２は、組込みシステムに含まれるＯＳ１０１を有する情報処理装置（コンピュータ）のハードウェア構成の一例を示す図である。
情報処理装置は、プロセッサユニット２０１、プロセッサユニット２０２、キャッシュコヒーレント機構２０３、ＲＯＭ（Read Only Memory）２０４、ＲＡＭ（Random Access Memory）２０５、バス２０６等を有する。なお、プロセッサユニット２０１は、プロセッサ番号「ＰＵ０」のプロセッサユニットであり、プロセッサユニット２０２は、プロセッサ番号「ＰＵ１」のプロセッサユニットである。
なお、ＯＳ１０１は、複数のプロセッサユニット（プロセッサユニット２０１、プロセッサユニット２０２等）、キャッシュコヒーレント機構２０３、ＲＯＭ２０４、ＲＡＭ２０５、バス２０６のハードウェア上で動作する。また、複数のプロセッサユニットの各々でキャッシュを介して行われたデータ操作は、同一のアドレスに対するデータ操作の場合、キャッシュコヒーレント機構２０３によって一意性が保たれる。
【００２０】
ＯＳ１０１のプログラム（コード）及びＯＳ１０１の動作の用に供するデータは、ＲＯＭ２０４、ＲＡＭ２０５の何れかに配置され、プロセッサユニット２０１やプロセッサユニット２０２により実行される。ＯＳ１０１のプログラムが実行されることにより、ＯＳ１０１の機能、後述するフローチャートに係る処理が実現される。
なお、本実施形態の情報処理装置のハードウェア構成は、上述のハードウェア構成に限られるものではない。
例えば、プロセッサユニットとキャッシュコヒーレント機構２０３との接続方法が異なっていてもよい。例えば、プロセッサユニットとキャッシュコヒーレント機構２０３とがバス２０６を介して接続されていてもよい。
また、上述したデバイスとは異なる他のデバイス（ハードディスク等）をバス２０６に接続して他のデバイスを自由に組み合わせてもよい。
【００２１】
次に、実行ヒント情報１０４について図３を参照して説明する。
図３は、ある時点でのタスクと、そのタスクの優先順位と、そのタスクが前回に実行されたプロセッサユニットを示す情報（実行ヒント情報１０４）とがタスクごとに関連付けられたテーブルの一例を示す図である。テーブルは、ＲＡＭ２０５等の記憶装置に格納されている。
ｔａｓｋＡについては、優先順位が「１」であり、実行ヒント情報１０４が「ＰＵ１」であることが示されている。同様に、ｔａｓｋＢについては優先順位「１」、実行ヒント情報１０４「ＰＵ１」であり、ｔａｓｋＣについては優先順位「１」、実行ヒント情報１０４「ＰＵ０」であることが示されている。また、同様に、ｔａｓｋＤについては優先順位「３」、実行ヒント情報１０４「ＰＵ１」であり、ｔａｓｋＥについては優先順位「３」、実行ヒント情報１０４「ＰＵ０」であることが示されている。
【００２２】
ここでは、実行ヒント情報１０４の初期値、即ち最初にタスクが実行可能になった際の情報については詳述していない。これは、どのような初期値であっても本実施形態を実施可能であるからである。
例えば、実際に動作はしていないが、ある特定のプロセッサユニットを示す情報を初期値として実施した場合、最初にそのプロセッサユニットで実行される可能性が高くなる。また、例えば、実際のプロセッサユニットでない情報を初期値とした場合、どのプロセッサユニットで実行されるかが不定になるだけである。
なお、テーブルのデータ構造は、図３及び上述の内容に限られるものではない。
【００２３】
次に、実行可能タスク群１０３について図４を参照して説明する。
図４は、ある時点での実行可能タスク群１０３におけるタスクの関係の一例を示す図である。実行可能となったタスクの情報（タスク情報）は、優先順位の順に、同一の優先順位内では先着順に実行可能タスク群１０３としてリストに登録されて管理される。なお、リストは、優先順位ごとに設けられ、ＲＡＭ２０５等の記憶装置に記憶されている。
ここで、リスト４０１には、優先順位「１」の実行可能タスクを示すタスク情報が含まれ、リスト４０２には、優先順位「２」の実行可能タスクを示すタスク情報が含まれ、リスト４０３には、優先順位「３」の実行可能タスクを示すタスク情報が含まれる。
【００２４】
例えば、図３に示すタスクの全てが実行可能である場合、実行可能タスク群１０３におけるタスクの関係は、図４に示すものになる。
このとき、実行可能タスク群１０３の最大の優先順位は「１」であり、リスト４０１に登録（接続）されたタスクｔａｓｋＡ、ｔａｓｋＢ、ｔａｓｋＣが次回に実行されるタスクの対象となり、また、この順序で、次回に実行されるタスクの適否の判定が行われる。即ち、優先順位、及び接続の順序（先着順と等価である。）は、タスクの割り当ての優先度合いを示す優先情報の一例である。
なお、実行可能タスク群１０３のデータ構造は、図４及び上述の内容に限られるものではない。
【００２５】
次に、タスク実行判断部１０５の動作について図５を参照して説明する。また、実行ヒント情報１０４が図３に示すものであり、実行可能タスク群１０３が図４に示すものである場合のタスク実行判断部１０５の挙動を合わせて説明する。
図５は、タスク実行判断部１０５におけるタスクスイッチ処理に係るフローチャートの一例を示す図である。タスクスイッチ処理は、各プロセッサユニットにおいてスケジューリングポイントで開始される。なお、タスクスイッチ処理が実行されているプロセッサユニットを実行プロセッサユニットと称する。
【００２６】
Ｓ５０１では、タスク実行判断部１０５は、実行可能タスク群１０３として登録されているタスクのうちの最大の優先順位（規定の優先情報よりも高い優先情報を表す一例である。）のタスクのタスク情報を含むリストの先頭のタスク情報を変数ｔｍｐに保持する。
Ｓ５０２では、タスク実行判断部１０５は、ｔｍｐにタスク情報が存在するか否かを判断する。このとき、タスク実行判断部１０５は、タスク情報が存在しないと判断した場合、Ｓ５０７の処理を行い、他方、タスク情報が存在すると判断した場合、Ｓ５０３の処理を行う。
【００２７】
Ｓ５０３では、タスク実行判断部１０５は、ｔｍｐのタスク情報に対応する実行ヒント情報１０４をテーブルから読出し、読出した実行ヒント情報１０４と実行プロセッサユニットを示すプロセッサ番号とが同一であるか否か（合致するか否か）を判断する。このとき、タスク実行判断部１０５は、同一であると判断した場合、Ｓ５０４の処理を行い、他方、異なると判断した場合、Ｓ５０６の処理を行う。
Ｓ５０４では、タスク実行判断部１０５は、ｔｍｐのタスク情報のタスクを実行プロセッサユニットで次回に実行されるタスクとして決定したことを示す情報をＲＡＭ２０５等の記憶装置に記憶し、Ｓ５０５の処理を行う。
【００２８】
Ｓ５０５では、タスク実行判断部１０５は、ｔｍｐのタスク情報に対応する実行ヒント情報１０４を、実行プロセッサユニットを示すプロセッサ番号に修正し、タスクスイッチ処理を終了する。
Ｓ５０６では、タスク実行判断部１０５は、ｔｍｐのタスク情報を実行可能タスク群１０３の該当リストの次のタスク情報に変更し、Ｓ５０２の処理を行う。
Ｓ５０７では、タスク実行判断部１０５は、実行可能タスク群１０３の最大の優先順位のリストの先頭のタスク情報のタスクを次回に実行されるタスクとして決定したことを示す情報をＲＡＭ２０５等の記憶装置に記憶する。更に、タスク実行判断部１０５は、ｔｍｐに前記タスク情報を保持し、Ｓ５０５の処理を行う。
【００２９】
以下では、タスクスイッチ処理がプロセッサユニット２０１で起動され、実行ヒント情報１０４が図３に示すものであり、実行可能タスク群１０３が図４に示すものである場合を例に挙げて上述の処理をより詳細に説明する。
まず、Ｓ５０１では、最大の優先順位のタスク情報を含むリストとしてリスト４０１が特定され、ｔｍｐにはリスト４０１の先頭のタスク情報「ｔａｓｋＡ」が保持される。次に、Ｓ５０２では、ｔｍｐに「ｔａｓｋＡ」が存在するので、続いてＳ５０３の処理が行われる。
Ｓ５０３では、「ｔａｓｋＡ」に対応する実行ヒント情報１０４が、「ＰＵ１」であり、プロセッサユニット２０１を示すプロセッサ番号「ＰＵ０」と異なるので、続いてＳ５０６の処理が行われる。Ｓ５０６では、ｔｍｐのタスク情報が「ｔａｓｋＡ」の次の（２番目の）「ｔａｓｋＢ」に変更され、Ｓ５０２の処理が行われる。
【００３０】
ｔｍｐに「ｔａｓｋＢ」が保持されている場合、Ｓ５０２、Ｓ５０３、Ｓ５０６の処理が同様に行われる。そして、Ｓ５０６では、ｔｍｐに「ｔａｓｋＢ」の次の「ｔａｓｋＣ」が保持される。
ｔｍｐのタスク情報が「ｔａｓｋＣ」である場合、Ｓ５０２の処理が同様に行わる。そして、Ｓ５０３では、「ｔａｓｋＣ」に対応する実行ヒント情報１０４が「ＰＵ０」であるので、実行プロセッサユニットを示すプロセッサ番号「ＰＵ０」と合致し、Ｓ５０４の処理が行われる。
Ｓ５０４では、次回に実行されるタスクが「ｔａｓｋＣ」と決定され、Ｓ５０５の処理が行われる。Ｓ５０５では、「ｔａｓｋＣ」に対応する実行ヒント情報１０４が「ＰＵ０」であるので値は変更されない。
【００３１】
ここで、タスクスイッチ処理では、次回に実行されると決定したタスクの実行ヒント情報１０４がＳ５０５において書き換えられている。この書き換えは、他の処理時に行うことも可能であり、また、ｔｍｐに保持されているタスク情報で行われなくてもよい。
例えば、あるタスクの実行中に、スケジューリングポイントが発生してタスクスイッチ処理が行われる可能性がある時点（或いは確実に行われる時点）で、まさに当該タスクを実行しているプロセッサユニットのプロセッサ番号を実行ヒント情報１０４としてもよい。即ち、実行ヒント情報１０４には、タスクが直近に実行されるプロセッサユニットのプロセッサ番号、タスクが実行されているプロセッサユニットのプロセッサ番号、及びタスクが直近に実行されたプロセッサユニットのプロセッサ番号の何れが格納されてもよい。
上述した構成によれば、マルチプロセッサに対応したリアルタイムＯＳにおいて、リアルタイム性を維持しつつ、キャッシュコヒーレンシの維持によるオーバヘッドを低減することが可能となる。
【００３２】
＜第２の実施形態＞
第２の実施形態は、第１の実施形態と比して、キャッシュコヒーレンシの維持にかかるオーバヘッドを相対的に低減することを可能にしている。よって、本実施形態のリアルタイム性については、第１の実施形態のリアルタイム性よりも劣ることがある。なお、本実施形態では、第１の実施形態と同一の構成については同一の符号を用いて説明を適宜省略する。
【００３３】
本実施形態のタスク実行判断部１０５の動作について図６を参照して説明する。
図６は、タスク実行判断部１０５におけるタスクスイッチ処理に係るフローチャートの一例を示す図である。
Ｓ６０１では、タスク実行判断部１０５は、実行可能タスク群１０３として登録されているタスクのうちの最大の優先順位のタスクのタスク情報を含むリストの先頭のタスク情報をｔｍｐに保持する。更に、タスク実行判断部１０５は、処理したタスクの数を保持する変数ｃｎｔの値を「０」とし、Ｓ６０２の処理を行う。
【００３４】
Ｓ６０２では、タスク実行判断部１０５は、ｔｍｐにタスク情報が存在し、かつ、ｃｎｔの値が規定数の一例であるプロセッサユニットの数よりも少ないか否かを判断する。このとき、タスク実行判断部１０５は、両方の条件を満たすと判断した場合、Ｓ６０３の処理を行い、他方、両方の条件の少なくとも一方が満たされないと判断した場合、Ｓ６０７の処理を行う。
Ｓ６０３では、タスク実行判断部１０５は、ｔｍｐのタスク情報に対応する実行ヒント情報１０４をテーブルから読出し、読出した実行ヒント情報１０４と実行プロセッサユニットを示すプロセッサ番号とが同一であるか否かを判断する。このとき、タスク実行判断部１０５は、同一であると判断した場合、Ｓ６０４の処理を行い、他方、異なると判断した場合、Ｓ６０６の処理を行う。
【００３５】
Ｓ６０４では、タスク実行判断部１０５は、ｔｍｐのタスク情報のタスクを実行プロセッサユニットで次回に実行されるタスクとして決定したことを示す情報をＲＡＭ２０５等の記憶装置に記憶し、Ｓ６０５の処理を行う。
Ｓ６０５では、タスク実行判断部１０５は、ｔｍｐのタスク情報に対応する実行ヒント情報１０４を、実行プロセッサユニットを示すプロセッサ番号に修正し、タスクスイッチ処理を終了する。
【００３６】
Ｓ６０６では、タスク実行判断部１０５は、ｔｍｐのタスク情報を実行可能タスク群１０３の該当リストの次のタスク情報に変更する。ただし、その優先順位のリストの終端である場合は、タスク実行判断部１０５は、次に高い優先順位のリストの先頭のタスク情報に変更する。更に、タスク実行判断部１０５は、ｃｎｔの値に「１」を加算し、Ｓ６０２の処理を行う。
Ｓ６０７では、タスク実行判断部１０５は、実行可能タスク群１０３の最大の優先順位のリストの先頭のタスク情報のタスクを次回に実行されるタスクとして決定したことを示す情報をＲＡＭ２０５等の記憶装置に記憶する。更に、タスク実行判断部１０５は、ｔｍｐに前記タスク情報を保持し、Ｓ６０５の処理を行う。
【００３７】
以下では、タスクスイッチ処理がプロセッサユニット２０１で起動され、実行ヒント情報１０４が図７に示すものであり、実行可能タスク群１０３が図８に示すものである場合を例に挙げて上述の処理をより詳細に説明する。なお、情報処理装置は、プロセッサユニット２０１及びプロセッサユニット２０２を有し、プロセッサユニットの総数が「２」であるものとする。
まず、Ｓ６０１では、最大の優先順位のタスク情報を含むリストとしてリスト８０１が特定され、ｔｍｐにはリスト８０１のタスク情報「ｔａｓｋＡ」が保持され、ｃｎｔには「０」が保持される。次に、Ｓ６０２では、ｔｍｐに「ｔａｓｋＡ」が存在し、ｃｎｔが「０」であるので、両方の条件が満たされ、続いてＳ６０３の処理が行われる。
【００３８】
Ｓ６０３では、「ｔａｓｋＡ」に対応する実行ヒント情報１０４が、「ＰＵ１」であり、プロセッサユニット２０１を示すプロセッサ番号「ＰＵ０」と異なるので、続いてＳ６０６の処理が行われる。Ｓ６０６では、リスト８０１の「ｔａｓｋＡ」が末尾（リスト８０１の終端）であるので、次の優先順位のリスト８０２が対象とされ、ｔｍｐにはリスト８０２の先頭の「ｔａｓｋＢ」が保持される。そして、ｃｎｔには「１」が保持され、Ｓ６０２の処理が行われる。
ｔｍｐに「ｔａｓｋＢ」が保持されている場合、Ｓ６０２の処理が同様に行われる。そして、Ｓ６０３では、「ｔａｓｋＢ」に対応する実行ヒント情報１０４が「ＰＵ０」であるので、実行プロセッサユニットを示すプロセッサ番号「ＰＵ０」と合致し、Ｓ６０４の処理が行われる。Ｓ６０４では、次回に実行されるタスクがｔａｓｋＢと決定され、Ｓ６０５の処理が行われる。Ｓ６０５では、「ｔａｓｋＢ」に対応する実行ヒント情報１０４が「ＰＵ０」であるので値は変更されない。
【００３９】
ここで、詳細な当てはめは省略するが、上述の例を第１の実施形態のタスクスイッチ処理で行うと、ｔａｓｋＡが次回に実行されるタスクと決定される。
上述の内容を踏まえ、第１の実施形態と第２の実施形態とを比較すると、第１の実施形態の方が優先順位順の実行が守られることでリアルタイム性が高いといえる。しかしながら、第１の実施形態では、ｔａｓｋＡが実行されるプロセッサユニットは、前回に実行されたプロセッサユニットと異なるので、データ操作時にキャッシュコヒーレンシの維持にかかるオーバヘッドが大きくなる可能性がある。
【００４０】
なお、本実施形態のタスクスイッチ処理が、第１の実施形態に示す図３、図４の条件で行われると、次回に実行されるタスクとしては、ｔａｓｋＡが決定される。
上述した構成によれば、第１の実施形態に比して、リアルタイム性の実現に劣るもののキャッシュコヒーレンシの維持にかかるオーバヘッドをより低減するマルチプロセッサに対応したリアルタイムＯＳを実現できる。
付言するならば、本実施形態に係るその他の構成及び動作については、第１の実施形態と同様である。
【００４１】
＜第３の実施形態＞
第３の実施形態は、第１及び第２の実施形態と比して、リアルタイム性を相対的に向上させる構成を有する。なお、本実施形態では、第１の実施形態と同一の構成については同一の符号を用いて説明を適宜省略する。
【００４２】
本実施形態のタスク実行判断部１０５の動作について図９を参照して説明する。
図９は、タスク実行判断部１０５におけるタスクスイッチ処理に係るフローチャートの一例を示す図である。
Ｓ９０１では、タスク実行判断部１０５は、実行可能タスク群１０３として登録されているタスクのうちの最大の優先順位のタスクのタスク情報を含むリストの先頭のタスク情報をｔｍｐに保持する。更に、タスク実行判断部１０５は、処理したタスクの数を保持する変数ｃｎｔの値を「０」とし、Ｓ９０２の処理を行う。
【００４３】
Ｓ９０２では、タスク実行判断部１０５は、ｔｍｐにタスク情報が存在し、かつ、ｃｎｔの値がプロセッサユニットの数よりも少ないか否かを判断する。このとき、タスク実行判断部１０５は、両方の条件を満たすと判断した場合、Ｓ９０３の処理を行い、他方、両方の条件を満たさないと判断した場合、Ｓ９０７の処理を行う。
Ｓ９０３では、タスク実行判断部１０５は、ｔｍｐのタスク情報に対応する実行ヒント情報１０４をテーブルから読出し、読出した実行ヒント情報１０４と実行プロセッサユニットを示すプロセッサ番号とが同一であるか否か（合致するか否か）を判断する。このとき、タスク実行判断部１０５は、同一であると判断した場合、Ｓ９０４の処理を行い、他方、異なると判断した場合、Ｓ９０６の処理を行う。
【００４４】
Ｓ９０４では、タスク実行判断部１０５は、ｔｍｐのタスク情報のタスクを実行プロセッサユニットで次回に実行されるタスクとして決定したことを示す情報をＲＡＭ２０５等の記憶装置に記憶し、Ｓ９０５の処理を行う。
Ｓ９０５では、タスク実行判断部１０５は、ｔｍｐのタスク情報に対応する実行ヒント情報１０４を、実行プロセッサユニットを示すプロセッサ番号に修正し、タスクスイッチ処理を終了する。
【００４５】
Ｓ９０６では、タスク実行判断部１０５は、ｔｍｐのタスクを実行可能タスク群１０３の該当リストの次のタスク情報に変更し、ｃｎｔの値に「１」を加算し、Ｓ９０２の処理を行う。
Ｓ９０７では、タスク実行判断部１０５は、実行可能タスク群１０３の最大の優先順位のリストの先頭のタスク情報のタスクを次回に実行されるタスクとして決定したことを示す情報をＲＡＭ２０５等の記憶装置に記憶する。更に、タスク実行判断部１０５は、ｔｍｐに前記タスク情報を保持し、Ｓ９０５の処理を行う。
【００４６】
以下では、タスクスイッチ処理がプロセッサユニット２０１で起動され、実行ヒント情報１０４が図１０に示すものであり、実行可能タスク群１０３が図１１に示すものである場合を例に挙げて上述の処理をより詳細に説明する。なお、情報処理装置は、プロセッサユニット２０１及びプロセッサユニット２０２を有し、プロセッサユニットの総数が「２」であるものとする。
まず、Ｓ９０１では、最大の優先順位のタスク情報を含むリストとしてリスト１１０１が特定され、ｔｍｐにはリスト１１０１のタスク情報「ｔａｓｋＡ」が保持され、ｃｎｔには「０」が保持される。次に、Ｓ９０２では、ｔｍｐに「ｔａｓｋＡ」が存在し、ｃｎｔが「０」であるので、両方の条件が満たされ、Ｓ９０３の処理が行われる。
【００４７】
Ｓ９０３では、「ｔａｓｋＡ」に対応する実行ヒント情報１０４が、「ＰＵ１」であり、プロセッサユニット２０１を示すプロセッサ番号「ＰＵ０」と異なるので、続いてＳ９０６の処理が行われる。Ｓ９０６では、ｔｍｐには「ｔａｓｋＢ」が保持され、ｃｎｔには「１」が保持され、続いてＳ９０２の処理が行われる。
ｔｍｐに「ｔａｓｋＢ」が保持されている場合、Ｓ９０２の処理が同様に行われる。そして、Ｓ９０３では、「ｔａｓｋＢ」に対応する実行ヒント情報１０４が「ＰＵ０」であるので、実行プロセッサユニットを示すプロセッサ番号と合致し、Ｓ９０４の処理が行われる。Ｓ９０４では、次回に実行されるタスクがｔａｓｋＢとなり、Ｓ９０５の処理が行われる。Ｓ９０５では、「ｔａｓｋＢ」に対応する実行ヒント情報１０４が「ＰＵ０」であるので値は変更されない。
【００４８】
ここで、詳細な当てはめは省略するが、上述の例を第１の実施形態のタスクスイッチ処理で行うと、ｔａｓｋＢが次回に実行されるタスクと決定され、第２の実施形態のタスクスイッチ処理で行うと、ｔａｓｋＢが次回に実行されるタスクと決定される。
また、本実施形態のタスクスイッチ処理が、第１の実施形態に示す図３、図４に示す条件で行われると、次回に実行されるタスクはｔａｓｋＡと決定され、第２の実施形態に示す図７、図８の条件で行われると、次回に実行されるタスクはｔａｓｋＡと決定される。
上述した構成によれば、第１、及び第２の実施形態に比して、リアルタイム性をより向上させるマルチプロセッサに対応したリアルタイムＯＳを実現できる。
付言するならば、本実施形態に係るその他の構成及び動作については、第１の実施形態と同様である。
【００４９】
＜その他の実施形態＞
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【００５０】
上述した実施形態の構成によれば、リアルタイム性を保ちつつ、キャッシュコヒーレンシの維持にかかるオーバヘッドを低減することができる。
【００５１】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００５２】
１０１  ＯＳ、１０２  プロセッサ、１０３  実行可能タスク群、１０４  実行ヒント情報、１０５  タスク実行判断部
【図１】
2012164050.tif 000003
【図２】
2012164050.tif 000004
【図３】
2012164050.tif 000005
【図４】
2012164050.tif 000006
【図５】
2012164050.tif 000007
【図６】
2012164050.tif 000008
【図７】
2012164050.tif 000009
【図８】
2012164050.tif 000010
【図９】
2012164050.tif 000011
【図１０】
2012164050.tif 000012
【図１１】
2012164050.tif 000013