JP6924786B2 - 産業用サーバのマイクロカーネルアーキテクチャの実現方法 - Google Patents

産業用サーバのマイクロカーネルアーキテクチャの実現方法 Download PDF

Info

Publication number
JP6924786B2
JP6924786B2 JP2019003424A JP2019003424A JP6924786B2 JP 6924786 B2 JP6924786 B2 JP 6924786B2 JP 2019003424 A JP2019003424 A JP 2019003424A JP 2019003424 A JP2019003424 A JP 2019003424A JP 6924786 B2 JP6924786 B2 JP 6924786B2
Authority
JP
Japan
Prior art keywords
control program
control
scheduling
program
sub
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2019003424A
Other languages
English (en)
Other versions
JP2020009404A (ja
Inventor
平 李
平 李
志偉 ▲エン▼
志偉 ▲エン▼
啓運 江
啓運 江
学強 邱
学強 邱
興培 唐
興培 唐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kyland Technology Co Ltd
Original Assignee
Kyland Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Kyland Technology Co Ltd filed Critical Kyland Technology Co Ltd
Publication of JP2020009404A publication Critical patent/JP2020009404A/ja
Application granted granted Critical
Publication of JP6924786B2 publication Critical patent/JP6924786B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • G05B19/0421Multiprocessor system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/10Plc systems
    • G05B2219/15Plc structure of the system
    • G05B2219/15053Microcontroller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5021Priority
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/506Constraint

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • Stored Programmes (AREA)

Description

本発明の実施例は、産業用サーバの技術に関し、特に産業用サーバのマイクロカーネルアーキテクチャの実現方法に関する。
産業用サーバのハードウェアに基づいた仮想OS(virtual operating system)は、i7を例として、4つの物理コアをサポート可能となり、各カーネルにおいて1つの仮想化マシンであるマイクロ制御カーネルが動作し、マイクロ制御カーネルにPLCが含まれる。
しかしながら、1つのカーネルにおいて1つのみのPLCが動作し得、リソースを無駄遣いし、実行可能な機能も制限されている。また、マルチコアPLCのスケジューリング方法は、リアルタイム性の高いサービスシナリオに適用される優先順位スケジューリングアルゴリズムと、リアルタイム性の高くないサービスシナリオに適用される時刻表スケジューリングアルゴリズムとを含み、何れかのスケジューリングアルゴリズムは、サービスニーズの複雑なシナリオで、ユーザのサービスニーズを満たしにくいため、CPUリソースの使用率が低いという問題を生じてしまう。
本発明の実施例は、産業用サーバのマイクロカーネルの産業現場でのリアルタイム制御および自由な組み合わせを実現するように、産業用サーバのマイクロカーネルアーキテクチャの実現方法を提供する。
本発明の実施例は、産業用サーバに適用され、産業用サーバにおいて産業用サーバのハードウェアに基づいたOSカーネルは、複数の物理コアをサポートする産業用サーバのマイクロカーネルアーキテクチャの実現方法であって、
システム起動の前に、OSカーネルは、それぞれの制御プログラムに対応するマイクロカーネルタスクタイプの重み、それぞれの制御プログラムに対応するマイクロカーネルタスク優先度及び/又はそれぞれの制御プログラムの動作時間の重みに基づき、スケジューリング設定情報を生成することと、
前記OSカーネルは、前記スケジューリング設定情報に基づいて前記OSカーネルにおいて動作する制御プログラムを設定することと、
前記OSカーネルは、設定された制御プログラムを起動させることと、を含み、
前記スケジューリング設定情報に、各物理コアにおいて動作する制御プログラムの数と、各物理コアにおいて動作する制御プログラムのスケジューリングアルゴリズムと、全ての制御プログラムのうちの少なくとも1つが複数の物理コアにおいて動作することと、が含まれる産業用サーバのマイクロカーネルアーキテクチャの実現方法を提供する。
オプションとして、前記OSカーネルが、それぞれの制御プログラムに対応するマイクロカーネルタスクタイプの重み、それぞれの制御プログラムに対応するマイクロカーネルタスク優先度及び/又はそれぞれの制御プログラムの動作時間の重みに基づき、スケジューリング設定情報を生成することに、
それぞれの制御プログラムに対応するマイクロカーネルタスクタイプの重み、それぞれの制御プログラムに対応するマイクロカーネルタスク優先度及び/又はそれぞれの制御プログラムの動作時間の重みに基づき、制御プログラムの関連性を計算することと、
前記関連性に基づいて前記スケジューリング設定情報を生成することとが含まれる。
オプションとして、それぞれの前記制御プログラムに対応するマイクロカーネルタスクタイプの重み、それぞれの前記制御プログラムに対応するマイクロカーネルタスク優先度及び/又はそれぞれの前記制御プログラムの動作時間の重みに基づき、制御プログラムの関連性を計算することは、
前記マイクロカーネルタスクタイプ、マイクロカーネルタスク優先度および制御プログラムの動作時間の重みに基づき、関連性を計算すること、または、
前記マイクロカーネルタスクタイプおよびマイクロカーネルタスク優先度の重みに基づき、関連性を計算すること、または、
前記マイクロカーネルタスクタイプおよび制御プログラムの動作時間の重みに基づき、関連性を計算することを含む。
オプションとして、前記OSカーネルが、前記スケジューリング設定情報に基づいて前記OSカーネルにおいて動作する制御プログラムを設定することに、
仮想化マシンプログラムによってハードウェアに対して仮想化処理を行い、前記スケジューリング設定情報に基づいて少なくとも1つの物理コアに複数の制御プログラムを割り当てること、及び/又は、
前記スケジューリング設定情報に基づいて各物理コアにおいて動作する各制御プログラムのスケジューリングアルゴリズムを設定すること、及び/又は、
複数の物理コアを仮想化し、全ての制御プログラムのうちの少なくとも1つについて、前記スケジューリング設定情報に基づき、該制御プログラムを対応付けて複数の制御プログラムを取得し、取得した前記複数の制御プログラムを前記複数の物理コアに割り当てること、が含まれる。
前記スケジューリングアルゴリズムは、時刻表に基づいたスケジューリングアルゴリズム又は優先度に基づいたスケジューリングアルゴリズムを含む。
オプションとして、前記OSカーネルが、それぞれの制御プログラムに対応するマイクロカーネルタスクタイプの重み、それぞれの制御プログラムに対応するマイクロカーネルタスク優先度及び/又はそれぞれの制御プログラムの動作時間の重みに基づき、スケジューリング設定情報を生成することに、
粗粒度ロックによるスケジューリング方法を用いることにより、物理コアごとに1つのロックを対応させ、時刻表に基づいたスケジューリングアルゴリズム又は優先度に基づいたスケジューリングアルゴリズムによって、単一の物理コアにおける複数の制御プログラムから1つの制御プログラムを特定し、特定した前記制御プログラムから前記単一の物理コアに対応するロックを取得し、前記単一の物理コアに対応するロックを取得した制御プログラムが単一の前記物理コアを独占してカーネルモード操作を実行し、それぞれの前記制御プログラムのマイクロカーネルタスクタイプ、それぞれの前記制御プログラムのマイクロカーネルタスク優先度及び/又はそれぞれの前記制御プログラムの動作時間に基づき、前記スケジューリング設定情報を生成すること、または、
細粒度ロックによるスケジューリング方法を用いることにより、物理コアごとに1つのロックを対応させ、全ての制御プログラムのうちの少なくとも1つについて、該制御プログラムの所要計算リソースに応じて制御プログラムを対応付けて複数の制御プログラムを取得し、前記複数の制御プログラム同士の関連性に基づいて前記複数の制御プログラムを異なる物理コアに割り当て、前記複数の制御プログラムのそれぞれが割り当てられた物理コアに対応するロックを取得し、ロックを取得した前記複数の制御プログラムのそれぞれが割り当てられた複数の物理コアにおいて同時にカーネルモード操作を実行して前記複数の制御プログラムの並行実行を実現し、それぞれの前記制御プログラムのマイクロカーネルタスクタイプ、それぞれの前記制御プログラムのマイクロカーネルタスク優先度及び/又はそれぞれの前記制御プログラムの動作時間に基づき、前記スケジューリング設定情報を生成すること、が含まれる。
オプションとして、前記時刻表に基づいたスケジューリングアルゴリズムは、
第1タイマーの持続時間がメインフレーム時間であり、第2タイマーが前記メインフレーム時間内の各時間窓の順序に応じて次々に起動されるとともに、前記第2タイマーの持続時間が次々に各時間窓の持続時間と同じであるように、複数のタイマーを設定することと、
前記メインフレーム時間を周期とし、前記第1タイマーおよび前記第2タイマーを起動しながら、時刻表の設定に基づいて制御プログラムをスケジュールし、前記第2タイマーのタイミングが到来すると、次の制御プログラムをスケジュールし、かつ、前記第1タイマーのタイミングが到来すると、次の周期を開始することと、を含み、
前記時刻表は、前記各時間窓のスタート・ストップ時間と、各時間窓に対応する制御プログラムとを含む。
オプションとして、前記優先度に基づいたスケジューリングアルゴリズムは、
優先度メインインデックス番号ビットマップを走査して最高優先度に対応するメインインデックス番号を決定することと、
前記メインインデックス番号に対応する優先度サブインデックス番号ビットマップを走査して最高優先度に対応するサブインデックス番号を決定することと、
前記メインインデックス番号および前記サブインデックス番号に基づいて現在の最高優先度を計算し、前記最高優先度に対応する制御プログラムを決定することとを含む。
オプションとして、前記OSカーネルが、それぞれの制御プログラムに対応するマイクロカーネルタスクタイプの重み、それぞれの制御プログラムに対応するマイクロカーネルタスク優先度及び/またはそれぞれの制御プログラムの動作時間の重みに基づき、スケジューリング設定情報を生成することに、
前記OSカーネルが、それぞれの制御プログラムに対応するマイクロカーネルタスクタイプの重み、それぞれの制御プログラムに対応するマイクロカーネルタスク優先度及び/またはそれぞれの制御プログラムの動作時間の重み、及びそれぞれの制御プログラムのサービスニーズに基づき、スケジューリング設定情報を生成すること、が含まれる。
オプションとして、前記スケジューリング設定情報は、各制御プログラム同士の動作トリガー条件及び/またはサービスパラメータを更に含む。
オプションとして、前記スケジューリング設定情報は、各制御プログラについて、該制御プログラムに含まれる各サブ制御プログラムと、該制御プログラムの各サブ制御プログラムが動作する物理コアと、該制御プログラムの各サブ制御プログラム同士の動作トリガー条件及び/またはサービスパラメータと、を更に含み、該制御プログラムの少なくとも1つのサブ制御プログラムは1つ又は複数の物理コアにおいて動作する。
オプションとして、前記OSカーネルが、それぞれの制御プログラムに対応するマイクロカーネルタスクタイプの重み、それぞれの制御プログラムに対応するマイクロカーネルタスク優先度及び/またはそれぞれの制御プログラムの動作時間の重み、及び制御プログラムのサービスニーズに基づき、スケジューリング設定情報を生成することに、
それぞれの制御プログラムについて、前記OSカーネルが、該制御プログラムのリソースニーズ及びマイクロカーネルによる計算リソースに基づいて該制御プログラムを複数のサブ制御プログラムに分割することと、
前記OSカーネルが、各サブ制御プログラムに対応するマイクロカーネルタスクタイプの重み、各サブ制御プログラムに対応するマイクロカーネルタスク優先度及び/または各サブ制御プログラムの動作時間の重み、及び各サブ制御プログラムのサービスニーズに基づき、スケジューリング設定情報を生成することと、が更に含まれる。
それぞれの制御プログラムについて、前記OSカーネルが、該制御プログラムのリソースニーズ及び各マイクロカーネルによる計算リソースに基づいて該制御プログラムを複数のサブ制御プログラムに分割することに、
それぞれの制御プログラムについて、前記OSカーネルが、該制御プログラムの計算量及び各物理コアにおけるマイクロカーネルによる計算能力の測量パラメータに基づいて該制御プログラムを複数のサブ制御プログラムを分割すること、或いは、
前記OSカーネルが、該制御プログラムのI/Oインターフェース数および各物理コアにおけるマイクロカーネルによるI/Oインターフェースの数に基づいて該制御プログラムを複数のサブ制御プログラムに分割すること、が含まれる。
オプションとして、前記OSカーネルが、それぞれの制御プログラムに対応するマイクロカーネルタスクタイプの重み、それぞれの制御プログラムに対応するマイクロカーネルタスク優先度及び/またはそれぞれの制御プログラムの動作時間の重み、及びそれぞれの制御プログラムのサービスニーズに基づき、スケジューリング設定情報を生成することに、
前記OSカーネルが、それぞれの制御プログラムに対応するマイクロカーネルタスクタイプの重み、それぞれの制御プログラムに対応するマイクロカーネルタスク優先度及び/またはそれぞれの制御プログラムの動作時間の重み、それぞれの制御プログラムのサービスニーズ、及びシステムによる基本プログラムブロックに基づき、スケジューリング設定情報を生成することが含まれ、前記スケジューリング設定情報は、各制御プログラムに含まれる各基本プログラムブロックと、各基本プログラムブロック同士の動作トリガー条件及び/またはサービスパラメータとを更に含む。
本発明の実施例は、ユーザ定義に応じて、システム起動の前に、それぞれの制御プログラムに対応するマイクロカーネルタスクタイプ、それぞれの制御プログラムに対応するマイクロカーネルタスク優先度及び/又はそれぞれの制御プログラムの動作時間の重みに基づき、制御プログラムの関連性を計算し、関連性に基づいて各物理コアにおいて動作する制御プログラムの数および各制御プログラムが複数の物理コアにおいて動作することを決定し、ユーザ定義の方式は、単一の物理コアによって複数のマイクロカーネルタイムスライスを制御すること、および単一のマイクロカーネルが計算リソースを占有してクロス物理コアスのケジューリングを行うことに限らない。これによって、産業用サーバのマイクロカーネルの産業現場でのリアルタイム制御および自由な組み合わせを実現する。
本発明の実施例に係る産業用サーバのマイクロカーネルアーキテクチャの実現方法のフローチャートである。 本発明の実施例に係る産業用サーバの構造模式図である。 本発明の実施例に係る粗粒度ロックによるスケジューリングの模式図である。 本発明の実施例に係る細粒度ロックによるスケジューリングの模式図である。 本発明の実施例に係る時刻表の模式図である。 本発明の実施例に係る優先度インデックス番号ビットマップの模式図である。 本発明の実施例4に係る産業用サーバのマイクロカーネルアーキテクチャの実現方法のフローチャートである。 本発明の実施例に係る制御プログラム同士の協働模式図である。 本発明の実施例に係るサブ制御プログラム同士の協働模式図である。 本発明の実施例に係る基本プログラムブロック同士の協働模式図である。 本発明の実施例に係る産業用サーバのマイクロ化カーネルアーキテクチャの実現装置の構造模式図である。 本発明の実施例に係る産業用サーバの構造模式図である。
従来の工業現場では、単一の物理コアにおいて固定的に単一のマイクロカーネルが動作すること、または単一のマイクロカーネルが単一の物理コアの計算リソースしか利用できないことによる、物理コアの計算リソースの使用率が低いという問題について、本発明の実施例は、ユーザ定義に応じて、システム起動の前に、マイクロカーネルタスクタイプ、マイクロカーネルタスク優先度及び/又は制御プログラムの動作時間の重みに基づき、制御プログラムの関連性を計算し、関連性に基づいて各物理コアにおいて動作する制御プログラムの数および各制御プログラムが各物理コアにおいて動作することを決定し、ユーザ定義の方式として、単一の物理コアが複数のマイクロカーネルタイムスライスを制御すること、および単一のマイクロカーネルが計算リソースを占有してクロス物理コアスのケジューリングを行うことに限らない。これによって、産業用サーバのマイクロカーネルの産業現場でのリアルタイム制御および自由な組み合わせを実現する。
以下、図面および実施例に基づいて本発明の実施例について更に詳細に説明する。ここで説明する具体的な実施例は、本発明の実施例を解釈するためのものに過ぎず、本発明の実施例を制限するものではないと理解すべきである。なお、便宜上、図面において、全部の構成ではなく、本発明の実施例に関する部分のみを示した。
実施例1
図1は、本発明の実施例に係る産業用サーバのマイクロカーネルアーキテクチャの実現方法のフローチャートであり、この方法は、産業用サーバに適用される。図2は、本発明の実施例に係る産業用サーバの構造模式図である。図2から分かるように、産業用サーバは、産業用サーバのハードウェアと、産業用サーバのハードウェアに基づいたOSカーネルと、OSカーネルがサポートする複数の物理コアと、を備え、各物理コアにおいて複数の仮想化マシンが動作可能となり、各仮想化マシンがいずれも1つのマイクロカーネルに対応し、制御プログラムがマイクロカーネルにおいて動作する。つまり、各物理コアにおいて複数の制御プログラムが動作可能となる。1つの物理コア上で複数の該制御プログラムを実行させるために、本発明の実施例は、仮想化技術によって、OSにおいて複数のマイクロカーネルを仮想化し、マイクロカーネル上で制御プログラムを実行させ、OSによって制御プログラムをスケジューリングする。例示的に、合計3つの物理コアa、bおよびcが存在し、物理コアaにおいて3つの制御プログラムa1、a2およびa3が動作し、物理コアbにおいて3つの制御プログラムb1、b2およびb3が動作し、物理コアcにおいて3つの制御プログラムc1、c2およびc3が動作している。
本実施例において、カーネルのサービスに係る部分をカーネル外に移し、マイクロカーネル(Micro Kernel)を形成する。マイクロカーネルのOSは、カーネルにおいて最も基本的で不可欠なサービス、例えばプロセス間通信(IPC)、メモリ管理、タスクスケジューリングしか提供しない。これ以外、ドライブ、ファイルシステム、ネットワークのようなサービスは、いずれもユーザモードで実現される。各サービス要素は、アドレス空間を共有せず、それぞれ独立したアドレス空間において動作する。マイクロカーネルOSは、ほとんどサービスモジュール間のメッセージ伝送によって要求を処理する。たとえば、1つのモジュールからより多くのメモリが必要とするという要求が送信された場合、該要求は、カーネルで要求を処理するサービスに送信される。処理が完了すると、結果をカーネルで返信する。
本実施例において、産業用サーバのマイクロカーネルアーキテクチャの実現方法は、OSカーネルにより実行されてもよく、具体的にOSカーネルにおいて動作する仮想化マシンモニタにより実行されてもよい。本実施例に係る方法は、具体的に後述するステップを含む。
ステップ101において、システム起動の前に、OSカーネルは、それぞれの制御プログラムに対応するマイクロカーネルタスクタイプの重み、それぞれの制御プログラムに対応するマイクロカーネルタスク優先度及び/又はそれぞれの制御プログラムの動作時間の重みに基づき、スケジューリング設定情報を生成する。前記スケジューリング設定情報に、各物理コアにおいて動作する制御プログラムの数と、各物理コアにおいて動作する制御プログラムのスケジューリングアルゴリズムと、全ての制御プログラムのうちの少なくとも1つが複数の物理コアにおいて動作することと、が含まれる。
本実施例において、各物理コアにおいて、動作周期が同じまたは異なる制御プログラムを含む複数の制御プログラムが動作可能となる。例示的に、図2に示すように、物理コアa、bおよびcにおいてそれぞれ3つの制御プログラムが動作し、物理コアaにおいて3つの制御プログラムa1、a2およびa3が動作し、物理コアbにおいて3つの制御プログラムb1、b2およびb3が動作し、物理コアcにおいて3つの制御プログラムc1、c2およびc3が動作している。ここで、a1、a2およびa3は、同じ動作周期を有する制御プログラムであってもよく、b1、b2およびb3は、異なる動作周期を有する制御プログラムであってもよく、c1およびc2の動作周期が同じであるがc3の動作周期と異っている。各物理コアにおいて動作する制御プログラムは、設定されたスケジューリングアルゴリズムによってスケジュールされてもよい。このスケジューリングアルゴリズムは、時刻表に基づいたスケジューリングアルゴリズム又は優先度に基づいたスケジューリングアルゴリズムを含み、異なる物理コアに異なるスケジューリングアルゴリズムが設定されてもよい。1つの制御プログラムは、1つ又は複数の物理コアにおいて動作してもよい。これから分かるように、1つの物理コアにおいて複数の制御プログラムが動作可能となり、これら複数の制御プログラムは、全機能を持つ制御プログラムであってもよく、1つの制御プログラムの一部の機能を持つ制御プログラムであってもよく、1つの制御プログラムが複数の物理コアに割り当てられて動作すると、各物理コアにおいて独立して動作し、つまり所在する物理コアのスケジューリングに参与する。異なる物理コアに異なるスケジューリングアルゴリズムが設定されてもよく、互いに影響しない。
OSカーネルは、制御プログラムに対応するマイクロカーネルタスクタイプの重み、制御プログラムに対応するマイクロカーネルタスク優先度及び/又は制御プログラムの動作時間の重みに基づき、制御プログラムの関連性を計算し、関連性に基づいてスケジューリング設定情報を生成する。ここで、関連性の計算は、マイクロカーネルタスクタイプ、マイクロカーネルタスク優先度および制御プログラムの動作時間の重みに基づき、関連性を計算すること、または、マイクロカーネルタスクタイプおよびマイクロカーネルタスク優先度の重みに基づき、関連性を計算すること、または、マイクロカーネルタスクタイプおよび制御プログラムの動作時間の重みに基づき、関連性を計算することを含む。ここで、制御プログラムに対応するマイクロカーネルタスクタイプは、該制御プログラムを実行させるマイクロカーネルのタスクである。制御プログラムの動作時間は、それぞれの制御プログラムに割当てられるタイムスライスである。
上記の通り、各物理コアにおいて、動作周期が同じまたは異なる制御プログラムを含む複数の制御プログラムが動作可能となる。つまり、複数の制御プログラムが1つの物理コアを共有し、ある制御プログラムがカーネルモード操作を実行しようとすると、物理コアが当該制御プログラムをサポートする。物理コアを排他的に使用するために、いずれかのカーネルモード操作を実行する必要がある制御プログラムは、1つのロック(lock)の取得を申請する必要があり、ロックを取得した制御プログラムしか物理コアを用いてカーネルモード操作を実行することができない。制御プログラムの所要計算リソースの粒度のサイズに応じて、粗粒度ロックによるスケジューリング方法と細粒度ロックによるスケジューリング方法に分けられる。
図3は、本発明の実施例に係る粗粒度ロックによるスケジューリングの模式図である。粗粒度ロックによるスケジューリングとは、物理コアごとに1つのロックを対応させ、ロックを取得した制御プログラムは物理コア全体を独占することができる。そのため、同一時間内に、1つの制御プログラムしか物理コアを用いてカーネルモード操作を実行できず、他のカーネルモード操作を実行する必要のある制御プログラムは、スケジュールされるまでロックを取得できない。粗粒度ロックによるスケジューリング方法を用いることにより、単一の物理コアにおける複数の制御プログラムのスケジューリングアルゴリズムは、時刻表に基づいたスケジューリングアルゴリズムまたは優先度に基づいたスケジューリングアルゴリズムを含む。例示的に、図2に示すように、合計3つの物理コアa、bおよびcが存在し、物理コアごとに1つのロックを対応させる。粗粒度は、物理コア内のスケジューリングが1つの完全な制御プログラムを単位として行われる。物理コアaにおいて3つの制御プログラムa1、a2およびa3が動作し、同一時間内に、1つの制御プログラムしか物理コアを用いてカーネルモード操作を実行できない。ここで、時刻表によるスケジューリングアルゴリズム又は優先度によるスケジューリングアルゴリズムに基づいて、制御プログラムa1、a2およびa3の間にスケジュールし、どの制御プログラムが物理コアaのロックを取得したかを確認することができる。同様に、物理コアbにおいて動作する3つの制御プログラムb1、b2およびb3、物理コアcにおいて動作する3つの制御プログラムc1、c2およびc3は、いずれも上述した方法でスケジューリングし、所在する物理コアに対応するロックの使用権を取得し、更に物理コアを用いてカーネルモード操作を実行することができる。
図4は、本発明の実施例に係る細粒度ロックによるスケジューリングの模式図である。
制御プログラムの所要カーネルサービスの計算リソースが大きいであれば、複数の物理コアにおいてこの制御プログラムのカーネルモード操作を同時に実行させてもよい。異なる制御プログラムの粒度で単一の制御プログラムについて分割して複数の制御プログラムを異なる物理コアに割り当てることにより、複数の物理コアが同時にカーネルモード操作を実行し、複数の制御プログラムを並列実行させることができる。マイクロカーネルは、プロセス間通信(IPC)、メモリ管理、タスクスケジューリングなどを含む複数のタイプに分けられる。本実施例において、二重カット処理アルゴリズムを用いて制御プログラムをカットして分類する。ここで、第1層のカット処理アルゴリズムは、制御プログラムスケジューリングのシステムオーバーヘッドを削減するために、動作時間ごとに複数の制御プログラムをなるべく小さなスケジュール可能な幾つかの周期の制御プログラムセットにカットする。第2層のカット処理アルゴリズムは、制御プログラムをより信頼性が高くてリアルタイム性が高い環境で動作させるために、第1層の制御プログラムのカット結果に基づき、いくつかの優先度レベルの異なる制御プログラムセットにカットする。最後、複数の制御プログラムの関連性を計算することにより、この計算手順は、マイクロカーネルタスクタイプの重み、マイクロカーネルタスク優先度及び/又は制御プログラムの動作時間の重みを組み合わせできる。関連性の高い制御プログラムを組合せて同一の物理コアに設定し、関連性の低い制御プログラムを異なる物理コアに設定することで、複数の物理コアが同時にカーネルモード操作を実行し、制御プログラムを完成する。
本実施例に係るカット処理アルゴリズムは、二重カット処理アルゴリズムに限られず、以下のようなアルゴリズムを更に含む。1つの制御プログラムについて、該制御プログラムをより信頼性が高くてリアルタイム性が高い環境で動作させるために、制御プログラムに対応する複数の制御プログラムを取得し、これをいくつかの優先度レベルの異なる制御プログラムにカットする。最後、この計算手順は、マイクロカーネルタスクタイプの重み、マイクロカーネルタスク優先度及び/又は制御プログラムの動作時間の重みを組み合わせできる。関連性の高い制御プログラムを組合せて同一の物理コアに設定し、関連性の低い制御プログラムを異なる物理コアに設定することで、複数の物理コアが同時にカーネルモード操作を実行し、制御プログラムを完成する。
例示的に、図2に示すように、合計3つの物理コアa、bおよびcが存在し、物理コアごとに1つのロックを対応させる。細粒度は、1つの完全な制御プログラムに対応して複数の制御プログラムを取得することを表す。そして、制御プログラム間の関連性に基づいて複数の制御プログラムを異なる物理コアに割り当て、各物理コアは制御プログラムを他の制御プログラムと共にスケジュールする。物理コアbにおいてb1、b2およびb3が動作し、物理コアcにおいてc1、c2およびc3が動作する。ここで、b1、b2およびc1、c2は同一の制御プログラムからのものである。上記の通り、この制御プログラムは、二重カット処理アルゴリズム又は他のアルゴリズムを用いてカットするとともに、関連性に基づいて制御プログラムの所在物理コアを割り当ててもよい。つまり、b1、b2の関連性が高いため、同一の物理コアbに割り当てられ、c1、c2の関連性が高いため、同一の物理コアcに割り当てられる。このように、制御プログラムの粒度に基づいて割り当てられた後、同一の制御プログラムが2つの物理コアに割り当てられる。各物理コア内において、時刻表によるスケジューリングアルゴリズム又は優先度によるスケジューリングアルゴリズムで、制御プログラムをスケジュールしてもよく、ロックの使用権を取得した制御プログラムが物理コアを用いてカーネルモード操作を実行する。
オプションとして、制御プログラムをより信頼性が高くてリアルタイム性が高い環境で動作させるために、制御プログラムに対応する複数の制御プログラムをいくつかの動作時間の異なる制御プログラムにカットすることができる。最後、複数の制御プログラムの関連性を計算することにより、この計算手順は、マイクロカーネルタスクタイプの重み、マイクロカーネルタスク優先度及び/又は動作時間の重みを組み合わせできる。関連性の高い制御プログラムを組合せて同一の物理コアに設定し、関連性の低い制御プログラムを異なる物理コアに設定することで、複数の物理コアが同時にカーネルモード操作を実行し、制御プログラムを完成する。
一般的には、産業現場に係る制御プログラムは、温度検出、湿度検出及びプロセス制御などを含むが、これらに限定されない。本発明に説明した関連性とは、上記制御プログラムがマイクロカーネルにおいて実現される際に、マイクロカーネルに基づいて上記制御プログラムに対応する複数の制御プログラムを完成することを確認することができることを意味している。実際に、予め設定したアルゴリズムによって取得したマイクロ制御プロセスは、産業現場に適合する産業制御プロセスであってもよく、ユーザ定義の産業用制御プロセスであってもよい。
いわゆる予め設定したアルゴリズムとは、例えば、マイクロカーネルタスクタイプ、制御プログラムの動作時間、マイクロカーネルタスク優先度についてそれぞれ異なる重みを付与し、重みの加算値が固定範囲にあるものを同一の制御プログラムに対応するものとみなす。予め設定したアルゴリズムによって関連性を計算し、関連性の高い制御プログラムを組合せ、各物理コアにおいて動作する制御プログラムの数、及び各制御プログラムが複数の物理コアにおいて動作することを確認する。
スケジューリング設定情報は、各物理コアにおいて動作する制御プログラムの数と、各物理コアにおいて動作する制御プログラムのスケジューリングアルゴリズムと、全ての制御プログラムのうちの少なくとも1つが複数の物理コアにおいて動作することと、を含む。本実施例において、上述した方法に基づいてどの制御プログラムをどの物理コアに割り当てることを確認すると、スケジューリング設定情報を生成する。例示的に、図2に示すように、物理コアa、bおよびcにおいてそれぞれ3つの制御プログラムが動作し、物理コアaにおいて3つの制御プログラムa1、a2およびa3が動作し、物理コアbにおいて3つの制御プログラムb1、b2およびb3が動作し、物理コアcにおいて3つの制御プログラムc1、c2およびc3が動作している。物理コアaは、時刻表に基づいたスケジューリングアルゴリズムを採用し、3つの制御プログラムa1、a2およびa3から、現在カーネルモード操作を実行するものを決定し、物理コアbは、優先度に基づいたスケジューリングアルゴリズムを採用して、3つの制御プログラムb1、b2およびb3から、現在カーネルモード操作を実行するものを決定し、物理コアcは、優先度に基づいたスケジューリングアルゴリズムを採用して、3つの制御プログラムc1、c2およびc3から、現在カーネルモード操作を実行するものを決定する。1つの制御プログラムに対応付けて取得された制御プログラムb1、b2、c1、c2は、2つの物理コアbおよびcにおいて動作する。
ステップ102において、OSカーネルは、スケジューリング設定情報に基づいてOSカーネルにおいて動作する制御プログラムを設定する。
OSカーネルは、仮想化マシンプログラムによってハードウェアに対して仮想化処理を行い、スケジューリング設定情報に基づいて1つの物理コアに複数の制御プログラムを割り当て、及び/又は、スケジューリング設定情報に基づいて各物理コアにおいて動作する制御プログラムの、時刻表に基づいたスケジューリングアルゴリズム又は優先度に基づいたスケジューリングアルゴリズムを含むスケジューリングアルゴリズムを設定し、及び/又は、複数の物理コアを仮想化し、スケジューリング設定情報に基づいて全ての制御プログラムのうちの少なくとも1つを対応付けて複数の制御プログラムを取得し、取得した前記複数の制御プログラムを複数の物理コアに割り当てる。
OSカーネルは、スケジューリング設定情報に基づいてOSカーネルにおいて動作する制御プログラムを実際に設定することができる。例示的に、図2に示すように、物理コアa、bおよびcにおいてはそれぞれ3つの制御プログラムが動作し、物理コアaにおいて3つの制御プログラムa1、a2およびa3が動作し、物理コアbにおいて3つの制御プログラムb1、b2およびb3が動作し、物理コアcにおいて3つの制御プログラムc1、c2およびc3が動作している。物理コアaは、時刻表に基づいたスケジューリングアルゴリズムを採用し、3つの制御プログラムa1、a2およびa3から、現在カーネルモード操作を実行するものを決定し、物理コアbは、優先度に基づいたスケジューリングアルゴリズムを採用し、3つの制御プログラムb1、b2およびb3から、現在カーネルモード操作を実行するものを決定し、物理コアcは、優先度に基づいたスケジューリングアルゴリズムを採用し、3つの制御プログラムc1、c2およびc3から、現在カーネルモード操作を実行するものを決定する。1つの制御プログラムに対応付けて取得された制御プログラムb1、b2、c1、c2は、2つの物理コアbおよびcにおいて動作している。
ステップ103において、OSカーネルは、設定された制御プログラムを起動させる。
上記設定によって、OSカーネルは、設定された制御プログラムを起動し、例示的に、9つの制御プログラムが図2に示すように3つの物理コアに割当てられ、且つ該当するスケジューリングアルゴリズムに応じてスケジュールされる。
本実施例において、1つの物理コアにおいて複数の制御プログラムを動作させることができ、物理コアリソースの使用率を向上させ、周期の異なる制御プログラムが同一の物理コアにおいて動作させることができ、多物理コアでの制御プログラムの自由な組み合わせを実現し、マルチサービスソフトウェアにより定義される自由スケジューリングを実現し、異なる物理コアは異なる制御プログラムスケジューリングアルゴリズムを自由に設定することができ、制御プログラムスケジューリングの適応性と多様性を向上させる。
本実施例の技術態様において、システム起動の前に、それぞれの制御プログラムに対応するマイクロカーネルタスクタイプの重み、それぞれの制御プログラムに対応するマイクロカーネルタスク優先度及び/又はそれぞれの制御プログラムの動作時間の重みに基づき、スケジューリング設定情報を生成し、スケジューリング設定情報に基づいて各物理コアにおいて動作する制御プログラムの数、スケジューリングアルゴリズム、及び全ての制御プログラムのうちの少なくとも1つが複数の物理コアにおいて動作することを設定し、カスタム設定の方式は、単一の物理コアによって複数のマイクロカーネルのタイムスライスを制御すること、および単一のマイクロカーネルが計算リソースを占有してクロス物理コアスのケジューリングを行うことに限らない。これによって、産業用サーバのマイクロカーネルの産業現場でのリアルタイム制御および自由な組み合わせを実現し、物理コアの計算リソースの使用率を向上させる。
実施例2
上述した技術態様に基づき、時刻表に基づいたスケジューリングアルゴリズムは、複数のタイマーを設定することと、メインフレーム時間を周期とし、第1タイマーおよび前記第2タイマーを起動しながら、時刻表の設定に基づいて制御プログラムをスケジュールし、第2タイマーのタイミングが到来すると、次の制御プログラムをスケジュールし、かつ、第1タイマーのタイミングが到来すると、次の周期を開始することとを含む。ここで、第1タイマーの持続時間がメインフレーム時間であり、第2タイマーがメインフレーム時間内の各時間窓の順序に応じて次々に起動するとともに、第2タイマーの持続時間が次々に各時間窓の持続時間と同じであり、時刻表は、各時間窓のスタート・ストップ時間と、各時間窓に対応する制御プログラムとを含む。
本実施例において、1つの物理コアにおいて動作する制御プログラムは、設定された時刻表に基づいてスケジューリングを行い、時刻表はニーズに応じて予め設定されてもよく、スケジューリング時に、メインフレーム時間を周期とし、メインフレーム時間内に各時間窓がある。時刻表は、スタート・ストップ時間と、各時間窓に対応する制御プログラムとを含み、時間窓は非アイドル時間窓とアイドル時間窓に分けられる。ここで、各非アイドル時間窓がいずれも1つの制御プログラムの動作時間に対応し、アイドル時間窓において制御プログラムが動作しない。制御プログラムをスケジュールする場合、メインフレーム時間を繰り返し実行する。つまり、時刻表を1回実行するごとに、改めて時刻表における1番目の時間窓に移行して引き続き実行する。図5は、本発明の実施例に係る時刻表の模式図である。この時刻表において、1番目の非アイドル時間窓は制御プログラム1の動作時間であり、2番目の非アイドル時間窓は制御プログラム2の動作時間であり、3番目の非アイドル時間窓は制御プログラム3の動作時間であり、4番目の非アイドル時間窓も制御プログラム1の動作時間である。メインフレーム時間は、図中の6つの時間窓の総持続時間である。ユーザは、実際のニーズに応じて各時間窓の持続時間及び各時間窓において動作する制御プログラムを設定することができ、各時間窓の持続時間が同じであるように設定されてもよく、異なるように設定されてもよい。
しかし、時刻表に基づいたスケジューリングアルゴリズムがシステムクロックを用い、小さな時間間隔ごとに1回中断することが発生しうることを考えると、頻繁に中断すれば、時刻表の時間窓に遅延が生じる可能性がある。例えば、時刻表のメインフレーム時間が500msであり、制御プログラム1に対応する非アイドル時間窓が100msであり、且つ、中断処理時間が1msであると想定すると、制御プログラム1の動作中に中断が10回発生すれば、10msの遅延が生じる。つまり、制御プログラム2に切り替えられる前に、制御プログラム1が110ms動作していた。したがって、メインフレーム時間が500msに到達する場合、実際に、依然として時刻表の最後の時間窓にあり、510msに到達する次第に改めて時刻表の1番目の時間窓に切り替えられるため、メインフレームの切り替えに10msの遅延が生じてしまう。制御プログラムの切り替えおよびメインフレームの切り替えの遅延を回避するために、本実施例において複数のタイマーが設定されており、メインフレーム時間の切り替えを制御するために第1タイマーによってメインフレーム時間をカウントし、時間窓の切り替えを制御するために第2タイマーによって時間窓をカウントする。図5に示すように、1つのメインフレームの開始と同時に第1タイマーおよび第2タイマーを起動させ、スケジューリング時刻表の1番目の時間窓に対応する制御プログラム1をスケジュールする。この際、第2タイマーの持続時間が1番目の時間窓の持続時間と同じである。第2タイマーのタイミングが到来すると、時刻表の1番目の時間窓を隣接の2番目の時間窓に切り替え、2番目の時間窓に対応する制御プログラム2をスケジュールする。この際、第2タイマーの持続時間が2番目の時間窓の持続時間と同じである。これによって類推する。第1タイマーのタイミングが到来すると、次のメインフレーム周期を開始する。つまり、時刻表の1番目の時間窓に対応する制御プログラム1を改めてスケジュールし、この際、現在どの窓口にあるかにかかわらず、時刻表の1番目の時間窓に切り替えて、最初からカウントすることで、メインフレーム時間の同期を実現する。
実施例3
上述した技術態様に基づき、1つ又は複数の物理コアにおいて動作する制御プログラムの優先度を取得し、優先度を8ビットバイナリに示す。ここで、最初の3ビットがメインインデックス番号であり、最後の5ビットがサブインデックス番号でありる。メインインデックス番号に基づいて優先度メインインデックス番号ビットマップにおける対応ビットをマークし、サブインデックス番号に基づいて優先度サブインデックス番号ビットマップにおける対応ビットをマークする。
本実施例において、各制御プログラムに優先度を付与し、優先度の範囲を0−255としてもよい。ここで、0が最高レベルに対応し、255が最低レベルに対応する。各制御プログラムの状態は、準備完了、スタンバイ、スタンバイ・ウエイティング、一時中断または休眠であってもよく、準備完了の状態にある制御プログラムだけがスケジュール可能となり、他の状態にある制御プログラムがスケジューリング対象に属しない。各優先度が8ビットバイナリに示される。ここで、最初の3ビットがメインインデックス番号であり、最後の5ビットがサブインデックス番号である。例えば、優先度が42である制御プログラムは、準備完了状態にあり、バイナリに示すと00101010であり、最初の3ビットが001(1)で、最後の5ビットが01010(10)である。したがって、42に対応するメインインデックス番号が1であり、サブインデックス番号が10である。図6は、本発明の実施例に係る優先度インデックス番号ビットマップの模式図である。ここで、優先度メインインデックス番号ビットマップは1*8の一次元ビットマップであり、番号が0−7であり、優先度サブインデックス番号ビットマップは8*32の二次元ビットマップであり、縦方向の番号が0−7であり、横方向の番号が0−31である。42に対応するメインインデックス番号1およびサブインデックス番号10に基づいて、それぞれ優先度メインインデックス番号ビットマップの番号1、および優先度サブインデックス番号ビットマップの縦方向番号1、横方向番号10をマークする(1とマークする)。
上述した技術態様に基づき、優先度に基づいたスケジューリングアルゴリズムは、優先度メインインデックス番号ビットマップを走査して最高優先度に対応するメインインデックス番号を決定することと、メインインデックス番号に対応する優先度サブインデックス番号ビットマップを走査して最高優先度に対応するサブインデックス番号を決定することと、メインインデックス番号および前記サブインデックス番号に基づいて現在の最高優先度を計算し、最高優先度に対応する制御プログラムを決定することとを含む。
図6に示すように、まず、0−7の順番で優先度メインインデックス番号ビットマップを走査し、1番目の1とマックされたビットを見つけ、1と番号付ける。そして、優先度サブインデックス番号ビットマップにおいて0−31の順番で縦方向番号が1である横方向ビットマップを走査し、1番目の1とマックされたビットが10であることを発見した。優先度の構成方式に基づいて計算し、この際の優先度が最高である42レベルの制御プログラムを取得する。
実施例4
図7は、本発明の実施例4に係る産業用サーバのマイクロカーネルアーキテクチャの実現方法のフローチャートである。本実施例において、OSカーネルは、制御プログラムに対応するマイクロカーネルタスクタイプの重み、制御プログラムに対応するマイクロカーネルタスク優先度及び/または制御プログラムの動作時間の重み、及び制御プログラムのサービスニーズに基づき、スケジューリング設定情報を生成する。図7に示すように、具体的には以下のステップを含む。
ステップS710において、システム起動の前に、OSカーネルは、制御プログラムに対応するマイクロカーネルタスクタイプの重み、制御プログラムに対応するマイクロカーネルタスク優先度及び/または制御プログラムの動作時間の重み、及び制御プログラムのサービスニーズに基づき、スケジューリング設定情報を生成する。
オプションとして、制御プログラムのサービスニーズは、制御プログラムのフローニーズ、データニーズ、及び機能ニーズなどを含む。本実施例において、マイクロカーネルタスクタイプの重み、マイクロカーネルタスク優先度及び制御プログラムの動作時間重みに加え、スケジューリング設定情報を生成する準拠として制御プログラムのサービスニーズを増加する。具体的な実現形態において、OSカーネルは、制御プログラムに対応するマイクロカーネルタスクタイプの重み、制御プログラムに対応するマイクロカーネルタスク優先度の重み、制御プログラムの動作時間の重み及び制御プログラムのサービスニーズに基づき、スケジューリング設定情報を生成してもよい。或いは、OSカーネルは、制御プログラムに対応するマイクロカーネルタスクタイプの重み、制御プログラムに対応するマイクロカーネルタスク優先度の重み及び制御プログラムのサービスニーズに基づき、スケジューリング設定情報を生成してもよい。或いは、OSカーネルは、制御プログラムに対応するマイクロカーネルタスクタイプの重み、制御プログラムの動作時間の重み及び制御プログラムのサービスニーズに基づき、スケジューリング設定情報を生成してもよい。制御プログラムのサービスニーズは、制御プログラムが実現しようとする制御ロジック、制御タスクおよび制御目的などであってもよい。特に、分散型制御システムにおいて、各制御プログラムのサービスニーズにより、制御システムにおける各制御プログラム同士の動作トリガー条件、及び互いに伝送すべきサービスパラメータ又はデータなどの協働関係を分析することができる。制御プログラムがどの物理コアにおいて動作するか、物理コアにおいて動作する制御プログラムの数を確定する場合、マイクロカーネルタスクタイプの重み、マイクロカーネルタスク優先度の重み及び制御プログラムのサービスニーズを結合し、複数の制御プログラム同士の関連性を計算し、関連性の高い制御プログラムを組み合わせて同一の物理コアに設定し、関連性の低い制御プログラムを異なる物理コアに設定してもよい。
スケジューリング設定情報は、各物理コアにおいて動作する制御プログラムの数、各物理コアにおいて動作する制御プログラムのスケジューリングアルゴリズム、及び制御プログラムが複数の物理コアにおいて動作することを含む。
ステップS720において、OSカーネルは、前記スケジューリング設定情報に基づいて前記OSカーネルにおいて動作する制御プログラムを設定する。
ステップS730において、OSカーネは、設定された制御プログラムを起動させる。
本実施例において、OSカーネルは、制御プログラムに対応するマイクロカーネルタスクタイプの重み、マイクロカーネルタスク優先度及び/または制御プログラムの動作時間の重み、及び制御プログラムのサービスニーズに基づき、スケジューリング設定情報を生成することで、システムが制御プログラムのサービスニーズに基づいて起動することができ、マイクロカーネルアーキテクチャを基に、制御プログラムのサービス同士及びサービス内の協働、及び異なる物理コアにおいて動作する各サブ制御プログラム同士のデバイス協働を実現することができる。ここで、デバイス協働において、各サブ制御プログラムは1つの完全制御プログラムを構成する。
オプションの実施例において、1つの物理コアにおいて複数の制御プログラムが動作し、複数の制御プログラム同士にサービスニーズ関係が存在する。これを基に、スケジューリング設定情報は、各物理コアにおいて動作する制御プログラムの数、各物理コアにおいて動作する制御プログラムのスケジューリングアルゴリズムと、各制御プログラム同士の動作トリガー条件及び/または各制御プログラムの間で伝送するサービスパラメータとを含み、制御プログラムが複数の物理コアにおいて動作する。制御プログラム同士間の動作トリガー条件とは、任意の制御プログラムAが該制御プログラムAと協働関係を有する制御プログラムBをトリガーして動作させる時に、該制御プログラムAが持つべき条件と理解できる。各制御プログラムの間で伝送されるサービスパラメータとは、任意の制御プログラムAが該制御プログラムAと協働関係を有する制御プログラムBに該制御プログラムBの動作のためのサービスパラメータを伝送すると理解できる。したがって、マイクロカーネルアーキテクチャを用いてサービス同士の協働を実現する。複数の制御プログラムが異なる物理コアにおいて動作すれば、物理コアハードウェアデバイス同士の協働を実現する。オプションとして、スケジューリング設定に、1つの制御プログラム及びそれと協働関係が存在する制御プログラムがいずれの物理コアにおいて動作するかを指示し、それと協働関係が存在する制御プログラムが動作する時に必要となる動作トリガー条件をトリガーし、及び/またはそれと協働関係が存在する制御プログラムに伝送すべきサービスパラメータを付与する必要があることを更に含む。ここで言われる協働関係が存在する制御プログラムについては、1つの制御プログラムと他の1つの制御プログラム同士の協働であり、1つの制御プログラムのサブ制御プログラムと他の1つの制御プログラムのサブ制御プログラム同士の協働であってもよい。
1つの物理コアにおいて1つ又は複数の制御プログラムが動作してもよく、具体的には、各マイクロカーネルにおけるPLCにおいて動作する。1つの物理コアにおいて複数の制御プログラムが動作する場合について、図2に示すように、物理コアaにおいて3つの制御プログラムa1、a2及びa3が動作し、3つの制御プログラムのスケジューリングアルゴリズムは、時刻表に基づいたスケジューリングアルゴリズムまたは優先度に基づいたスケジューリングアルゴリズムを含み、詳細については上述した実施例に記載され、ここで贅言しない。3つの制御プログラムにおいて、いずれの制御プログラムも1つの制御プログラムと協調関係があると仮定する。動作トリガー条件とサービスパラメータは、例えば、制御プログラムa1がa2の動作をトリガーするための動作トリガー条件、制御プログラムa2がa3の動作をトリガーするための動作トリガー条件、制御プログラムa1が制御プログラムa2に伝送する、制御プログラムa2の動作のためのサービスパラメータ及び制御プログラムa1の演算結果や、制御プログラムa2が制御プログラムa3に伝送する、制御プログラムa3の動作のためのサービスパラメータ及び制御プログラムa2の演算結果などを含む。1つの物理コアにおいて1つの制御プログラムが動作する場合について、継続して、図2に示すように、物理コアaにおいて制御プログラムa1が動作し、物理コアbにおいて制御プログラムb1、制御プログラムa1及びb1が動作するスケジューリングアルゴリズムは、時刻表に基づいたスケジューリングアルゴリズムまたは優先度に基づいたスケジューリングアルゴリズムを含む。制御プログラムa1と制御プログラムa2との間に協働関係が存在し、動作トリガー条件及びサービスパラメータは、制御プログラムa1が制御プログラムb1の動作をトリガーするための動作トリガー条件、制御プログラムa1が制御プログラムb1に伝送する、制御プログラムb1の動作のためのサービスパラメータ及び制御プログラムa1の演算結果などを含む。
以下、図8を参照しながら、ある適用シナリオで各制御プログラム同士の動作トリガー条件及び/またはサービスパラメータについて詳細に説明する。
図8は、制御プログラムAと制御プログラムBとを含み、破線は動作トリガー条件の流れを示し、実線はサービスパラメータの流れを示す。システム起動の前に、動作トリガー条件とサービスパラメータを予め生成し、制御プログラムAと制御プログラムBを設定することで、制御プログラムAと制御プログラムBは自動的に設定に応じてサービス同士の協働を実現する。なお、トリガーされた制御プログラムが動作した後、トリガーの責任を負う制御プログラムは、動作を停止するか継続して動作することができる。具体的な動作形態は、各制御プログラムのサービスニーズにより決定される。
例えば、制御プログラムAはコンベヤベルト制御プログラムであり、制御プログラムBはロボットアーム把持制御プログラムであり、コンベヤベルト制御プログラムは、条件を満たした場合にロボットアーム把持制御プログラムを起動させて把持動作を開始する。システム起動の前に、コンベヤベルト制御プログラムを設定する(条件を満たした場合にロボットアーム把持制御プログラムを起動させて把持動作を開始する)。仮に、コンベヤベルト制御プログラムがロボットアーム把持制御プログラムに対して把持動作の速度とパワーを伝える必要があると、コンベヤベルト制御プログラムを予め設定する(条件を満たした場合にロボットアーム把持制御プログラムを起動させて把持動作を開始する)。更に、把持動作の速度及びパワーをロボットアーム把持制御プログラムに予め設定してもよい。
また、例えば、制御プログラムAは供給制御プログラムであり、制御プログラムBは加熱制御プログラムである。供給制御プログラムは、容器における水の温度が予め設定された条件を満たした場合に供給し、温度が予め設定された条件を満たしていない場合に加熱制御プログラムを起動させて容器における水の加熱を開始する必要がある。システム起動の前に、供給制御プログラムを予め設定する(水の温度が予め設定された条件以下である場合、加熱制御プログラムを起動させて容器における水の加熱を開始する)。更に、水の温度が達しようとする範囲を加熱制御プログラムに予め設定してもよい。
別のオプションの実施例において、制御プログラムの数は少なくとも1つであり、各制御プログラムは複数のサブ制御プログラムに分割されてもよい。これを基に、前記スケジューリング設定情報は、各制御プログラムについて、該制御プログラムに含まれる各サブ制御プログラムと、該制御プログラムの各サブ制御プログラムが動作する物理コアと、該制御プログラムの各サブ制御プログラム同士の動作トリガー条件及び/またはサービスパラメータとを含み、該制御プログラムの少なくとも1つのサブ制御プログラムが1つ又は複数の物理コアにおいて動作する。したがって、マイクロカーネルアーキテクチャを用いてサブ制御プログラム同士の協働を実現する。サブ制御プログラム同士間の動作トリガー条件とは、任意のサブ制御プログラムAが該サブ制御プログラムAと協働関係を有するサブ制御プログラムBをトリガーして動作させる時に、該サブ制御プログラムAが持つべき条件と理解できる。各サブ制御プログラムの間で伝送されるサービスパラメータとは、任意のサブ制御プログラムAが該サブ制御プログラムAと協働関係を有するサブ制御プログラムBに該サブ制御プログラムBの動作のためのサービスパラメータを伝送すると理解できる。制御プログラムの複数のサブ制御プログラムが異なる物理コアにおいて動作すれば、物理コアハードウェアデバイス同士の協働を実現する。オプションとして、スケジューリング設定に、1つのサブ制御プログラム及びそれと協働関係が存在するサブ制御プログラムがいずれの物理コアにおいて動作するかを指示し、それと協働関係が存在するサブ制御プログラムが動作する時に必要となる動作トリガー条件をトリガーし、及び/またはそれと協働関係が存在する制御プログラムにサービスパラメータを付与する必要があることを更に含む。ここで言われる協働関係が存在する各サブ制御プログラムは、1完全制御プログラムを構成する。
なお、同一の物理コアにおいて、異なる制御プログラムのサブ制御プログラムまたは同一の制御プログラムの複数のサブ制御プログラムが動作してもよい。
各制御プログラムにおける各サブ制御プログラムについて、1つの物理コアにおいて1つ又は複数のサブ制御プログラムが動作してもよく、具体的に各マイクロカーネルにおけるPLCにおいて動作する。1つの物理コアにおいて複数のサブ制御プログラムが動作する場合について、図2に示すように、物理コアaにおいて3つのサブ制御プログラムa1、a2及びa3が動作し、a1、a2及びa3が1つの制御プログラムを構成する。3つのサブ制御プログラムのスケジューリングアルゴリズムは、時刻表に基づいたスケジューリングアルゴリズムまたは優先度に基づいたスケジューリングアルゴリズムを含む。動作トリガー条件とサービスパラメータは、例えば制御プログラムa1がa2の動作をトリガーするための動作トリガー条件、制御プログラムa2がa3の動作をトリガーするための動作トリガー条件、制御プログラムa1が制御プログラムa2に伝送する、制御プログラムa2の動作のためのサービスパラメータ及び制御プログラムa1の演算結果や、制御プログラムa2が制御プログラムa3に伝送する、制御プログラムa3の動作のためのサービスパラメータ及び制御プログラムa2の演算結果などを含む。1つの物理コアにおいて1つのサブ制御プログラムが動作する場合について、継続して、図2に示すように、物理コアaにおいてサブ制御プログラムa1が動作し、物理コアbにおいてサブ制御プログラムb1が動作し、サブ制御プログラムa1及びb1のスケジューリングアルゴリズムは、時刻表に基づいたスケジューリングアルゴリズムまたは優先度に基づいたスケジューリングアルゴリズムを含む。動作トリガー条件及びサービスパラメータは、例えば、制御プログラムa1が制御プログラムb1の動作をトリガーするための動作トリガー条件、制御プログラムa1が制御プログラムb1に伝送する、制御プログラムb1の動作のためのサービスパラメータ及び制御プログラムa1の演算結果などを含む。
以下、図9を参照しながら、ある適用シナリオで各サブ制御プログラム同士の動作トリガー条件及び/またはサービスパラメータについて詳細に説明する。
図9において、制御プログラムAはサブ制御プログラムa1、a2及びa3を含む。サブ制御プログラムa1は物理コアaのPLC1に設定され、サブ制御プログラムa2は物理コアbのPLC2に設定され、サブ制御プログラムa3は物理コアcのPLC3に設定されている。オプションとして、物理コアは、通信機能ブロックを更に含む。通信機能ブロックは、サブ制御プログラム同士の動作トリガー条件及びサービスパラメータを伝送するために用いられ、制御プログラムフローにおいて各PLCの「入力」又は「出力」に相当する。破線は動作トリガー条件の流れを示し、実線はサービスパラメータの流れを示す。システム起動の前に、動作トリガー条件及びサービスパラメータを予め生成し、サブ制御プログラムa1、a2及びa3を設定することで、サブ制御プログラムa1、a2及びa3は、自動的に設定に応じて物理コアハードウェアデバイス同士の協働を実現する。なお、トリガーされたサブ制御プログラムが動作を開始した後、トリガーの責任を負うサブ制御プログラムは動作を停止するか動作を継続することができる。
具体的な動作形態は、各サブ制御プログラムのサービスニーズにより決定される。
例えば、サブ制御プログラムa1の初期値を予め設定し、サブ制御プログラムa2の動作トリガー条件はサブ制御プログラムa1の演算結果であり、サブ制御プログラムa3の動作トリガー条件はサブ制御プログラムa1の演算結果及びa2の演算結果であり、サブ制御プログラムa1の動作トリガー条件はサブ制御プログラムa1の演算結果である。
具体的には、サブ制御プログラムa1は予め設定された初期値に応じて演算し、演算結果を通信機能ブロックによってサブ制御プログラムa2及びa3へそれぞれ送信し、サブ制御プログラムa2は通信機能ブロックから受信されたサブ制御プログラムa1の演算結果に応じて演算し、演算結果をサブ制御プログラムa3へ送信する。サブ制御プログラムa3は通信機能ブロックから受信されたサブ制御プログラムa1及びa2の演算結果に応じて演算し、最終の結果を取得する。
オプションとして、複数種の形態、例えば上述した実施例に係る二重カット処理アルゴリズムで制御プログラムを複数のサブ制御プログラムに分割する。本実施例において、制御プログラムのリソースニーズ及びマイクロカーネルによる計算リソースに基づいてサブ制御プログラムを分割する。これを基に、OSカーネルが、制御プログラムに対応するマイクロカーネルタスクタイプの重み、制御プログラムに対応するマイクロカーネルタスク優先度及び/または制御プログラムの動作時間の重み、及び制御プログラムのサービスニーズに基づき、スケジューリング設定情報を生成することに、前記OSカーネルが制御プログラムのリソースニーズ及びマイクロカーネルによる計算リソースに基づいて各制御プログラムを複数のサブ制御プログラムに分割することと、前記OSカーネルが各サブ制御プログラムに対応するマイクロカーネルタスクタイプの重み、各サブ制御プログラムに対応するマイクロカーネルタスク優先度及び/または各サブ制御プログラムの動作時間の重み、及び各サブ制御プログラムのサービスニーズに基づき、スケジューリング設定情報を生成することと、が更に含まれる。
そのうち、制御プログラムのリソースニーズは制御プログラムの計算量又はI/Oインターフェース数を含み、制御プログラムの計算量は、メモリーサイズ、コマンド数およびプロセス数などを含む。相応して、マイクロカーネルによる計算リソースは、計算能力の測量パラメータ或いは提供されるI/Oインターフェース数を含み、計算能力の測量パラメータは、メモリー、主周波数、記憶スペースなどを含む。これを基に、前記OSカーネルは、制御プログラムの計算量及び各物理コアにおけるマイクロカーネルによる計算能力の測量パラメータに基づいて前記制御プログラムを複数のサブ制御プログラムを分割し、或いは、前記OSカーネルは、制御プログラムのI/Oインターフェース数および各物理コアにおけるマイクロカーネルによるI/Oインターフェース数に基づいて前記制御プログラムを複数のサブ制御プログラムに分割し、分割されたサブ制御プログラムは、マイクロカーネルによる計算リソースを用いて成功して動作することができる。
更に、サブ制御プログラムを分割した後、サブ制御プログラムのI/Oインターフェース関連性を計算し、I/Oインターフェース関連性は、サブ制御プログラム同士に直接接続されたI/Oインターフェースの数により測量されてもよい。I/Oインターフェース関連性の予め設定された関連性閾値より大きいサブ制御プログラムを同一の物理コアにおいて設定し、或いは地理位置の隣り合う複数の物理コアにおいて設定して、データ伝送の距離を低減させる。
別のオプションの実施例において、制御プログラムの数は少なくとも1つであり、各制御プログラムは、少なくとも1つの基本プログラムブロックを含む。基本プログラムブロックは制御ロジックを実行する最小のソフトウェアユニットであり、それは外部的にトリガー条件の入力出力及びサービスパラメータの入力出力に表現される。制御プログラムに含まれる基本プログラムブロック及び基本プログラムブロック同士の動作トリガー条件及び/またはサービスパラメータは、システム起動の前に予め生成されて設定されてもよい。オプションとして、OSカーネルが、制御プログラムに対応するマイクロカーネルタスクタイプの重み、制御プログラムに対応するマイクロカーネルタスク優先度及び/または制御プログラムの動作時間の重み、及び制御プログラムのサービスニーズに基づき、スケジューリング設定情報を生成することに、前記OSカーネルが、制御プログラムに対応するマイクロカーネルタスクタイプの重み、制御プログラムに対応するマイクロカーネルタスク優先度及び/または制御プログラムの動作時間の重み、制御プログラムのサービスニーズ、及びシステムによる基本プログラムブロックに基づき、スケジューリング設定情報を生成することが更に含まれ、前記スケジューリング設定情報は、各制御プログラムに含まれる各基本プログラムブロックと、各基本プログラムブロック同士の動作トリガー条件及び/または各基本プログラムブロックの間で伝送されるサービスパラメータとを更に含む。したがって、サービス内の協働を実現する。基本制御プログラム同士間の動作トリガー条件とは、任意の基本制御プログラムAが該基本制御プログラムAと協働関係を有する基本制御プログラムBをトリガーして動作させる時に、該基本制御プログラムAが持つべき条件と理解できる。各基本制御プログラムの間で伝送されるサービスパラメータとは、任意の基本制御プログラムAが該基本制御プログラムAと協働関係を有する基本制御プログラムBに該基本制御プログラムBの動作のためのサービスパラメータを伝送すると理解できる。
一般的には、図8及び図9に示すように、基本プログラムブロックはサブ制御プログラムまたは制御プログラムに含まれる。例えば、図9において、サブ制御プログラムa1は基本プログラムブロック1、2及び3を含み、サブ制御プログラムa2は基本プログラムブロック4及び2を含む。また、例えば、図8において、制御プログラムAは基本プログラムブロック1、4及び5を含み、制御プログラムBは基本プログラムブロック2、4及び1を含む。これから分かるように、基本プログラムブロックは、異なるサブ制御プログラムまたは異なる制御プログラムにおいて多重することができる。相応して、基本プログラムブロックの物理コアにおいての設定位置は、それが含まれたサブ制御プログラムまたは制御プログラムにより決定される。サブ制御プログラムと制御プログラムの設定位置の詳細については、上述した実施例に記載され、ここで贅言しない。
図8、図9及び図10を参照しながら、各基本プログラムブロック同士の破線は動作トリガー条件の流れを示し、実線は、サービスパラメータの流れを示す。システム起動の前に、各制御プログラムに対応する基本プログラムブロックを予め選択し、各基本プログラムブロック同士の動作トリガー条件及びサービスパラメータを生成する。そして、各基本プログラムブロックを設定して、各基本プログラムブロックが自動的に起動することで、制御プログラム全体を実現する。
図10において、制御プログラムに含まれる基本プログラムブロック(例えば、1、2及び3)を予め設定することと、基本プログラムブロック1の初期値、及び基本プログラムブロック2の初期値を設定することとを含み、基本プログラムブロック2のトリガー条件は、基本プログラムブロック1の演算結果であり、基本プログラムブロック3のトリガー条件は、基本プログラムブロック1の演算結果及び基本プログラムブロック2の演算結果である。
基本プログラムブロック1は、予め設定された初期値に応じて演算し、演算結果を基本プログラムブロック2及び3へそれぞれ送信する。基本プログラムブロック2は基本プログラムブロック1の演算結果及び予め設定された初期値に応じて演算し、演算結果を基本プログラムブロック3へ送信する。基本プログラムブロック3は、基本プログラムブロック2及び1の演算結果に応じて演算してこの制御プログラムの演算結果を取得する。
実施例5
図11は、本発明の実施例に係る産業用サーバのマイクロカーネルアーキテクチャの実現装置の構造模式図である。この装置が図2に示した産業用サーバに設置され、この装置は、システム起動の前に、制御プログラムに対応するマイクロカーネルタスクタイプの重み、マイクロカーネルタスク優先度及び/又は動作時間の重みに基づき、スケジューリング設定情報を生成するための生成モジュール11と、前記スケジューリング設定情報に基づいて前記OSカーネルにおいて動作する制御プログラムを設定するための設定モジュール12と、設定された制御プログラムを起動させる起動モジュール13と、を備える。前記スケジューリング設定情報に、各物理コアにおいて動作する制御プログラムの数と、各物理コアにおいて動作する制御プログラムのスケジューリングアルゴリズムと、各制御プログラムが複数の物理コアにおいて動作することとが含まれる。
本発明の実施例に係る産業用サーバのマイクロカーネルアーキテクチャの実現装置は、本発明のいずれかの実施例に係る産業用サーバのマイクロカーネルアーキテクチャの実現方法を実行可能となり、実行方法に該当する機能モジュールおよび有益な効果を有する。
実施例6
図12は、本発明の実施例に係る産業用サーバの構造模式図である。図12に示すように、この産業用サーバは、プロセッサー20と、メモリー21と、入力装置22と、出力装置23とを備えてもよい。産業用サーバにおけるプロセッサー20の数は、1つ又は複数であってもよく、図12では1つのプロセッサー20を例とする。産業用サーバにおけるプロセッサー20、メモリー21、入力装置22及び出力装置23は、バスや他の形方式よって接続されてもよく、図12においてバスによって接続されることを例とする。
メモリー21は、コンピュータ可読記憶媒体として、ソフトウェアプログラム、コンピュータ実行可能プログラム及びモジュール例を記憶するために用いられる。本発明の実施例における産業用サーバのマイクロカーネルアーキテクチャの実現方法に対応するプログラム命令/モジュールを記憶可能となる。プロセッサー20は、メモリー21に記憶されたソフトウェアプログラム、命令及びモジュールを動作させることで、産業用サーバにおける様々なアプリケーションおよびデータ処理を実行する。つまり、上述した産業用サーバのマイクロカーネルアーキテクチャの実現方法を実現する。
メモリー21は、主に、OS、少なくとも1つの機能の所要アプリケーションプログラムを記憶できるプログラム記憶エリアと、端末の使用に基づいて作成したデータを記憶できるデータ記憶エリアとを含む。また、メモリー21は、高速ランダムアクセスメモリーを含んでもよく、更に不揮発性メモリー、例えば少なくとも1つの磁気ディスクメモリー、フラッシュメモリーや他の不揮発性ソリッドステートメモリーを含んでもよい。いくつかの例において、メモリー21は、プロセッサー20に対して遠隔設置されたメモリーを更に含んでもよい。これらメモリーは、ネットワークによって産業用サーバに接続される。上述したネットワークの例は、インターネット、イントラネット、ローカルエリア・ネットワーク(LAN)、移動通信ネットワークおよびこれらの組み合わせを含むが、それに限定されない。
入力装置22は、入力されたデジタルやキャラクター情報を受信すること、及び産業用サーバのユーザ設定及び機能制御に関わるキー信号を入力するために用いられてもよい。出力装置は、ディスプレーなどの表示機器を含んでもよい。
実施例7
本発明の実施例は、プロセッサーにより実行される際に本発明のいずれかの実施例に係る産業用サーバのマイクロカーネルアーキテクチャの実現方法に関わる操作を実行することができる実行可能な命令を含む記憶媒体を更に提供する。
以上の実施形態に係る説明から、当業者であれば、本発明の実施例がソフトウェアおよび所要汎用型ハードウェアにより実現でき、もちろん、ハードウェアによっても実現できるが、ほとんどの場合に、前者がより好ましい実施形態であると理解すべきである。このような理解に基づき、本発明の実施例における技術態様の本質または従来技術に寄与する部分は、ソフトウェア製品の形態で体現されてもよく、このコンピュータソフトウェア製品は、コンピュータのフレキシブルディスク、読み取り専用メモリーメモリー(Read−Only Memory、ROM)、ランダムアクセスメモリー(Random Access Memory、RAM)、フラッシュ(FLASH)、ハードディスクや光ディスクなどのコンピュータ可読記憶媒体に記憶されてもよく、1台のコンピュータ機器(パーソナルコンピュータ、サーバーやネットワーク機器などであってもよい)が本発明の実施例における各実施例に記載された方法を実行できるように、幾つかの命令を含む。
なお、上述した装置実施例に含まれた各ユニットとモジュールは、機能論理に応じて区分されるものであるが、上述した区分に制限されず、該当する機能を実現できれば良い。
また、各機能ユニットの具体的な名称は、互いに区分しやすいためのものに過ぎず、本発明の実施例の保護範囲を制限するものではない。
なお、上記内容は、本発明の実施例の好ましい実施例及び使用される技術原理に過ぎない。当業者は、本発明の実施例がここで記載された特定の実施例に限らず、当業者にとって本発明の実施例の保護範囲を逸脱せずに様々な明らかな変更、調整と置換を行うことができるため、上記実施例によって本発明の実施例を詳細に説明したが、本発明の実施例は上記実施例に限定されず、本発明の実施例の構想を逸脱せずに、より多くの他の同等実施例を含んでもよく、本発明の実施例の範囲が添付される特許請求の範囲により確認されると理解すべきである。

Claims (10)

  1. 産業用サーバに適用され、前記産業用サーバにおいて産業用サーバのハードウェアに基づいたOSカーネルによって実現される産業用サーバのマイクロカーネルアーキテクチャの実現方法であって、
    前記OSカーネルは、複数の物理コアをサポートし、各物理コアにおいて仮想化された複数のマイクロカーネルが動作し、前記マイクロカーネルのそれぞれにおいて一つずつのプログラムが実行され、これによって複数のプログラムが実行され、プロセス間通信、メモリ管理、タスクスケジューリングを提供し、
    マイクロカーネル起動の前に、それぞれの制御プログラムに対応するマイクロカーネルタスクのタイプの重み値、それぞれの制御プログラムに対応するマイクロカーネルタスクの優先度及び/又はそれぞれの制御プログラムの動作時間の重み値に基づき、スケジューリング設定情報を生成する生成ステップと、
    記スケジューリング設定情報に基づいて前記制御プログラムを設定する設定ステップと、
    定された制御プログラムを起動させる起動ステップと、を含み、
    前記スケジューリング設定情報に、各物理コアにおいて動作する制御プログラムの数と、各物理コアにおいて動作する制御プログラムのスケジューリングアルゴリズムと、全ての制御プログラムのうちの少なくとも1つが複数の物理コアにおいて動作することと、が含まれ、
    前記制御プログラムに対応するマイクロカーネルタスクは、当該制御プログラムを実行させるタスクである、
    ことを特徴とする産業用サーバのマイクロカーネルアーキテクチャの実現方法。
  2. 前記設定ステップに、
    仮想化マシンプログラムによってハードウェアに対して仮想化処理を行い、前記スケジューリング設定情報に基づいて少なくとも1つの物理コアにおいて複数の制御プログラムを設定すること、及び/又は、
    前記スケジューリング設定情報に基づいて各物理コアにおいて動作する各制御プログラムのスケジューリングアルゴリズムを設定すること、及び/又は、
    複数の物理コアを仮想化し、全ての制御プログラムのうちの少なくとも1つについて、前記スケジューリング設定情報に基づき、該制御プログラムを対応付けて複数の制御プログラムを取得し、取得した前記複数の制御プログラムを前記複数の物理コアに割り当てること、が含まれ、
    前記スケジューリングアルゴリズムは、時刻表に基づいたスケジューリングアルゴリズム又は優先度に基づいたスケジューリングアルゴリズムを含む、ことを特徴とする請求項1に記載の方法。
  3. 前記生成ステップに、
    制御プログラムの所要計算リソースが小さい場合、粗粒度ロックによるスケジューリング方法を用いることにより、物理コアごとに1つのロックを対応させ、時刻表に基づいたスケジューリングアルゴリズム又は優先度に基づいたスケジューリングアルゴリズムによって、単一の物理コアにおける複数の制御プログラムから1つの制御プログラムを特定し、特定した前記制御プログラム前記単一の物理コアに対応するロックを取得し前記単一の物理コアを独占することで、カーネルモード操作を実行させることを含む前記スケジューリング設定情報を生成すること、または、
    制御プログラムの所要計算リソースが大きい場合、細粒度ロックによるスケジューリング方法を用いることにより、物理コアごとに1つのロックを対応させ、全ての制御プログラムのうちの少なくとも1つについて、該制御プログラムの所要計算リソースに応じて該制御プログラムを対応付けて複数の制御プログラムを取得し、前記複数の制御プログラム同士の関連性に基づいて、前記複数の制御プログラムを、同じ物理コアに割り当てるか、それとも、異なる物理コアに割り当てるかを制御し、前記複数の制御プログラムのそれぞれが、割り当てられた物理コアに対応するロックを取得し割り当てられた複数の物理コアにおいて同時にカーネルモード操作を実行させて前記複数の制御プログラムの並行実行を実現させることを含む前記スケジューリング設定情報を生成することが含まれることを特徴とする請求項1に記載の方法。
  4. 前記時刻表に基づいたスケジューリングアルゴリズムは、
    第1タイマーの持続時間がメインフレーム時間であり、第2タイマーが前記メインフレーム時間内の各時間窓の順序に応じて次々に起動されるとともに、それぞれの前記第2タイマーの持続時間が、対応する時間窓の持続時間と同じであるように、複数のタイマーを設定することと、
    前記メインフレーム時間を周期とし、前記第1タイマーおよび前記第2タイマーを起動しながら、時刻表の設定に基づいて制御プログラムをスケジュールし、前記第2タイマーのタイミングが到来すると、次の制御プログラムをスケジュールし、かつ、前記第1タイマーのタイミングが到来すると、次の周期を開始することと、を含み、
    前記時刻表は、前記各時間窓のスタート・ストップ時間と、各時間窓に対応する制御プログラムとを含む、ことを特徴とする請求項2に記載の方法。
  5. 前記生成ステップにおいて、
    それぞれの制御プログラムのサービスニーズをさらに加味して、スケジューリング設定情報を生成することを特徴とする請求項1に記載の方法。
  6. 前記スケジューリング設定情報は、各制御プログラム同士の動作トリガー条件及び/又はサービスパラメータを更に含む、ことを特徴とする請求項5に記載の方法。
  7. 前記スケジューリング設定情報は、各制御プログラムについて、該制御プログラムに含まれる各サブ制御プログラムと、
    該制御プログラムの各サブ制御プログラムが動作する物理コアと、
    該制御プログラムの各サブ制御プログラム同士の動作トリガー条件及び/又はサービスパラメータと、を更に含み、
    該制御プログラムの少なくとも1つのサブ制御プログラムが1つ又は複数の物理コアにおいて動作する、ことを特徴とする請求項5に記載の方法。
  8. それぞれの制御プログラムについて、該制御プログラムのリソースニーズ及び各マイクロカーネルによる計算リソースに基づいて該制御プログラムを複数のサブ制御プログラムに分割する分割ステップをさらに含み、
    前記複数のサブ制御プログラムのそれぞれに対して前記生成ステップを実行することを特徴とする請求項7に記載の方法。
  9. 前記分割ステップに、
    それぞれの制御プログラムについて、該制御プログラムの計算量と各物理コアにおけるマイクロカーネルによる計算能力の測量パラメータに基づいて該制御プログラムを複数のサブ制御プログラムに分割すること、または、
    制御プログラムのI/Oインターフェースの数および物理コアにおけるマイクロカーネルによるI/Oインターフェースの数に基づいて該制御プログラムを複数のサブ制御プログラムに分割することが含まれる、ことを特徴とする請求項8に記載の方法。
  10. 前記生成ステップにおいて、
    システムによる基本プログラムブロックをさらに加味して、スケジューリング設定情報を生成し、
    前記スケジューリング設定情報は、各制御プログラムに含まれる各基本プログラムブロックと、各基本プログラムブロック同士の動作トリガー条件及び/またはサービスパラメータとを更に含む、ことを特徴とする請求項5に記載の方法。
JP2019003424A 2018-07-09 2019-01-11 産業用サーバのマイクロカーネルアーキテクチャの実現方法 Active JP6924786B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
CN201810745308.7 2018-07-09
CN201810745308 2018-07-09
CN201811296334.2 2018-11-01
CN201811296334.2A CN109445847B (zh) 2018-07-09 2018-11-01 工业服务器微内核架构实现方法

Publications (2)

Publication Number Publication Date
JP2020009404A JP2020009404A (ja) 2020-01-16
JP6924786B2 true JP6924786B2 (ja) 2021-08-25

Family

ID=65549934

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019003424A Active JP6924786B2 (ja) 2018-07-09 2019-01-11 産業用サーバのマイクロカーネルアーキテクチャの実現方法

Country Status (4)

Country Link
US (1) US10866833B2 (ja)
EP (1) EP3594812A1 (ja)
JP (1) JP6924786B2 (ja)
CN (1) CN109445847B (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111221645B (zh) * 2019-11-14 2023-06-16 中国民航信息网络股份有限公司 一种航空作业处理方法和系统

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5515538A (en) * 1992-05-29 1996-05-07 Sun Microsystems, Inc. Apparatus and method for interrupt handling in a multi-threaded operating system kernel
US7140015B1 (en) * 1999-09-29 2006-11-21 Network Appliance, Inc. Microkernel for real time applications
US20030033345A1 (en) * 2002-06-27 2003-02-13 Keefer Christopher E. Thread-based methods and systems for using the idle processing power of one or more networked computers to solve complex scientific problems
US7673304B2 (en) * 2003-02-18 2010-03-02 Microsoft Corporation Multithreaded kernel for graphics processing unit
GB2412761C (en) * 2004-04-02 2011-01-05 Nokia Corp Improvements in or relating to an operating system for a computing device
US7765548B2 (en) * 2005-02-17 2010-07-27 Red Hat, Inc. System, method and medium for using and/or providing operating system information to acquire a hybrid user/operating system lock
CN101377745B (zh) * 2007-08-28 2010-06-23 张玉昆 在各个域间实现数据共享的虚拟化计算机系统和方法
CN101226577A (zh) * 2008-01-28 2008-07-23 南京大学 基于可信硬件与虚拟机的微内核操作系统完整性保护方法
US8776088B2 (en) * 2009-03-30 2014-07-08 Microsoft Corporation Operating system distributed over heterogeneous platforms
KR101658035B1 (ko) 2010-03-12 2016-10-04 삼성전자주식회사 가상 머신 모니터 및 가상 머신 모니터의 스케줄링 방법
US8775781B2 (en) * 2010-03-25 2014-07-08 Microsoft Corporation Intelligent boot device selection and recovery
US9027022B2 (en) * 2011-06-16 2015-05-05 Argyle Data, Inc. Software virtual machine for acceleration of transactional data processing
WO2013010159A1 (en) * 2011-07-14 2013-01-17 Siemens Corporation Reducing the scan cycle time of control applications through multi-core execution of user programs
US8973144B2 (en) * 2011-10-13 2015-03-03 Mcafee, Inc. System and method for kernel rootkit protection in a hypervisor environment
CN105550040B (zh) * 2015-12-29 2019-06-14 四川中电启明星信息技术有限公司 基于kvm平台的虚拟机cpu资源预留算法
CN107479943B (zh) 2017-07-03 2020-02-21 北京东土科技股份有限公司 基于工业互联网操作系统的多操作系统运行方法及装置
CN108196501A (zh) * 2017-12-22 2018-06-22 北京东土科技股份有限公司 一种基于plc的分布式控制系统的容灾方法、装置和系统

Also Published As

Publication number Publication date
JP2020009404A (ja) 2020-01-16
US20200012519A1 (en) 2020-01-09
CN109445847B (zh) 2021-09-17
US10866833B2 (en) 2020-12-15
CN109445847A (zh) 2019-03-08
EP3594812A1 (en) 2020-01-15

Similar Documents

Publication Publication Date Title
JP7101127B2 (ja) 産業用サーバのマイクロカーネルアーキテクチャの制御システム及び産業用サーバ
US10613883B2 (en) Managing virtual machine migration
EP3073374B1 (en) Thread creation method, service request processing method and related device
CN110383764B (zh) 无服务器系统中使用历史数据处理事件的系统和方法
Vinothina et al. A survey on resource allocation strategies in cloud computing
US9135741B2 (en) Interference-driven resource management for GPU-based heterogeneous clusters
CN113037538B (zh) 分布式资源管理中低时延节点本地调度的系统和方法
US9104456B2 (en) Zone management of compute-centric object stores
US20170024251A1 (en) Scheduling method and apparatus for distributed computing system
Sotiriadis et al. The inter-cloud meta-scheduling (ICMS) framework
Compagnin et al. Putting RUN into practice: implementation and evaluation
JP6924786B2 (ja) 産業用サーバのマイクロカーネルアーキテクチャの実現方法
Lettieri et al. A study of I/O performance of virtual machines
JP2021518014A (ja) メモリフットプリントを制限したオンデマンドコード実行
Hsiao et al. A usage-aware scheduler for improving MapReduce performance in heterogeneous environments
Gouasmi et al. Cost-efficient distributed MapReduce job scheduling across cloud federation
Guo et al. The improved job scheduling algorithm of Hadoop platform
JP6795536B2 (ja) Vm性能保証システムおよびvm性能保証方法
Kherbache et al. Scheduling live-migrations for fast, adaptable and energy-efficient relocation operations
Tahir et al. UDRF: Multi-resource fairness for complex jobs with placement constraints
Yu et al. Taming non-local stragglers using efficient prefetching in MapReduce
Amoretti et al. A modeling and simulation framework for mobile cloud computing
Becker et al. On the QNX IPC: Assessing predictability for local and distributed real-time systems
Pop et al. The Art of Scheduling for Big Data Science.
Compagnin et al. Experimental evaluation of optimal schedulers based on partitioned proportionate fairness

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190111

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200303

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200603

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20201201

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210401

C60 Trial request (containing other claim documents, opposition documents)

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20210401

C11 Written invitation by the commissioner to file amendments

Free format text: JAPANESE INTERMEDIATE CODE: C11

Effective date: 20210413

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20210609

C21 Notice of transfer of a case for reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C21

Effective date: 20210615

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210713

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210802

R150 Certificate of patent or registration of utility model

Ref document number: 6924786

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150