(57)【要約】      （修正有）【課題】複数のタスクで共有メモリの少なくとも一部を排他的に使用する際の退避・復帰処理の記述に関してユーザ負担をなくすこと。【解決手段】タスク生成手段１１０は、複数のタスクで共用される第１のメモリ１７０を使用するアプリケーション１９０から、第１のメモリ１７０における退避対象エリア特定情報を含むタスク管理情報１４０を受け取り、生成したタスクに関連づけて保持し、タスク切り替え制御手段１２０は、現在実行中の第１のタスクを次に実行すべき第２のタスクに切り替える際に、第１のタスクが前記第１のメモリ１７０を使用している場合には、第１のタスクに関連付けて記憶されている退避対象エリア特定情報に基づき、第１のメモリ１７０の退避対象エリアに記憶されているデータを第２のメモリ１８０に退避させる退避処理を行う退避処理手段１２４を含む。【選択図】図２
2009129000.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵ上で動作するマルチタスクオペレーティングシステムにおいて、タスクのディスパッチャ処理を行うプログラムであって、
タスクのディスパッチャ処理に必要なタスク管理情報を取得して、タスク管理情報に基づきタスクの生成を行うタスク生成手段と、
前記タスク管理情報に基づきタスク切り替えを制御するタスク切り替え制御手段と、
してコンピュータを機能させるプログラムを含み、
前記タスク生成手段は、
複数のタスクで共用される第１のメモリを使用するアプリケーションから、第１のメモリにおける退避対象エリア特定情報を含むタスク管理情報を受け取り、生成したタスクに関連づけて保持し、
前記タスク切り替え制御手段は、
現在実行中の第１のタスクを次に実行すべき第２のタスクに切り替える際に、第１のタスクが前記第１のメモリを使用している場合には、第１のタスクに関連付けて記憶されている退避対象エリア特定情報に基づき、第１のメモリの退避対象エリアに記憶されているデータを第２のメモリに退避させる退避処理を行う退避処理手段を含むことを特徴とするプログラム。
【請求項２】
請求項１において、
前記タスク切り替え制御手段は、
次に実行すべき第２のタスクのタスク管理情報に基づき、第２のメモリから第１のメモリへの復帰処理が必要であるか否か判断して、復帰が必要であると判断した場合には、第２のメモリから退避データを読み出して、読み出した退避データを第２のタスクの退避対象エリア特定情報に基づき第１のメモリに書き込む復帰処理を行う復帰処理手段を含むことを特徴とするプログラム。
【請求項３】
請求項１乃至２のいずれかにおいて、
前記タスク生成手段は、
タスク管理情報に基づき、生成するタスクが第１のメモリを使用するか否か判断し、使用すると判断した場合には、退避領域の確保処理を行うことを特徴とするプログラム。
【請求項４】
請求項１乃至３のいずれかにおいて、
前記タスク切り替え制御手段は、
アプリケーションプログラムからＤＭＡコントローラへの第１のメモリに対するＤＭＡ転送要求情報及び第１のメモリに対するＤＭＡ転送終了情報を取得し、第１のメモリに対してＤＭＡ動作中であるか否かを監視するＤＭＡ動作監視手段をさらに含み、
前記退避処理手段は、
第１のメモリに対してＤＭＡ動作中でないタイミングで、前記退避処理を行うことを特徴とするプログラム。
【請求項５】
請求項１乃至４のいずれかにおいて、
前記タスク切り替え制御手段は、
現在実行中の第１のタスクを次に実行すべき第２のタスクに切り替える際に、第１のメモリに対してＤＭＡ動作中である場合には、ＤＭＡに対して転送中断要求を出し、当該タスクがＤＭＡ転送中断状態である旨及びどこまで転送したかを特定するためのＤＭＡ転送中断情報を当該タスクに関連づけて保持するＤＭＡ転送中断処理手段と、
次に実行する第２のタスクに関連づけてＤＭＡ転送中断情報が保持されている場合には、当該ＤＭＡ転送中断情報に基づきＤＭＡ転送処理を再開させる制御を行うＤＭＡ転送再開処理手段を含むことを特徴とするプログラム。
【請求項６】
請求項１乃至５のいずれかにおいて、
第１のメモリは、第２のメモリに比べて高速アクセス可能なメモリであることを特徴とするプログラム。
【請求項７】
コンピュータ読み取り可能な情報記憶媒体であって、請求項１乃至６のいずれかに記載のプログラムが記憶されていることを特徴とする情報記憶媒体。
【請求項８】
タスクディスパッチャシステムであって、
タスクのディスパッチャ処理に必要なタスク管理情報を取得して、タスク管理情報に基づきタスクの生成を行うタスク生成手段と、
前記タスク管理情報に基づきタスク切り替えを制御するタスク切り替え制御手段と、
を含み、
前記タスク生成手段は、
複数のタスクで共用される第１のメモリを使用するアプリケーションから、第１のメモリにおける退避対象エリア特定情報を含むタスク管理情報を受け取り、生成したタスクに関連づけて保持し、
前記タスク切り替え制御手段は、
現在実行中の第１のタスクを次に実行すべき第２のタスクに切り替える際に、第１のタスクが前記第１のメモリを使用している場合には、第１のタスクに関連付けて記憶されている退避対象エリア特定情報に基づき、第１のメモリの退避対象エリアに記憶されているデータを第２のメモリに退避させる退避処理を行う退避処理手段を含むことを特徴とするタスクディスパッチャシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、タスクディスパッチャプログラム及びタスクディスパッチャシステムに関する。
【背景技術】
【０００２】
ＳＤＲＡＭに代表される大容量メモリは、高速なＣＰＵの動作周波数と比較すると、１／Ｎ程度の速度で動作することが一般的である。よって、ＣＰＵは低速な大容量メモリへのアクセスを低減させる目的でＣＰＵと同速度で動作するキャッシュメモリや高速なＳＲＡＭをＣＰＵに内蔵することが多い。
【０００３】
しかし、これらの高速なメモリは実装面積や集積化の技術的な問題により大容量メモリに対して非常にミクロなサイズになる。
【特許文献１】特開平５−２８０９２号公報
【特許文献２】特開平５−２８２１９８号公報
【特許文献３】特開２０００−１２２８８０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
通常、ＣＰＵで動作するプログラムは、小容量の高速メモリを複数タスク間で共有化して利用するが、共有の方法として一般的に、高速メモリの内部を複数の領域に分断し、各タスクは分断された領域を独占的に利用する手法や、タスク間の移り変わりで、高速メモリを低速メモリに退避と復帰をすることで、高速メモリを各タスクが独占的に利用する手法等がある。
【０００５】
前者の手法を用いると、小容量のメモリを複数に分断してしまうので、使用できる容量が更に圧縮されてしまうことになる。
【０００６】
また後者の手法を用いると、ユーザが復帰・退避処理を自発的に記述しなくてはいけないのでユーザの処理負担が増える。さらにマルチタスクＯＳ上ではディスパッチによって意図せぬタイミングで処理が分断されてしまうので、復帰退避処理中はタスク切り替えを禁止する等の対策が必要であり、高速メモリが対象となるＤＭＡ転送では、ＤＭＡの待ち処理を退避処理の前に実施等の制御も必要となり、さらにユーザの処理負担が増えるという問題点があった。
【０００７】
本発明は以上のような問題点に鑑みてなされたものであり、その目的とするところは、複数のタスクで共有メモリの少なくとも一部を排他的に使用する際の退避・復帰処理の記述に関してユーザ負担をなくすことができるタスクディスパッチャプログラム及びタスクディスパッチャシステムの提供を目的とする。
【課題を解決するための手段】
【０００８】
（１）本発明は、ＣＰＵ上で動作するマルチタスクオペレーティングシステムにおいて、タスクのディスパッチャ処理を行うプログラムであって、タスクのディスパッチャ処理に必要なタスク管理情報を取得して、タスク管理情報に基づきタスクの生成を行うタスク生成手段と、前記タスク管理情報に基づきタスク切り替えを制御するタスク切り替え制御手段と、してコンピュータを機能させるプログラムを含み、前記タスク生成手段は、複数のタスクで共用される第１のメモリを使用するアプリケーションから、第１のメモリにおける退避対象エリア特定情報を含むタスク管理情報を受け取り、生成したタスクに関連づけて保持し、前記タスク切り替え制御手段は、現在実行中の第１のタスクを次に実行すべき第２のタスクに切り替える際に、第１のタスクが前記第１のメモリを使用している場合には、第１のタスクに関連付けて記憶されている退避対象エリア特定情報に基づき、第１のメモリの退避対象エリアに記憶されているデータを第２のメモリに退避させる退避処理を行う退避処理手段を含むことを特徴とする。
【０００９】
第１のメモリの少なくとも一部は、複数のタスクで排他的に共用されるようにしてもよい。退避対象エリア特定情報とは例えば第１のメモリにおけるタスクの使用エリアのメモリアドレスやメモリサイズでもよい。退避対象エリア特定情報は、例えばタスクのタスク識別ＩＤに関連付けてテーブル等に記憶させてもよい。
【００１０】
退避エリアはタスク生成時等に予め確保するようにしてもよいし、退避時にダイナミックに確保してもよい。後者の場合には、退避先エリア特定情報（例えば第２のメモリにおける退避先アドレス）を第１のタスクに関連づけてタスク管理情報として保持するようにしてもよい。
【００１１】
タスク管理情報は例えばユーザアプリケーションから受け取るようにしてもよい。
【００１２】
本発明によればオペレーティングシステムの一部として動作するタスクのディスパッチャ処理に退避処理を入れることで、複数のタスクで第１のメモリの少なくとも一部を排他的に使用する際にユーザが退避処理を記述する負担を軽減することができる。
【００１３】
（２）本発明のプログラムは、前記タスク切り替え制御手段は、次に実行すべき第２のタスクのタスク管理情報に基づき、第２のメモリから第１のメモリへの復帰処理が必要であるか否か判断して、復帰が必要であると判断した場合には、第２のメモリから退避データを読み出して、読み出した退避データを第２のタスクの退避対象エリア特定情報に基づき第１のメモリに書き込む復帰処理を行う復帰処理手段を含むことを特徴とする。
【００１４】
復帰処理手段は、次に実行すべき第２のタスクのタスク管理情報として退避対象エリア特定情報や退避先エリア特定情報（例えば第２のメモリにおける退避先アドレス）が記述されていれば第２のメモリから第１のメモリへの復帰処理が必要であると判断してもよい。
【００１５】
退避先エリアは、例えば第２のタスク生成時にシステムで確保して、確保したエリアのアドレスを退避先特定情報（例えば第２のメモリにおける退避先アドレス）としてタスク管理情報に記憶させてもよい。また退避時にダイナミックに退避先エリアを確保して、確保したエリアのアドレスを退避先特定情報（例えば第２のメモリにおける退避先アドレス）としてタスク管理情報に記憶させてもよい。
【００１６】
本発明によればオペレーティングシステムの一部として動作するタスクのディスパッチャ処理に退避処理を入れることで、複数のタスクで第１のメモリの少なくとも一部を排他的に使用する際にユーザが復帰処理を記述する負担を軽減することができる。
【００１７】
（３）本発明のプログラムは、前記タスク生成手段は、タスク管理情報に基づき、生成するタスクが第１のメモリを使用するか否か判断し、使用すると判断した場合には、退避領域の確保処理を行うことを特徴とする。
【００１８】
生成するタスクが第１のメモリを使用するか否かは、例えばタスク管理情報として退避対象エリア特定情報が指定されているか否かに基づき判断してもよい。
【００１９】
退避領域の確保処理を行う際に、退避先エリア特定情報（例えば第２のメモリにおける退避先アドレス）を第１のタスクに関連づけてタスク管理情報として保持するようにしてもよい。
【００２０】
（４）本発明のプログラムは、前記タスク切り替え制御手段は、アプリケーションプログラムからＤＭＡコントローラへの第１のメモリに対するＤＭＡ転送要求情報及び第１のメモリに対するＤＭＡ転送終了情報を取得し、第１のメモリに対してＤＭＡ動作中であるか否かを監視するＤＭＡ動作監視手段をさらに含み、前記退避処理手段は、第１のメモリに対してＤＭＡ動作中でないタイミングで、前記退避処理を行うことを特徴とする。
【００２１】
ＤＭＡ動作監視手段は、例えば第１のメモリへのＤＭＡ転送関数をオペレーティングシステムのサービス関数（ＡＰＩ）として用意することでアプリケーションプログラムからＤＭＡコントローラへの第１のメモリに対するＤＭＡ転送要求情報を取得してもよい。またＤＭＡ動作監視手段はＤＭＡからの転送終了割り込みを検出することで、ＤＭＡ転送終了情報を取得してもよい。
【００２２】
本発明によればＤＭＡの転送状態をオペレーティングシステムの一部として動作するタスクディスパッチャプログラムで管理することでＤＭＡの転送と退避・復帰処理のメモリアクセスの衝突を防ぐことができる。
【００２３】
（５）本発明のプログラムは、前記タスク切り替え制御手段は、現在実行中の第１のタスクを次に実行すべき第２のタスクに切り替える際に、第１のメモリに対してＤＭＡ動作中である場合には、ＤＭＡに対して転送中断要求を出し、当該タスクがＤＭＡ転送中断状態である旨及びどこまで転送したかを特定するためのＤＭＡ転送中断情報を当該タスクに関連づけて保持するＤＭＡ転送中断処理手段と、次に実行する第２のタスクに関連づけてＤＭＡ転送中断情報が保持されている場合には、当該ＤＭＡ転送中断情報に基づきＤＭＡ転送処理を再開させる制御を行うＤＭＡ転送再開処理手段を含むことを特徴とする。
【００２４】
どこまで転送したかを特定するためのＤＭＡ転送中断情報は、例えば転送済みのデータ数やデータ量や転送カウンタの値等でもよい。
【００２５】
ＤＭＡとして、途中停止が可能なものを用意し、現在実行中の第１のタスクを次に実行すべき第２のタスクに切り替える際に、ＤＭＡ転送中断制御するので、ディスパッチャ内の転送待ちオーバーヘッドを軽減することができる。
【００２６】
（６）本発明のプログラムは、第１のメモリは、第２のメモリに比べて高速アクセス可能なメモリであることを特徴とする。
【００２７】
例えば第１のメモリ（ＳＲＡＭ）は、第２のメモリ（ＳＤＲＡＭ）に比べて容量が小さく高速アクセス可能なメモリで構成してもよい。
【００２８】
（７）本発明は、コンピュータ読み取り可能な情報記憶媒体であって、上記のいずれかに記載のプログラムが記憶されていることを特徴とする。
【００２９】
（８）本発明は、タスクディスパッチャシステムであって、タスクのディスパッチャ処理に必要なタスク管理情報を取得して、タスク管理情報に基づきタスクの生成を行うタスク生成手段と、前記タスク管理情報に基づきタスク切り替えを制御するタスク切り替え制御手段と、を含み、前記タスク生成手段は、複数のタスクで共用される第１のメモリを使用するアプリケーションから、第１のメモリにおける退避対象エリア特定情報を含むタスク管理情報を受け取り、生成したタスクに関連づけて保持し、前記タスク切り替え制御手段は、現在実行中の第１のタスクを次に実行すべき第２のタスクに切り替える際に、第１のタスクが前記第１のメモリを使用している場合には、第１のタスクに関連付けて記憶されている退避対象エリア特定情報に基づき、第１のメモリの退避対象エリアに記憶されているデータを第２のメモリに退避させる退避処理を行う退避処理手段を含むことを特徴とする。
【発明を実施するための最良の形態】
【００３０】
以下、本発明を、図面を参照しつつ説明する。なお、以下に示す実施例は、特許請求の範囲に記載された発明の内容を何ら限定するものではない。また、以下の実施例に示す構成の全てが、特許請求の範囲に記載された発明の解決手段として必須であるとは限らない。
【００３１】
図１は本実施の形態のタスクディスパッチャプログラムが動くハードウエア環境（タスクディスパッチャシステム）の一例を示す図である。
【００３２】
本実施の形態のタスクディスパッチャシステムは、ＣＰＵ１２、第１のメモリ１４、第２のメモリ１６を含む。ＣＰＵ１２上では、マルチタスクオペレーティングシステムにおいて、タスクのディスパッチャ処理を行うプログラムが動作する。第１のメモリ１４の少なくとも一部は、複数のタスクで排他的に共用される。第１のメモリ１４は、第２のメモリ１６に比べて高速アクセス可能なメモリで構成してもよい。また第１のメモリ１４は、第２のメモリ１６に比べて小容量のメモリで構成してもよい。例えば第１のメモリ１４をＳＲＡＭ等で構成し、第２のメモリ１６をＳＤＲＡＭ等で構成してもよい。
【００３３】
本実施の形態のタスクディスパッチャシステムは、ＤＭＡ（Direct Memory Access）コントローラ１８を含む。ＤＭＡコントローラ１８は、ＣＰＵを介さずに（機械語の命令群によらず）、メモリとメモリまたはメモリとＩ／Ｏデバイスの間で直接データを転送する（ＤＭＡ転送）制御を行うハードウエアである。ＤＭＡコントローラ１８は、転送途中で中断が可能なＤＭＡで構成してもよい。
【００３４】
図２は本実施の形態のタスクディスパッチャプログラムまたはタスクディスパッチャシステムの機能ブロック図である。
【００３５】
本実施の形態のプログラムはＣＰＵ（図１の１２）上で動作するマルチタスクオペレーティングシステムにおいて、タスクのディスパッチャ処理を行うプログラムであって、タスクのディスパッチャ処理に必要なタスク管理情報を取得して、タスク管理情報１４０に基づきタスクの生成を行うタスク生成部１１０と、タスク管理情報１４０に基づきタスク切り替えを制御するタスク切り替え制御部１２０とを含む。
【００３６】
タスク生成部１１０は、複数のタスクで共用される第１のメモリ１７０を使用するアプリケーション１９０から、第１のメモリ１７０における退避対象エリア特定情報を含むタスク管理情報１４０を受け取り、生成したタスクに関連づけて保持する。
【００３７】
タスク切り替え制御部１２０は、退避処理部１２４を含む。退避処理部１２４は、現在実行中の第１のタスクを次に実行すべき第２のタスクに切り替える際に、第１のタスクが前記第１のメモリ１７０を使用している場合には、第１のタスクに関連付けて記憶されている退避対象エリア特定情報に基づき、第１のメモリ１７０の退避対象エリアに記憶されているデータを第２のメモリ１８０に退避させる退避処理を行う。
【００３８】
タスク切り替え制御部は、復帰処理部１２２を含む。復帰処理部１２２は、次に実行すべき第２のタスクのタスク管理情報１４０に基づき、第２のメモリ１８０から第１のメモリ１７０への復帰処理が必要であるか否か判断して、復帰が必要であると判断した場合には、第２のメモリ１８０から退避データを読み出して、読み出した退避データを第２のタスクの退避対象エリア特定情報に基づき第１のメモリ１７０に書き込む復帰処理を行う。
【００３９】
タスク生成部１１０は、タスク管理情報１４０に基づき、生成するタスクが第１のメモリを使用するか否か判断し、使用すると判断した場合には、退避領域の確保処理を行うようにしてもよい。
【００４０】
タスク切り替え制御１２０は、ＤＭＡ動作監視部１２６を含む。ＤＭＡ動作監視部１２６は、アプリケーションプログラム１９０からＤＭＡコントローラへの第１のメモリに対するＤＭＡ転送要求情報及び第１のメモリに対するＤＭＡ転送終了情報１９２を取得し、第１のメモリに対してＤＭＡ動作中であるか否かを監視する。
【００４１】
また退避処理部１２４は、第１のメモリ１７０に対してＤＭＡ動作中でないタイミングで、退避処理を行うようにしてもよい。
【００４２】
タスク切り替え制御部１２０は、ＤＭＡ転送中断処理部１３０を含む。ＤＭＡ転送中断処理部１３０は、現在実行中の第１のタスクを次に実行すべき第２のタスクに切り替える際に、第１のメモリに対してＤＭＡ動作中である場合には、ＤＭＡに対して転送中断要求を出し、当該タスクがＤＭＡ転送中断状態である旨及びどこまで転送したかを特定するためのＤＭＡ転送中断情報５０を当該タスクに関連づけて保持する。
【００４３】
タスク切り替え制御部１２０は、ＤＭＡ転送再開処理部１２８を含む。ＤＭＡ転送再開処理部１２８は、次に実行する第２のタスクに関連づけてＤＭＡ転送中断情報１５０が保持されている場合には、当該ＤＭＡ転送中断情報１５０に基づきＤＭＡ転送処理を再開させる制御を行う。
【００４４】
タスク管理情報１４０は、タスク関数、スタック容量、優先順位、退避すべきメモリの位置、退避するメモリのサイズ、ＤＭＡ転送状態で構成してもよい。
【００４５】
ＤＭＡ動作情報１６０は、退避すべきメモリの位置が対象となるＤＭＡの動作状況等を含みタスク管理情報と関連付けられる。
【００４６】
ＤＭＡ転送中断情報１５０は、転送途中停止可能なＤＭＡ転送装置から得られるＤＭＡの転送状況を示す情報で、転送元、転送先、転送済みのデータ量で構成してもよく、タスク管理情報と関連付けられる。
【００４７】
図３は本実施の形態のタスク管理情報の一例を示す図である。
【００４８】
本実施の形態のタスク管理情報は、例えば各タスク毎に、当該タスク識別ＩＤ２１２に関連づけてタスク属性２１４、タスクの拡張情報２１６、タスクの起動番地２１８、タスクの起動時優先度２２０、タスクのスタック領域サイズ２２２、退避対象エリアのメモリアドレス（退避すべきメモリの位置）２２４、退避対象エリアのメモリサイズ（退避するメモリのサイズ）２２６等が記憶されたタスク管理情報テーブルとして構成してもよい。
【００４９】
図４は本実施の形態のＤＭＡ動作情報の一例を示す図である。
【００５０】
本実施の形態のＤＭＡ動作情報２３４は、例えば各タスク毎に、当該タスク識別ＩＤ２３２に関連づけて記憶される動作の有無を示すフラグ情報２３４等が記憶されたＤＭＡ動作情報テーブル２３０として構成してもよい。
【００５１】
図５は本実施の形態のＤＭＡ転送中断情報の一例を示す図である。
【００５２】
本実施の形態のＤＭＡ転送中断情報は、例えば各タスク毎に、当該タスク識別ＩＤ２５２に関連づけて転送元情報２５４、転送先叙法２５６、転送済みのデータ量情報２５８等が記憶されたＤＭＡ転送中断情報テーブル２５０として構成してもよい。
【００５３】
図６は、本実施の形態のタスク生成処理の流れを示すフローチャートである。
【００５４】
タスク生成部はユーザアプリケーションからタスク管理情報を受け取る（ステップＳ１０）。
【００５５】
次にタスク管理情報に基づきタスクを生成する（ステップＳ２０）。
【００５６】
次にタスク管理情報に退避対象エリア情報が記述されていれば、退避するメモリのサイズ分の退避エリアを第２のメモリ内に確保する（ステップＳ３０）。
【００５７】
退避先エリア特定情報を当該タスク識別ＩＤに関連づけてタスク管理情報テーブルに格納する（ステップＳ４０）。
【００５８】
図７は、本実施の形態のタスクディスパッチャ処理の流れを示すフローチャートである。
【００５９】
まずタスクのリソース（スタック、レジスタ）を退避する（ステップＳ１１０）。
【００６０】
次に現在ＣＰＵが実行している第１のタスクのタスク管理情報に退避対象メモリアドレスが設定されているか否か判断し（ステップＳ１２０）、設定されている場合には、ステップＳ１３０〜Ｓ１６０の処理を行う。
【００６１】
まずＤＭＡ動作情報が転送中になっているか否か判断し（ステップＳ１３０）、転送中であれば、転送途中で中断可能なＤＭＡを一時停止させる（ステップＳ１４０）。
【００６２】
次に転送途中で中断可能なＤＭＡを一時停止させた際のＤＭＡ転送中断情報を取得して、当該タスク識別ＩＤに関連づけてＤＭＡ転送中断情報テーブルに記憶させる（ステップＳ１５０）。
【００６３】
次に第１のタスクのタスク識別ＩＤに関連づけて記憶されているタスク管理情報の退避対象メモリアドレス情報との退避対象メモリサイズ情報に基づき第１のメモリのデータを第２のメモリに退避させる（ステップＳ１６０）。
【００６４】
タスクのスケジューラを起動し、次に実行すべき第２のタスクを選定する（ステップＳ１７０）。
【００６５】
次に第２のタスクのタスク識別ＩＤに関連づけて記憶されたタスク管理情報に退避対象メモリアドレスが指定されているか否か判断し（ステップＳ１８０）、指定されている場合にはステップＳ１９０〜Ｓ２１０の処理を行う。
【００６６】
まず第２のタスクのタスク管理情報の退避対象メモリアドレス情報との退避対象メモリサイズ情報に基づき第２のメモリから第１のメモリにデータを復帰させる（ステップＳ１９０）
次にＤＭＡ動作情報が転送中となっているかいないか判断し（ステップＳ２００）、転送中であれば、ＤＭＡ転送中断情報に基づき転送途中で中断可能なＤＭＡを起動し、ＤＭＡ転送処理を再開させる制御を行う（ステップＳ２１０）。
【００６７】
次にタスクのリソースを復帰させる（ステップＳ２２０）。
【００６８】
そしてディスパッチを終了し、タスク処理を開始する（ステップＳ２３０）。
【００６９】
図８は、本実施の形態のＤＭＡ動作監視動作を処理の流れを示すフローチャートである。
【００７０】
まずＤＭＡユーザ設定に従いＤＭＡの設定を行う（ステップＳ３１０）。
【００７１】
次にＤＭＡの転送対象（転送元または転送先）が、タスク管理情報の退避対象エリアを含んでいるか否か判断し（ステップＳ３２０）、タスク管理情報の退避対象エリアを含んでいる場合には、ＤＭＡ動作情報にＤＭＡ転送中であることを示す情報を保持する（ステップＳ３３０）。
【００７２】
次にＤＭＡ転送を開始する（ステップＳ３４０）。
【００７３】
ＤＭＡ転送完了時のユーザアプリケーションへの通知（Ex.コールバック関数等）を検出した場合には（ステップＳ３５０）、ＤＭＡ動作情報を転送中から未転送に変更する（ステップＳ３６０）。
【００７４】
次に本実施の形態のタスクディスパッチャプログラムがＤＭＡの動作情報を取得する構成の一例について説明する。例えばＤＭＡ転送関数をオペレーティングシステムのサービス関数（ＡＰＩ）として用意することでアプリケーションプログラムからＤＭＡコントローラへの第１のメモリに対するＤＭＡ転送要求情報を取得してもよい。
【００７５】
図９は、ユーザタスク（ユーザのアプリケーション）内でオペレーティングシステムのサービス関数（ＡＰＩ）であるＤＭＡ転送関数を用いてＤＭＡ処理を実行させる処理の記述の一例である。
【００７６】
まずDMA_Init（３１０参照）で、ＯＳ（オペレーティングシステム）が提供するＤＭＡサービスの初期化を行う。
【００７７】
次にタスク処理として、DMA_Config（３２０参照）によりＤＭＡ転送のコンフィグレーションのＤＭＡ関数を、DMA_Start（３３０参照）の前に呼び出す。本APIでＤＭＡ転送をコンフィグレーションすると共に、転送完了時のコールバック関数を設定することも出来る。
【００７８】
次にDMA_Start（３３０参照）によりDMA_Configによって設定された内容によって、ＤＭＡ転送を開始する。
【００７９】
次にDMA_Polling（３４０参照）によりDMA_Startによって開始したＤＭＡの転送終了をポーリングする。
【００８０】
本発明によれば、ＯＳのサービスとして第１のメモリの共有機構が提供されることになり、ユーザの実装の負担（例えば退避、復帰処理の処理記述負担）なしに、第１のメモリを複数のタスク間で独占的に共有できる。第１のメモリを小容量の高速メモリとして構成することにより、小容量の高速メモリを共有することができる。また共有の障害となり得るＤＭＡの転送をＯＳの一部として機能するタスクディスパッチャプログラムで処理することで、ユーザの制御負担を低減させることができる。
【００８１】
本発明は、実施の形態で説明した構成と実質的に同一の構成（例えば、機能、方法及び結果が同一の構成、あるいは目的及び効果が同一の構成）を含む。また、本発明は、実施の形態で説明した構成の本質的でない部分を置き換えた構成を含む。また、本発明は、実施の形態で説明した構成と同一の作用効果を奏する構成又は同一の目的を達成することができる構成を含む。また、本発明は、実施の形態で説明した構成に公知技術を付加した構成を含む。
【図面の簡単な説明】
【００８２】
【図１】タスクディスパッチャプログラムが動くハードウエア環境（タスクディスパッチャシステム）の一例を示す図。
【図２】タスクディスパッチャプログラムまたはタスクディスパッチャシステムの機能ブロック図。
【図３】タスク管理情報の一例を示す図。
【図４】ＤＭＡ動作情報の一例を示す図。
【図５】ＤＭＡ転送中断情報の一例を示す図。
【図６】タスク生成処理の流れを示すフローチャート。
【図７】タスクディスパッチャ処理の流れを示すフローチャート。
【図８】ＤＭＡ動作監視動作を処理の流れを示すフローチャート。
【図９】ユーザタスク（ユーザのアプリケーション）内でオペレーティングシステムのサービス関数（ＡＰＩ）であるＤＭＡ転送関数を用いてＤＭＡ処理を実行させる処理の記述の一例。
【符号の説明】
【００８３】
１２  ＣＰＵ  １４  第１のメモリ、１６  第２のメモリ、１８  ＤＭＡコントローラ、１１０  タスク生成部、１２０  タスク切り替え制御部、１２２  復帰処理部、１２４  退避処理部、１２６  ＤＭＡ動作監視部、１２８  ＤＭＡ転送再開処理部、１３０  ＤＭＡ転送中断処理部、１４０  タスク管理情報、１５０  ＤＭＡ転送中断情報、１６０  ＤＭＡ動作情報、１７０  第１のメモリ、１８０  第２のメモリ、１９０  ユーザアプリケーション
【図１】
2009129000.tif 000003
【図２】
2009129000.tif 000004
【図３】
2009129000.tif 000005
【図４】
2009129000.tif 000006
【図５】
2009129000.tif 000007
【図６】
2009129000.tif 000008
【図７】
2009129000.tif 000009
【図８】
2009129000.tif 000010
【図９】
2009129000.tif 000011