(57)【要約】【課題】産業用サーバのマイクロカーネルアーキテクチャの実現方法を提供する。【解決手段】本態様は、ユーザ定義に応じて、システム起動の前に、マイクロカーネルタスクタイプ、マイクロカーネルタスク優先度及び／又は制御プログラムの動作時間の重みに基づき、制御プログラムの関連性を計算し、関連性に基づいて各物理カーネルにおいて動作する制御プログラムの数および各制御プログラムが各物理カーネルにおいて動作することを決定し、ユーザ定義の方式として、単一の物理カーネルが複数のマイクロカーネルタイムスライスを制御すること、および単一のマイクロカーネルが計算リソースを占有してクロス物理カーネルスのケジューリングを行うことに限らない。これによって、産業用サーバのマイクロカーネルの産業現場でのリアルタイム制御および自由な組み合わせを実現する。【選択図】図１
2020009404.tif 000002
【特許請求の範囲】
【請求項１】
産業用サーバに適用され、前記産業用サーバにおいて産業用サーバのハードウェアに基づいたＯＳカーネルは、複数の物理カーネルをサポートする産業用サーバのマイクロカーネルアーキテクチャの実現方法であって、
システム起動の前に、ＯＳカーネルが、それぞれの制御プログラムに対応するマイクロカーネルタスクタイプの重み、それぞれの制御プログラムに対応するマイクロカーネルタスク優先度及び／又はそれぞれの制御プログラムの動作時間の重みに基づき、スケジューリング設定情報を生成することと、
前記ＯＳカーネルが、前記スケジューリング設定情報に基づいて前記ＯＳカーネルにおいて動作する制御プログラムを設定することと、
前記ＯＳカーネルが、設定された制御プログラムを起動させることと、を含み、
前記スケジューリング設定情報に、各物理カーネルにおいて動作する制御プログラムの数と、各物理カーネルにおいて動作する制御プログラムのスケジューリングアルゴリズムと、全ての制御プログラムのうちの少なくとも１つが複数の物理カーネルにおいて動作することと、が含まれる、
ことを特徴とする産業用サーバのマイクロカーネルアーキテクチャの実現方法。
【請求項２】
前記ＯＳカーネルが、前記スケジューリング設定情報に基づいて前記ＯＳカーネルにおいて動作する制御プログラムを設定することに、
仮想化マシンプログラムによってハードウェアに対して仮想化処理を行い、前記スケジューリング設定情報に基づいて少なくとも１つの物理カーネルにおいて複数の制御プログラムを設定すること、及び／又は、
前記スケジューリング設定情報に基づいて各物理カーネルにおいて動作する各制御プログラムのスケジューリングアルゴリズムを設定すること、及び／又は、
複数の物理カーネルを仮想化し、全ての制御プログラムのうちの少なくとも１つについて、前記スケジューリング設定情報に基づき、該制御プログラムを対応付けて複数の制御プログラムを取得し、取得した前記複数の制御プログラムを前記複数の物理カーネルに割り当てること、が含まれ、
前記スケジューリングアルゴリズムは、時刻表に基づいたスケジューリングアルゴリズム又は優先度に基づいたスケジューリングアルゴリズムを含む、ことを特徴とする請求項１に記載の方法。
【請求項３】
前記ＯＳカーネルが、それぞれの制御プログラムに対応するマイクロカーネルタスクタイプの重み、それぞれの制御プログラムに対応するマイクロカーネルタスク優先度及び／又はそれぞれの制御プログラムの動作時間の重みに基づき、スケジューリング設定情報を生成することに、
粗粒度ロックによるスケジューリング方法を用いることにより、物理カーネルごとに１つのロックを対応させ、時刻表に基づいたスケジューリングアルゴリズム又は優先度に基づいたスケジューリングアルゴリズムによって、単一の物理カーネルにおける複数の制御プログラムから１つの制御プログラムを特定し、特定した前記制御プログラムから前記単一の物理カーネルに対応するロックを取得し、前記単一の物理カーネルに対応するロックを取得した制御プログラムが前記単一の物理カーネルを独占してカーネルモード操作を実行し、それぞれの前記制御プログラムのマイクロカーネルタスクタイプ、それぞれの前記制御プログラムのマイクロカーネルタスク優先度及び／又はそれぞれの前記制御プログラムの動作時間に基づき、前記スケジューリング設定情報を生成すること、または、
細粒度ロックによるスケジューリング方法を用いることにより、物理カーネルごとに１つのロックを対応させ、全ての制御プログラムのうちの少なくとも１つについて、該制御プログラムの所要計算リソースに応じて該制御プログラムを対応付けて複数の制御プログラムを取得し、前記複数の制御プログラム同士の関連性に基づいて前記複数の制御プログラムを異なる物理カーネルに割り当て、前記複数の制御プログラムのそれぞれが割り当てられた物理カーネルに対応するロックを取得し、ロックを取得した前記複数の制御プログラムのそれぞれが割り当てられた複数の物理カーネルにおいて同時にカーネルモード操作を実行して前記複数の制御プログラムの並行実行を実現し、それぞれの前記制御プログラムのマイクロカーネルタスクタイプ、それぞれの前記制御プログラムのマイクロカーネルタスク優先度及び／又はそれぞれの前記制御プログラムの動作時間に基づき、前記スケジューリング設定情報を生成することが含まれる、ことを特徴とする請求項１に記載の方法。
【請求項４】
前記時刻表に基づいたスケジューリングアルゴリズムは、
第１タイマーの持続時間がメインフレーム時間であり、第２タイマーが前記メインフレーム時間内の各時間窓の順序に応じて次々に起動されるとともに、前記第２タイマーの持続時間が次々に各時間窓の持続時間と同じであるように、複数のタイマーを設定することと、
前記メインフレーム時間を周期とし、前記第１タイマーおよび前記第２タイマーを起動しながら、時刻表の設定に基づいて制御プログラムをスケジュールし、前記第２タイマーのタイミングが到来すると、次の制御プログラムをスケジュールし、かつ、前記第１タイマーのタイミングが到来すると、次の周期を開始することと、を含み、
前記時刻表は、前記各時間窓のスタート・ストップ時間と、各時間窓に対応する制御プログラムとを含む、ことを特徴とする請求項２に記載の方法。
【請求項５】
前記ＯＳカーネルが、それぞれの制御プログラムに対応するマイクロカーネルタスクタイプの重み、それぞれの制御プログラムに対応するマイクロカーネルタスク優先度及び／又はそれぞれの制御プログラムの動作時間の重みに基づき、スケジューリング設定情報を生成することに、
前記ＯＳカーネルが、それぞれの制御プログラムに対応するマイクロカーネルタスクタイプの重み、それぞれの制御プログラムに対応するマイクロカーネルタスク優先度及び／又はそれぞれの制御プログラムの動作時間の重み、及びそれぞれの制御プログラムのサービスニーズに基づき、スケジューリング設定情報を生成することが含まれる、ことを特徴とする請求項１に記載の方法。
【請求項６】
前記スケジューリング設定情報は、各制御プログラム同士の動作トリガー条件及び／又はサービスパラメータを更に含む、ことを特徴とする請求項５に記載の方法。
【請求項７】
前記スケジューリング設定情報は、各制御プログラムについて、該制御プログラムに含まれる各サブ制御プログラムと、
該制御プログラムの各サブ制御プログラムが動作する物理カーネルと、
該制御プログラムの各サブ制御プログラム同士の動作トリガー条件及び／又はサービスパラメータと、を更に含み、
該制御プログラムの少なくとも１つのサブ制御プログラムが１つ又は複数の物理カーネルにおいて動作する、ことを特徴とする請求項５に記載の方法。
【請求項８】
前記ＯＳカーネルが、それぞれの制御プログラムに対応するマイクロカーネルタスクタイプの重み、それぞれの制御プログラムに対応するマイクロカーネルタスク優先度及び／又はそれぞれの制御プログラムの動作時間の重み、及びそれぞれの制御プログラムのサービスニーズに基づき、スケジューリング設定情報を生成することに、
それぞれの制御プログラムについて、前記ＯＳカーネルが、該制御プログラムのリソースニーズ及び各マイクロカーネルによる計算リソースに基づいて該制御プログラムを複数のサブ制御プログラムに分割することと、
前記ＯＳカーネルが、各サブ制御プログラムに対応するマイクロカーネルタスクタイプの重み、各サブ制御プログラムに対応するマイクロカーネルタスク優先度及び／又は各サブ制御プログラムの動作時間の重み、及び各サブ制御プログラムのサービスニーズに基づき、スケジューリング設定情報を生成することと、が更に含まれる、ことを特徴とする請求項７に記載の方法。
【請求項９】
それぞれの制御プログラムについて、前記ＯＳカーネルが、該制御プログラムのリソースニーズ及び各マイクロカーネルによる計算リソースに基づいて該制御プログラムを複数のサブ制御プログラムに分割することに、
それぞれの制御プログラムについて、前記ＯＳカーネルが、該制御プログラムの計算量と各物理カーネルにおけるマイクロカーネルによる計算能力の測量パラメータに基づいて該制御プログラムを複数のサブ制御プログラムに分割すること、または、
前記ＯＳカーネルが、該制御プログラムのＩ／Ｏインターフェースの数および物理カーネルにおけるマイクロカーネルによるＩ／Ｏインターフェースの数に基づいて該制御プログラムを複数のサブ制御プログラムに分割することが含まれる、ことを特徴とする請求項８に記載の方法。
【請求項１０】
前記ＯＳカーネルが、それぞれの制御プログラムに対応するマイクロカーネルタスクタイプの重み、それぞれの制御プログラムに対応するマイクロカーネルタスク優先度及び／またはそれぞれの制御プログラムの動作時間の重み、及びそれぞれの制御プログラムのサービスニーズに基づき、スケジューリング設定情報を生成することに、
前記ＯＳカーネルが、それぞれの制御プログラムに対応するマイクロカーネルタスクタイプの重み、それぞれの制御プログラムに対応するマイクロカーネルタスク優先度及び／またはそれぞれの制御プログラムの動作時間の重み、それぞれの制御プログラムのサービスニーズ、及びシステムによる基本プログラムブロックに基づき、スケジューリング設定情報を生成することが含まれ、
前記スケジューリング設定情報は、各制御プログラムに含まれる各基本プログラムブロックと、各基本プログラムブロック同士の動作トリガー条件及び／またはサービスパラメータとを更に含む、ことを特徴とする請求項５に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施例は、産業用サーバの技術に関し、特に産業用サーバのマイクロカーネルアーキテクチャの実現方法に関する。
【背景技術】
【０００２】
産業用サーバのハードウェアに基づいた仮想ＯＳ（ｖｉｒｔｕａｌ  ｏｐｅｒａｔｉｎｇ  ｓｙｓｔｅｍ）は、ｉ７を例として、４つの物理カーネルをサポート可能となり、各カーネルにおいて１つの仮想化マシンであるマイクロ制御カーネルが動作し、マイクロ制御カーネルにＰＬＣが含まれる。
【０００３】
しかしながら、１つのカーネルにおいて１つのみのＰＬＣが動作し得、リソースを無駄遣いし、実行可能な機能も制限されている。また、マルチコアＰＬＣのスケジューリング方法は、リアルタイム性の高いサービスシナリオに適用される優先順位スケジューリングアルゴリズムと、リアルタイム性の高くないサービスシナリオに適用される時刻表スケジューリングアルゴリズムとを含み、何れかのスケジューリングアルゴリズムは、サービスニーズの複雑なシナリオで、ユーザのサービスニーズを満たしにくいため、ＣＰＵリソースの使用率が低いという問題を生じてしまう。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の実施例は、産業用サーバのマイクロカーネルの産業現場でのリアルタイム制御および自由な組み合わせを実現するように、産業用サーバのマイクロカーネルアーキテクチャの実現方法を提供する。
【課題を解決するための手段】
【０００５】
本発明の実施例は、産業用サーバに適用され、産業用サーバにおいて産業用サーバのハードウェアに基づいたＯＳカーネルは、複数の物理カーネルをサポートする産業用サーバのマイクロカーネルアーキテクチャの実現方法であって、
システム起動の前に、ＯＳカーネルは、それぞれの制御プログラムに対応するマイクロカーネルタスクタイプの重み、それぞれの制御プログラムに対応するマイクロカーネルタスク優先度及び／又はそれぞれの制御プログラムの動作時間の重みに基づき、スケジューリング設定情報を生成することと、
前記ＯＳカーネルは、前記スケジューリング設定情報に基づいて前記ＯＳカーネルにおいて動作する制御プログラムを設定することと、
前記ＯＳカーネルは、設定された制御プログラムを起動させることと、を含み、
前記スケジューリング設定情報に、各物理カーネルにおいて動作する制御プログラムの数と、各物理カーネルにおいて動作する制御プログラムのスケジューリングアルゴリズムと、全ての制御プログラムのうちの少なくとも１つが複数の物理カーネルにおいて動作することと、が含まれる産業用サーバのマイクロカーネルアーキテクチャの実現方法を提供する。
【０００６】
オプションとして、前記ＯＳカーネルが、それぞれの制御プログラムに対応するマイクロカーネルタスクタイプの重み、それぞれの制御プログラムに対応するマイクロカーネルタスク優先度及び／又はそれぞれの制御プログラムの動作時間の重みに基づき、スケジューリング設定情報を生成することに、
それぞれの制御プログラムに対応するマイクロカーネルタスクタイプの重み、それぞれの制御プログラムに対応するマイクロカーネルタスク優先度及び／又はそれぞれの制御プログラムの動作時間の重みに基づき、制御プログラムの関連性を計算することと、
前記関連性に基づいて前記スケジューリング設定情報を生成することとが含まれる。
【０００７】
オプションとして、それぞれの前記制御プログラムに対応するマイクロカーネルタスクタイプの重み、それぞれの前記制御プログラムに対応するマイクロカーネルタスク優先度及び／又はそれぞれの前記制御プログラムの動作時間の重みに基づき、制御プログラムの関連性を計算することは、
前記マイクロカーネルタスクタイプ、マイクロカーネルタスク優先度および制御プログラムの動作時間の重みに基づき、関連性を計算すること、または、
前記マイクロカーネルタスクタイプおよびマイクロカーネルタスク優先度の重みに基づき、関連性を計算すること、または、
前記マイクロカーネルタスクタイプおよび制御プログラムの動作時間の重みに基づき、関連性を計算することを含む。
【０００８】
オプションとして、前記ＯＳカーネルが、前記スケジューリング設定情報に基づいて前記ＯＳカーネルにおいて動作する制御プログラムを設定することに、
仮想化マシンプログラムによってハードウェアに対して仮想化処理を行い、前記スケジューリング設定情報に基づいて少なくとも１つの物理カーネルに複数の制御プログラムを割り当てること、及び／又は、
前記スケジューリング設定情報に基づいて各物理カーネルにおいて動作する各制御プログラムのスケジューリングアルゴリズムを設定すること、及び／又は、
複数の物理カーネルを仮想化し、全ての制御プログラムのうちの少なくとも１つについて、前記スケジューリング設定情報に基づき、該制御プログラムを対応付けて複数の制御プログラムを取得し、取得した前記複数の制御プログラムを前記複数の物理カーネルに割り当てること、が含まれる。
【０００９】
前記スケジューリングアルゴリズムは、時刻表に基づいたスケジューリングアルゴリズム又は優先度に基づいたスケジューリングアルゴリズムを含む。
【００１０】
オプションとして、前記ＯＳカーネルが、それぞれの制御プログラムに対応するマイクロカーネルタスクタイプの重み、それぞれの制御プログラムに対応するマイクロカーネルタスク優先度及び／又はそれぞれの制御プログラムの動作時間の重みに基づき、スケジューリング設定情報を生成することに、
粗粒度ロックによるスケジューリング方法を用いることにより、物理カーネルごとに１つのロックを対応させ、時刻表に基づいたスケジューリングアルゴリズム又は優先度に基づいたスケジューリングアルゴリズムによって、単一の物理カーネルにおける複数の制御プログラムから１つの制御プログラムを特定し、特定した前記制御プログラムから前記単一の物理カーネルに対応するロックを取得し、前記単一の物理カーネルに対応するロックを取得した制御プログラムが単一の前記物理カーネルを独占してカーネルモード操作を実行し、それぞれの前記制御プログラムのマイクロカーネルタスクタイプ、それぞれの前記制御プログラムのマイクロカーネルタスク優先度及び／又はそれぞれの前記制御プログラムの動作時間に基づき、前記スケジューリング設定情報を生成すること、または、
細粒度ロックによるスケジューリング方法を用いることにより、物理カーネルごとに１つのロックを対応させ、全ての制御プログラムのうちの少なくとも１つについて、該制御プログラムの所要計算リソースに応じて制御プログラムを対応付けて複数の制御プログラムを取得し、前記複数の制御プログラム同士の関連性に基づいて前記複数の制御プログラムを異なる物理カーネルに割り当て、前記複数の制御プログラムのそれぞれが割り当てられた物理カーネルに対応するロックを取得し、ロックを取得した前記複数の制御プログラムのそれぞれが割り当てられた複数の物理カーネルにおいて同時にカーネルモード操作を実行して前記複数の制御プログラムの並行実行を実現し、それぞれの前記制御プログラムのマイクロカーネルタスクタイプ、それぞれの前記制御プログラムのマイクロカーネルタスク優先度及び／又はそれぞれの前記制御プログラムの動作時間に基づき、前記スケジューリング設定情報を生成すること、が含まれる。
【００１１】
オプションとして、前記時刻表に基づいたスケジューリングアルゴリズムは、
第１タイマーの持続時間がメインフレーム時間であり、第２タイマーが前記メインフレーム時間内の各時間窓の順序に応じて次々に起動されるとともに、前記第２タイマーの持続時間が次々に各時間窓の持続時間と同じであるように、複数のタイマーを設定することと、
前記メインフレーム時間を周期とし、前記第１タイマーおよび前記第２タイマーを起動しながら、時刻表の設定に基づいて制御プログラムをスケジュールし、前記第２タイマーのタイミングが到来すると、次の制御プログラムをスケジュールし、かつ、前記第１タイマーのタイミングが到来すると、次の周期を開始することと、を含み、
前記時刻表は、前記各時間窓のスタート・ストップ時間と、各時間窓に対応する制御プログラムとを含む。
【００１２】
オプションとして、前記優先度に基づいたスケジューリングアルゴリズムは、
優先度メインインデックス番号ビットマップを走査して最高優先度に対応するメインインデックス番号を決定することと、
前記メインインデックス番号に対応する優先度サブインデックス番号ビットマップを走査して最高優先度に対応するサブインデックス番号を決定することと、
前記メインインデックス番号および前記サブインデックス番号に基づいて現在の最高優先度を計算し、前記最高優先度に対応する制御プログラムを決定することとを含む。
【００１３】
オプションとして、前記ＯＳカーネルが、それぞれの制御プログラムに対応するマイクロカーネルタスクタイプの重み、それぞれの制御プログラムに対応するマイクロカーネルタスク優先度及び／またはそれぞれの制御プログラムの動作時間の重みに基づき、スケジューリング設定情報を生成することに、
前記ＯＳカーネルが、それぞれの制御プログラムに対応するマイクロカーネルタスクタイプの重み、それぞれの制御プログラムに対応するマイクロカーネルタスク優先度及び／またはそれぞれの制御プログラムの動作時間の重み、及びそれぞれの制御プログラムのサービスニーズに基づき、スケジューリング設定情報を生成すること、が含まれる。
【００１４】
オプションとして、前記スケジューリング設定情報は、各制御プログラム同士の動作トリガー条件及び／またはサービスパラメータを更に含む。
【００１５】
オプションとして、前記スケジューリング設定情報は、各制御プログラについて、該制御プログラムに含まれる各サブ制御プログラムと、該制御プログラムの各サブ制御プログラムが動作する物理カーネルと、該制御プログラムの各サブ制御プログラム同士の動作トリガー条件及び／またはサービスパラメータと、を更に含み、該制御プログラムの少なくとも１つのサブ制御プログラムは１つ又は複数の物理カーネルにおいて動作する。
【００１６】
オプションとして、前記ＯＳカーネルが、それぞれの制御プログラムに対応するマイクロカーネルタスクタイプの重み、それぞれの制御プログラムに対応するマイクロカーネルタスク優先度及び／またはそれぞれの制御プログラムの動作時間の重み、及び制御プログラムのサービスニーズに基づき、スケジューリング設定情報を生成することに、
それぞれの制御プログラムについて、前記ＯＳカーネルが、該制御プログラムのリソースニーズ及びマイクロカーネルによる計算リソースに基づいて該制御プログラムを複数のサブ制御プログラムに分割することと、
前記ＯＳカーネルが、各サブ制御プログラムに対応するマイクロカーネルタスクタイプの重み、各サブ制御プログラムに対応するマイクロカーネルタスク優先度及び／または各サブ制御プログラムの動作時間の重み、及び各サブ制御プログラムのサービスニーズに基づき、スケジューリング設定情報を生成することと、が更に含まれる。
【００１７】
それぞれの制御プログラムについて、前記ＯＳカーネルが、該制御プログラムのリソースニーズ及び各マイクロカーネルによる計算リソースに基づいて該制御プログラムを複数のサブ制御プログラムに分割することに、
それぞれの制御プログラムについて、前記ＯＳカーネルが、該制御プログラムの計算量及び各物理カーネルにおけるマイクロカーネルによる計算能力の測量パラメータに基づいて該制御プログラムを複数のサブ制御プログラムを分割すること、或いは、
前記ＯＳカーネルが、該制御プログラムのＩ／Ｏインターフェース数および各物理カーネルにおけるマイクロカーネルによるＩ／Ｏインターフェースの数に基づいて該制御プログラムを複数のサブ制御プログラムに分割すること、が含まれる。
【００１８】
オプションとして、前記ＯＳカーネルが、それぞれの制御プログラムに対応するマイクロカーネルタスクタイプの重み、それぞれの制御プログラムに対応するマイクロカーネルタスク優先度及び／またはそれぞれの制御プログラムの動作時間の重み、及びそれぞれの制御プログラムのサービスニーズに基づき、スケジューリング設定情報を生成することに、
前記ＯＳカーネルが、それぞれの制御プログラムに対応するマイクロカーネルタスクタイプの重み、それぞれの制御プログラムに対応するマイクロカーネルタスク優先度及び／またはそれぞれの制御プログラムの動作時間の重み、それぞれの制御プログラムのサービスニーズ、及びシステムによる基本プログラムブロックに基づき、スケジューリング設定情報を生成することが含まれ、前記スケジューリング設定情報は、各制御プログラムに含まれる各基本プログラムブロックと、各基本プログラムブロック同士の動作トリガー条件及び／またはサービスパラメータとを更に含む。
【発明の効果】
【００１９】
本発明の実施例は、ユーザ定義に応じて、システム起動の前に、それぞれの制御プログラムに対応するマイクロカーネルタスクタイプ、それぞれの制御プログラムに対応するマイクロカーネルタスク優先度及び／又はそれぞれの制御プログラムの動作時間の重みに基づき、制御プログラムの関連性を計算し、関連性に基づいて各物理カーネルにおいて動作する制御プログラムの数および各制御プログラムが複数の物理カーネルにおいて動作することを決定し、ユーザ定義の方式は、単一の物理カーネルによって複数のマイクロカーネルタイムスライスを制御すること、および単一のマイクロカーネルが計算リソースを占有してクロス物理カーネルスのケジューリングを行うことに限らない。これによって、産業用サーバのマイクロカーネルの産業現場でのリアルタイム制御および自由な組み合わせを実現する。
【図面の簡単な説明】
【００２０】
【図１】本発明の実施例に係る産業用サーバのマイクロカーネルアーキテクチャの実現方法のフローチャートである。
【図２】本発明の実施例に係る産業用サーバの構造模式図である。
【図３】本発明の実施例に係る粗粒度ロックによるスケジューリングの模式図である。
【図４】本発明の実施例に係る細粒度ロックによるスケジューリングの模式図である。
【図５】本発明の実施例に係る時刻表の模式図である。
【図６】本発明の実施例に係る優先度インデックス番号ビットマップの模式図である。
【図７】本発明の実施例４に係る産業用サーバのマイクロカーネルアーキテクチャの実現方法のフローチャートである。
【図８】本発明の実施例に係る制御プログラム同士の協働模式図である。
【図９】本発明の実施例に係るサブ制御プログラム同士の協働模式図である。
【図１０】本発明の実施例に係る基本プログラムブロック同士の協働模式図である。
【図１１】本発明の実施例に係る産業用サーバのマイクロ化カーネルアーキテクチャの実現装置の構造模式図である。
【図１２】本発明の実施例に係る産業用サーバの構造模式図である。
【発明を実施するための形態】
【００２１】
従来の工業現場では、単一の物理カーネルにおいて固定的に単一のマイクロカーネルが動作すること、または単一のマイクロカーネルが単一の物理カーネルの計算リソースしか利用できないことによる、物理カーネルの計算リソースの使用率が低いという問題について、本発明の実施例は、ユーザ定義に応じて、システム起動の前に、マイクロカーネルタスクタイプ、マイクロカーネルタスク優先度及び／又は制御プログラムの動作時間の重みに基づき、制御プログラムの関連性を計算し、関連性に基づいて各物理カーネルにおいて動作する制御プログラムの数および各制御プログラムが各物理カーネルにおいて動作することを決定し、ユーザ定義の方式として、単一の物理カーネルが複数のマイクロカーネルタイムスライスを制御すること、および単一のマイクロカーネルが計算リソースを占有してクロス物理カーネルスのケジューリングを行うことに限らない。これによって、産業用サーバのマイクロカーネルの産業現場でのリアルタイム制御および自由な組み合わせを実現する。
【００２２】
以下、図面および実施例に基づいて本発明の実施例について更に詳細に説明する。ここで説明する具体的な実施例は、本発明の実施例を解釈するためのものに過ぎず、本発明の実施例を制限するものではないと理解すべきである。なお、便宜上、図面において、全部の構成ではなく、本発明の実施例に関する部分のみを示した。
【００２３】
実施例１
図１は、本発明の実施例に係る産業用サーバのマイクロカーネルアーキテクチャの実現方法のフローチャートであり、この方法は、産業用サーバに適用される。図２は、本発明の実施例に係る産業用サーバの構造模式図である。図２から分かるように、産業用サーバは、産業用サーバのハードウェアと、産業用サーバのハードウェアに基づいたＯＳカーネルと、ＯＳカーネルがサポートする複数の物理カーネルと、を備え、各物理カーネルにおいて複数の仮想化マシンが動作可能となり、各仮想化マシンがいずれも１つのマイクロカーネルに対応し、制御プログラムがマイクロカーネルにおいて動作する。つまり、各物理カーネルにおいて複数の制御プログラムが動作可能となる。１つの物理カーネル上で複数の該制御プログラムを実行させるために、本発明の実施例は、仮想化技術によって、ＯＳにおいて複数のマイクロカーネルを仮想化し、マイクロカーネル上で制御プログラムを実行させ、ＯＳによって制御プログラムをスケジューリングする。例示的に、合計３つの物理カーネルａ、ｂおよびｃが存在し、物理カーネルａにおいて３つの制御プログラムａ１、ａ２およびａ３が動作し、物理カーネルｂにおいて３つの制御プログラムｂ１、ｂ２およびｂ３が動作し、物理カーネルｃにおいて３つの制御プログラムｃ１、ｃ２およびｃ３が動作している。
【００２４】
本実施例において、カーネルのサービスに係る部分をカーネル外に移し、マイクロカーネル（Ｍｉｃｒｏ  Ｋｅｒｎｅｌ）を形成する。マイクロカーネルのＯＳは、カーネルにおいて最も基本的で不可欠なサービス、例えばプロセス間通信（ＩＰＣ）、メモリ管理、タスクスケジューリングしか提供しない。これ以外、ドライブ、ファイルシステム、ネットワークのようなサービスは、いずれもユーザモードで実現される。各サービス要素は、アドレス空間を共有せず、それぞれ独立したアドレス空間において動作する。マイクロカーネルＯＳは、ほとんどサービスモジュール間のメッセージ伝送によって要求を処理する。たとえば、１つのモジュールからより多くのメモリが必要とするという要求が送信された場合、該要求は、カーネルで要求を処理するサービスに送信される。処理が完了すると、結果をカーネルで返信する。
【００２５】
本実施例において、産業用サーバのマイクロカーネルアーキテクチャの実現方法は、ＯＳカーネルにより実行されてもよく、具体的にＯＳカーネルにおいて動作する仮想化マシンモニタにより実行されてもよい。本実施例に係る方法は、具体的に後述するステップを含む。
【００２６】
ステップ１０１において、システム起動の前に、ＯＳカーネルは、それぞれの制御プログラムに対応するマイクロカーネルタスクタイプの重み、それぞれの制御プログラムに対応するマイクロカーネルタスク優先度及び／又はそれぞれの制御プログラムの動作時間の重みに基づき、スケジューリング設定情報を生成する。前記スケジューリング設定情報に、各物理カーネルにおいて動作する制御プログラムの数と、各物理カーネルにおいて動作する制御プログラムのスケジューリングアルゴリズムと、全ての制御プログラムのうちの少なくとも１つが複数の物理カーネルにおいて動作することと、が含まれる。
【００２７】
本実施例において、各物理カーネルにおいて、動作周期が同じまたは異なる制御プログラムを含む複数の制御プログラムが動作可能となる。例示的に、図２に示すように、物理カーネルａ、ｂおよびｃにおいてそれぞれ３つの制御プログラムが動作し、物理カーネルａにおいて３つの制御プログラムａ１、ａ２およびａ３が動作し、物理カーネルｂにおいて３つの制御プログラムｂ１、ｂ２およびｂ３が動作し、物理カーネルｃにおいて３つの制御プログラムｃ１、ｃ２およびｃ３が動作している。ここで、ａ１、ａ２およびａ３は、同じ動作周期を有する制御プログラムであってもよく、ｂ１、ｂ２およびｂ３は、異なる動作周期を有する制御プログラムであってもよく、ｃ１およびｃ２の動作周期が同じであるがｃ３の動作周期と異っている。各物理カーネルにおいて動作する制御プログラムは、設定されたスケジューリングアルゴリズムによってスケジュールされてもよい。このスケジューリングアルゴリズムは、時刻表に基づいたスケジューリングアルゴリズム又は優先度に基づいたスケジューリングアルゴリズムを含み、異なる物理カーネルに異なるスケジューリングアルゴリズムが設定されてもよい。１つの制御プログラムは、１つ又は複数の物理カーネルにおいて動作してもよい。これから分かるように、１つの物理カーネルにおいて複数の制御プログラムが動作可能となり、これら複数の制御プログラムは、全機能を持つ制御プログラムであってもよく、１つの制御プログラムの一部の機能を持つ制御プログラムであってもよく、１つの制御プログラムが複数の物理カーネルに割り当てられて動作すると、各物理カーネルにおいて独立して動作し、つまり所在する物理カーネルのスケジューリングに参与する。異なる物理カーネルに異なるスケジューリングアルゴリズムが設定されてもよく、互いに影響しない。
【００２８】
ＯＳカーネルは、制御プログラムに対応するマイクロカーネルタスクタイプの重み、制御プログラムに対応するマイクロカーネルタスク優先度及び／又は制御プログラムの動作時間の重みに基づき、制御プログラムの関連性を計算し、関連性に基づいてスケジューリング設定情報を生成する。ここで、関連性の計算は、マイクロカーネルタスクタイプ、マイクロカーネルタスク優先度および制御プログラムの動作時間の重みに基づき、関連性を計算すること、または、マイクロカーネルタスクタイプおよびマイクロカーネルタスク優先度の重みに基づき、関連性を計算すること、または、マイクロカーネルタスクタイプおよび制御プログラムの動作時間の重みに基づき、関連性を計算することを含む。ここで、制御プログラムに対応するマイクロカーネルタスクタイプは、該制御プログラムを実行させるマイクロカーネルのタスクである。制御プログラムの動作時間は、それぞれの制御プログラムに割当てられるタイムスライスである。
【００２９】
上記の通り、各物理カーネルにおいて、動作周期が同じまたは異なる制御プログラムを含む複数の制御プログラムが動作可能となる。つまり、複数の制御プログラムが１つの物理カーネルを共有し、ある制御プログラムがカーネルモード操作を実行しようとすると、物理カーネルが当該制御プログラムをサポートする。物理カーネルを排他的に使用するために、いずれかのカーネルモード操作を実行する必要がある制御プログラムは、１つのロック（ｌｏｃｋ）の取得を申請する必要があり、ロックを取得した制御プログラムしか物理カーネルを用いてカーネルモード操作を実行することができない。制御プログラムの所要計算リソースの粒度のサイズに応じて、粗粒度ロックによるスケジューリング方法と細粒度ロックによるスケジューリング方法に分けられる。
【００３０】
図３は、本発明の実施例に係る粗粒度ロックによるスケジューリングの模式図である。粗粒度ロックによるスケジューリングとは、物理カーネルごとに１つのロックを対応させ、ロックを取得した制御プログラムは物理カーネル全体を独占することができる。そのため、同一時間内に、１つの制御プログラムしか物理カーネルを用いてカーネルモード操作を実行できず、他のカーネルモード操作を実行する必要のある制御プログラムは、スケジュールされるまでロックを取得できない。粗粒度ロックによるスケジューリング方法を用いることにより、単一の物理カーネルにおける複数の制御プログラムのスケジューリングアルゴリズムは、時刻表に基づいたスケジューリングアルゴリズムまたは優先度に基づいたスケジューリングアルゴリズムを含む。例示的に、図２に示すように、合計３つの物理カーネルａ、ｂおよびｃが存在し、物理カーネルごとに１つのロックを対応させる。粗粒度は、物理カーネル内のスケジューリングが１つの完全な制御プログラムを単位として行われる。物理カーネルａにおいて３つの制御プログラムａ１、ａ２およびａ３が動作し、同一時間内に、１つの制御プログラムしか物理カーネルを用いてカーネルモード操作を実行できない。ここで、時刻表によるスケジューリングアルゴリズム又は優先度によるスケジューリングアルゴリズムに基づいて、制御プログラムａ１、ａ２およびａ３の間にスケジュールし、どの制御プログラムが物理カーネルａのロックを取得したかを確認することができる。同様に、物理カーネルｂにおいて動作する３つの制御プログラムｂ１、ｂ２およびｂ３、物理カーネルｃにおいて動作する３つの制御プログラムｃ１、ｃ２およびｃ３は、いずれも上述した方法でスケジューリングし、所在する物理カーネルに対応するロックの使用権を取得し、更に物理カーネルを用いてカーネルモード操作を実行することができる。
【００３１】
図４は、本発明の実施例に係る細粒度ロックによるスケジューリングの模式図である。制御プログラムの所要カーネルサービスの計算リソースが大きいであれば、複数の物理カーネルにおいてこの制御プログラムのカーネルモード操作を同時に実行させてもよい。異なる制御プログラムの粒度で単一の制御プログラムについて分割して複数の制御プログラムを異なる物理カーネルに割り当てることにより、複数の物理カーネルが同時にカーネルモード操作を実行し、複数の制御プログラムを並列実行させることができる。マイクロカーネルは、プロセス間通信（ＩＰＣ）、メモリ管理、タスクスケジューリングなどを含む複数のタイプに分けられる。本実施例において、二重カット処理アルゴリズムを用いて制御プログラムをカットして分類する。ここで、第１層のカット処理アルゴリズムは、制御プログラムスケジューリングのシステムオーバーヘッドを削減するために、動作時間ごとに複数の制御プログラムをなるべく小さなスケジュール可能な幾つかの周期の制御プログラムセットにカットする。第２層のカット処理アルゴリズムは、制御プログラムをより信頼性が高くてリアルタイム性が高い環境で動作させるために、第１層の制御プログラムのカット結果に基づき、いくつかの優先度レベルの異なる制御プログラムセットにカットする。最後、複数の制御プログラムの関連性を計算することにより、この計算手順は、マイクロカーネルタスクタイプの重み、マイクロカーネルタスク優先度及び／又は制御プログラムの動作時間の重みを組み合わせできる。関連性の高い制御プログラムを組合せて同一の物理カーネルに設定し、関連性の低い制御プログラムを異なる物理カーネルに設定することで、複数の物理カーネルが同時にカーネルモード操作を実行し、制御プログラムを完成する。
【００３２】
本実施例に係るカット処理アルゴリズムは、二重カット処理アルゴリズムに限られず、以下のようなアルゴリズムを更に含む。１つの制御プログラムについて、該制御プログラムをより信頼性が高くてリアルタイム性が高い環境で動作させるために、制御プログラムに対応する複数の制御プログラムを取得し、これをいくつかの優先度レベルの異なる制御プログラムにカットする。最後、この計算手順は、マイクロカーネルタスクタイプの重み、マイクロカーネルタスク優先度及び／又は制御プログラムの動作時間の重みを組み合わせできる。関連性の高い制御プログラムを組合せて同一の物理カーネルに設定し、関連性の低い制御プログラムを異なる物理カーネルに設定することで、複数の物理カーネルが同時にカーネルモード操作を実行し、制御プログラムを完成する。
【００３３】
例示的に、図２に示すように、合計３つの物理カーネルａ、ｂおよびｃが存在し、物理カーネルごとに１つのロックを対応させる。細粒度は、１つの完全な制御プログラムに対応して複数の制御プログラムを取得することを表す。そして、制御プログラム間の関連性に基づいて複数の制御プログラムを異なる物理カーネルに割り当て、各物理カーネルは制御プログラムを他の制御プログラムと共にスケジュールする。物理カーネルｂにおいてｂ１、ｂ２およびｂ３が動作し、物理カーネルｃにおいてｃ１、ｃ２およびｃ３が動作する。ここで、ｂ１、ｂ２およびｃ１、ｃ２は同一の制御プログラムからのものである。上記の通り、この制御プログラムは、二重カット処理アルゴリズム又は他のアルゴリズムを用いてカットするとともに、関連性に基づいて制御プログラムの所在物理カーネルを割り当ててもよい。つまり、ｂ１、ｂ２の関連性が高いため、同一の物理カーネルｂに割り当てられ、ｃ１、ｃ２の関連性が高いため、同一の物理カーネルｃに割り当てられる。このように、制御プログラムの粒度に基づいて割り当てられた後、同一の制御プログラムが２つの物理カーネルに割り当てられる。各物理カーネル内において、時刻表によるスケジューリングアルゴリズム又は優先度によるスケジューリングアルゴリズムで、制御プログラムをスケジュールしてもよく、ロックの使用権を取得した制御プログラムが物理カーネルを用いてカーネルモード操作を実行する。
【００３４】
オプションとして、制御プログラムをより信頼性が高くてリアルタイム性が高い環境で動作させるために、制御プログラムに対応する複数の制御プログラムをいくつかの動作時間の異なる制御プログラムにカットすることができる。最後、複数の制御プログラムの関連性を計算することにより、この計算手順は、マイクロカーネルタスクタイプの重み、マイクロカーネルタスク優先度及び／又は動作時間の重みを組み合わせできる。関連性の高い制御プログラムを組合せて同一の物理カーネルに設定し、関連性の低い制御プログラムを異なる物理カーネルに設定することで、複数の物理カーネルが同時にカーネルモード操作を実行し、制御プログラムを完成する。
【００３５】
一般的には、産業現場に係る制御プログラムは、温度検出、湿度検出及びプロセス制御などを含むが、これらに限定されない。本発明に説明した関連性とは、上記制御プログラムがマイクロカーネルにおいて実現される際に、マイクロカーネルに基づいて上記制御プログラムに対応する複数の制御プログラムを完成することを確認することができることを意味している。実際に、予め設定したアルゴリズムによって取得したマイクロ制御プロセスは、産業現場に適合する産業制御プロセスであってもよく、ユーザ定義の産業用制御プロセスであってもよい。
【００３６】
いわゆる予め設定したアルゴリズムとは、例えば、マイクロカーネルタスクタイプ、制御プログラムの動作時間、マイクロカーネルタスク優先度についてそれぞれ異なる重みを付与し、重みの加算値が固定範囲にあるものを同一の制御プログラムに対応するものとみなす。予め設定したアルゴリズムによって関連性を計算し、関連性の高い制御プログラムを組合せ、各物理カーネルにおいて動作する制御プログラムの数、及び各制御プログラムが複数の物理カーネルにおいて動作することを確認する。
【００３７】
スケジューリング設定情報は、各物理カーネルにおいて動作する制御プログラムの数と、各物理カーネルにおいて動作する制御プログラムのスケジューリングアルゴリズムと、全ての制御プログラムのうちの少なくとも１つが複数の物理カーネルにおいて動作することと、を含む。本実施例において、上述した方法に基づいてどの制御プログラムをどの物理カーネルに割り当てることを確認すると、スケジューリング設定情報を生成する。例示的に、図２に示すように、物理カーネルａ、ｂおよびｃにおいてそれぞれ３つの制御プログラムが動作し、物理カーネルａにおいて３つの制御プログラムａ１、ａ２およびａ３が動作し、物理カーネルｂにおいて３つの制御プログラムｂ１、ｂ２およびｂ３が動作し、物理カーネルｃにおいて３つの制御プログラムｃ１、ｃ２およびｃ３が動作している。物理カーネルａは、時刻表に基づいたスケジューリングアルゴリズムを採用し、３つの制御プログラムａ１、ａ２およびａ３から、現在カーネルモード操作を実行するものを決定し、物理カーネルｂは、優先度に基づいたスケジューリングアルゴリズムを採用して、３つの制御プログラムｂ１、ｂ２およびｂ３から、現在カーネルモード操作を実行するものを決定し、物理カーネルｃは、優先度に基づいたスケジューリングアルゴリズムを採用して、３つの制御プログラムｃ１、ｃ２およびｃ３から、現在カーネルモード操作を実行するものを決定する。１つの制御プログラムに対応付けて取得された制御プログラムｂ１、ｂ２、ｃ１、ｃ２は、２つの物理カーネルｂおよびｃにおいて動作する。
【００３８】
ステップ１０２において、ＯＳカーネルは、スケジューリング設定情報に基づいてＯＳカーネルにおいて動作する制御プログラムを設定する。
【００３９】
ＯＳカーネルは、仮想化マシンプログラムによってハードウェアに対して仮想化処理を行い、スケジューリング設定情報に基づいて１つの物理カーネルに複数の制御プログラムを割り当て、及び／又は、スケジューリング設定情報に基づいて各物理カーネルにおいて動作する制御プログラムの、時刻表に基づいたスケジューリングアルゴリズム又は優先度に基づいたスケジューリングアルゴリズムを含むスケジューリングアルゴリズムを設定し、及び／又は、複数の物理カーネルを仮想化し、スケジューリング設定情報に基づいて全ての制御プログラムのうちの少なくとも１つを対応付けて複数の制御プログラムを取得し、取得した前記複数の制御プログラムを複数の物理カーネルに割り当てる。
【００４０】
ＯＳカーネルは、スケジューリング設定情報に基づいてＯＳカーネルにおいて動作する制御プログラムを実際に設定することができる。例示的に、図２に示すように、物理カーネルａ、ｂおよびｃにおいてはそれぞれ３つの制御プログラムが動作し、物理カーネルａにおいて３つの制御プログラムａ１、ａ２およびａ３が動作し、物理カーネルｂにおいて３つの制御プログラムｂ１、ｂ２およびｂ３が動作し、物理カーネルｃにおいて３つの制御プログラムｃ１、ｃ２およびｃ３が動作している。物理カーネルａは、時刻表に基づいたスケジューリングアルゴリズムを採用し、３つの制御プログラムａ１、ａ２およびａ３から、現在カーネルモード操作を実行するものを決定し、物理カーネルｂは、優先度に基づいたスケジューリングアルゴリズムを採用し、３つの制御プログラムｂ１、ｂ２およびｂ３から、現在カーネルモード操作を実行するものを決定し、物理カーネルｃは、優先度に基づいたスケジューリングアルゴリズムを採用し、３つの制御プログラムｃ１、ｃ２およびｃ３から、現在カーネルモード操作を実行するものを決定する。１つの制御プログラムに対応付けて取得された制御プログラムｂ１、ｂ２、ｃ１、ｃ２は、２つの物理カーネルｂおよびｃにおいて動作している。
【００４１】
ステップ１０３において、ＯＳカーネルは、設定された制御プログラムを起動させる。
【００４２】
上記設定によって、ＯＳカーネルは、設定された制御プログラムを起動し、例示的に、９つの制御プログラムが図２に示すように３つの物理カーネルに割当てられ、且つ該当するスケジューリングアルゴリズムに応じてスケジュールされる。
【００４３】
本実施例において、１つの物理カーネルにおいて複数の制御プログラムを動作させることができ、物理カーネルリソースの使用率を向上させ、周期の異なる制御プログラムが同一の物理カーネルにおいて動作させることができ、多物理カーネルでの制御プログラムの自由な組み合わせを実現し、マルチサービスソフトウェアにより定義される自由スケジューリングを実現し、異なる物理カーネルは異なる制御プログラムスケジューリングアルゴリズムを自由に設定することができ、制御プログラムスケジューリングの適応性と多様性を向上させる。
【００４４】
本実施例の技術態様において、システム起動の前に、それぞれの制御プログラムに対応するマイクロカーネルタスクタイプの重み、それぞれの制御プログラムに対応するマイクロカーネルタスク優先度及び／又はそれぞれの制御プログラムの動作時間の重みに基づき、スケジューリング設定情報を生成し、スケジューリング設定情報に基づいて各物理カーネルにおいて動作する制御プログラムの数、スケジューリングアルゴリズム、及び全ての制御プログラムのうちの少なくとも１つが複数の物理カーネルにおいて動作することを設定し、カスタム設定の方式は、単一の物理カーネルによって複数のマイクロカーネルのタイムスライスを制御すること、および単一のマイクロカーネルが計算リソースを占有してクロス物理カーネルスのケジューリングを行うことに限らない。これによって、産業用サーバのマイクロカーネルの産業現場でのリアルタイム制御および自由な組み合わせを実現し、物理カーネルの計算リソースの使用率を向上させる。
【００４５】
実施例２
上述した技術態様に基づき、時刻表に基づいたスケジューリングアルゴリズムは、複数のタイマーを設定することと、メインフレーム時間を周期とし、第１タイマーおよび前記第２タイマーを起動しながら、時刻表の設定に基づいて制御プログラムをスケジュールし、第２タイマーのタイミングが到来すると、次の制御プログラムをスケジュールし、かつ、第１タイマーのタイミングが到来すると、次の周期を開始することとを含む。ここで、第１タイマーの持続時間がメインフレーム時間であり、第２タイマーがメインフレーム時間内の各時間窓の順序に応じて次々に起動するとともに、第２タイマーの持続時間が次々に各時間窓の持続時間と同じであり、時刻表は、各時間窓のスタート・ストップ時間と、各時間窓に対応する制御プログラムとを含む。
【００４６】
本実施例において、１つの物理カーネルにおいて動作する制御プログラムは、設定された時刻表に基づいてスケジューリングを行い、時刻表はニーズに応じて予め設定されてもよく、スケジューリング時に、メインフレーム時間を周期とし、メインフレーム時間内に各時間窓がある。時刻表は、スタート・ストップ時間と、各時間窓に対応する制御プログラムとを含み、時間窓は非アイドル時間窓とアイドル時間窓に分けられる。ここで、各非アイドル時間窓がいずれも１つの制御プログラムの動作時間に対応し、アイドル時間窓において制御プログラムが動作しない。制御プログラムをスケジュールする場合、メインフレーム時間を繰り返し実行する。つまり、時刻表を１回実行するごとに、改めて時刻表における１番目の時間窓に移行して引き続き実行する。図５は、本発明の実施例に係る時刻表の模式図である。この時刻表において、１番目の非アイドル時間窓は制御プログラム１の動作時間であり、２番目の非アイドル時間窓は制御プログラム２の動作時間であり、３番目の非アイドル時間窓は制御プログラム３の動作時間であり、４番目の非アイドル時間窓も制御プログラム１の動作時間である。メインフレーム時間は、図中の６つの時間窓の総持続時間である。ユーザは、実際のニーズに応じて各時間窓の持続時間及び各時間窓において動作する制御プログラムを設定することができ、各時間窓の持続時間が同じであるように設定されてもよく、異なるように設定されてもよい。
【００４７】
しかし、時刻表に基づいたスケジューリングアルゴリズムがシステムクロックを用い、小さな時間間隔ごとに１回中断することが発生しうることを考えると、頻繁に中断すれば、時刻表の時間窓に遅延が生じる可能性がある。例えば、時刻表のメインフレーム時間が５００ｍｓであり、制御プログラム１に対応する非アイドル時間窓が１００ｍｓであり、且つ、中断処理時間が１ｍｓであると想定すると、制御プログラム１の動作中に中断が１０回発生すれば、１０ｍｓの遅延が生じる。つまり、制御プログラム２に切り替えられる前に、制御プログラム１が１１０ｍｓ動作していた。したがって、メインフレーム時間が５００ｍｓに到達する場合、実際に、依然として時刻表の最後の時間窓にあり、５１０ｍｓに到達する次第に改めて時刻表の１番目の時間窓に切り替えられるため、メインフレームの切り替えに１０ｍｓの遅延が生じてしまう。制御プログラムの切り替えおよびメインフレームの切り替えの遅延を回避するために、本実施例において複数のタイマーが設定されており、メインフレーム時間の切り替えを制御するために第１タイマーによってメインフレーム時間をカウントし、時間窓の切り替えを制御するために第２タイマーによって時間窓をカウントする。図５に示すように、１つのメインフレームの開始と同時に第１タイマーおよび第２タイマーを起動させ、スケジューリング時刻表の１番目の時間窓に対応する制御プログラム１をスケジュールする。この際、第２タイマーの持続時間が１番目の時間窓の持続時間と同じである。第２タイマーのタイミングが到来すると、時刻表の１番目の時間窓を隣接の２番目の時間窓に切り替え、２番目の時間窓に対応する制御プログラム２をスケジュールする。この際、第２タイマーの持続時間が２番目の時間窓の持続時間と同じである。これによって類推する。第１タイマーのタイミングが到来すると、次のメインフレーム周期を開始する。つまり、時刻表の１番目の時間窓に対応する制御プログラム１を改めてスケジュールし、この際、現在どの窓口にあるかにかかわらず、時刻表の１番目の時間窓に切り替えて、最初からカウントすることで、メインフレーム時間の同期を実現する。
【００４８】
実施例３
上述した技術態様に基づき、１つ又は複数の物理カーネルにおいて動作する制御プログラムの優先度を取得し、優先度を８ビットバイナリに示す。ここで、最初の３ビットがメインインデックス番号であり、最後の５ビットがサブインデックス番号でありる。メインインデックス番号に基づいて優先度メインインデックス番号ビットマップにおける対応ビットをマークし、サブインデックス番号に基づいて優先度サブインデックス番号ビットマップにおける対応ビットをマークする。
【００４９】
本実施例において、各制御プログラムに優先度を付与し、優先度の範囲を０−２５５としてもよい。ここで、０が最高レベルに対応し、２５５が最低レベルに対応する。各制御プログラムの状態は、準備完了、スタンバイ、スタンバイ・ウエイティング、一時中断または休眠であってもよく、準備完了の状態にある制御プログラムだけがスケジュール可能となり、他の状態にある制御プログラムがスケジューリング対象に属しない。各優先度が８ビットバイナリに示される。ここで、最初の３ビットがメインインデックス番号であり、最後の５ビットがサブインデックス番号である。例えば、優先度が４２である制御プログラムは、準備完了状態にあり、バイナリに示すと００１０１０１０であり、最初の３ビットが００１（１）で、最後の５ビットが０１０１０（１０）である。したがって、４２に対応するメインインデックス番号が１であり、サブインデックス番号が１０である。図６は、本発明の実施例に係る優先度インデックス番号ビットマップの模式図である。ここで、優先度メインインデックス番号ビットマップは１＊８の一次元ビットマップであり、番号が０−７であり、優先度サブインデックス番号ビットマップは８＊３２の二次元ビットマップであり、縦方向の番号が０−７であり、横方向の番号が０−３１である。４２に対応するメインインデックス番号１およびサブインデックス番号１０に基づいて、それぞれ優先度メインインデックス番号ビットマップの番号１、および優先度サブインデックス番号ビットマップの縦方向番号１、横方向番号１０をマークする(１とマークする)。
【００５０】
上述した技術態様に基づき、優先度に基づいたスケジューリングアルゴリズムは、優先度メインインデックス番号ビットマップを走査して最高優先度に対応するメインインデックス番号を決定することと、メインインデックス番号に対応する優先度サブインデックス番号ビットマップを走査して最高優先度に対応するサブインデックス番号を決定することと、メインインデックス番号および前記サブインデックス番号に基づいて現在の最高優先度を計算し、最高優先度に対応する制御プログラムを決定することとを含む。
【００５１】
図６に示すように、まず、０−７の順番で優先度メインインデックス番号ビットマップを走査し、１番目の１とマックされたビットを見つけ、１と番号付ける。そして、優先度サブインデックス番号ビットマップにおいて０−３１の順番で縦方向番号が１である横方向ビットマップを走査し、１番目の１とマックされたビットが１０であることを発見した。優先度の構成方式に基づいて計算し、この際の優先度が最高である４２レベルの制御プログラムを取得する。
【００５２】
実施例４
図７は、本発明の実施例４に係る産業用サーバのマイクロカーネルアーキテクチャの実現方法のフローチャートである。本実施例において、ＯＳカーネルは、制御プログラムに対応するマイクロカーネルタスクタイプの重み、制御プログラムに対応するマイクロカーネルタスク優先度及び／または制御プログラムの動作時間の重み、及び制御プログラムのサービスニーズに基づき、スケジューリング設定情報を生成する。図７に示すように、具体的には以下のステップを含む。
【００５３】
ステップＳ７１０において、システム起動の前に、ＯＳカーネルは、制御プログラムに対応するマイクロカーネルタスクタイプの重み、制御プログラムに対応するマイクロカーネルタスク優先度及び／または制御プログラムの動作時間の重み、及び制御プログラムのサービスニーズに基づき、スケジューリング設定情報を生成する。
【００５４】
オプションとして、制御プログラムのサービスニーズは、制御プログラムのフローニーズ、データニーズ、及び機能ニーズなどを含む。本実施例において、マイクロカーネルタスクタイプの重み、マイクロカーネルタスク優先度及び制御プログラムの動作時間重みに加え、スケジューリング設定情報を生成する準拠として制御プログラムのサービスニーズを増加する。具体的な実現形態において、ＯＳカーネルは、制御プログラムに対応するマイクロカーネルタスクタイプの重み、制御プログラムに対応するマイクロカーネルタスク優先度の重み、制御プログラムの動作時間の重み及び制御プログラムのサービスニーズに基づき、スケジューリング設定情報を生成してもよい。或いは、ＯＳカーネルは、制御プログラムに対応するマイクロカーネルタスクタイプの重み、制御プログラムに対応するマイクロカーネルタスク優先度の重み及び制御プログラムのサービスニーズに基づき、スケジューリング設定情報を生成してもよい。或いは、ＯＳカーネルは、制御プログラムに対応するマイクロカーネルタスクタイプの重み、制御プログラムの動作時間の重み及び制御プログラムのサービスニーズに基づき、スケジューリング設定情報を生成してもよい。制御プログラムのサービスニーズは、制御プログラムが実現しようとする制御ロジック、制御タスクおよび制御目的などであってもよい。特に、分散型制御システムにおいて、各制御プログラムのサービスニーズにより、制御システムにおける各制御プログラム同士の動作トリガー条件、及び互いに伝送すべきサービスパラメータ又はデータなどの協働関係を分析することができる。制御プログラムがどの物理カーネルにおいて動作するか、物理カーネルにおいて動作する制御プログラムの数を確定する場合、マイクロカーネルタスクタイプの重み、マイクロカーネルタスク優先度の重み及び制御プログラムのサービスニーズを結合し、複数の制御プログラム同士の関連性を計算し、関連性の高い制御プログラムを組み合わせて同一の物理カーネルに設定し、関連性の低い制御プログラムを異なる物理カーネルに設定してもよい。
【００５５】
スケジューリング設定情報は、各物理カーネルにおいて動作する制御プログラムの数、各物理カーネルにおいて動作する制御プログラムのスケジューリングアルゴリズム、及び制御プログラムが複数の物理カーネルにおいて動作することを含む。
【００５６】
ステップＳ７２０において、ＯＳカーネルは、前記スケジューリング設定情報に基づいて前記ＯＳカーネルにおいて動作する制御プログラムを設定する。
【００５７】
ステップＳ７３０において、ＯＳカーネは、設定された制御プログラムを起動させる。
【００５８】
本実施例において、ＯＳカーネルは、制御プログラムに対応するマイクロカーネルタスクタイプの重み、マイクロカーネルタスク優先度及び／または制御プログラムの動作時間の重み、及び制御プログラムのサービスニーズに基づき、スケジューリング設定情報を生成することで、システムが制御プログラムのサービスニーズに基づいて起動することができ、マイクロカーネルアーキテクチャを基に、制御プログラムのサービス同士及びサービス内の協働、及び異なる物理カーネルにおいて動作する各サブ制御プログラム同士のデバイス協働を実現することができる。ここで、デバイス協働において、各サブ制御プログラムは１つの完全制御プログラムを構成する。
【００５９】
オプションの実施例において、１つの物理カーネルにおいて複数の制御プログラムが動作し、複数の制御プログラム同士にサービスニーズ関係が存在する。これを基に、スケジューリング設定情報は、各物理カーネルにおいて動作する制御プログラムの数、各物理カーネルにおいて動作する制御プログラムのスケジューリングアルゴリズムと、各制御プログラム同士の動作トリガー条件及び／または各制御プログラムの間で伝送するサービスパラメータとを含み、制御プログラムが複数の物理カーネルにおいて動作する。制御プログラム同士間の動作トリガー条件とは、任意の制御プログラムＡが該制御プログラムＡと協働関係を有する制御プログラムＢをトリガーして動作させる時に、該制御プログラムＡが持つべき条件と理解できる。各制御プログラムの間で伝送されるサービスパラメータとは、任意の制御プログラムＡが該制御プログラムＡと協働関係を有する制御プログラムＢに該制御プログラムＢの動作のためのサービスパラメータを伝送すると理解できる。したがって、マイクロカーネルアーキテクチャを用いてサービス同士の協働を実現する。複数の制御プログラムが異なる物理カーネルにおいて動作すれば、物理カーネルハードウェアデバイス同士の協働を実現する。オプションとして、スケジューリング設定に、１つの制御プログラム及びそれと協働関係が存在する制御プログラムがいずれの物理カーネルにおいて動作するかを指示し、それと協働関係が存在する制御プログラムが動作する時に必要となる動作トリガー条件をトリガーし、及び／またはそれと協働関係が存在する制御プログラムに伝送すべきサービスパラメータを付与する必要があることを更に含む。ここで言われる協働関係が存在する制御プログラムについては、１つの制御プログラムと他の１つの制御プログラム同士の協働であり、１つの制御プログラムのサブ制御プログラムと他の１つの制御プログラムのサブ制御プログラム同士の協働であってもよい。
【００６０】
１つの物理カーネルにおいて１つ又は複数の制御プログラムが動作してもよく、具体的には、各マイクロカーネルにおけるＰＬＣにおいて動作する。１つの物理カーネルにおいて複数の制御プログラムが動作する場合について、図２に示すように、物理カーネルａにおいて３つの制御プログラムａ１、ａ２及びａ３が動作し、３つの制御プログラムのスケジューリングアルゴリズムは、時刻表に基づいたスケジューリングアルゴリズムまたは優先度に基づいたスケジューリングアルゴリズムを含み、詳細については上述した実施例に記載され、ここで贅言しない。３つの制御プログラムにおいて、いずれの制御プログラムも１つの制御プログラムと協調関係があると仮定する。動作トリガー条件とサービスパラメータは、例えば、制御プログラムａ１がａ２の動作をトリガーするための動作トリガー条件、制御プログラムａ２がａ３の動作をトリガーするための動作トリガー条件、制御プログラムａ１が制御プログラムａ２に伝送する、制御プログラムａ２の動作のためのサービスパラメータ及び制御プログラムａ１の演算結果や、制御プログラムａ２が制御プログラムａ３に伝送する、制御プログラムａ３の動作のためのサービスパラメータ及び制御プログラムａ２の演算結果などを含む。１つの物理カーネルにおいて１つの制御プログラムが動作する場合について、継続して、図２に示すように、物理カーネルａにおいて制御プログラムａ１が動作し、物理カーネルｂにおいて制御プログラムｂ１、制御プログラムａ１及びｂ１が動作するスケジューリングアルゴリズムは、時刻表に基づいたスケジューリングアルゴリズムまたは優先度に基づいたスケジューリングアルゴリズムを含む。制御プログラムａ１と制御プログラムａ２との間に協働関係が存在し、動作トリガー条件及びサービスパラメータは、制御プログラムａ１が制御プログラムｂ１の動作をトリガーするための動作トリガー条件、制御プログラムａ１が制御プログラムｂ１に伝送する、制御プログラムｂ１の動作のためのサービスパラメータ及び制御プログラムａ１の演算結果などを含む。
【００６１】
以下、図８を参照しながら、ある適用シナリオで各制御プログラム同士の動作トリガー条件及び／またはサービスパラメータについて詳細に説明する。
【００６２】
図８は、制御プログラムＡと制御プログラムＢとを含み、破線は動作トリガー条件の流れを示し、実線はサービスパラメータの流れを示す。システム起動の前に、動作トリガー条件とサービスパラメータを予め生成し、制御プログラムＡと制御プログラムＢを設定することで、制御プログラムＡと制御プログラムＢは自動的に設定に応じてサービス同士の協働を実現する。なお、トリガーされた制御プログラムが動作した後、トリガーの責任を負う制御プログラムは、動作を停止するか継続して動作することができる。具体的な動作形態は、各制御プログラムのサービスニーズにより決定される。
【００６３】
例えば、制御プログラムＡはコンベヤベルト制御プログラムであり、制御プログラムＢはロボットアーム把持制御プログラムであり、コンベヤベルト制御プログラムは、条件を満たした場合にロボットアーム把持制御プログラムを起動させて把持動作を開始する。システム起動の前に、コンベヤベルト制御プログラムを設定する（条件を満たした場合にロボットアーム把持制御プログラムを起動させて把持動作を開始する）。仮に、コンベヤベルト制御プログラムがロボットアーム把持制御プログラムに対して把持動作の速度とパワーを伝える必要があると、コンベヤベルト制御プログラムを予め設定する（条件を満たした場合にロボットアーム把持制御プログラムを起動させて把持動作を開始する）。更に、把持動作の速度及びパワーをロボットアーム把持制御プログラムに予め設定してもよい。
【００６４】
また、例えば、制御プログラムＡは供給制御プログラムであり、制御プログラムＢは加熱制御プログラムである。供給制御プログラムは、容器における水の温度が予め設定された条件を満たした場合に供給し、温度が予め設定された条件を満たしていない場合に加熱制御プログラムを起動させて容器における水の加熱を開始する必要がある。システム起動の前に、供給制御プログラムを予め設定する（水の温度が予め設定された条件以下である場合、加熱制御プログラムを起動させて容器における水の加熱を開始する）。更に、水の温度が達しようとする範囲を加熱制御プログラムに予め設定してもよい。
【００６５】
別のオプションの実施例において、制御プログラムの数は少なくとも１つであり、各制御プログラムは複数のサブ制御プログラムに分割されてもよい。これを基に、前記スケジューリング設定情報は、各制御プログラムについて、該制御プログラムに含まれる各サブ制御プログラムと、該制御プログラムの各サブ制御プログラムが動作する物理カーネルと、該制御プログラムの各サブ制御プログラム同士の動作トリガー条件及び／またはサービスパラメータとを含み、該制御プログラムの少なくとも１つのサブ制御プログラムが１つ又は複数の物理カーネルにおいて動作する。したがって、マイクロカーネルアーキテクチャを用いてサブ制御プログラム同士の協働を実現する。サブ制御プログラム同士間の動作トリガー条件とは、任意のサブ制御プログラムＡが該サブ制御プログラムＡと協働関係を有するサブ制御プログラムＢをトリガーして動作させる時に、該サブ制御プログラムＡが持つべき条件と理解できる。各サブ制御プログラムの間で伝送されるサービスパラメータとは、任意のサブ制御プログラムＡが該サブ制御プログラムＡと協働関係を有するサブ制御プログラムＢに該サブ制御プログラムＢの動作のためのサービスパラメータを伝送すると理解できる。制御プログラムの複数のサブ制御プログラムが異なる物理カーネルにおいて動作すれば、物理カーネルハードウェアデバイス同士の協働を実現する。オプションとして、スケジューリング設定に、１つのサブ制御プログラム及びそれと協働関係が存在するサブ制御プログラムがいずれの物理カーネルにおいて動作するかを指示し、それと協働関係が存在するサブ制御プログラムが動作する時に必要となる動作トリガー条件をトリガーし、及び／またはそれと協働関係が存在する制御プログラムにサービスパラメータを付与する必要があることを更に含む。ここで言われる協働関係が存在する各サブ制御プログラムは、１完全制御プログラムを構成する。
【００６６】
なお、同一の物理カーネルにおいて、異なる制御プログラムのサブ制御プログラムまたは同一の制御プログラムの複数のサブ制御プログラムが動作してもよい。
【００６７】
各制御プログラムにおける各サブ制御プログラムについて、１つの物理カーネルにおいて１つ又は複数のサブ制御プログラムが動作してもよく、具体的に各マイクロカーネルにおけるＰＬＣにおいて動作する。１つの物理カーネルにおいて複数のサブ制御プログラムが動作する場合について、図２に示すように、物理カーネルａにおいて３つのサブ制御プログラムａ１、ａ２及びａ３が動作し、ａ１、ａ２及びａ３が１つの制御プログラムを構成する。３つのサブ制御プログラムのスケジューリングアルゴリズムは、時刻表に基づいたスケジューリングアルゴリズムまたは優先度に基づいたスケジューリングアルゴリズムを含む。動作トリガー条件とサービスパラメータは、例えば制御プログラムａ１がａ２の動作をトリガーするための動作トリガー条件、制御プログラムａ２がａ３の動作をトリガーするための動作トリガー条件、制御プログラムａ１が制御プログラムａ２に伝送する、制御プログラムａ２の動作のためのサービスパラメータ及び制御プログラムａ１の演算結果や、制御プログラムａ２が制御プログラムａ３に伝送する、制御プログラムａ３の動作のためのサービスパラメータ及び制御プログラムａ２の演算結果などを含む。１つの物理カーネルにおいて１つのサブ制御プログラムが動作する場合について、継続して、図２に示すように、物理カーネルａにおいてサブ制御プログラムａ１が動作し、物理カーネルｂにおいてサブ制御プログラムｂ１が動作し、サブ制御プログラムａ１及びｂ１のスケジューリングアルゴリズムは、時刻表に基づいたスケジューリングアルゴリズムまたは優先度に基づいたスケジューリングアルゴリズムを含む。動作トリガー条件及びサービスパラメータは、例えば、制御プログラムａ１が制御プログラムｂ１の動作をトリガーするための動作トリガー条件、制御プログラムａ１が制御プログラムｂ１に伝送する、制御プログラムｂ１の動作のためのサービスパラメータ及び制御プログラムａ１の演算結果などを含む。
【００６８】
以下、図９を参照しながら、ある適用シナリオで各サブ制御プログラム同士の動作トリガー条件及び／またはサービスパラメータについて詳細に説明する。
【００６９】
図９において、制御プログラムＡはサブ制御プログラムａ１、ａ２及びａ３を含む。サブ制御プログラムａ１は物理カーネルａのＰＬＣ１に設定され、サブ制御プログラムａ２は物理カーネルｂのＰＬＣ２に設定され、サブ制御プログラムａ３は物理カーネルｃのＰＬＣ３に設定されている。オプションとして、物理カーネルは、通信機能ブロックを更に含む。通信機能ブロックは、サブ制御プログラム同士の動作トリガー条件及びサービスパラメータを伝送するために用いられ、制御プログラムフローにおいて各ＰＬＣの「入力」又は「出力」に相当する。破線は動作トリガー条件の流れを示し、実線はサービスパラメータの流れを示す。システム起動の前に、動作トリガー条件及びサービスパラメータを予め生成し、サブ制御プログラムａ１、ａ２及びａ３を設定することで、サブ制御プログラムａ１、ａ２及びａ３は、自動的に設定に応じて物理カーネルハードウェアデバイス同士の協働を実現する。なお、トリガーされたサブ制御プログラムが動作を開始した後、トリガーの責任を負うサブ制御プログラムは動作を停止するか動作を継続することができる。具体的な動作形態は、各サブ制御プログラムのサービスニーズにより決定される。
【００７０】
例えば、サブ制御プログラムａ１の初期値を予め設定し、サブ制御プログラムａ２の動作トリガー条件はサブ制御プログラムａ１の演算結果であり、サブ制御プログラムａ３の動作トリガー条件はサブ制御プログラムａ１の演算結果及びａ２の演算結果であり、サブ制御プログラムａ１の動作トリガー条件はサブ制御プログラムａ１の演算結果である。
【００７１】
具体的には、サブ制御プログラムａ１は予め設定された初期値に応じて演算し、演算結果を通信機能ブロックによってサブ制御プログラムａ２及びａ３へそれぞれ送信し、サブ制御プログラムａ２は通信機能ブロックから受信されたサブ制御プログラムａ１の演算結果に応じて演算し、演算結果をサブ制御プログラムａ３へ送信する。サブ制御プログラムａ３は通信機能ブロックから受信されたサブ制御プログラムａ１及びａ２の演算結果に応じて演算し、最終の結果を取得する。
【００７２】
オプションとして、複数種の形態、例えば上述した実施例に係る二重カット処理アルゴリズムで制御プログラムを複数のサブ制御プログラムに分割する。本実施例において、制御プログラムのリソースニーズ及びマイクロカーネルによる計算リソースに基づいてサブ制御プログラムを分割する。これを基に、ＯＳカーネルが、制御プログラムに対応するマイクロカーネルタスクタイプの重み、制御プログラムに対応するマイクロカーネルタスク優先度及び／または制御プログラムの動作時間の重み、及び制御プログラムのサービスニーズに基づき、スケジューリング設定情報を生成することに、前記ＯＳカーネルが制御プログラムのリソースニーズ及びマイクロカーネルによる計算リソースに基づいて各制御プログラムを複数のサブ制御プログラムに分割することと、前記ＯＳカーネルが各サブ制御プログラムに対応するマイクロカーネルタスクタイプの重み、各サブ制御プログラムに対応するマイクロカーネルタスク優先度及び／または各サブ制御プログラムの動作時間の重み、及び各サブ制御プログラムのサービスニーズに基づき、スケジューリング設定情報を生成することと、が更に含まれる。
【００７３】
そのうち、制御プログラムのリソースニーズは制御プログラムの計算量又はＩ／Ｏインターフェース数を含み、制御プログラムの計算量は、メモリーサイズ、コマンド数およびプロセス数などを含む。相応して、マイクロカーネルによる計算リソースは、計算能力の測量パラメータ或いは提供されるＩ／Ｏインターフェース数を含み、計算能力の測量パラメータは、メモリー、主周波数、記憶スペースなどを含む。これを基に、前記ＯＳカーネルは、制御プログラムの計算量及び各物理カーネルにおけるマイクロカーネルによる計算能力の測量パラメータに基づいて前記制御プログラムを複数のサブ制御プログラムを分割し、或いは、前記ＯＳカーネルは、制御プログラムのＩ／Ｏインターフェース数および各物理カーネルにおけるマイクロカーネルによるＩ／Ｏインターフェース数に基づいて前記制御プログラムを複数のサブ制御プログラムに分割し、分割されたサブ制御プログラムは、マイクロカーネルによる計算リソースを用いて成功して動作することができる。
【００７４】
更に、サブ制御プログラムを分割した後、サブ制御プログラムのＩ／Ｏインターフェース関連性を計算し、Ｉ／Ｏインターフェース関連性は、サブ制御プログラム同士に直接接続されたＩ／Ｏインターフェースの数により測量されてもよい。Ｉ／Ｏインターフェース関連性の予め設定された関連性閾値より大きいサブ制御プログラムを同一の物理カーネルにおいて設定し、或いは地理位置の隣り合う複数の物理カーネルにおいて設定して、データ伝送の距離を低減させる。
【００７５】
別のオプションの実施例において、制御プログラムの数は少なくとも１つであり、各制御プログラムは、少なくとも１つの基本プログラムブロックを含む。基本プログラムブロックは制御ロジックを実行する最小のソフトウェアユニットであり、それは外部的にトリガー条件の入力出力及びサービスパラメータの入力出力に表現される。制御プログラムに含まれる基本プログラムブロック及び基本プログラムブロック同士の動作トリガー条件及び／またはサービスパラメータは、システム起動の前に予め生成されて設定されてもよい。オプションとして、ＯＳカーネルが、制御プログラムに対応するマイクロカーネルタスクタイプの重み、制御プログラムに対応するマイクロカーネルタスク優先度及び／または制御プログラムの動作時間の重み、及び制御プログラムのサービスニーズに基づき、スケジューリング設定情報を生成することに、前記ＯＳカーネルが、制御プログラムに対応するマイクロカーネルタスクタイプの重み、制御プログラムに対応するマイクロカーネルタスク優先度及び／または制御プログラムの動作時間の重み、制御プログラムのサービスニーズ、及びシステムによる基本プログラムブロックに基づき、スケジューリング設定情報を生成することが更に含まれ、前記スケジューリング設定情報は、各制御プログラムに含まれる各基本プログラムブロックと、各基本プログラムブロック同士の動作トリガー条件及び／または各基本プログラムブロックの間で伝送されるサービスパラメータとを更に含む。したがって、サービス内の協働を実現する。基本制御プログラム同士間の動作トリガー条件とは、任意の基本制御プログラムＡが該基本制御プログラムＡと協働関係を有する基本制御プログラムＢをトリガーして動作させる時に、該基本制御プログラムＡが持つべき条件と理解できる。各基本制御プログラムの間で伝送されるサービスパラメータとは、任意の基本制御プログラムＡが該基本制御プログラムＡと協働関係を有する基本制御プログラムＢに該基本制御プログラムＢの動作のためのサービスパラメータを伝送すると理解できる。
【００７６】
一般的には、図８及び図９に示すように、基本プログラムブロックはサブ制御プログラムまたは制御プログラムに含まれる。例えば、図９において、サブ制御プログラムａ１は基本プログラムブロック１、２及び３を含み、サブ制御プログラムａ２は基本プログラムブロック４及び２を含む。また、例えば、図８において、制御プログラムＡは基本プログラムブロック１、４及び５を含み、制御プログラムＢは基本プログラムブロック２、４及び１を含む。これから分かるように、基本プログラムブロックは、異なるサブ制御プログラムまたは異なる制御プログラムにおいて多重することができる。相応して、基本プログラムブロックの物理カーネルにおいての設定位置は、それが含まれたサブ制御プログラムまたは制御プログラムにより決定される。サブ制御プログラムと制御プログラムの設定位置の詳細については、上述した実施例に記載され、ここで贅言しない。
【００７７】
図８、図９及び図１０を参照しながら、各基本プログラムブロック同士の破線は動作トリガー条件の流れを示し、実線は、サービスパラメータの流れを示す。システム起動の前に、各制御プログラムに対応する基本プログラムブロックを予め選択し、各基本プログラムブロック同士の動作トリガー条件及びサービスパラメータを生成する。そして、各基本プログラムブロックを設定して、各基本プログラムブロックが自動的に起動することで、制御プログラム全体を実現する。
【００７８】
図１０において、制御プログラムに含まれる基本プログラムブロック（例えば、１、２及び３）を予め設定することと、基本プログラムブロック１の初期値、及び基本プログラムブロック２の初期値を設定することとを含み、基本プログラムブロック２のトリガー条件は、基本プログラムブロック１の演算結果であり、基本プログラムブロック３のトリガー条件は、基本プログラムブロック１の演算結果及び基本プログラムブロック２の演算結果である。
【００７９】
基本プログラムブロック１は、予め設定された初期値に応じて演算し、演算結果を基本プログラムブロック２及び３へそれぞれ送信する。基本プログラムブロック２は基本プログラムブロック１の演算結果及び予め設定された初期値に応じて演算し、演算結果を基本プログラムブロック３へ送信する。基本プログラムブロック３は、基本プログラムブロック２及び１の演算結果に応じて演算してこの制御プログラムの演算結果を取得する。
【００８０】
実施例５
図１１は、本発明の実施例に係る産業用サーバのマイクロカーネルアーキテクチャの実現装置の構造模式図である。この装置が図２に示した産業用サーバに設置され、この装置は、システム起動の前に、制御プログラムに対応するマイクロカーネルタスクタイプの重み、マイクロカーネルタスク優先度及び／又は動作時間の重みに基づき、スケジューリング設定情報を生成するための生成モジュール１１と、前記スケジューリング設定情報に基づいて前記ＯＳカーネルにおいて動作する制御プログラムを設定するための設定モジュール１２と、設定された制御プログラムを起動させる起動モジュール１３と、を備える。前記スケジューリング設定情報に、各物理カーネルにおいて動作する制御プログラムの数と、各物理カーネルにおいて動作する制御プログラムのスケジューリングアルゴリズムと、各制御プログラムが複数の物理カーネルにおいて動作することとが含まれる。
【００８１】
本発明の実施例に係る産業用サーバのマイクロカーネルアーキテクチャの実現装置は、本発明のいずれかの実施例に係る産業用サーバのマイクロカーネルアーキテクチャの実現方法を実行可能となり、実行方法に該当する機能モジュールおよび有益な効果を有する。
【００８２】
実施例６
図１２は、本発明の実施例に係る産業用サーバの構造模式図である。図１２に示すように、この産業用サーバは、プロセッサー２０と、メモリー２１と、入力装置２２と、出力装置２３とを備えてもよい。産業用サーバにおけるプロセッサー２０の数は、１つ又は複数であってもよく、図１２では１つのプロセッサー２０を例とする。産業用サーバにおけるプロセッサー２０、メモリー２１、入力装置２２及び出力装置２３は、バスや他の形方式よって接続されてもよく、図１２においてバスによって接続されることを例とする。
【００８３】
メモリー２１は、コンピュータ可読記憶媒体として、ソフトウェアプログラム、コンピュータ実行可能プログラム及びモジュール例を記憶するために用いられる。本発明の実施例における産業用サーバのマイクロカーネルアーキテクチャの実現方法に対応するプログラム命令／モジュールを記憶可能となる。プロセッサー２０は、メモリー２１に記憶されたソフトウェアプログラム、命令及びモジュールを動作させることで、産業用サーバにおける様々なアプリケーションおよびデータ処理を実行する。つまり、上述した産業用サーバのマイクロカーネルアーキテクチャの実現方法を実現する。
【００８４】
メモリー２１は、主に、ＯＳ、少なくとも１つの機能の所要アプリケーションプログラムを記憶できるプログラム記憶エリアと、端末の使用に基づいて作成したデータを記憶できるデータ記憶エリアとを含む。また、メモリー２１は、高速ランダムアクセスメモリーを含んでもよく、更に不揮発性メモリー、例えば少なくとも１つの磁気ディスクメモリー、フラッシュメモリーや他の不揮発性ソリッドステートメモリーを含んでもよい。いくつかの例において、メモリー２１は、プロセッサー２０に対して遠隔設置されたメモリーを更に含んでもよい。これらメモリーは、ネットワークによって産業用サーバに接続される。上述したネットワークの例は、インターネット、イントラネット、ローカルエリア・ネットワーク（ＬＡＮ）、移動通信ネットワークおよびこれらの組み合わせを含むが、それに限定されない。
【００８５】
入力装置２２は、入力されたデジタルやキャラクター情報を受信すること、及び産業用サーバのユーザ設定及び機能制御に関わるキー信号を入力するために用いられてもよい。出力装置は、ディスプレーなどの表示機器を含んでもよい。
【００８６】
実施例７
本発明の実施例は、プロセッサーにより実行される際に本発明のいずれかの実施例に係る産業用サーバのマイクロカーネルアーキテクチャの実現方法に関わる操作を実行することができる実行可能な命令を含む記憶媒体を更に提供する。
【００８７】
以上の実施形態に係る説明から、当業者であれば、本発明の実施例がソフトウェアおよび所要汎用型ハードウェアにより実現でき、もちろん、ハードウェアによっても実現できるが、ほとんどの場合に、前者がより好ましい実施形態であると理解すべきである。このような理解に基づき、本発明の実施例における技術態様の本質または従来技術に寄与する部分は、ソフトウェア製品の形態で体現されてもよく、このコンピュータソフトウェア製品は、コンピュータのフレキシブルディスク、読み取り専用メモリーメモリー（Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ、ＲＯＭ）、ランダムアクセスメモリー（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ、ＲＡＭ）、フラッシュ（ＦＬＡＳＨ）、ハードディスクや光ディスクなどのコンピュータ可読記憶媒体に記憶されてもよく、１台のコンピュータ機器（パーソナルコンピュータ、サーバーやネットワーク機器などであってもよい）が本発明の実施例における各実施例に記載された方法を実行できるように、幾つかの命令を含む。
【００８８】
なお、上述した装置実施例に含まれた各ユニットとモジュールは、機能論理に応じて区分されるものであるが、上述した区分に制限されず、該当する機能を実現できれば良い。また、各機能ユニットの具体的な名称は、互いに区分しやすいためのものに過ぎず、本発明の実施例の保護範囲を制限するものではない。
【００８９】
なお、上記内容は、本発明の実施例の好ましい実施例及び使用される技術原理に過ぎない。当業者は、本発明の実施例がここで記載された特定の実施例に限らず、当業者にとって本発明の実施例の保護範囲を逸脱せずに様々な明らかな変更、調整と置換を行うことができるため、上記実施例によって本発明の実施例を詳細に説明したが、本発明の実施例は上記実施例に限定されず、本発明の実施例の構想を逸脱せずに、より多くの他の同等実施例を含んでもよく、本発明の実施例の範囲が添付される特許請求の範囲により確認されると理解すべきである。
【図１】
2020009404.tif 000003
【図２】
2020009404.tif 000004
【図３】
2020009404.tif 000005
【図４】
2020009404.tif 000006
【図５】
2020009404.tif 000007
【図６】
2020009404.tif 000008
【図７】
2020009404.tif 000009
【図８】
2020009404.tif 000010
【図９】
2020009404.tif 000011
【図１０】
2020009404.tif 000012
【図１１】
2020009404.tif 000013
【図１２】
2020009404.tif 000014