JP7101127B2 - 産業用サーバのマイクロカーネルアーキテクチャの制御システム及び産業用サーバ - Google Patents

産業用サーバのマイクロカーネルアーキテクチャの制御システム及び産業用サーバ Download PDF

Info

Publication number
JP7101127B2
JP7101127B2 JP2019001678A JP2019001678A JP7101127B2 JP 7101127 B2 JP7101127 B2 JP 7101127B2 JP 2019001678 A JP2019001678 A JP 2019001678A JP 2019001678 A JP2019001678 A JP 2019001678A JP 7101127 B2 JP7101127 B2 JP 7101127B2
Authority
JP
Japan
Prior art keywords
control
control program
time
scheduling
industrial
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
JP2019001678A
Other languages
English (en)
Other versions
JP2020009403A (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 JP2020009403A publication Critical patent/JP2020009403A/ja
Application granted granted Critical
Publication of JP7101127B2 publication Critical patent/JP7101127B2/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/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
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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
    • 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
    • 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
    • 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
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances
    • 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
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support

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)
  • Programmable Controllers (AREA)
  • Stored Programmes (AREA)

Description

本発明の実施例は、産業用サーバ技術に関し、特に産業用サーバのマイクロカーネルアーキテクチャの制御システム及び産業用サーバに関する。
産業用サーバのハードウェアに基づいた仮想OS(virtual operating system)は、i7を例として、4つの物理コアをサポート可能となり、各物理コアにおいて1つの仮想化マシンであるマイクロ制御カーネルが動作し、マイクロ制御カーネルにPLC(Programmable Logic Controller、プログラマブルロジックコントローラ)が含まれる。
しかしながら、1つのカーネルにおいて1つのみのPLCが動作し得、リソースを無駄遣いし、実行可能な機能も制限されている。また、マルチコアPLCのスケジューリング方法は、リアルタイム性の高いビジネスシナリオに適用される優先順位スケジューリングアルゴリズムと、リアルタイム性の高くないビジネスシナリオに適用される時刻表スケジューリングアルゴリズムとを含み、何れかのスケジューリングアルゴリズムは、ビジネスニーズの複雑なシナリオで、ユーザのビジネスニーズを満たしにくいため、CPUリソースの使用率が低いという問題が生じてしまう。従来の工業現場では、1つのハードウェアプラットフォームにおいて1セットのみのPLC制御システムが動作しているため、機能が一定で変更不可になり、複数セットの制御システム(PLC/DCS/Motion/CNC)に関わる場合、管理・メンテナンスの難度が大きく、効率が低いという問題が生じてしまう。
本発明の実施例は、産業用サーバのマイクロカーネルが産業現場でのリアルタイム制御および自由な組み合わせを実現し、ハードウェアデバイスを簡素化にし、構築およびメンテナンスのコストを低下させ、ソフトウェアによって産業用プロセスを定義することを実現するための産業用サーバのマイクロカーネルアーキテクチャの制御システム及び産業用サーバを提供する。
第1の態様によれば、本発明の実施例は、産業用サーバにおいて産業用サーバのハードウェアに基づいたOSカーネルが複数の物理コアをサポートする産業用サーバのマイクロカーネルアーキテクチャの制御システムであって、
前記制御システムは、マイクロカーネルと、仮想化マシンモニタとを備え、
各物理コアにおいて複数のマイクロカーネルが動作し、各マイクロカーネルは、いずれも産業用制御ミドルウェアと、リアルタイムOSとを備え、
前記産業用制御ミドルウェアは、産業用制御アプリケーションを動作させるように、産業用制御アプリケーション解析することに用いられ、
前記リアルタイムOSは、前記仮想化マシンモニタによって産業用制御アプリケーションの動作中の制御プログラムをスケジューリング・制御することに用いられ、
前記仮想化マシンモニタは、前記リアルタイムOS起動の前に、それぞれの制御プログラムに対応するカーネルタスクタイプの重み及びそれぞれの制御プログラムに対応するカーネルタスク優先度及び/又はそれぞれの制御プログラムの動作時間の重みに基づき、スケジューリング設定情報を生成し、前記スケジューリング設定情報に基づき、前記OSカーネルにおいて動作する制御プログラムを設定し、設定された制御プログラムを起動させることに用いられ、
前記スケジューリング設定情報に、各物理コアにおいて動作する制御プログラムの数と、各物理コアにおいて動作する制御プログラムのスケジューリングアルゴリズムと、全ての制御プログラムのうちの少なくとも1つが複数の物理コアにおいて動作することと、が含まれる産業用サーバのマイクロカーネルアーキテクチャの制御システムを提供する。
オプションとして、前記マイクロカーネルは、前記産業用制御アプリケーションが動作している間に、前記リアルタイムOSにおける通信ドライバ及び前記産業用制御ミドルウェアにおける通信プロトコルに基づき、前記産業用サーバにより制御される端末と通信するためのIO通信モジュールを、更に備える。
オプションとして、前記仮想化マシンモニタは、具体的に、
制御プログラムに対応するマイクロカーネルタスクタイプの重み及び制御プログラムに対応するマイクロカーネルタスク優先度及び/又は制御プログラムの動作時間の重みに基づき、制御プログラムの関連性を計算し、
前記関連性に基づき、前記スケジューリング設定情報を生成することに用いられる。
オプションとして、前記仮想化マシンモニタは、具体的に、
前記マイクロカーネルタスクタイプ、マイクロカーネルタスク優先度および制御プログラムの動作時間の重みに基づき、前記関連性を計算すること、または、
前記マイクロカーネルタスクタイプおよびマイクロカーネルタスク優先度の重みに基づき、前記関連性を計算すること、または、
前記マイクロカーネルタスクタイプおよび制御プログラムの動作時間の重みに基づき、前記関連性を計算することに用いられる。
オプションとして、前記仮想化マシンモニタは、具体的に、
仮想化マシンプログラムによってハードウェアに対して仮想化処理を行い、前記スケジューリング設定情報に基づき、少なくとも1つの物理コアに複数の制御プログラムを割り当てること、及び/又は、
前記スケジューリング設定情報に基づき、各物理コアにおいて動作する制御プログラムのスケジューリングアルゴリズムを設定すること、及び/又は、
複数の物理コアを仮想化し、全ての制御プログラムのうちの少なくとも1つについて、前記スケジューリング設定情報に基づき、該制御プログラムを対応付けて複数の制御プログラムを取得し、取得した前記複数の制御プログラムを前記複数の物理コアに割り当てることに用いられる。
ここで、前記スケジューリングアルゴリズムは、時刻表に基づいたスケジューリングアルゴリズム又は優先度に基づいたスケジューリングアルゴリズムを含む。
オプションとして、前記仮想化マシンモニタは、具体的に、
粗粒度ロックによるスケジューリング方法を用いることにより、物理コアごとに1つのロックを対応させ、時刻表に基づいたスケジューリングアルゴリズム又は優先度に基づいたスケジューリングアルゴリズムによって、単一の物理コアにおける複数の制御プログラムから1つの制御プログラムを特定し、特定した前記制御プログラムから前記物理コアに対応するロックを取得し、前記物理コアに対応するロックを取得した制御プログラムが前記物理コアを独占してカーネルモード操作を実行し、前記制御プログラムのカーネルタスクタイプ、優先度及び/又は動作時間に基づき、前記スケジューリング設定情報を生成すること、または、
細粒度ロックによるスケジューリング方法を用いることにより、物理コアごとに1つのロックを対応させ、全ての制御プログラムのうちの少なくとも1つについて、該制御プログラムの所要計算リソースに応じて該制御プログラムを対応付けて複数の制御プログラムを取得し、前記複数の制御プログラム同士の関連性に基づき、前記複数の制御プログラムを異なる物理コアに割り当て、前記複数の制御プログラムがそれぞれ所属する物理コアに対応するロックを取得し、ロックを取得した前記複数の制御プログラムのそれぞれが割り当てられた複数の物理コアにおいて同時にカーネルモード操作を実行しての前記複数の制御プログラムの並行実行を実現し、前記制御プログラムのカーネルタスクタイプ、優先度及び/又は動作時間に基づき、前記スケジューリング設定情報を生成することに用いられる。
オプションとして、前記時刻表に基づいたスケジューリングアルゴリズムは、
複数のタイマーを設定することと、
メインフレーム時間を周期とし、第1タイマーおよび第2タイマーを起動させながら、時刻表の設定に基づいて制御プログラムをスケジュールし、前記第2タイマーのタイミングが到来すると、次の制御プログラムをスケジュールし、かつ、前記第1タイマーのタイミングが到来すると、次の周期を開始することと、を含む。
ここで、前記第1タイマーの持続時間が前記メインフレーム時間であり、前記第2タイマーが前記メインフレーム時間内の各時間窓の順序に応じて次々に起動されるとともに、前記第2タイマーの持続時間が次々に各時間窓の持続時間と同じであり、前記時刻表は、前記各時間窓のスタート・ストップ時間と、各時間窓に対応する制御プログラムとを含む。
オプションとして、前記優先度に基づいたスケジューリングアルゴリズムは、
優先度メインインデックス番号ビットマップを走査して最高優先度に対応するメインインデックス番号を確認することと、
前記メインインデックス番号に対応する優先度サブインデックス番号ビットマップを走査して最高優先度に対応するサブインデックス番号を確認することと、
前記メインインデックス番号および前記サブインデックス番号に基づき、現在の最高優先度を計算し、前記最高優先度に対応する制御プログラムを確認することとを含む。
オプションとして、少なくとも1つの物理コアにおいて動作する制御プログラムは、動作周期が同じまたは異なる制御プログラムを含む。
第2の態様によれば、本発明の実施例は、産業用サーバのハードウェアと、前記産業用サーバのハードウェアに基づいたOSカーネルとを備え、前記OSカーネルが複数の物理コアをサポートする産業用サーバであって、前記産業用サーバは、本発明のいずれかの実施例に係る産業用サーバのマイクロカーネルアーキテクチャの制御システムを更に備える産業用サーバを提供する。
本発明の実施例は、従来の工業現場では1つのハードウェアプラットフォームにおいて1セットのみのPLC制御システムが動作しているため、機能が一定で変更不可になり、複数セットの制御システム(PLC/DCS/Motion/CNC)に関わる場合、管理・メンテナンスの難度が大きく、効率が低いという問題が生じることを解決するために、産業用制御ミドルウェアおよびリアルタイムOSとを備えるマイクロカーネル及び仮想化マシンモニタからなるアーキテクチャに基づき、仮想化マシンモニタによって、リアルタイムOS起動の前に、各物理コアにおいて動作する制御プログラムの数、スケジューリングアルゴリズム、及び各制御プログラムが複数の物理コアにおいて動作することを独自に定義し、カスタム設定の方式は、単一の物理コアによって複数のマイクロカーネルのタイムスライスを制御すること、および単一のマイクロカーネルが計算リソースを占有してクロス物理コアのスケジューリングを行うことに限らない。これによって、産業用サーバのマイクロカーネルの産業現場でのリアルタイム制御および自由な組み合わせを実現し、ハードウェアデバイスを簡素化にし、構築およびメンテナンスのコストを低下させ、ソフトウェアによって産業用プロセスを定義することを実現する。
本発明の実施例1に係る産業用サーバのマイクロカーネルアーキテクチャの制御システムの構造模式図である。 本発明の実施例1に係る産業用サーバの構造模式図である。 本発明の実施例1に係る産業用サーバの別の構造模式図である。 本発明の実施例1に係る粗粒度ロックによるスケジューリングの模式図である。 本発明の実施例1に係る細粒度ロックによるスケジューリングの模式図である。 本発明の実施例1に係る産業用サーバのマイクロカーネルアーキテクチャの制御システムの別の構造模式図である。 本発明の実施例2に係る時刻表の模式図である。 本発明の実施例3に係る優先度インデックス番号ビットマップの模式図である。
以下、図面および実施例に基づき、本発明の実施例について更に詳細に説明する。ここで説明する具体的な実施例は、本発明の実施例を解釈するためのものに過ぎず、本発明の実施例を制限するものではないと理解すべきである。なお、便宜上、図面において、全部の構成ではなく、本発明の実施例に関する部分のみを示した。
従来の工業現場では、1つのハードウェアプラットフォームにおいて1セットのみのPLC制御システムが動作しているため、機能が一定で変更不可になり、複数セットの制御システム(PLC/DCS/Motion/CNC)に関わる場合、管理・メンテナンスの難度が大きく、効率が低いという問題について、本発明の実施例は、産業用制御ミドルウェアおよびリアルタイムOSとを備えるマイクロカーネル及び仮想化マシンモニタのアーキテクチャに基づき、リアルタイムOS起動の前に、スケジューリング設定情報を独自に定義して設定し、産業用サーバのマイクロカーネルの産業現場でのリアルタイム制御および自由な組み合わせを実現し、ハードウェアデバイスを簡素化にし、構築およびメンテナンスのコストを低下させ、ソフトウェアによって産業用プロセスを定義することを実現する。
実施例1
図1は、本発明の実施例1に係る産業用サーバのマイクロカーネルアーキテクチャの制御システムの構造模式図である。この制御システムは、産業用サーバに設置される。図2は、本発明の実施例1に係る産業用サーバの構造模式図である。産業用サーバは、産業用サーバのハードウェアと、産業用サーバのハードウェアに基づいた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に示すように、産業用サーバのマイクロカーネルアーキテクチャの制御システムは、マイクロカーネル100および仮想化マシンモニタ200とを備える。各物理コアにおいて複数のマイクロカーネル100が動作可能となり、各マイクロカーネル100は、いずれも産業用制御ミドルウェア101およびリアルタイムOS102とを備える。仮想化マシンモニタ200はOSカーネルにおいて動作する。
産業用制御ミドルウェア101は、産業用制御アプリケーションを動作させるように、産業用制御アプリケーション解析することに用いられる。ここで、産業用制御ミドルウェアは、マイクロカーネルのOSと産業用制御アプリケーションとの間に位置し、上位にあるアプリケーションソフトウェアのために動作と開発の環境を提供する。具体的に、産業用制御ミドルウェアは、産業用制御アプリケーションプログラムを解析することにより、産業用制御アプリケーションを動作させることができる。産業用サーバは、産業用制御アプリケーションを動作させることによって、該当する端末を制御することができる。
リアルタイムOS102は、仮想化マシンモニタ200を介して産業用制御アプリケーションの動作中の制御プログラムをスケジューリング・制御することに用いられる。マイクロカーネルのリアルタイムOS102は、マイクロカーネルにおいて最も基本的かつ不可欠なサービス、例えばプロセス間通信(IPC)、メモリ管理、タスクスケジューリングしか提供しない。
仮想化マシンモニタ200は、リアルタイムOS起動の前に、制御プログラムに対応するマイクロカーネルタスクタイプの重み及びマイクロカーネルタスク優先度及び/又は制御プログラムの動作時間の重みに基づき、スケジューリング設定情報を生成し、前記スケジューリング設定情報に基づき、前記OSカーネルにおいて動作する制御プログラムを設定し、設定された制御プログラムを起動させることに用いられる。ここで、前記スケジューリング設定情報に、各物理コアにおいて動作する制御プログラムの数と、各物理コアにおいて動作する制御プログラムのスケジューリングアルゴリズムと、全ての制御プログラムのうちの少なくとも1つが複数の物理コアにおいて動作することと、が含まれる。ここで、制御プログラムに対応するマイクロカーネルタスクタイプは、該制御プログラムを実行させるマイクロカーネルのタスクである。制御プログラムの動作時間は、それぞれの制御プログラムに割当てられるタイムスライスである。
本実施例において、各物理コアにおいて、動作周期が同じまたは異なる制御プログラムを含む複数の制御プログラムが動作可能となる。例示的に、図3に示すように、物理コア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つの制御プログラムが複数の物理コアに割り当てられて動作すると、各物理コアにおいて独立して動作し、つまり所在する物理コアのスケジューリングに参与する。異なる物理コアに異なるスケジューリングアルゴリズムが設定されてもよく、互いに影響しない。
仮想化マシンモニタは、制御プログラムに対応するマイクロカーネルタスクタイプの重み及びマイクロカーネルタスク優先度及び/又は制御プログラムの動作時間の重みに基づき、制御プログラムの関連性を計算し、関連性に基づき、スケジューリング設定情報を生成する。ここで、関連性の計算は、マイクロカーネルタスクタイプ、マイクロカーネルタスク優先度および制御プログラムの動作時間の重みに基づき、関連性を計算すること、または、マイクロカーネルタスクタイプおよびマイクロカーネルタスク優先度の重みに基づき、関連性を計算すること、または、マイクロカーネルタスクタイおよび制御プログラムの動作時間の重みによって関連性を計算することを含む。
上記の通り、各物理コアにおいて、動作周期が同じまたは異なる制御プログラムを含む複数の制御プログラムが動作可能となる。つまり、複数の制御プログラムが1つの物理コアを共有し、ある制御プログラムがカーネルモード操作を実行しようとすると、物理コアが当該制御プログラムをサービスする。物理コアを排他的に使用するために、いずれかのカーネルモード操作を実行する必要がある制御プログラムは、1つのロック(lock)の取得を申請する必要があり、ロックを取得した制御プログラムしか物理コアを用いてカーネルモード操作を実行することができない。制御プログラムの所要計算リソースの粒度のサイズに応じて、粗粒度ロックによるスケジューリング方法と細粒度ロックによるスケジューリング方法に分けられる。
図4は、本発明の実施例1に係る粗粒度ロックによるスケジューリングの模式図である。粗粒度ロックによるスケジューリングとは、物理コアごとに1つのロックを対応させ、ロックを取得した制御プログラムは物理コア全体を独占することができる。そのため、同一時間内に、1つの制御プログラムしか物理コアを用いてカーネルモード操作を実行できず、他のカーネルモード操作を実行する必要のある制御プログラムは、スケジュールされまでロックを取得きない。粗粒度ロックによるスケジューリング方法を用いることにより、単一の物理コアにおける複数の制御プログラムのスケジューリングアルゴリズムは、時刻表に基づいたスケジューリングアルゴリズムまたは優先度に基づいたスケジューリングアルゴリズムを含む。例示的に、図3に示すように、合計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は、いずれも上述した方法でスケジューリングし、所在する物理コアに対応するロックの使用権を取得し、更に物理コアを用いてカーネルモード操作を実行することができる。
図5は、本発明の実施例1に係る細粒度ロックによるスケジューリングの模式図である。制御プログラムの所要カーネルサービスの計算リソースが大きいであれば、複数の物理コアにおいてこの制御プログラムのカーネルモード操作を同時に実行させてもよい。単一の制御プログラムの異なる制御プログラムの粒度を分割して複数の制御プログラムを異なる物理コアに割り当てることにより、複数の物理コアが同時にカーネルモード操作を実行し、複数の制御プログラムを並列実行させることができる。マイクロカーネルタスクタイプは、プロセス間通信(IPC)、メモリ管理、タスクスケジューリングなどを含む複数のタイプに分けられる。本実施例において、二重カット処理アルゴリズムを用いて制御プログラムをカットして分類する。ここで、第1層のカット処理アルゴリズムは、制御プログラムスケジューリングのシステムオーバーヘッドを削減するために、動作時間ごとに複数の制御プログラムをなるべく小さなスケジュール可能な幾つかの周期制御プログラムセットにカットする。第2層のカット処理アルゴリズムは、制御プログラムをより信頼性が高くてリアルタイム性が高い環境で動作させるために、第1層の制御プログラムのカット結果に基づき、いくつかの優先度レベルの異なる制御プログラムセットにカットする。最後、複数の制御プログラムの関連性を計算することにより、この計算手順は、カーネルタスクタイプの重み及びタスク優先度及び/又は動作時間の重みを組み合わせできる。関連性の高い制御プログラムを組合せて同一の物理コアに設定し、関連性の低い制御プログラムを異なる物理コアに設定することで、複数の物理コアが同時にカーネルモード操作を実行し、制御プログラムを完成する。
本実施例に係るカット処理アルゴリズムは、二重カット処理アルゴリズムに限られず、以下のようなアルゴリズムを更に含む。制御プログラムをより信頼性が高くてリアルタイム性が高い環境で動作させるために、制御プログラムに対応する複数の制御プログラムを取得し、これをいくつかの優先度レベルの異なる制御プログラムにカットする。最後、複数の制御プログラムの関連性を計算することにより、この計算手順は、マイクロカーネルタスクタイプの重み及びマイクロカーネルタスク優先度及び/又は制御プログラムの動作時間の重みを組み合わせできる。関連性の高い制御プログラムを組合せて同一の物理コアに設定し、関連性の低い制御プログラムを異なる物理コアに設定することで、複数の物理コアが同時にカーネルモード操作を実行し、制御プログラムを完成する。
例示的に、図3に示すように、合計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つが複数の物理コアにおいて動作することと、を含む。本実施例において、上述した方法に基づき、どの制御プログラムをどの物理コアに割り当てることを確認すると、スケジューリング設定情報を生成する。例示的に、図3に示すように、物理コア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において動作する。
仮想化マシンモニタ200は、スケジューリング設定情報に基づき、OSカーネルにおいて動作する制御プログラムを設定する。具体的に、仮想化マシンモニタは、仮想化マシンプログラムによってハードウェアに対して仮想化処理を行い、スケジューリング設定情報に基づき、1つの物理コアに複数の制御プログラムを割り当て、及び/又は、スケジューリング設定情報に基づき、各物理コアにおいて動作する制御プログラムの、時刻表に基づいたスケジューリングアルゴリズム又は優先度に基づいたスケジューリングアルゴリズムを含むスケジューリングアルゴリズムを設定し、及び/又は、複数の物理コアを仮想化し、スケジューリング設定情報に基づき、1つの制御プログラムを対応して得られた複数の制御プログラムをそれぞれ複数の物理コアに割り当ててもよい。
仮想化マシンモニタは、スケジューリング設定情報に基づき、OSカーネルにおいて動作する制御プログラムを実際に設定することができる。例示的に、図3に示すように、物理コア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において動作している。
上記設定によって、仮想化マシンモニタは、設定された制御プログラムを起動し、例示的に、図3に示すように、9つの制御プログラムが3つの物理コアに割当てられ、且つ該当するスケジューリングアルゴリズムに応じてスケジュールされる。
上述した技術態様に基づき、図6に示すように、マイクロカーネル100は、前記産業用アプリケーションが動作している間に、リアルタイムOS102における通信ドライバ及び産業用制御ミドルウェア101における通信プロトコルに基づき、前記産業用サーバによって制御される端末と通信することに用いられるIO通信モジュール103を更に備えてもよい。リアルタイムOS102における通信ドライバを、産業用制御ミドルウェア101における通信プロトコルとともに使用することによって、マイクロカーネルに基づき、産業用サーバと端末との通信を実現することができる。
本実施例において、1つの物理コアにおいて複数の制御プログラムを動作させることができ、物理コアリソースの使用率を向上させ、周期の異なる制御プログラムを同一の物理コアにおいて動作させることができ、マルチカーネルでの制御プログラムの自由な組み合わせを実現し、マルチビジネスソフトウェアにより定義される自由スケジューリングを実現し、異なる物理コアは異なる制御プログラムスケジューリングアルゴリズムを自由に設定することができ、制御プログラムスケジューリングの適応性と多様性を向上させる。
本実施例の技術態様において、産業用ミドルウェアと、リアルタイムOSとを備えるマイクロカーネル及び仮想化マシンモニタのアーキテクチャに基づき、仮想化マシンモニタは、リアルタイムOS起動の前に、制御プログラムに対応するカーネルタスクタイプの重み及びタスク優先度及び/又は動作時間の重みに基づき、スケジューリング設定情報を生成し、スケジューリング設定情報に基づき、各物理コアにおいて動作する制御プログラムの数、スケジューリングアルゴリズム、及び各制御プログラムが複数の物理コアにおいて動作することを設定し、カスタム設定の方式は、単一の物理コアによって複数のマイクロカーネルのタイムスライスを制御すること、および単一のマイクロカーネルが計算リソースを占有してクロス物理コアのスケジューリングを行うことに限らない。これによって、産業用サーバのマイクロカーネルが産業現場でのリアルタイム制御および自由な組み合わせを実現し、ハードウェアデバイスを簡素化にし、構築およびメンテナンスのコストを低下させ、ソフトウェアによって産業用プロセスを定義することを実現する。
実施例2
上述した技術態様に基づき、本実施例は、時刻表に基づき、スケジューリングアルゴリズムについて説明する。この時刻表に基づいたスケジューリングアルゴリズムは、複数のタイマーを設定することと、メインフレーム時間を周期とし、第1タイマーおよび第2タイマーを起動しながら、時刻表の設定に基づいて制御プログラムをスケジュールし、第2タイマーのタイミングが到来すると、次の制御プログラムをスケジュールし、かつ、第1タイマーのタイミングが到来すると、次の周期を開始することとを含む。ここで、第1タイマーの持続時間がメインフレーム時間であり、第2タイマーがメインフレーム時間内の各時間窓の順序に応じて次々に起動するとともに、第2タイマーの持続時間が次々に各時間窓の持続時間と同じであり、時刻表は、各時間窓のスタート・ストップ時間と、各時間窓に対応する制御プログラムとを含む。
本実施例において、1つの物理コアにおいて動作する制御プログラムは、設定された時刻表に基づき、スケジューリングを行い、時刻表はニーズに応じて予め設定されてもよく、スケジューリング時に、メインフレーム時間を周期とし、メインフレーム時間内に複数の時間窓がある。時刻表は、各時間窓のスタート・ストップ時間と、各時間窓に対応する制御プログラムとを含み、時間窓は非アイドル時間窓とアイドル時間窓に分けられる。ここで、各非アイドル時間窓がいずれも1つの制御プログラムの動作時間に対応し、アイドル時間窓において制御プログラムが動作しない。制御プログラムをスケジュールする場合、メインフレーム時間を繰り返し実行する。つまり、時刻表を1回実行するごとに、改めて時刻表における1番目の時間窓に移行して引き続き実行する。図7は、本発明の実施例2に係る時刻表の模式図である。この時刻表において、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タイマーによって時間窓をカウントする。図7に示すように、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である。図8は、本発明の実施例3に係る優先度インデックス番号ビットマップの模式図である。ここで、優先度メインインデックス番号ビットマップは1*8の一次元ビットマップであり、番号が0-7であり、優先度サブインデックス番号ビットマップは8*32の二次元ビットマップであり、縦方向の番号が0-7であり、横方向の番号が0-31である。42に対応するメインインデックス番号1およびサブインデックス番号10に基づき、、それぞれ優先度メインインデックス番号ビットマップの番号1、および優先度サブインデックス番号ビットマップの縦方向番号1、横方向番号10をマークする(1とマークする)。
上述した技術態様に基づき、優先度に基づいたスケジューリングアルゴリズムは、優先度メインインデックス番号ビットマップを走査して最高優先度に対応するメインインデックス番号を確認することと、メインインデックス番号に対応する優先度サブインデックス番号ビットマップを走査して最高優先度に対応するサブインデックス番号を確認することと、メインインデックス番号および前記サブインデックス番号に基づき、現在の最高優先度を計算し、最高優先度に対応する制御プログラムを確認することとを含む。
図8に示すように、まず、0-7の順番で優先度メインインデックス番号ビットマップを走査し、1番目の1とマックされたビットを見つけ、1と番号付ける。そして、優先度サブインデックス番号ビットマップにおいて0-31の順番で縦方向番号が1である横方向ビットマップを走査し、1番目の1とマックされたビットが10であることを発見した。優先度の構成方式に基づき、計算し、この際の優先度が最高である42レベルの制御プログラムを取得する。
なお、上述した装置実施例に含まれた各ユニットとモジュールは、機能論理に応じて区分されるものであるが、上述した区分に制限されず、該当する機能を実現できれば良い。また、各機能ユニットの具体的な名称は、互いに区分しやすいためのものに過ぎず、本発明の実施例の保護範囲を制限するものではない。
なお、上記内容は、本発明の実施例の好ましい実施例及び使用される技術原理に過ぎない。当業者は、本発明の実施例がここで記載された特定の実施例に限らず、当業者にとって本発明の実施例の保護範囲を逸脱せずに様々な明らかな変更、調整と置換を行うことができるため、上記実施例によって本発明の実施例を詳細に説明したが、本発明の実施例は上記実施例に限定されず、本発明の実施例の構想を逸脱せずに、より多くの他の同等実施例を含んでもよく、本発明の実施例の範囲が添付される特許請求の範囲により確認されると理解すべきである。

Claims (10)

  1. 産業用サーバにおいて産業用サーバのハードウェアに基づいたOSカーネルが複数の物理コアをサポートする産業用サーバのマイクロカーネルアーキテクチャの制御システムであって、
    前記制御システムは、マイクロカーネルと、仮想化マシンモニタとを備え、
    各物理コアにおいて複数のマイクロカーネルが動作し、各マイクロカーネルは、いずれも産業用制御ミドルウェアと、リアルタイムOSとを備え、
    前記産業用制御ミドルウェアは、産業用制御アプリケーションを動作させるように、産業用制御アプリケーション解析することに用いられ、
    前記リアルタイムOSは、前記仮想化マシンモニタによって産業用制御アプリケーションの動作中の制御プログラムをスケジューリング・制御することに用いられ、
    前記仮想化マシンモニタは、前記リアルタイムOS起動の前に、それぞれの制御プログラムに対応するマイクロカーネルタスクタイプの重み及びそれぞれの制御プログラムに対応するマイクロカーネルタスク優先度及び/又はそれぞれの制御プログラムの動作時間の重みに基づき、スケジューリング設定情報を生成し、前記スケジューリング設定情報に基づき、前記OSカーネルにおいて動作する制御プログラムを設定し、設定された制御プログラムを起動させることに用いられ、
    前記スケジューリング設定情報に、各物理コアにおいて動作する制御プログラムの数と、各物理コアにおいて動作する制御プログラムのスケジューリングアルゴリズムと、全ての制御プログラムのうちの少なくとも1つが複数の物理コアにおいて動作することと、が含まれる、ことを特徴とする産業用サーバのマイクロカーネルアーキテクチャの制御システム。
  2. 前記マイクロカーネルは、前記産業用制御アプリケーションが動作している間に、前記リアルタイムOSにおける通信ドライバ及び前記産業用制御ミドルウェアにおける通信プロトコルに基づき、前記産業用サーバにより制御される端末と通信するためのIO通信モジュールを、更に備える、ことを特徴とする請求項1に記載の制御システム。
  3. 前記仮想化マシンモニタは、具体的に、
    制御プログラムに対応するマイクロカーネルタスクタイプの重み及び制御プログラムに対応するマイクロカーネルタスク優先度及び/又は制御プログラムの動作時間の重みに基づき、制御プログラムの関連性を計算し、
    前記関連性に基づき、前記スケジューリング設定情報を生成することに用いられる、ことを特徴とする請求項1に記載の制御システム。
  4. 前記仮想化マシンモニタは、具体的に、
    前記マイクロカーネルタスクタイプ、マイクロカーネルタスク優先度および制御プログラムの動作時間の重みに基づき、前記関連性を計算すること、または、
    前記マイクロカーネルタスクタイプおよびマイクロカーネルタスク優先度の重みに基づき、前記関連性を計算すること、または、
    前記マイクロカーネルタスクタイプおよび制御プログラムの動作時間の重みに基づき、前記関連性を計算することに用いられる、ことを特徴とする請求項3に記載の制御システム。
  5. 前記仮想化マシンモニタは、具体的に、
    仮想化マシンプログラムによってハードウェアに対して仮想化処理を行い、前記スケジューリング設定情報に基づき、少なくとも1つの物理コアに複数の制御プログラムを割り当てること、及び/又は、
    前記スケジューリング設定情報に基づき、各物理コアにおいて動作する制御プログラムのスケジューリングアルゴリズムを設定すること、及び/又は、
    複数の物理コアを仮想化し、全ての制御プログラムのうちの少なくとも1つについて、前記スケジューリング設定情報に基づき、該制御プログラムを対応付けて複数の制御プログラムを取得し、取得した前記複数の制御プログラムを前記複数の物理コアに割り当てることに用いられ、
    前記スケジューリングアルゴリズムは、時刻表に基づいたスケジューリングアルゴリズム又は優先度に基づいたスケジューリングアルゴリズムを含む、ことを特徴とする請求項1に記載の制御システム。
  6. 前記仮想化マシンモニタは、具体的に、
    粗粒度ロックによるスケジューリング方法を用いることにより、物理コアごとに1つのロックを対応させ、時刻表に基づいたスケジューリングアルゴリズム又は優先度に基づいたスケジューリングアルゴリズムによって、単一の物理コアにおける複数の制御プログラムから1つの制御プログラムを特定し、特定した前記制御プログラムから前記物理コアに対応するロックを取得し、前記物理コアに対応するロックを取得した制御プログラムが前記物理コアを独占してカーネルモード操作を実行し、前記制御プログラムのカーネルタスクタイプ、優先度及び/又は動作時間に基づき、前記スケジューリング設定情報を生成すること、または、
    細粒度ロックによるスケジューリング方法を用いることにより、物理コアごとに1つのロックを対応させ、全ての制御プログラムのうちの少なくとも1つについて、該制御プログラムの所要計算リソースに応じて該制御プログラムを対応付けて複数の制御プログラムを取得し、前記複数の制御プログラム同士の関連性に基づき、前記複数の制御プログラムを異なる物理コアに割り当て、前記複数の制御プログラムがそれぞれ所属する物理コアに対応するロックを取得し、ロックを取得した前記複数の制御プログラムのそれぞれが割り当てられた複数の物理コアにおいて同時にカーネルモード操作を実行しての前記複数の制御プログラムの並行実行を実現し、前記制御プログラムのカーネルタスクタイプ、優先度及び/又は動作時間に基づき、前記スケジューリング設定情報を生成することに用いられる、ことを特徴とする請求項1に記載の制御システム。
  7. 前記時刻表に基づいたスケジューリングアルゴリズムは、
    第1タイマーの持続時間がメインフレーム時間であり、第2タイマーが前記メインフレーム時間内の各時間窓の順序に応じて次々に起動されるとともに、前記第2タイマーの持続時間が次々に各時間窓の持続時間と同じであるように、複数のタイマーを設定することと、
    前記メインフレーム時間を周期とし、前記第1タイマーおよび前記第2タイマーを起動させながら、時刻表の設定に基づいて制御プログラムをスケジュールし、前記第2タイマーのタイミングが到来すると、次の制御プログラムをスケジュールし、かつ、前記第1タイマーのタイミングが到来すると、次の周期を開始することと、を含み、
    前記時刻表は、前記各時間窓のスタート・ストップ時間と、各時間窓に対応する制御プログラムとを含む、ことを特徴とする請求項5に記載の制御システム。
  8. 前記優先度に基づいたスケジューリングアルゴリズムは、
    優先度メインインデックス番号ビットマップを走査して最高優先度に対応するメインインデックス番号を確認することと、
    前記メインインデックス番号に対応する優先度サブインデックス番号ビットマップを走査して最高優先度に対応するサブインデックス番号を確認することと、
    前記メインインデックス番号および前記サブインデックス番号に基づき、現在の最高優先度を計算し、前記最高優先度に対応する制御プログラムを確認することとを含む、ことを特徴とする請求項5に記載の制御システム。
  9. 少なくとも1つの物理コアにおいて動作する制御プログラムは、動作周期が同じまたは異なる制御プログラムを含む、ことを特徴とする請求項1から8のいずれか1項に記載の制御システム。
  10. 産業用サーバのハードウェアと、前記産業用サーバのハードウェアに基づいたOSカーネルとを備え、前記OSカーネルが複数の物理コアをサポートする産業用サーバであって、
    前記産業用サーバは、請求項1から9のいずれか1項に記載の産業用サーバのマイクロカーネルアーキテクチャの制御システムを更に備える、ことを特徴とする産業用サーバ。
JP2019001678A 2018-07-09 2019-01-09 産業用サーバのマイクロカーネルアーキテクチャの制御システム及び産業用サーバ Active JP7101127B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201810745322.7A CN108984267B (zh) 2018-07-09 2018-07-09 工业服务器的微内核架构控制系统及工业服务器
CN201810745322.7 2018-07-09

Publications (2)

Publication Number Publication Date
JP2020009403A JP2020009403A (ja) 2020-01-16
JP7101127B2 true JP7101127B2 (ja) 2022-07-14

Family

ID=64536458

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019001678A Active JP7101127B2 (ja) 2018-07-09 2019-01-09 産業用サーバのマイクロカーネルアーキテクチャの制御システム及び産業用サーバ

Country Status (4)

Country Link
US (1) US10977070B2 (ja)
EP (1) EP3594809A1 (ja)
JP (1) JP7101127B2 (ja)
CN (1) CN108984267B (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110120940B (zh) * 2019-04-12 2020-07-07 华中科技大学 一种面向Docker容器的文件系统资源隔离方法
CN112416052A (zh) * 2020-12-10 2021-02-26 王志平 一种内核时间片超频的实现方法
US20220404808A1 (en) * 2021-06-16 2022-12-22 Fisher-Rosemount Systems, Inc Systems and methods for associating modules in a software defined control system for industrial process plants
US11789428B2 (en) * 2021-06-16 2023-10-17 Fisher-Rosemount Systems, Inc. I/O server services for selecting and utilizing active controller outputs from containerized controller services in a process control environment
US20220404807A1 (en) * 2021-06-16 2022-12-22 Fisher-Rosemount Systems, Inc. Systems and Methods for Associating Modules in a Software Defined Control System for Industrial Process Plants
US20220404787A1 (en) * 2021-06-16 2022-12-22 Fisher-Rosemount Systems, Inc. Systems and methods for hierarchical organization of software defined process control systems for industrial process plants
EP4224260A1 (en) * 2022-02-03 2023-08-09 Abb Schweiz Ag Method for providing a service-based control application for an industrial plant
CN114879593B (zh) * 2022-05-07 2023-03-14 科东(广州)软件科技有限公司 实时系统运行plc控制器的方法、装置、设备及存储介质
CN114911538A (zh) * 2022-05-17 2022-08-16 武汉深之度科技有限公司 一种运行系统的启动方法及计算设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010134496A (ja) 2008-12-02 2010-06-17 Hitachi Ltd 仮想計算機システム、仮想計算機システムにおけるハイパバイザ、及び仮想計算機システムにおけるスケジューリング方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8776050B2 (en) 2003-08-20 2014-07-08 Oracle International Corporation Distributed virtual machine monitor for managing multiple virtual resources across multiple physical nodes
US8776088B2 (en) * 2009-03-30 2014-07-08 Microsoft Corporation Operating system distributed over heterogeneous platforms
KR101658035B1 (ko) * 2010-03-12 2016-10-04 삼성전자주식회사 가상 머신 모니터 및 가상 머신 모니터의 스케줄링 방법
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
US20170132030A1 (en) * 2014-03-27 2017-05-11 Nec Corporation Virtual machine system, control method thereof, and control program recording medium thereof
US20160371118A1 (en) * 2015-06-17 2016-12-22 Intel Corporation Virtual machine management method and apparatus including idling and scheduling of virtual processors
CN107102894A (zh) * 2017-04-07 2017-08-29 百度在线网络技术(北京)有限公司 任务调度方法、装置和系统
US10579274B2 (en) * 2017-06-27 2020-03-03 TidalScale, Inc. Hierarchical stalling strategies for handling stalling events in a virtualized environment
CN107506234B (zh) * 2017-07-03 2020-04-24 北京东土科技股份有限公司 一种虚拟机调度方法及装置
CN108196501A (zh) * 2017-12-22 2018-06-22 北京东土科技股份有限公司 一种基于plc的分布式控制系统的容灾方法、装置和系统

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010134496A (ja) 2008-12-02 2010-06-17 Hitachi Ltd 仮想計算機システム、仮想計算機システムにおけるハイパバイザ、及び仮想計算機システムにおけるスケジューリング方法

Also Published As

Publication number Publication date
EP3594809A1 (en) 2020-01-15
US10977070B2 (en) 2021-04-13
CN108984267A (zh) 2018-12-11
CN108984267B (zh) 2020-11-13
US20200012507A1 (en) 2020-01-09
JP2020009403A (ja) 2020-01-16

Similar Documents

Publication Publication Date Title
JP7101127B2 (ja) 産業用サーバのマイクロカーネルアーキテクチャの制御システム及び産業用サーバ
CN113037538B (zh) 分布式资源管理中低时延节点本地调度的系统和方法
US9135741B2 (en) Interference-driven resource management for GPU-based heterogeneous clusters
US10338945B2 (en) Heterogeneous field devices control management system based on industrial internet operating system
US11625258B2 (en) Method, apparatus and system for real-time virtual network function orchestration
US20160306647A1 (en) Method for affinity binding of interrupt of virtual network interface card, and computer device
JP4705051B2 (ja) 計算機システム
CN111212116A (zh) 一种基于容器云的高性能计算集群创建方法和系统
US10686728B2 (en) Systems and methods for allocating computing resources in distributed computing
JP5458998B2 (ja) 仮想マシンシステムおよび仮想マシン管理方法
JP2014063324A (ja) 情報処理方法、情報処理装置、及びプログラム。
CN111324432B (zh) 处理器调度方法、装置、服务器及存储介质
JP2016115065A (ja) 情報処理装置、情報処理システム、タスク処理方法、及び、プログラム
Lettieri et al. A study of I/O performance of virtual machines
CN105718320A (zh) 一种时钟任务处理方法、装置及设备
JP6924786B2 (ja) 産業用サーバのマイクロカーネルアーキテクチャの実現方法
Li et al. Predictable communication and migration in the Quest-V separation kernel
Hsiao et al. A usage-aware scheduler for improving MapReduce performance in heterogeneous environments
CN108196934A (zh) 一种定时器的定时设置方法、装置和虚拟化设备
EP3200083B1 (en) Resource scheduling method and related apparatus
JP2015517140A (ja) 分散リアルタイムシステムにおけるソフトウェア故障封じ込めユニット(SWFCUs)を形成するための方法および装置
Yu et al. Taming non-local stragglers using efficient prefetching in MapReduce
Stojkovic et al. EcoFaaS: Rethinking the Design of Serverless Environments for Energy Efficiency
CN110109743B (zh) 一种实时进程调度方法
Ying et al. On energyaware allocation and execution for batch and interactive mapreduce

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190109

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191216

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200204

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200501

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201027

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20210127

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20210518

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7426

Effective date: 20210906

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20210906

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210915

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

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20210915

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20210908

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20211028

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

Free format text: JAPANESE INTERMEDIATE CODE: C21

Effective date: 20211109

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20211119

C211 Notice of termination of reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C211

Effective date: 20211124

C22 Notice of designation (change) of administrative judge

Free format text: JAPANESE INTERMEDIATE CODE: C22

Effective date: 20220222

C22 Notice of designation (change) of administrative judge

Free format text: JAPANESE INTERMEDIATE CODE: C22

Effective date: 20220405

C23 Notice of termination of proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C23

Effective date: 20220510

C03 Trial/appeal decision taken

Free format text: JAPANESE INTERMEDIATE CODE: C03

Effective date: 20220621

C30A Notification sent

Free format text: JAPANESE INTERMEDIATE CODE: C3012

Effective date: 20220621

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220704

R150 Certificate of patent or registration of utility model

Ref document number: 7101127

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150