(57)【要約】【課題】  汎用ＯＳ上でＡＰタスクとシステムタスクが実行されるシステムであっても、ＡＰタスクのリアルタイム性を保証すること。【解決手段】  複数の物理コアを有するＣＰＵと、物理コア上で動作するシステムタスク、ＡＰタスクとを有する計算機であって、システムタスクと、リアルタイム性の保証が必要なＡＰタスクを異なる物理コアで動作するよう割当てる。【選択図】図２
2016001417.tif 000002
【特許請求の範囲】
【請求項１】
複数の物理コアを備えるＣＰＵと、
前記物理コアで実行されるオペレーティングシステムの処理を行うシステムタスクと、
前記物理コアで実行されるリアルタイム処理を行うアプリケーションタスクとを備え、
前記システムタスクと前記アプリケーションタスクを実行する物理コアを割当てるときに前記システムタスクを割当てる物理コアを、前記アプリケーションタスクを割当てる物理コアを異なる物理コアに割当てる割当部を備えることを特徴とする計算機システム。
【請求項２】
請求項１に記載の計算機システムにおいて、
前記アプリケーションタスクは論理コアに対応づけられており、
論理コアに対応づけられたアプリケーションタスクが実行時間内に実行可能かどうかを判定する判定部を備え、
前記判定部が指定された実行時間内に実行できないと判定したとき論理コアの識別子と実行できないと判定されたアプリケーションタスクの識別子を出力する出力部を備えることを特徴とする計算機システム。
【請求項３】
請求項２に記載の計算機システムにおいて、
前記アプリケーションタスクは周期的に実行されるタスクであり、
前記判定部が指定された実行時間内に実行可能かどうかを判定するとき、
論理コアに関連付けられた全てのアプリケーションタスクが指定された周期内で実行可能かどうか判断することを特徴とする計算機システム。
【請求項４】
請求項３に記載の計算機システムにおいて、
前記判定部は論理コアに対応づけられたアプリケーションタスクに指定された仮想優先順位を設定可能かどうか判定し、
前記判定部が指定された仮想優先順位を設定できないと判定したとき前記出力部は論理コアの識別子と仮想優先順位を設定できないと判定されたアプリケーションタスクの識別子を出力することを特徴とする計算機システム。
【請求項５】
請求項４に記載の計算機システムにおいて、
前記判定部は論理コアに対応づけられたアプリケーションタスクに指定された実行時間内に前記物理コアで実行可能かどうかを判定し、
前記判定部が指定された実行時間内に前記アプリケーションタスクを実行可能と判定したとき前記割当部が実行可能と判定された物理コアで前記論理コアに対応づけられたアプリケーションタスクを実行するよう割当てることを特徴とする計算機システム。
【請求項６】
請求項５に記載の計算機システムにおいて、
前記アプリケーションタスクには論理コアに対応づけられたときの実行優先度である仮想優先度が指定されており、
前記判定部は前記アプリケーションタスクを前記物理コアで実行するときに指定された仮想優先度を前記物理コアで前記アプリケーションタスクを実行するときの優先度である実優先度に変換可能かどうか判定し、
前記判定部が変換可能と判定したとき前記割当部が変換可能と判定された物理コアに前記論理コアに対応づけられたアプリケーションタスクを実行するよう割当てることを特徴とする計算機システム。
【請求項７】
請求項６に記載の計算機システムにおいて、
前記判定部はアプリケーションタスクが関連付けられた複数の論理コアを単一の物理コアに割当て、前記アプリケーションタスクを実行するとき前記アプリケーションを論理コアに関連付けられたときに指定された実行時間内に前記アプリケーションの実行が可能かどうかを判定し、
前記判定部が実行可能と判定したとき前記割当部が実行可能と判定された物理コアへ前記複数の論理コアに関連付けられたアプリケーションタスクを実行するよう割当てることを特徴とする計算機システム。
【請求項８】
請求項７に記載の計算機システムにおいて、
前記判定部はアプリケーションタスクが関連付けられた複数の論理コアを単一の物理コアに割当て、前記アプリケーションタスクを実行するとき前記アプリケーションを論理コアに関連付けられたときに指定された仮想優先順位を物理コアの実優先順位に変換可能かどうかを判定し、
前記判定部が変換可能と判定したとき前記割当部が変換可能と判定された物理コアへ前記複数の論理コアに関連付けられたアプリケーションタスクを実行するよう割当てることを特徴とする計算機システム。
【請求項９】
請求項５に記載の計算機システムにおいて、
前記判定部が指定された実行時間内に前記アプリケーションタスクを実行可能な物理コアが前記ＣＰＵに無いとき、
前記出力部は物理コアを割付けることができなかった論理コアと指定された実行時間内に実行できない前記アプリケーションタスクを出力することを特徴とする計算機システム。
【請求項１０】
請求項８に記載の計算機システムにおいて、
物理コアで実行されるアプリケーションタスクの実実行時間を測定する監視タスクを備え、
測定されたアプリケーションタスクの実実行時間がアプリケーションタスクに設定された周期を超えているかどうかを判断し、
周期を超えたとき前記アプリケーションタスクの識別子、前記アプリケーションタスクを実行した物理コアの識別子及び前記アプリケーションタスクが関連付けられた論理コアの識別子を前記出力部が出力するよう指示する判断部を備えることを特徴とする計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リアルタイム性の保証が必要なアプリケーションプログラムの処理時間を予測可能な計算機システムに関する。
【背景技術】
【０００２】
制御システムにおいて、リアルタイム性を保証することが求められており、従来、専用ハードウェアやリアルタイムＯＳ（Operating System）を導入したシステムでは、リアルタイム性を保証している。一方、近年、情報技術の発達により、汎用ハードウェア及び汎用ＯＳ上でもリアルタイム性の保証が求められている。ハードウェアにおいては、ＣＰＵ（Central Processing Unit）として、複数のＣＰＵコアを有するものを用いる共に、動作周波数の高いものを用い、ＣＰＵの時計として高精度のものを用いている。さらに、ＯＳにおいては、リアルタイム性の保証に必要なＦＩＦＯ（First-In First-Out）優先度制御や優先度逆転処理が導入されている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１１−３２７９２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
汎用ハードウェア及び汎用ＯＳ上で、リアルタイムシステムを構築した場合、リアルタイム性の保証が必要なアプリケーションプログラムであるリアルタイムタスク（以下、ＡＰタスクと称することがある。）以外に、汎用ＯＳによって生成されたシステムタスクに属するタスク、例えば、割込み処理用タスクやディスク処理タスクなど、システム運用に必要なシステムタスクが実行される。また、システムの応答性の向上のため、外部デバイスからの割込み処理用タスクを高優先度で運用するケースも多い。このようなシステムにおいて、ＡＰタスクとシステムタスクが混在すると、ＡＰタスクの処理とシステムタスクの処理とが干渉し、特許文献１のような仕組みだけでは、ＡＰタスクのリアルタイム性を保証すること、即ち、ＡＰタスクの処理時間のデッドラインを守り、ＡＰタスクの処理時間の予測性（ＡＰタスクの最長処理時間の予測性）を高めることが困難になる。
【０００５】
本発明の目的は、汎用ＯＳ上でＡＰタスクとシステムタスクが実行されるシステムであっても、ＡＰタスクのリアルタイム性に与える影響を軽減する。
【課題を解決するための手段】
【０００６】
複数の物理コアを備えるＣＰＵと、前記物理コアで実行されるオペレーティングシステムの処理を行うシステムタスクと、前記物理コアで実行されるリアルタイム処理を行うアプリケーションタスクとを備え、前記システムタスクと前記アプリケーションタスクを実行する物理コアを割当てるときに前記システムタスクを割当てる物理コアを、前記アプリケーションタスクを割当てる物理コアを異なる物理コアに割当てる割当部を備える計算機システムにより実現する。
【発明の効果】
【０００７】
本発明によれば、汎用ＯＳ上でＡＰタスクとシステムタスクが実行されるシステムであっても、ＡＰタスクのリアルタイム性に与えるシステムタスクの影響を軽減できる。
【図面の簡単な説明】
【０００８】
【図１】本発明に係る実計算機のハードウェア構成図の例である。
【図２】実計算機のソフトウェア構成図の例である。
【図３】優先度／コア割当規則テーブルの構成図の例である。
【図４】仮想優先度から実優先度の変換の説明図である。
【図５】システムタスク管理テーブルの構成図の例である。
【図６】物理コア状態テーブルの構成図の例である。
【図７】ＡＰタスク情報テーブルの構成図の例である。
【図８】ＡＰタスクの優先度／コア割当設定テーブルの構成図の例である。
【図９】論理コアから物理コアへの割当の説明図である。
【図１０】ＡＰタスクの登録処理のフローチャートの例である。
【図１１】実優先度変換処理のフローチャートの例である。
【図１２】実優先度論理マッピング処理のフローチャートの例である。
【図１３】物理コア割当設定処理のフローチャートの例である。
【図１４】ＡＰタスクの生成処理フローチャートの例である。
【図１５】ＡＰタスクの監視処理フローチャートの例である。
【図１６】外部ＩＯ制御部の処理フローチャートの例である。
【発明を実施するための形態】
【０００９】
以下、本発明に係る計算機の実施例を図面に基づいて説明する。
【実施例１】
【００１０】
実施例は、リアルタイム性の保証が必要な処理を行うアプリケーションプログラムであるＡＰタスク（リアルタイムタスク）と、汎用ＯＳによって生成されるシステムタスクに対して、優先度割当ルールに従って優先度を設定すると共に、コア割当ルールに従って物理コアを割当て、ＡＰタスクの実行領域とシステムタスクの実行領域とを分離し、ＡＰタスクとシステムタスク間の性能干渉を抑制するものである。
【００１１】
図１は、本発明に係る実計算機の構成図の例である。図１において、実計算機１００は、ハードウェア資源として、ＣＰＵ１０１と、物理メモリ１０２と、ハードディスクドライブ等の外部記憶装置１０３と、ネットワークインタフェース１０４を有し、こられがバス１１０を介して接続される。なお、ネットワークインタフェース１０４又はバス１１０には、コンソール等のユーザ端末が接続される。また、ハードウェア資源上で動作するソフトウェア資源からの情報を表示する外部出力装置１０５が、ネットワークインタフェース１０４又はバス１１０に接続される。
【００１２】
ＣＰＵ１０１は、情報を処理する複数の物理コアとして、複数のＣＰＵコア１０６（以下、物理コアと称することがある。）を有し、実計算機１００全体を統括制御する制御部として機能する。メモリ１０２は、ＣＰＵ１０１が処理するためのプログラム等を格納する記憶領域として構成される。外部記憶装置１０３は、ＯＳ（Operating System）やデータを格納する記憶装置として構成される。ネットワークインタフェース１０４は、ＣＰＵ１０１が、実計算機１００外部の装置や通信ネットワーク等とデータや情報の授受を行うために構成される。外部出力装置１０５は、ハードウェア資源上で動作するソフトウェア資源からの情報を、実計算機１００外部の装置やユーザ端末等に出力する出力部としても構成される。
【００１３】
ＣＰＵ１０１は、実計算機１００の電源が投入された後、外部記憶装置１０３の特定領域の内容を物理メモリ１０２に読み込み、物理メモリ１０２に読み込まれた内容を基に外部記憶装置１０３に格納されているＯＳの起動を実施する。以下の説明では、ＣＰＵ１０１が外部記憶装置１０３から、プログラムを読み出して物理メモリ１０２に格納することを、プログラムをローディングする。また、ＣＰＵ１０１が物理メモリ１０２に格納されているプログラムを実行することを、ＯＳがＯＳ上に存在するプログラムを実行する。
【００１４】
図２は、実計算機のソフトウェア構成図の例である。図２において、実計算機１００は、ソフトウェア資源として、汎用ＯＳ２００と、リアルタイム制御部２１０と、ＡＰタスク群２５０を有する。汎用ＯＳ２００上では、システムの運用管理に必要なシステムタスク群２０１が動作する。システムタスク群２０１は、ＯＳが生成するカーネルスレッドやハードウェアのデバイスを制御するデモンプロセス等、汎用ＯＳ２００上で動作するタスクである。以下の説明では、システムタスク群２０１とリアルタイム制御部２１０をシステムタスクとして説明する。
【００１５】
リアルタイム制御部２１０は、汎用ＯＳ２００によって実行されるミドルウェアであり、入力部２１１と、判定部２１２と、割当部２１３と、優先度／コア割当管理テーブル２１４と、ＡＰタスク情報テーブル２１５と、優先度／コア割当設定テーブル２１６と、システムタスク管理テーブル２１７と、物理コア状態テーブル２１８と、ＡＰタスク生成部２２０と、ＡＰタスク監視部２３０と、外部ＩＯ（Input Output）制御部２４０から構成される。なお、ＡＰタスク生成部２２０と、外部ＩＯ（Input Output）制御部２４０は、リアルタイム制御部２１０の起動時に、汎用ＯＳ２００によって実行されるシステムタスクとして動作する。
【００１６】
入力部２１１は、ユーザ端末から入力されたＡＰタスクの特性情報を受け付ける。判定部２１２は、入力部２１１に入力されたＡＰタスクの特性情報の整合性を判定すると共に、ＡＰタスクの優先度及びシステムタスクの優先度を規定した優先度割当ルールに従ってＡＰタスクの特性情報に基づいてＡＰタスクの優先度を判定する。また、判定部２１２はＡＰタスクが予定された実行時間内に実行可能かどうかを判定する。割当部２１３は、入力部２１１に入力された特性情報を基に、汎用ＯＳ２００上で実行する全てのシステムタスク及びＡＰタスクに対して、実優先度（実行優先度）と、物理コア（実行コア）を割り当てる。この際、割当部２１３は、優先度／コア割当管理テーブル２１４に格納されている、ＡＰタスクの優先度及びシステムタスクに対する物理コアの割当を規定したコア割当ルールに従ってＡＰタスクに、いずれかの物理コアを割当てる。判定部２１２は独立したモジュールとして実装されても、割当部２１３の処理の一部として実装されてもよい。
【００１７】
ＡＰタスク生成部２２０は、ＡＰタスクを生成するために、ＡＰタスク群２５０と、ＡＰタスクの周期や動作を管理するＡＰタスク監視部２３０が監視タスクを外部記憶装置１０３からローディングし、汎用ＯＳ２００への要求により実行する。
【００１８】
図３は、優先度／コア割当規則テーブル２１４の構成図である。優先度／コア割当規則テーブル２１４は、優先度識別子フィールド２１４Ａと、ＭＩＮ（最小値）フィールド２１４Ｂと、ＭＡＸ（最大値）フィールド２１４Ｃと、物理コア割当パラメータフィールド２１４Ｄと、実優先度重複許容度２１４Ｅと、実優先度の最大値２１４Ｆから構成される。優先度／コア割当管理テーブル２１４には、ＡＰタスクの優先度及びシステムタスクの優先度を規定した優先度割当ルールの情報が格納されると共に、ＡＰタスク及びシステムタスクに対する物理コアの割当規則を規定したコア割当ルールの情報が記録されている。
【００１９】
具体的には、優先度識別子フィールド２１４Ａは、システムタスクやＡＰタスクを識別するための識別子である。システムタスクは、ＡＰタスクより高優先度のシステムタスクを識別するための識別子「ＳＹＳ  ＰＲＯ」とＡＰタスクよりも低優先度のプロセスを識別するための識別子として、「ＰＲＯＣＥＳＳ」で区別し、それぞれ優先度識別子フィールド２１４Ａに格納される。また、優先度識別子フィールド２１４Ａのエントリには、ＡＰタスクを識別するための識別子として、「ＡＰ」の情報が格納される。
【００２０】
「ＳＹＳ  ＰＲＯ」に属するシステムタスクは、システムタスクの中でＡＰタスクより高優先度で実行する必要があるシステムタスクである。例えば、汎用ＯＳ２００からの割込み処理を行うタスクやリアルタイム制御部２１０等、ＡＰタスクの管理に必要な処理を行うタスクである。また、ＡＰタスクの暴走などの異常状態が発生した場合、ＡＰタスクの処理の停止やそのときの操作ログやメモリダンプの処理を行うタスクである。
【００２１】
「ＡＰ」に属するＡＰタスクは、ＡＰタスク群２５０を構成するＡＰタスクである。「ＰＲＯＣＥＳＳ」に属するシステムタスクは、「ＳＹＳ  ＰＲＯ」に属するシステムタスク以外のシステムタスクである。例えば、ＡＰタスクの監視プロセスは、「ＰＲＯＣＥＳＳ」の優先度に属するシステムタスクである。「ＰＲＯＣＥＳＳ」の優先度に設定することにより、ＡＰタスクの監視プロセスは、ＡＰタスクの周期監視や処理時間の監視が可能である。即ち、汎用ＯＳ２００は、優先度順にシステムタスクまたはＡＰタスクを実行するため、ＡＰタスクの実行後に、ＡＰタスクより低優先度の、ＡＰタスクの監視プロセスが実行することで、ＡＰタスクの監視プロセスは、ＡＰタスクが、その実行に使用したＣＰＵコアの処理時間の監視が可能となる。
【００２２】
また、システムタスクの中で、高優先度処理が必要とされないディスク処理タスクは、「ＰＲＯＣＥＳＳ」に属するシステムタスクとして設定される。「ＡＰ」に属するＡＰタスク群２５０の優先度と、「ＳＹＳ  ＰＲＯ」に属するシステムタスク又は「ＰＲＯＣＥＳＳ」に属するシステムタスクの優先度を異なる優先度に設定することで、ＡＰタスク群２５０の性能を保証することができると共に、ＡＰタスク群２５０の異常時の対策や監視を行うためのシステムタスクの優先度を変更することができる。
【００２３】
２１４ＢのＭＩＮ（最小値）は、仮想優先度範囲の最小値である。仮想優先度は、リアルタイムタスク２１０が管理しているＡＰタスクの実行順序を表す優先度であるが、汎用ＯＳ２００で定義管理している実優先度と値及び範囲は異なる。ＭＩＮ（最小値）フィールド２１４Ｂのエントリには、例えば、仮想優先度範囲の最小値として、「０」の情報が格納される。
【００２４】
ＭＡＸ（最大値）は、仮想優先度範囲の最大値である。例えば、設定可能な仮想優先度の数を２５６個とした場合、「ＳＹＳ  ＰＲＯ」のシステムタスクには、最も高い仮想優先度として、「０」〜「６３」の値を設定し、「ＳＹＳ＿ＰＲＯ」のシステムタスクで使用可能な仮想優先度の数は６４個に設定する。「ＡＰ」のＡＰタスクには、中間の仮想優先度として、「６４」〜「１９１」の値が設定し、ＡＰタスクの優先度として１２８個の仮想優先度が設定可能とする。また、「ＰＲＯＣＥＳＳ」のシステムタスクには、最も低い仮想優先度として、「１９２」〜「２５５」の値が設定することが可能である。
【００２５】
仮想優先度は、割当部２１３によって、汎用ＯＳ２００上の実優先度に変換される。この際、仮想優先度は、通常、実優先度に対して１対１で変換されるが、汎用ＯＳ２００によっては、仮想優先度を実優先度に対して、１対１に変換できない場合がある。その場合、汎用ＯＳ２００上で変換可能な優先度範囲を仮想優先度の範囲の比率で対応させる実優先度重複許容度２１４Ｅをもって実優先度を割り当てる。
【００２６】
例えば、「ＳＹＳ  ＰＲＯ」のシステムタスクの場合、異なる仮想優先度を実優先度に変換するときに重複を許容しない実優先度許容度「０％」を設定する。性能や実行順序を守ることが不要な「ＰＲＯＣＥＳＳ」のシステムタスクには、優先度重複許容度を「９０％」と設定すると「１９２」〜「２５５」の６４個の仮想優先度は、異なる「６」個の実優先度に変換される。「ＡＰ」のＡＰタスクの場合、「ＳＹＳ  ＰＲＯ」のシステムタスクと、「ＰＲＯＣＥＳＳ」のシステムタスクに割り当てられる実優先度を除く実優先度に重複を許容して実優先度が割り当てられる（図４）。
【００２７】
実優先度最大値２１４Ｆは汎用ＯＳ２００で定義されている実優先度の最大値では実優先度の範囲が「０」〜「ＰＲＩＯ＿ＭＡＸ」であることを表す。
【００２８】
仮想優先度は、汎用ＯＳ２００の優先度と異なる範囲で定義されていても良く、仮想優先度はＡＰタスクの実行までに汎用ＯＳの定義範囲へ割付けられる。そのため、ＡＰタスクを設計するユーザは汎用ＯＳ２００の種類などの仕様について考慮する必要がない。また、汎用ＯＳ２００で運用しているＡＰタスクを他汎用ＯＳへ移植する場合も、ユーザによる優先度の再設計が不要となり、高い移植性が保証可能である。例えば、標準Ｌｉｎｕｘ（登録商標）では、最高優先度１３９であり、優先度の値が大きければ高い優先度である。このような場合でもユーザが設定したＡＰタスクの仮想優先度は割当部２１３で実優先度に変換される。
【００２９】
物理コア割当パラメータ２１４Ｄは、物理コア１０６の割当方法を特定する情報である。この例では物理コア割当パラメータ２１４Ｄのエントリには、＃０〜＃ｎの番号が付与された複数の物理コア１０６に、番号の小さい＃０の物理コアからＳＹＳ＿ＰＲＯの優先度識別子を持つシステムタスクに割当てることを示すため「０」が格納される。ＡＰタスクには最大値の番号（＃ｎ）の物理コアから、ＡＰの優先度識別子を持つＡＰタスクに割当てることを意味する情報として、最大値の番号（＃ｎ）の「ＣＰＵ＿ＭＡＸ」が格納される。
【００３０】
物理コア割当では、ＡＰタスクとシステムタスクに、それぞれ異なる物理コアが割当てられるように、割当部２１３によって物理コアの割当が行われる。即ち、「ＳＹＳ  ＰＲＯ」に属するシステムタスク又は「ＰＲＯＣＥＳＳ」に属するシステムタスクには、物理コア割当として物理コアの識別子を示す「０」が格納されるので、これらのシステムタスクの処理は、同じ物理コア「０」で実行されることなる。
【００３１】
一方、「ＡＰ」に属するＡＰタスク群２５０には、コア割当として「ＣＰＵ＿ＭＡＸ」の情報が格納されるので、ＡＰタスクの処理は、システムタスクとは異なるＣＰＵコアで実行されることになる。そのため、システムタスクによるＡＰタスクへの性能の影響を軽減することができ、ＡＰタスクのリアルタイム性を保証することができる。逆に、ＡＰタスクの異常（ＡＰタスクの暴走等）によるシステムタスクへの影響を排除することができ、システムが不安定になることが防げ、システムの信頼性を確保することができる。
【００３２】
図５はシステムタスク管理テーブル２１７の構成図の例である。システムタスク管理テーブル２１７は、システムタスク識別子２１７Ａと、優先度識別子２１７Ｂと、仮想優先度識別子２１７Ｃと、物理コア識別子２１７Ｄと、実優先度２１７Ｅと実行状態２１７Ｆで構成される。システムタスク管理テーブル２１７には、汎用ＯＳ２００上で実行されるシステムタスクの実行する優先度と物理コアの情報が記録されている。
【００３３】
システムタスク識別子２１７Ａはシステムタスクを識別するものである。識別子２１７Ａには、大きく、汎用ＯＳ２００上で管理されるシステムタスク群２０１と、リアルタイム制御部２１０で管理するシステムタスク群がある。リアルタイム制御部２１０で管理するシステムタスク群には、リアルタイム制御部２１０とＡＰタスク生成部２２０と外部ＩＯ制御部２４０と、ＡＰタスク管理プログラム（ＡＰタスク管理部２３０）の「ＡＰ＿ＷＤＴ」と、後述するユーザ設定のＩＯ処理タスクの「ＩＯ＿ＰＲＯＣＥＳＳ」がある。
【００３４】
物理コア識別子２１７Ｃは、ＣＰＵ１０１が、複数の物理コア１０６で構成される場合、各物理コアを識別するための識別子である。例えば、物理コアが＃０〜＃３の４つがある場合、物理コア＃０を「Ｃ０」、＃１を「Ｃ１」のように表す。前記システムタスク識別子２１７ＡのＡＰタスク管理プログラムの「ＡＰ＿ＷＤＴ」を除く、システムタスクは、物理コア＃０の「Ｃ０」が設定される。ＡＰタスク管理プログラムの「ＡＰ＿ＷＤＴ」は、ＡＰタスク用物理コア毎に用意されてＡＰタスク用物理コアで動作するように設定される。ＡＰタスク管理プログラムの「ＡＰ＿ＷＤＴ」も、物理コア「Ｃ０」に割当て、ＡＰタスクと異なる物理コアで実行する運用にすれば物理コア数の制限を緩和できる。
【００３５】
リアルタイム制御部２１０の起動時に、各システムタスクの仮想優先度から実優先度への変換を行い、汎用ＯＳ２００の実優先度変更要求に基づいて、各システムタスクの実優先度を変更する。また、リアルタイム制御部２１０が管理するシステムタスクは、汎用ＯＳ２００へのタスク生成要求によって生成され、実優先度に変更し、物理コア識別子２１７Ｄで指定された物理コアで実行される。実行後は、実行状態２１７Ｅの状態をセットする。ＡＰタスク管理プログラムの「ＡＰ＿ＷＤＴ」と、後述するユーザ設定のＩＯ処理タスクの「ＩＯ＿ＰＲＯＣＥＳＳ」は、ＡＰタスクを生成するには、ＡＰタスク生成部２２０から、汎用ＯＳ２００へのタスク生成を要求し、優先度を変更し、物理コア識別子２１７Ｄで指定された物理コアで実行される。
【００３６】
図６は物理コア状態テーブル２１８の構成図である。物理コア状態テーブル２１８は、物理コア識別子２１８Ａと、物理コアの用途２１８Ｂと、物理コアの運用状態２１８Ｃと当該物理コア上で実行がスケジュールされたタスクの処理時間の計算値２１８Ｄと、該当物理コア上で実行がスケジュールされたタスクの実際の処理時間である運用実績値２１８Ｅから構成される。計算値２１８Ｄは当該物理コアで実行されるタスクのうち最も実行周期が長いタスクの１周期が実行さるときに実行される全てのタスクの累積実行時間としても良い。
【００３７】
物理コアの用途２１８Ｂは、各物理コアの用途の情報が格納される。例えば、物理コア「Ｃ０」はシステムタスク用の「システム」、「Ｃ１」から「Ｃ３」はＡＰタスク用の「ＡＰ」が格納される。物理コアの運用状態２１８Ｃは、各物理コアの割当状況を表す。「Ｃ０」の場合、前記リアルタイム制御部２１０の起動時にシステムタスクの実優先度や物理コア割当後に、運用状態２１８Ｃは割当て済を示す「１」が設定される。また、ＡＰタスク用の「Ｃ１」から「Ｃ３」は、前記ＡＰタスク生成部２２０によってＡＰタスクが生成された時に「１」と生成される。
【００３８】
計算値２１８Ｄは、前記割当部２１３によって、前記入力部２１１からのＡＰタスクの特性情報から算出したＡＰタスクの処理時間が格納される。一方、実績運用値２１８Ｅは、前記ＡＰタスク管理プログラムの「ＡＰ＿ＷＤＴ」によって実際該当物理コアで処理されているＡＰタスクの処理時間が格納される。なお、前記ＡＰタスク管理プログラムは計算値２１８Ｄと実績運用値２１８ＥからＡＰタスクのデッドライン監視を行う。
【００３９】
図７はＡＰタスク情報テーブル２１５の構成図の例である。ＡＰタスク情報テーブル２１５は、ユーザ端末から入力された特性情報を記録するためのテーブルであって、タスク識別子フィールド２１５Ａと、グループ識別子フィールド２１５Ｂと、論理コアフィールド２１５Ｃと、仮想優先度フィールド２１５Ｄと、実行周期フィールド２１５Ｅと、最長処理時間フィールド２１５Ｆと、デッドラインフィールド２１５Ｇと、ＩＯ処理フィールド２１５Ｈから構成される。各フィールドのエントリには、ユーザが、ユーザ端末を操作して入力した情報（ユーザ、例えば、設計者の設計によるＡＰタスクの特性に関するＡＰタスク特性情報）が前記入力２１１によって登録される。
【００４０】
タスク識別子２１５Ａは、ＡＰタスク設計者であるユーザが、ＡＰタスクを識別するために設定した識別子である。識別子フィールド２１５Ａのエントリには、例えば、ＡＰタスクを識別するための識別子として、「ＡＰタスク１」の情報が格納される。グループ識別子は、複数のＡＰタスクを複数のグループに分けた場合、ユーザが、各グループを識別するための識別子である。グループ識別子フィールド２１５Ｂのエントリには、例えば、ＡＰタスク１が、＃０のグループに属する場合、「０」の情報が格納される。論理コアは、ユーザが、ＡＰタスクに割当てるための論理上のＣＰＵコアである。論理コアフィールド２１５Ｃのエントリには、例えば、ＡＰタスク１に、＃１の論理コアを割当てた場合、論理コア識別子の「Ｖ１」の情報が格納される。
【００４１】
論理コアは、仮想優先度と同様に、実計算機１００の仕様によらない設計環境をユーザに提供し、ＡＰタスクの他ハードウェアや汎用ＯＳへの移植性を高めるものである。そのため、前記割当部２１３によって実際の物理コア１０６を割り当てる設定を行う必要がある。その際、物理コア１０６はシステムタスクに割り当てること等により論理コア数より少ない場合が発生する。その場合、複数の論理コアに割当てられたタスクを一つの物理コアに割当てることになり、ＡＰタスクの周期やデッドラインを守ることが可能かどうかが割当て可能かどうかを判定する基準となる。このため、論理コアの値は異なるが、物理コア１０６が、同じ割り当てとなることがある（図９）。処理の詳細は後述する（図１３）。
【００４２】
仮想優先度は、ユーザが、優先度／コア割当管理テーブル２１４の優先度識別子２１４Ａの「ＡＰ」の範囲の中から任意の値を、ＡＰタスクに対して設定するための論理上の優先度である。仮想優先度フィールド２１５Ｄのエントリには、例えば、ＡＰタスク１に対する仮想優先度を「１００」とした場合には、「１００」の情報が格納される。実行周期は、ＡＰタスクの設計上の処理周期である。実行周期フィールド２１５Ｅのエントリには、例えば、＃１のＡＰタスクに対する処理周期を、「１００ｍｓ」に設定した場合、「１００」の情報が格納される。この仮想優先度は、ＡＰタスクに論理コアが対応づけられたときの実行優先度として、ＡＰタスクに指定される。
【００４３】
最長処理時間は、ＡＰタスクの処理に要する最長処理時間である。最長処理時間フィールド２１５Ｆのエントリには、例えば、ＡＰタスク１の処理に要する最長処理時間が、「２ｍｓ」である場合、「２」の情報が格納される。デッドラインは、ＡＰタスクの処理に要する時間として許容できる限界値である。デッドラインフィールド２１５Ｇのエントリには、例えば、ＡＰタスク１の処理に要する時間の限界値が、「１００ｍｓ」である場合、「１００」の情報が格納される。ただし、最長処理時間２１５Ｆ及びデッドライン２１５ＧはＡＰタスクによって入力必須ではない。その場合、実行周期２１５Ｅの値を代用してもよい。
【００４４】
ＩＯ処理は、ＩＯ処理を特定するためのＩＯ処理プログラムの名称である。ＩＯ処理フィールド２１５のエントリには、例えば、ＩＯ処理タスクの名称として、「Ｆ１」の情報が格納される。ＩＯ処理タスクは、外部ＩＯ制御部２４０によって管理制御され、ＡＰタスクとの外部ＩＯ情報のやり取りを行う。
【００４５】
図８はＡＰタスクに割当てられた情報を管理するための優先度／コア割当設定テーブル２１６の構成図の例である。タスク識別子２１６Ａと、物理コア識別子２１６Ｂと、実優先度フィールド２１６Ｃと、実行状態２１６Ｄと、共有メモリ識別子フィールド２１６Ｅと、共有メモリ状態フィールド２１６Ｆから構成される。
【００４６】
物理コア識別子２１６Ｂと実優先度２１６Ｃは、割当部２１３によって該当ＡＰタスクへ割り当てる物理コア及び実優先度の情報が格納される。処理詳細は、後述する（図１１と図１３）。
【００４７】
実行状態２１６Ｄは、ＡＰタスク生成部２２０によって、ＡＰタスクの生成後にＡＰタスク実行中であることを示す「１」が設定される。共有メモリ識別子は、物理メモリ１０２に存在する複数の共有メモリを識別するための識別子である。共有メモリ識別子フィールド２１６Ｅのエントリには、ＡＰタスク生成部２２０によって、ＡＰタスク生成後に、汎用ＯＳ２００へ共有メモリ割当要求を発行し、共有メモリを識別する情報が格納される。共有メモリ状態は、ＡＰタスク生成部２２０によって、共有メモリ割当後に共有メモリが割当てられたことを示す「１」の値が格納される。
【００４８】
図１０は、ＡＰタスクの登録処理のフローチャートである。この処理は、ユーザが、実計算機１００に対して、ユーザ端末を用いて、ＡＰタスクに関する情報を登録するための操作を実行した場合、リアルタイム制御部２１０によって実行される。
【００４９】
入力部２１１は、ユーザ端末から入力されたＡＰタスクに関する情報を読み込み、読み込んだＡＰタスクに関する情報であるＡＰタスク識別子をキーにＡＰタスク情報テーブル２１５に登録する（Ｓ１００１）。次に、判定部２１２は、ＡＰタスク情報テーブル２１５を参照し、仮想優先度２１５Ｄのチェックを行い、仮想優先度２１５Ｄが優先度／コア割当管理テーブル２１４のＭＩＮ２１４ＢとＭＡＸ２１４Ｃの範囲外であれば、ユーザ端末へ処理失敗を出力し、処理を終了する（Ｓ１００２のＮＯ）。
【００５０】
ＭＩＮ２１４ＢとＭＡＸ２１４Ｃの範囲の範囲内であれば（Ｓ１００２のＹＥＳ）、同論理コア内の全ＡＰタスクの最長処理時間２１５Ｆの合計が、同論理コア内の仮想優先度２１５Ｄの中で最低優先度のＡＰタスクのデッドライン２１５Ｇを超えないかチェックを行う（Ｓ１００３）。ただし、ＡＰタスクによっては最長処理時間２１５Ｆ及びデッドライン２１５Ｇの値が設定されていない運用の場合、本処理は省略してもよい。デッドライン２１５Ｇを超える場合、ユーザ端末へ処理失敗を出力し、処理を終了する（Ｓ１００３のＮＯ）。デッドライン２１５Ｇを超えない場合、割当部２１３の実優先度変換処理が行われる（Ｓ１００４）。次に、割当部２１３の物理コア割当設定が行われる（Ｓ１００５）。次に、ＡＰタスク生成部２２０から汎用ＯＳ２００へ、ＡＰタスクの生成及び変換した実優先度及び物理コアの割当要求を出し、ＡＰタスクの実優先度及び物理コアを割り当てる（Ｓ１００６）。
【００５１】
図１１は、前記割当部２１３による実優先度変換処理のフローチャートである。割当部２１３は、システムタスク管理テーブル２１７を読出し、全システムタスクの仮想優先度を読出し、設定されている仮想優先度の領域を高い順に並べたリストを作成し、前記仮想優先度の領域の数を算出する（Ｓ１１０１）。仮想優先度は値が小さいほど高い優先度である。例えば、図５の場合、仮想優先度「０、１０、１９２、２５５」の4種類の優先度が設定されているため仮想化優先度領域の数は「４」となる。
【００５２】
次に、ＡＰタスク情報テーブル２１５を読出し（Ｓ１１０２）、処理対象の論理コアを選択し、論理コアに割り当てられている全ＡＰタスクの仮想優先度２１５Ｄを読出し、設定されている仮想優先度の領域を高優先度順に並べたリストを作成し、仮想優先度の領域の数を算出する（Ｓ１１０３）。例えば、図７では、論理コア「Ｖ３」の場合、仮想優先度「１００、１２０」の「２」が仮想化優先度領域の数となる。
【００５３】
次に、Ｓ１１０２とＳ１１０３で作成したリストをマージし高優先度順に並べ替え、全システムタスクの設定仮想優先度の領域の数と、前記論理コア上の全ＡＰタスクの設定仮想優先度の領域の数の合計を算出する（Ｓ１１０４）。
【００５４】
次に、Ｓ１１０４で算出した仮想優先度の領域の数が、優先度／コア割当管理テーブル２１４の実優先度最大値２１４Ｆの以下であるか判断し、仮想優先度を実優先度に１対１に変換可能か判断する（Ｓ１１０５）。仮想優先度領域の数の合計が実優先度最大値２１４Ｆの以上である場合（Ｓ１１０５のＮＯ）、実優先度論理マッピング処理を行う（Ｓ１１１１）。仮想優先度領域の数の合計が実優先度最大値２１４Ｆの以下で、仮想優先度を実優先度に１対１に変換可能な場合（１１０５のＹＥＳ）、ＡＰタスクの実優先度を決定し、優先度／コア割当テーブル２１６の実優先度２１６Ｃに格納する（Ｓ１１０６）。汎用ＯＳ２００の実優先度の変換時には、前記Ｓ１１０４でマージしたリストの行番号を用いる。例えば、汎用ＯＳ２００が標準Ｌｉｎｕｘ（登録商標）の場合、実優先度の値が大きいほど高優先度のため、実優先度は、実優先度最大値２１４Ｆの「ＰＲＩＯ＿ＭＡＸ−前記リストの行番号」で変換する。システムタスク及びＡＰタスクの仮想優先度が設定されている領域のみについて、実優先度範囲内で設定可能かどうか判断することにより効率の良い実優先度への変換が可能となる。
【００５５】
未処理の論理コアがあれば処理を継続する（１１０７）。
【００５６】
図１２は、前記割当部２１３による、実優先度論理マッピング処理のフローチャートである。ＡＰタスクの仮想優先度を汎用ＯＳ２００の実優先度に１対１に変換できない場合の処理である。
【００５７】
優先度／コア割当管理テーブル２１４から、「ＳＹＳ＿ＰＲＯ」及び「ＰＲＯＣＥＳＳ」仮想優先度の実優先度重複許容度２１４Ｅを、それぞれ読み出す（Ｓ１２０１）。次に、全システムタスクの設定仮想優先度の領域の数と前記実優先度重複許容度２１４ＥからＡＰタスクに割当可能な実優先度の数を算出する（Ｓ１２０２）。例えば、汎用ＯＳ２００の実優先度最大値２１４Ｆが「１２８」で、「ＳＹＳ＿ＰＲＯ」のシステムタスクの設定仮想優先度領域の数が「３２」、「ＰＲＯＣＥＳＳ」のシステムタスクの設定仮想優先度領域が「３２」とする。図５の場合、「ＳＹＳ＿ＰＲＯ」の実優先度重複許容度２１４Ｅは「０」で、「ＰＲＯＣＥＳＳ」の実優先度重複許容度２１４Ｅは「９０」であるため、全システムタスクへ割り当てられる実優先度の数は、実優先度の重複を許容しない「ＳＹＳ＿ＰＲＯ」で「３２」と、「９０」％の重複を許容する「ＰＲＯＥＣＳＳ」のシステムタスク用に、「３２×０．１」から「３」となる。即ち、全システムタスクへ割り当てられる実優先度の数は、「３５」となり、ＡＰタスクに割当可能な実優先度の数は「９３」（１２８−３５）となる。
【００５８】
次に、算出した前記ＡＰタスクに割当可能な実優先度の数と、ＡＰタスクの設定仮想化優先度の領域の数からＡＰタスクの実優先度重複度を算出する。例えば、ＡＰタスクの設定仮想化優先度の領域の数が「１１４」の場合、ＡＰタスクの実優先度重複度は「１８」｛（１−９３／１１４）×１００（％）｝となる。
【００５９】
次に、算出した前記ＡＰタスクの実優先度重複度から、ＡＰタスクの実優先度を決定する（Ｓ１２０４）。具体的に、前記Ｓ１１０４で作成したリストにおいて、ＡＰタスクの設定仮想優先度の領域が格納されている行番号とＡＰタスクの実優先度重複度を用いてＯＦＦＳＥＴを算出する。ＯＦＦＳＥＴは、各設定優先度の領域の格納行番号から、先頭設定仮想優先の領域の格納行番号を減算し、その差分にＡＰタスクの実優先度重複度からの算出した割合「１−０．１８」をかけ、その結果を、再び、各設定優先度の領域の格納行番号に加算し、その結果から整数値のみを取り出した値とする。ＡＰタスクの先頭の設定仮想優先度の領域の格納行番号は「３３」となり、ＯＦＦＳＥＴは、「３３＋（行番号−３３）×０．８２」の整数値となる。ＡＰタスクの実優先度は、実優先度最大値２１４Ｆの「ＰＲＩＯ＿ＭＡＸ−ＯＦＦＳＥＴ」で変換する。
【００６０】
次に、変換したＡＰタスクの実優先度で、論理コア内の全ＡＰタスクの最長処理時間２１５Ｆの合計が、変化した実優先度で最低優先度のＡＰタスクの実行完了時間を算出する（Ｓ１２０５）。実行完了時間がデッドラインを超えないか判定する（Ｓ１２０６）。ユーザで設定した仮想優先度と実優先度が１対１に変換できなかったため、デッドライン判定の結果に影響を及ぼす場合、実優先度の論理マッピングの処理を行わず、ユーザへ割当不可を通知するためである。
【００６１】
次に、前記算出したデッドラインを守ることが可能でなければユーザへ割当不可を通知する（Ｓ１２１１）。通知内容は、前記リアルタイム制御部２１０の管理テーブルである、優先度／コア割当管理テーブル２１４、ＡＰタスク情報テーブル２１５、優先度／コア割当設定テーブル２１６、システムタスク管理テーブル２１７及び物理コア状態テーブル２１８の内容である。通知手段としては、ユーザ端末でもよいし、ファイルでもよい。デッドラインを守ることが可能であれば、変換した実優先度を、優先度／コア割当設定テーブル２１６の各ＡＰタスクの実優先度２１６Ｃに格納する（Ｓ１２０７）。
【００６２】
図１３は前記割当部２１３による、物理コア割当処理のフローチャートである。割当部２１３は、ＡＰタスク情報テーブル２１５を読出し、ＡＰタスクに割り当てられている論理コアの数を算出する（Ｓ１３０１）。次に、物理コア状態テーブル２１８から、ＡＰタスク用物理コア数を算出する（Ｓ１３０２）。
【００６３】
次に、前記論理コアに１つの物理コアを割り当てられるか判断する（Ｓ１３０３）。前記算出した物理コアの数が前記算出した論理コアの数より大きい場合（Ｓ１３０３のＹＥＳ）、論理コアに割り当てる物理コアを決定し（Ｓ１３０４）、優先度／コア割当設定テーブル２１６に前記決定の物理コアの情報格納し、さらに物理コア状態テーブル２１８の運用状態２１８Ｃに運用中であることを示す「１」を格納する（Ｓ１３０５）。前記算出した物理コアの数が前記算出した論理コアの数より少ない場合（Ｓ１３０３のＮＯ）、１つの物理コアに割り当てる複数の論理コアを選定する（Ｓ１３１１）。
【００６４】
次に、選択された論理コアの全ＡＰタスクを単一の物理コアで実行するときのＡＰタスクの実行完了時間を算出する（Ｓ１３１２）。選ばれた１つの論理コアで実行完了時間がデッドライン以内であれば、選ばれた複数の論理コアの全ＡＰタスクを単一の物理コアに割り当てる（Ｓ１３１３のＹＥＳ）。選定した複数の論理コアの全ＡＰタスクのデッドラインを守ることが可能な物理コアが存在しない場合（Ｓ１３１３のＮＯ）、ユーザ端末へ割当不可通知を行う（Ｓ１３１４）。通知内容は、リアルタイム制御部２１０の管理テーブルである、優先度／コア割当管理テーブル２１４、ＡＰタスク情報テーブル２１５、優先度／コア割当設定テーブル２１６、システムタスク管理テーブル２１７及び物理コア状態テーブル２１８の内容である。
【００６５】
図１１から図１３で説明した物理コアの実優先度への変換の可否判定処理やデッドラインを守ることができるかどうかの判定処理は判定部２１２で実施しても良い。判定部２１２でこれらの処理を実施することにより論理コアに割当てるときの判定基準と物理コアに割当てるときの判定基準を統一することができ、システムの信頼性向上につながる。この際、判定部２１２は、例えば、論理コアに対応づけられたＡＰタスクが指定された実行時間内に実行可能かどうかを判定する。前記判定部２１２が指定された実行時間内に実行できないと判定したとき、出力部である外部出力装置１０５は、論理コアの識別子と実行できないと判定されたＡＰタスクの識別子を含む情報をユーザ端末に出力する。また、前記判定部２１２は、論理コアに対応づけられたＡＰタスクに指定された仮想優先順位を設定可能かどうか判定する。この場合、前記判定部２１２が、指定された仮想優先順位を設定できないと判定したとき、外部出力装置１０５は、論理コアの識別子と、仮想優先順位を設定できないと判定されたＡＰタスクの識別子を含む情報をユーザ端末に出力する。さらに、前記判定部２１２は、ＡＰタスクが関連付けられた複数の論理コアを単一の物理コアに割当て、ＡＰタスクを実行するとき、ＡＰタスクを論理コアに関連付けられたときに指定された仮想優先順位を物理コアの実優先順位に変換可能かどうかを判定する。前記判定部２１２が、変換可能と判定したとき、割当部２１３は、変換可能と判定された物理コアへ複数の論理コアに関連付けられたＡＰタスクを実行するよう割当てることができる。また、外部出力装置１０５は、前記判定部２１２が、指定された実行時間内にＡＰタスクを実行可能な物理コアがＣＰＵ１０１に無いと判定した場合、物理コアを割付けることができなかった論理コアと指定された実行時間内に実行できないＡＰタスクを含む情報をユーザ端末に出力する。
【００６６】
図１４はＡＰタスク生成部２２０による、ＡＰタスク生成処理のフローチャートである。ＡＰタスク生成部２２０は、ＡＰタスク情報テーブル２１５を読出す（Ｓ１４０１）。次に、ＩＯ処理識別子２１５Ｈに対応するＩＯ処理プログラムを、外部ＩＯ制御部２４０へ登録する（Ｓ１４０２）。
【００６７】
次に汎用ＯＳ２００に対してＡＰタスクの生成要求を行い（Ｓ１４０３）、さらに、優先度／コア割当設定テーブル２１６から実優先度２１６Ｃと、物理コア識別子２１６Ｂに格納されている前記生成要求したＡＰタスクの実優先度と物理コアの値を読出し、汎用ＯＳ２００へ前記実優先度及び物理コアの割当を要求する（Ｓ１４０４）。汎用ＯＳ２００からＡＰタスクの起動イベントを受信すると、優先度／コア割当設定テーブル２１６の実行状態２１６ＤにＡＰタスクが実行されていることを示す「１」を格納する（Ｓ１４０５）。
【００６８】
次に、汎用ＯＳ２００へ共有メモリの割当を要求し、割り当てられた共有メモリの識別子を共有メモリ識別子２１６Ｅに格納し、共有メモリ状態２１６Ｆに共有メモリが割り当てられていることを示す「１」を格納する（Ｓ１４０６）。ＡＰタスク情報テーブル２１５に処理対象のＡＰタスクが存在すれば、Ｓ１４０１の処理を再開する（Ｓ１４０７のＮＯ）。ＡＰタスクの生成が終了すると（Ｓ１４０７のＹＥＳ）、物理コア状態テーブル２１８に、ＡＰタスクが割り当てられた物理コアの運用状態２１８Ｃに物理コアを運用していることを示す「１」を格納し、汎用ＯＳ２００への要求によりＡＰタスク監視部２３０が監視タスクを生成し、システムタスク管理テーブル２１７のシステムタスク識別子２１７Ａの「ＡＰ＿ＷＤＴ」の実優先度２１７Ｅ及び物理コア識別子２１７Ｄを読出し、汎用ＯＳ２００へ前記実優先度及び物理コア割り当ての要求を行い、汎用ＯＳ２００からのタスク生成イベントを受信し、前記「ＡＰ＿ＷＤＴ」の実行状態２１７Ｆに実行中であることを示す「１」を格納する（Ｓ１４０８）。
【００６９】
図１５は監視タスクによる、ＡＰタスク監視処理のフローチャートである。監視タスクは、汎用ＯＳ２００により起動されると、起動時間を、システムタスク管理テーブル２１７の実行状態２１７Ｆに格納する（Ｓ１５０１）。
【００７０】
ＡＰタスクよりも低優先度の「ＰＲＯＣＥＳＳ」のシステムタスクである監視タスクは、同物理コア上で実行されている全ＡＰタスクの処理が終了してから、汎用ＯＳ２００によって実行される。この際、監視タスクは、自身の実行時間を取得し、システムタスク管理テーブル２１７の実行状態２１７Ｅに格納している実行時間との差分を算出し、物理コア状態テーブル２１８の処理時間の運用実績値２１８Ｅに格納する（Ｓ１５０２）。前記取得した自身の実行時間を、システムタスク管理テーブル２１７の実行状態２１７Ｅに格納し、実行状態を更新する（Ｓ１５０３）。この例では実行状態を示すカラムに実行時間を格納しているが、実行状態を示すカラムとは別に実行時間を格納するカラムを設けても良い。ＡＰ監視タスクの実行状態は、実行開始時間として使っても明確に実行中だという判断することが可能なので、ＡＰ監視タスクの処理時間とは、今回取得した実行時間から、前回２１７Ｅに格納していた時間の差となります。その差は、２１８Ｅの運用実績として格納されます。この運用実績と、計算値２１８Ｄとの大小比較でデッドラインオーバー判定しています。
【００７１】
次に、物理コア状態テーブル２１８の当該物理コアで予め定められた期間（周期）に実行がスケジュールされたシステムタスクとＡＰタスクを実行したときの処理時間の合計値である運用実績値２１８Ｅと、スケジュールしたときの計算値２１８Ｄとの差分を算出する（Ｓ１５０４）。前記運用実績値が計算値を上回るとデッドラインオーバーと判断する（Ｓ１５０５のＹＥＳ）。
【００７２】
次に、前記デッドラインオーバー発生時の処理を行う（Ｓ１５０６）。前記デッドラインオーバー発生時の処理としては、デッドラインが発生した物理コア上の全ＡＰタスクのみを止め、ＡＰタスク情報テーブル２１５の内容とともにデッドラインが発生した旨の情報をディスプレイに表示する。その場合、ユーザは、ＡＰタスクの処理が、ＡＰタスク情報テーブル２１５に登録されたＡＰタスクの周期内で実行されたか否かを確認することができる。デッドラインオーバーが発生していない場合（Ｓ１５０５のＮＯ）、監視タスクは、前記Ｓ１５０２の処理を継続する。この場合、監視タスクは、物理コアで実行されるＡＰタスクの実実行時間を測定し、測定されたＡＰタスクの実実行時間がＡＰタスクに設定された周期を超えているかどうかを判断する。監視タスクが、測定されたＡＰタスクの実実行時間がＡＰタスクに設定された周期を超えていると判定した場合、判定部２１２は、ＡＰタスクの識別子、ＡＰタスクを実行した物理コアの識別子及びＡＰタスクが関連付けられた論理コアの識別子を、外部出力装置１０５が出力するよう指示する判断部として機能する。
【００７３】
図１６は、外部ＩＯ制御部２４０のＩＯ処理のフローチャートである。外部ＩＯミドルプログラムである外部ＩＯ制御部２４０は、ＡＰタスク生成部２２０によって登録されたＡＰタスク情報テーブル２１５のＩＯ処理識別子２１５Ｈに対応するＩＯ処理タスクを、汎用ＯＳ２００への要求によって生成し（Ｓ１６０１）、前記生成したＩＯ処理タスクに対して、システムタスク管理テーブル２１７のシステムタスク識別子２１７Ａの「ＩＯ＿ＰＲＯＣＥＳＳ」の実優先度２１７Ｄと物理コア識別子２１７Ｃに格納している情報を読出し、汎用ＯＳ２００への要求より実優先度と物理コアを割り当てる（Ｓ１６０２）。
【００７４】
次に、外部ＩＯ制御部２４０は、汎用ＯＳ２００から、ＩＯイベントを受信すると（Ｓ１６０３）、前記生成したＩＯ処理タスクの実優先度を、システムタスク管理テーブル２１７の「リアルタイム制御部２１０」の実優先度に調整する（Ｓ１００４）。即ち、前記ＩＯ処理タスクは、ＡＰタスクよりも低優先度に設定されているが、汎用ＯＳ２００から、ＩＯイベントを受信した場合には、ＩＯ処理タスクの応答性を高めるために、リアルタイム制御部２１０と同じ実優先度に変更される。
【００７５】
この後、外部ＩＯミドルプログラムである外部ＩＯ制御部２４０は、汎用ＯＳ２００から受信したＩＯデータをＩＯ処理タスクに受け渡し（Ｓ１６０５）、このルーチンでの処理を終了する。この際、ＩＯ処理タスクに受け渡されたデータは、優先度／コア割当設定テーブル２１６の共有メモリ識別子２１６Ｅに格納されている共有メモリに格納され、その後、ＡＰタスクに渡される。ＩＯデータが共有メモリに格納されると、前記ＩＯ処理タスクは、システムタスク識別子２１７Ａの「ＩＯ＿ＰＲＯＣＥＳＳ」の実優先度に戻される。ＩＯ処理タスクとＡＰタスクには、異なる実コア（ＣＰＵコア）が割当てられ、さらにＩＯデータの受け渡しを共有メモリで行うため、ＩＯ処理タスクの処理時間に対する予測性は保証される。
【００７６】
本実施例によれば、汎用ＯＳ２００上でＡＰタスクとシステムタスクが実行されるシステムであっても、ＡＰタスクとシステムタスク間の性能が干渉するのを軽減することができ、結果として、ＡＰタスクのリアルタイム性を保証することができる。即ち、ＡＰタスクの処理時間のデッドラインを守り、ＡＰタスクの処理時間の予測性（ＡＰタスクの最長処理時間の予測性）を高めることができる。また、ＡＰタスクの処理時間や最長処理時間を容易に予測することができるので、ＡＰタスクの設計及びシステム設計が容易になる。
【００７７】
また、リアルタイム制御部２１０は、ＡＰタスクよりも高優先度のプログラムであって、ＡＰタスクの異常の有無を監視する機能を有し、ＡＰタスクの処理が暴走するような異常時でも、ＡＰタスクの処理を停止させることができるので、ＡＰタスクの異常によって、システム全体が不安定となるのを防止し、システムの安全性の向上に寄与することができる。
【実施例２】
【００７８】
本発明のリアルタイムシステムが運用中で、新規ＡＰタスクを追加する実施例である。図１３の処理においてシステム運用中であるかどうかを判断し、システム運用中の処理を追加・改良することで容易に実施可能である。
【００７９】
例えば、新規ＡＰタスクに割り当てる物理コアを選定する時に、ＡＰタスク情報テーブル２１５と優先度／コア割当設定テーブル２１６を読出し、新規追加ＡＰタスクの論理コアのみが割当てられた物理コアが無い場合新規追加ＡＰタスクを割当てる論理コアに既に割り当てられているＡＰタスクが割り当てられた物理コアをＡＰタスク情報テーブル２１５から見つけ出し、物理コア状態テーブル２１８の運用状態２１８Ｃが、運用中であれば、その物理コア上で実行されている全ＡＰタスクと、新規追加のＡＰタスクの実優先度及び処理時間、実行周期を取り入れ、単一物理コアでデッドラインを守ることが可能かどうか判断し、可能であれば、前記新規追加ＡＰタスクを前記物理コアへ割り当てる。
【００８０】
もし、新規追加ＡＰタスクの論理コアが物理コアに割り当てられていない場合、全物理コアに対して物理コア状態テーブル２１８の運用状態２１８Ｃを読出し、単一物理コアに割当可能かをチェックし、割当可能であれば割当を実施する。割当不可であれば、割当不可通知をユーザに対して行う。
【００８１】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【００８２】
また、上記の各構成、機能等は、それらの一部又は全部を、例えば、集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Solid  State  Drive）等の記録装置、または、ＩＣ（Integrated  Circuit）カード、ＳＤ（Secure  Digital）メモリカード、ＤＶＤ（Digital  Versatile  Disc）等の記録媒体に記録して置くことができる。
【符号の説明】
【００８３】
１００  実計算機、１０１  ＣＰＵ、１０２  物理メモリ、１０３  外部記憶装置、１０４  ネットワークインタフェース、１０５  外部出力装置、１０６  物理コア、２００  汎用ＯＳ、２０１  システムタスク群、２１０  リアルタイム制御部、２１１  入力部、２１２  判定部、２１３  割当部、２１４  優先度／コア割当管理テーブル、２１５  ＡＰタスク情報テーブル、２１６  優先度／コア割当設定テーブル、２１７システムタスク管理テーブル、２１８  物理コア状態テーブル、２２０  ＡＰタスク生成部、２３０  監視部、２４０  外部ＩＯ制御部、２５０  ＡＰタスク群。
【図１】
2016001417.tif 000003
【図２】
2016001417.tif 000004
【図３】
2016001417.tif 000005
【図４】
2016001417.tif 000006
【図５】
2016001417.tif 000007
【図６】
2016001417.tif 000008
【図７】
2016001417.tif 000009
【図８】
2016001417.tif 000010
【図９】
2016001417.tif 000011
【図１０】
2016001417.tif 000012
【図１１】
2016001417.tif 000013
【図１２】
2016001417.tif 000014
【図１３】
2016001417.tif 000015
【図１４】
2016001417.tif 000016
【図１５】
2016001417.tif 000017
【図１６】
2016001417.tif 000018