(57)【要約】【課題】アプリケーションプログラム、プラットフォーム、ドライバ、オペレーティングシステムなどのように階層化されたプログラム群を処理するデータ処理システム、タスク制御方法及びそのプログラムに関し、実タスクの順序制御やメモリ競合などの制御を不要にし、処理要求に対する応答性が良いアプリケーションインタフェースを実現する。【解決手段】アプリケーションプログラム（ＡＰ）からの複数の処理要求を、プラットフォーム（ＰＦ）における中継タスク１−１で一まとめにして受信し、アプリケーションプログラム（ＡＰ）からの各処理要求を処理する実タスクを擬似した擬似タスクＡ’，Ｂ’，Ｃ’を実装しておき、中継タスク１−１で受信した複数の処理要求に対して、擬似タスクを含む１つのメインタスク１−２を生成し、アプリケーションプログラム（ＡＰ）からの複数の処理要求を１つのメインタスク１−２により処理させる。【選択図】      図１
2008108089.tif 000002
【特許請求の範囲】
【請求項１】
階層化されたプログラム群を処理するデータ処理システムにおいて、
上位層のアプリケーションプログラムから下位層のプラットフォームに対する処理要求を実現するアプリケーションインタフェースを有し、
前記アプリケーションプログラムからの複数の処理要求を、前記プラットフォームにおける中継タスクで一まとめにして受信する手段と、
前記アプリケーションプログラムからの各処理要求を処理する実タスクを擬似した擬似タスクを前記プラットフォームに実装しておき、前記中継タスクで受信した複数の処理要求に対して、前記擬似タスクを含む１つのメインタスクを生成する手段と、
前記アプリケーションプログラムからの複数の処理要求を、前記１つのメインタスクにより処理させる手段と、
を備えたことを特徴とするデータ処理システム。
【請求項２】
前記アプリケーションインタフェースとして、前記１つのメインタスクにより前記処理要求を処理させる擬似タスク構成と、各処理要求を処理する各実タスクを生成し、該実タスクで前記処理要求を処理させる実タスク構成とを切替える手段を備えたことを特徴とする請求項１に記載のデータ処理システム。
【請求項３】
階層化されたプログラム群を処理するデータ処理システムにおける上位層のアプリケーションプログラムから下位層のプラットフォームに対する処理要求を実現するタスク制御方法において、
前記アプリケーションプログラムからの複数の処理要求を、前記プラットフォームにおける中継タスクで一まとめにして受信するステップと、
前記アプリケーションプログラムからの各処理要求を処理する実タスクを擬似した擬似タスクを前記プラットフォームに実装しておき、前記中継タスクで受信した複数の処理要求に対して、前記擬似タスクを含む１つのメインタスクを生成するステップと、
前記アプリケーションプログラムからの複数の処理要求を、前記１つのメインタスクにより処理させるステップと、
を含むことを特徴とするデータ処理システムにおけるタスク制御方法。
【請求項４】
階層化されたプログラム群を処理するデータ処理システムにおける上位層のアプリケーションプログラムから下位層のプラットフォームに対する処理要求を実現するタスク制御プログラムにおいて、
前記アプリケーションプログラムからの複数の処理要求を、前記プラットフォームにおける中継タスクで一まとめにして受信する手段と、
前記アプリケーションプログラムからの各処理要求を処理する実タスクを擬似した擬似タスクを前記プラットフォームに実装しておき、前記中継タスクで受信した複数の処理要求に対して、前記擬似タスクを含む１つのメインタスクを生成する手段と、
前記アプリケーションプログラムからの複数の処理要求を、前記１つのメインタスクにより処理させる手段、
として機能させるためのデータ処理システムにおけるタスク制御プログラム。
【請求項５】
前記１つのメインタスクにおいて、複数の擬似タスク間の順序制御を、各擬似タスクの識別情報をキューに登録して行なう手段として機能させるプログラムを含むことを特徴とする請求項４に記載のデータ処理システムにおけるタスク制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システム、タスク制御方法及びそのプログラムに関し、特に、アプリケーションプログラム、プラットフォーム、ドライバ、オペレーティングシステムなどのように階層化されたプログラム群を処理するデータ処理システムにおいて、或る上位層（以下、アプリケーションプログラムと称する）からの下位層（以下、プラットフォームと称する）に対する各種処理要求（以下、アプリケーションインタフェースと称する）を実現するためのデータ処理システム、タスク制御方法及びそのプログラムに関する。
【背景技術】
【０００２】
図７は従来のアプリケーションインタフェースの構成例を示す。同図に示す従来のアプリケーションインタフェースは、アプリケーションプログラム（ＡＰ）からの処理要求毎に実タスクを生成して処理する例を示している。同図に示すように、アプリケーションプログラム（ＡＰ）から、種々の処理要求（例えば、タスクＡ，Ｂ，Ｃ，Ｄ）がプラットフォーム（ＰＦ）へ送出されると、プラットフォーム（ＰＦ）内では、要求された各処理要求（例えば、タスクＡ，Ｂ，Ｃ，Ｄ）に対応して、それぞれ、実タスク（例えば、タスクｉ，ii，iii，iv）を生成する。
【０００３】
プラットフォームにおける上記実タスクｉ，ii，iii，ivは、それぞれ、例えばデータリソースＸ、Ｙ、Ｚにアクセスし、オペレーティングシステム（ＯＳ）又はドライバ等に直結した実タスク（例えば、タスクv，vi，vii）と連携して処理を実行し、処理結果をアプリケーションプログラム（ＡＰ）の処理要求元（タスクＡ，Ｂ，Ｃ，Ｄ）に返す。
【０００４】
図８は従来の他のアプリケーションインタフェースの構成例を示す。同図に示すアプリケーションインタフェースは、アプリケーションプログラム（ＡＰ）からの複数の処理要求をまとめて１つの実タスクで受信して処理する例を示している。同図に示すように、アプリケーションプログラム（ＡＰ）より、種々の処理要求（例えば、タスクＡ，Ｂ，Ｃ，Ｄ）がプラットフォーム（ＰＦ）へ送出されると、プラットフォーム（ＰＦ）内では、要求された各処理要求（タスクＡ，Ｂ，Ｃ，Ｄ）をまとめて１つの実タスクｉで受信し、１つの実タスクｉは、例えばデータリソースＸ，Ｙ，Ｚにアクセスし、オペレーティングシステム（ＯＳ）又はドライバ等に直結した実タスク（例えば、タスクv，vi，vii）と連携して処理を実行し、処理結果をアプリケーションプログラム（ＡＰ）の処理要求元（タスクＡ，Ｂ，Ｃ，Ｄ）に返す。
【０００５】
アプリケーションプログラムの処理要求に対するタスクの生成及びタスク管理等については、例えば下記の特許文献１等に記載されている。特許文献１に記載のタスク管理方式は、アプリケーションプログラム内でのデータリソースの切り替えなどのためにデータリソースの代表名を記述することを不要にし、同じプログラムの同時実行を可能にすると共に、生成したタスクは夫々独立した複数のデータリソースの中から１つを選択的にアクセスすることを可能にしたものである。
【特許文献１】特開平６−３０１５６０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
アプリケーションインタフェースを実装し、階層化されたプログラム群を処理するデータ処理システムにおいて、アプリケーションインタフェースをプラットフォームに実装する際に、アプリケーションプログラムの処理方式、構造、振る舞いなどを細部に亘って把握しないと、性能面や機能面で適正なプラグラム構造を満足するアプリケーションインタフェースを実現することができなかった。
【０００７】
例えば、アプリケーションプログラムからの処理要求が約百個以上有り、その処理要求毎に実タスクを生成する場合、各処理要求の処理順序、１つの処理要求に対するレスポンス性、処理能力、競合処理によるプログラムの複雑度等について、様々な考慮が必要であり、プログラム規模も大きくなり、メンテナンス性も悪くなるという問題があった。
【０００８】
また、要求されるアプリケーションプログラムの処理性能を満足させるために、１つの実タスクのみでアプリケーションインタフェースを実現しようとすると、バグに対するデバッグや問題解析が困難になり、それらに非常に多くの時間が掛かってしまうという問題があった。
【０００９】
上述の問題も含め、本発明は以下の課題を解決することを目的とする。
（１）ブラックボックス化されたアプリケーションプログラムからの大量の処理要求に対して、実タスクの順序制御やメモリ競合などの制御を不要とし、処理要求に対する応答性が良いアプリケーションインタフェースを実現する。
（２）柔軟なアプリケーションインタフェースの実現と共に、デバッグや問題解析の容易化を図る。
【課題を解決するための手段】
【００１０】
本発明は、階層化されたプログラム群を処理するデータ処理システムにおける上位層のアプリケーションプログラムから下位層のプラットフォームに対する処理要求を実現するアプリケーションインタフェースのタスク制御において、前記アプリケーションプログラムからの複数の処理要求を、前記プラットフォームにおける中継タスクで一まとめにして受信し、前記アプリケーションプログラムからの各処理要求を処理する実タスクを擬似した擬似タスクを前記プラットフォームに実装しておき、前記中継タスクで受信した複数の処理要求に対して、前記擬似タスクを含む１つのメインタスクを生成し、前記アプリケーションプログラムからの複数の処理要求を、前記１つのメインタスクにより処理させることを特徴とする。
【００１１】
また、前記アプリケーションインタフェースとして、前記１つのメインタスクにより前記処理要求を処理させる擬似タスク構成と、各処理要求を処理する各実タスクを生成し、該実タスクで前記処理要求を処理させる実タスク構成とを切替える手段を備えたことを特徴とする。
【００１２】
また、前記１つのメインタスクにおいて、複数の擬似タスク間の順序制御を、各擬似タスクの識別情報をキューに登録して行なうことを特徴とする。
【発明の効果】
【００１３】
本発明によれば、ブラックボックス化されたアプリケーションプログラムからの大量の処理要求に対して、それらの処理要求を処理する実タスクを擬似した擬似タスクを含む１つのメインタスクを生成して実現することにより、メモリ競合などの考慮が不要となり、アプリケーションプログラムからの大量の処理要求に対して、順序制御の簡素化、処理性能（レスポンス性）の向上化を図ることができる。
【００１４】
また、アプリケーションプログラム構造やプログラム処理方式に左右されることなく、プラットフォームに実装するアプリケーションインタフェースのタスク構成を実現することが可能となり、プラットフォームの実現化を短期間で行なう、或いは並行的に開発することが可能となる。
【００１５】
また、アプリケーションインタフェースを実現するタスク構成を擬似タスク構成と実タスク構成とで切り替え可能としたことにより、擬似タスク構成で柔軟にアプリケーションインタフェースを実現するとともに、実タスク構成でデバッグや問題解析の容易化を図ることが可能となる。
【００１６】
また、アプリケーションプログラムからの一連の複数の処理要求に対して、プラットフォームで生成した１つのメインタスク内の処理要求毎の擬似タスク間の順序制御を、キューを用いて制御することにより、メインタスク内のメモリアクセスについては排他制御など競合処理を実装する必要がなく、順序制御を単純化することが可能となる。
【発明を実施するための最良の形態】
【００１７】
図１は、本発明による擬似タスクを用いたアプリケーションインタフェースを示す。本発明によるインタフェースにおいて、アプリケーションプログラム（ＡＰ）より複数の処理要求（例えば、タスクＡ，Ｂ，Ｃ）がプラットフォーム（ＰＦ）へ送出されると、プラットフォーム（ＰＦ）内では、アプリケーションプログラム（ＡＰ）からの各処理要求（タスクＡ，Ｂ，Ｃ）を、一旦、中継タスク１−１にて受信する。
【００１８】
中継タスク１−１は、メインタスク１−２及び他のタスクｉ，ii，iiiよりも低い優先度で動作するタスクであり、アプリケーションプログラム（ＡＰ）からの処理要求を一旦内部のキューに溜め込み、中継タスク１−１が実行な可能（他タスクの処理要求が無い状態）となったときに、タスクロック（他タスクへのディスパッチ禁止）を行ない、キューに溜まっているアプリケーションプログラム（ＡＰ）からの処理要求（タスクＡ，Ｂ，Ｃ）を全てメインタスク１−２に送出する(図の（ア）参照）。
【００１９】
中継タスク１−１の実行なレベルを低優先とすることにより、アプリケーションプログラム（ＡＰ）からの処理要求（タスクＡ，Ｂ，Ｃ）をメインタスク１−２で全て処理し終えた後、中継タスク１−１が動作するため、タスク処理の順序が守られ、タスク処理の順序制御が簡素化される。
【００２０】
メインタスク１−２では、中継タスク１−１からアプリケーションプログラム（ＡＰ）の処理要求（タスクＡ，Ｂ，Ｃ）をＯＳキューにて一括受信し、メインタスク１−２内のメイン処理部１−２１で、アプリケーションプログラム（ＡＰ）からの処理要求（タスクＡ，Ｂ，Ｃ）毎に擬似タスクＡ’，Ｂ’，Ｃ’を呼出（コール）して処理を行なう。なお、メインタスク１−２での処理フローについては図２を参照して後述する。
【００２１】
ここで、擬似タスクとは、アプリケーションプログラム（ＡＰ）からの処理要求に対してそれぞれの機能毎に処理部を生成し、メインタスク１−２上で実タスクのように振舞う処理群である。機能毎に複数の処理部を生成することで、１つの実タスクのみで構成した場合に比べて処理性能が向上し、かつ、メンテナンス性を簡素化することができる。
【００２２】
アプリケーションプログラム（ＡＰ）からの処理要求に対して、複数の擬似タスク（処理部）が動作する場合は、擬似タスク間で擬似タスク間通信用ＦＩＦＯ（First-In First-Out）キュー１−２２と通信して処理順序を調整する（図の（イ）参照）。処理要求（タスクＡ，Ｂ，Ｃ）の動作中に、例えばタスクｉから別の処理要求がメインタスク１−２に対して発生した場合でも（図の（ウ）参照）、メインタスク１−２としては、処理要求（タスクＡ，Ｂ，Ｃ）の処理を実行中であり、該処理が完了するまで処理要求は実行されないため、処理順序が守られる。また、擬似タスクとしては、他の実タスクとも通信することができる構成とし、その処理差分を通信用の共通関数にて吸収する構成とすることができる。
【００２３】
擬似タスクＡ’，Ｂ’，Ｃ’の処理において、データリソースＸ，Ｙ又はＺに対してアクセスを行なう場合（図の（エ）〜（カ）参照）、該データアクセスに関しては、メインタスク１−２からのアクセスのみとなるため、例えば、擬似タスクＡ’と擬似タスクＢ’とで同一のデータリソースにアクセスする場合でも、擬似タスクＡ’と擬似タスクＢ’とでは擬似タスク間通信用ＦＩＦＯキューにより順序制御が行なわれるため、データアクセスの排他制御は考慮不要となる。メインタスク１−２での処理結果は、アプリケーションプログラム（ＡＰ）へ送信される（図の（キ）参照）。
【００２４】
図２は、擬似タスクを制御するメインタスクの処理フローを示す。同図に示すように、メイン処理部１−２１にて、擬似タスク間通信用ＦＩＦＯキュー１−２２から処理要求を取り出し（ステップ２−１）、次に、処理要求の解析を行なってコール先の擬似タスクを決定し（ステップ２−２）、決定した擬似タスクＡに処理要求（関数コール）を行ない（ステップ２−３）、送信先擬似タスクＩＤを判定する（ステップ２−４）。
【００２５】
送信先擬似タスクＩＤが擬似タスクＡ’である場合、擬似タスクＡ’にて処理要求を受信し、処理を実施する（ステップ２−５）。擬似タスクＡ’の処理の終了後、擬似タスクＢ’の処理要求を作成し、擬似タスク間通信用ＦＩＦＯキュー１−２２へ該処理要求を格納する（ステップ２−６，２−７）。
【００２６】
メイン処理部１−２１は、再度ステップ２−１〜２−４の処理を実施し、擬似タスクＢ’へ処理要求（関数コール）を行ない、該処理を実行する（ステップ２−８）。そして、処理結果をアプリケーションプログラムへ送信する（ステップ２−９）。
【００２７】
図３の（ａ）は、本発明による擬似タスク方式を用いた優先度処理の動作例のタイムチャートを示す。メインタスクからの処理結果をアプリケーションプログラム（ＡＰ）にて受信した後、アプリケーションプログラム（ＡＰ）は、プラットフォーム（ＰＦ）のメインタスクへ処理要求Ａ，Ｂ，Ｃの送信を行なう。その際、一旦、中継タスクにて処理要求Ａ，Ｂ，Ｃをキューイングする（３−１）。
【００２８】
ここで、プラットフォーム（ＰＦ）において、タスクｉよりメインタスクへ高優先度の処理要求（１）が送信され、メインタスクにて処理を実施する（３−２）。該処理の実施完了後、中優先度のメインタスクに処理要求が溜まっていないことにより、低優先度の中継タスクに実行権が移り、中継タスクではキューイングしていたアプリケーションプログラム（ＡＰ）の処理要求Ａ，Ｂ，Ｃを全て送信する。その際、処理要求Ａ，Ｂ，Ｃの全送信を行なうために、タスクロックを実行し、他タスクが動作しないようにする（３−３）。
【００２９】
メインタスクは処理要求を受信し、擬似タスクで処理を実行する（３−４）。その際、擬似タスクＡ’と擬似タスクＢ’との間で通信を行い、処理結果をアプリケーションプログラム（ＡＰ）へ送信する。ここで、擬似タスクＡ’動作時に、高優先度のタスクｉから処理要求（２）をメインタスクで受信したとする（３−５）。ただし、処理要求Ａ，Ｂ，Ｃの擬似タスクＡ’，Ｂ’の全処理が完了した後に処理要求（２）を実行する。
【００３０】
本発明による擬似タスク方式を用いた優先度処理と比較するために、従来の優先度処理のタイムチャートを図３の（ｂ）に示す。従来の優先度処理において、アプリケーションプログラム（ＡＰ）は、プラットフォーム（ＰＦ）へ処理要求Ａ，Ｂ，Ｃの送信を行なう（３−１１）。ここで、プラットフォーム（ＰＦ）において、タスクｉよりメインタスクへ高優先度の処理要求（１）が送信されたとすると、この処理を実施する（３−１２）。
【００３１】
プラットフォーム（ＰＦ）では、該処理の実施完了後、処理要求Ａ，Ｂ，Ｃの中でより優先度の高いタスクＡの処理を実施し（３−１３）、その終了後、タスクＢの処理を実施する（３−１４）。ここで、高優先度のタスクｉから処理要求（２）を受信したとすると、タスクＢの処理を中断して処理要求（２）を実施する（３−１５）。
【００３２】
処理要求（２）の処理の終了後、処理要求（２）の処理結果を送信し（３−１６）、中断していたタスクＢの処理を再開し、終了する（３−１７）。タスクＢの処理の終了後、より優先度の低いタスクＣの処理を実施する（３−１８）。このように、従来の優先度処理ではタスク間の処理要求の競合が発生し、その調停に複雑な優先制御を行う必要がある。
【００３３】
図４は本発明のインタフェース処理の動作例のシーケンスチャートを示す。同図は、アプリケーションプログラムから連続して３つの処理要求が行なわれた場合の動作シーケンスを示している。同図に示すように、アプリケーションタスクとして処理要求Ａ，Ｂ，Ｃが送出されると（４−１）、該処理要求Ａ，Ｂ，Ｃを中継タスクで一旦受信し、該処理要求Ａ，Ｂ，Ｃをキューイングする。
【００３４】
このとき、他のタスクｉより高優先度の処理要求（１）がメインタスク送信されると（４−２）、メインタスクにて擬似タスクＡ’、擬似タスクＢ’及び擬似タスクＣ’により処理要求（１）を実施し（４−３）、その処理結果（１）をタスクｉに送信し（４−４）、タスクｉでこの処理結果を用いて処理を実施する。
【００３５】
この処理の完了後、低優先度の中継タスクに実行権が移り、中継タスクではキューイングしていたアプリケーションタスクの処理要求Ａ，Ｂ，Ｃを全てメインに送信する（４−５）。その際、タスクロックを実行し、他タスクが動作しないようにする。メインタスクは、中継タスクから処理要求Ａ，Ｂ，Ｃを受信し、処理要求Ａを擬似タスクＡ’，Ｂ’で処理する（４−６）。
【００３６】
上記の処理の実行中に、他のタスクｉより高優先度の処理要求（２）がメインタスク送信されても（４−７）、該処理要求（２）をメインタスクで実行することなく、上記の処理を継続して実行し、処理結果Ａをアプリケーションタスクに送信する（４−８）。その後、メインタスクは処理要求Ｂを擬似タスクＢ’で処理し（４−９）、処理結果Ｂをアプリケーションタスクに送信する（４−１０）。
【００３７】
その後、メインタスクは処理要求Ｃを擬似タスクＡ’，Ｃ’で処理し（４−１１）、処理結果Ｃをアプリケーションタスクに送信する（４−１２）。その後、タスクｉよりの処理要求（２）を擬似タスクＡ’，Ｃ’で処理し（４−１３）、処理結果（２）をタスクｉに送信する（４−１４）。
【００３８】
次に、図５及び図６を参照して、プラットフォームに実装するアプリケーションインタフェースのタスク構成を選択する実施形態について説明する。タスク構成の選択を実現する機能ブロックを図５の（ａ）に、その処理フローを同図の（ｂ）に示す。プラットフォーム（ＰＦ）内のタスク構成の選択を実現するタスク構成選択ブロック５−１の初期設定部は、タスク構成フラグ５−２を参照し、該タスク構成フラグ５−２に基づいて実タスク構成か擬似タスク構成かを判断し、アプリケーションインタフェースを実現するタスク構成を決定する。タスク構成フラグ５−２は、システムデータ或いは固有データの形であらかじめ設定しておく。
【００３９】
タスク構成を決定し、タスク生成する期設定の機能ブロックにおける処理フローは、図５の（ｂ）に示すように、装置の初期起動時に予め決定しているタスク構成フラグの読み出しを行ない（５−３）、タスク構成フラグの判定を行ない（５−４）、実タスク構成の場合、アプリケーションインタフェース（ＡＰＩ）毎にＯＳのタスク起動関数により複数の実タスクを生成する（５−５）。上記のタスク構成フラグの判定（５−４）において、擬似タスク方式と判定された場合、メインタスクを生成し、擬似タスク化し、メインタスクのみ起動し、擬似タスク毎の初期処理を行なう（５−６）。
【００４０】
擬似タスク構成から実タスク構成へ切り替えた場合のタスク構成を図６に示す。実タスク構成は、タスク構成フラグを切り替えることで動作可能となる。擬似タスク構成との差分としては、（１）中継タスクの削除、（２）メイン処理タスクの生成、（３）擬似タスクの実タスク生成である。
【００４１】
より詳細に説明すると、中継タスクにて受信していた処理要求の電文をメイン処理タスク６−１にて受信するよう変更する。また、各処理要求のハンドリングをメイン処理タスク６−１にて行ない、各処理タスクＡ’，Ｂ’，Ｃ’（旧：擬似タスク）と通信を行なう。擬似タスクの実タスク生成に伴い、ＯＳへのタスク登録が必要となる。
【００４２】
タスク構成フラグを実タスクに切り替えて実タスク構成とすることにより、処理性能は減少するが、タスク単位でＯＳ機能を用いてログの取得が可能となるため、デバッグ性能が向上する。実運用では擬似タスク方式を採用し、問題が発生した場合に実タスク方式へ切り替えることで、デバッグを容易に行うことが可能となる。
【図面の簡単な説明】
【００４３】
【図１】本発明による擬似タスクを用いたアプリケーションインタフェースを示す図である。
【図２】擬似タスクを制御するメインタスクの処理フローを示す図である。
【図３】優先度処理の動作例のタイムチャートである。
【図４】本発明のインタフェース処理の動作例のシーケンスチャートである。
【図５】タスク構成の選択を実現する機能ブロック及びその処理フローを示す図である。
【図６】擬似タスク構成から実タスク構成へ切り替えた場合のタスク構成を示す図である。
【図７】従来のアプリケーションインタフェースの構成例を示す図である。
【図８】従来の他のアプリケーションインタフェースの構成例を示す図である。
【符号の説明】
【００４４】
１−１  中継タスク
１−２  メインタスク
１−２１  メイン処理部
１−２２  擬似タスク間通信用ＦＩＦＯキュー
【図１】
2008108089.tif 000003
【図２】
2008108089.tif 000004
【図３】
2008108089.tif 000005
【図４】
2008108089.tif 000006
【図５】
2008108089.tif 000007
【図６】
2008108089.tif 000008
【図７】
2008108089.tif 000009
【図８】
2008108089.tif 000010