JP2013533564A - データベース化された共有メモリを利用した工学的分析用プログラム間の同期化された連係方法及びシステム - Google Patents

データベース化された共有メモリを利用した工学的分析用プログラム間の同期化された連係方法及びシステム Download PDF

Info

Publication number
JP2013533564A
JP2013533564A JP2013521667A JP2013521667A JP2013533564A JP 2013533564 A JP2013533564 A JP 2013533564A JP 2013521667 A JP2013521667 A JP 2013521667A JP 2013521667 A JP2013521667 A JP 2013521667A JP 2013533564 A JP2013533564 A JP 2013533564A
Authority
JP
Japan
Prior art keywords
storage space
variable
shared memory
global variable
synchronized
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.)
Granted
Application number
JP2013521667A
Other languages
English (en)
Other versions
JP5465358B2 (ja
Inventor
ホン、ジンヒョク
Original Assignee
コリア ハイドロ アンド ニュークリア パワー カンパニー リミティッド
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 コリア ハイドロ アンド ニュークリア パワー カンパニー リミティッド filed Critical コリア ハイドロ アンド ニュークリア パワー カンパニー リミティッド
Publication of JP2013533564A publication Critical patent/JP2013533564A/ja
Application granted granted Critical
Publication of JP5465358B2 publication Critical patent/JP5465358B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/275Synchronous replication
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/522Barrier synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source
    • 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/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

本発明に係る工学的分析用プログラム間の同期化された連係システムは、プログラムのソースコードで定義しているグローバル変数を抽出するグローバル変数抽出部と、グローバル変数を変数名に応じて検索できるようにデータベース化して、共有メモリに格納するメモリ管理部と、ソースコードのグローバル変数宣言領域を除去した後、共有メモリ上に格納空間が割り当てられるようにオリジナルソースコードを変更して、各々のプログラムに対する実行ファイルを生成する翻訳部と、翻訳部により生成された実行ファイルを実行し、同期化された時間間隔で時間進行させ、各プログラムの状態を決定する共有メモリ格納空間を物理的メモリに格納及び復元するコード実行部とを備える。
【選択図】図1

Description

本発明は、データベース化された共有メモリを利用した工学的分析用プログラム間の同期化された連係方法論及びシステムに関する。さらに詳細には、複数の工学的分析用プログラムを統合して複合的分析用途として使用しようとする場合に、各プログラムが使用するすべての内部変数の格納空間をデータベース化された共有メモリの空間に再び割り当てることで、プログラム間連係変数の入出力及び各プログラムの現在状態を格納し、完全に復元でき、時間同期化された統合実行を可能にする方法に関する。
従来では、プラントシステム設計/安全分析などに使用される安全解析コードなど単独目的のために開発された既存コードを併合して統合された全体システムの挙動を分析する用途として使用するために統合がなされなければならない時には、既存コードのソースコードを合わせて一つの大型コードに併合したり、DLL(Dynamic Link Library)方式あるいはLIB(Static Library)方式で関数を呼び出す形態で複数のコード間の連係変数の値を交換して結合する方法を取ってきた。このような方式は、プログラム間の連係変数の形態及び種類を事前に予め定義して、関数因子に値を伝達するので、統合しようとするプログラムの数量が増加するほどプログラム間の連係変数が増加するようになり、したがって、伝達される関数の種類及び呼び出し回数が幾何級数的に増加するようになり、また連係変数が変更されることによって、ソースコードの変更が必須なので、必ずソースを変更してコンパイルする過程を経なければならない等、統合開発期間がかなり長くなる。
また、各プログラムがバージョン・アップ(Version−up)される場合、これを反映するためには、このような統合過程をさらに経なければならないという難しさも存在する。また、統合コードの実行時に特定状況を再演するためには、物理的メモリに再開始(Restart)のために選別された変数だけを記録するコードでプログラムソースを手動で変更しなければ特定状況を格納することができないため、予め決まった時点の他には、プログラム状態の格納/復元が基本的に不可能であり、分析のためのグラフィック連係のためにも、連係変数を外部に伝達するためには、プログラムソースを必ず変更しなければならない等の多くの問題点がある。
本発明は、上述の問題点を解決するために提案されたものであって、統合しようとする工学的分析用プログラムが使用するすべての内部変数の格納空間をデータベース化された共有メモリとして使用することによって、連係変数の変更によるプログラムソースの修正無しでいかなる連係変数も入出力できるようにし、定義された共有メモリをハードディスクのような物理的メモリに格納し、物理的メモリの内容を共有メモリに復元することだけでも各実行ファイルの現在状態を格納された時点と同じ状態に完壁に復元できるようにし、各実行ファイルが時間的に同期化され、かつ独立した実行を保障する工学的分析用プログラム間の同期化された連係方法及びそのシステムを提供することを目的とする。
本発明に係る工学的分析用プログラム間の同期化された連係システムは、プログラムのソースコードで定義しているグローバル変数を抽出するグローバル変数抽出部と、前記グローバル変数を変数名に応じて検索できるようにデータベース化して、共有メモリに格納するメモリ管理部と、前記ソースコードのグローバル変数宣言領域を除去した後、前記共有メモリ上に格納空間が割り当てられるようにオリジナルソースコードを変更して、各々のプログラムに対する実行ファイルを生成する翻訳部と、前記翻訳部により生成された実行ファイルを実行し、同期化された時間間隔で時間進行させ、各プログラムの状態を決定する共有メモリ格納空間を物理的メモリに格納及び復元するコード実行部とを備える。
特に、前記グローバル変数抽出部は、前記グローバル変数をパーシング(parsing)して、各グローバル変数に対するデスクリプション、単位、所属系統、変数形態、次数、オフセット値、及び変数名のうち、何れか一つ以上を含む情報を特定構造体形式で生成し、生成された情報を前記メモリ管理部に伝達することを特徴とする。
また、メモリ管理部では、グローバル変数抽出部から伝達されたグローバル変数を共有メモリ上の格納空間を再び割り当てるために、体系化されたメモリ管理ロジックを有した共有メモリから構成して、グローバル変数に対する情報を構造体形式で挿入、削除、及び検索する機能などグローバル変数に対する共有メモリ上のデータベース管理を行うことを特徴とする。
また、前記共有メモリのヘッダは、前記グローバル変数と一対一に対応する構造体の客体が前記共有メモリ上において占める格納空間の大きさを表す整数情報、前記共有メモリ上においてグローバル変数の現在値が占める格納空間の大きさを表す整数情報と、前記コード実行部で実行させる実行ファイルの格納空間の大きさを表す整数情報を含んでいることを特徴とする。
また、前記共有メモリのヘッダは、前記グローバル変数と一対一に対応する構造体の客体をデータベース化して管理するための変数と、前記グローバル変数と一対一に対応する構造体の客体の格納空間の開始番地を格納した変数と、前記グローバル変数の現在値格納空間の開始番地を格納した変数と、前記実行ファイルの格納空間の開始番地を格納した変数とをさらに含むことを特徴とする。
また、前記共有メモリは、前記グローバル変数と一対一に対応する構造体の客体を格納するための格納空間と、前記グローバル変数の現在値を格納するための格納空間と、前記実行ファイルに対する情報を格納するための格納空間とを備えることを特徴とする。
また、前記メモリ管理部は、前記グローバル変数と一対一に対応する構造体の客体を挿入、削除、及び照会するための管理構造体を定義し、前記管理構造体は、登録された総グローバル変数個数を表す変数、データ検索のためにグローバル変数全体の重点になるノードを指し示す変数、前記グローバル変数と一対一に対応する構造体の客体を挿入、削除、照会、及び検索するための関数を含むことを特徴とする。
また、前記翻訳部は、前記オリジナルソースコードの時間進行区間反復文を同期化個体を待たせるロジックに変更して、前記コード実行部が発生させる時間同期化信号がオン(ON)になる時点に時間進行されるように前記実行ファイルを生成することを特徴とする。
前記翻訳部は、前記実行ファイルに対する情報を前記共有メモリ上の実行情報構造体に格納し、前記実行情報構造体は、実行ファイル名が格納される格納空間、同期化信号を受ける同期化個体格納空間と、実行ファイルが実行された状態が格納される格納空間とを備えることを特徴とする。
また、前記コード実行部は、前記実行ファイル名が格納される格納空間、同期化信号を受ける同期化個体の格納空間、及び実行ファイルが実行された状態が格納される格納空間に登録された客体の内容を把握して、実行ファイルの同期化実行に利用することを特徴とする。
一方、 本発明に係る工学的分析用プログラム間の同期化された連係方法、プログラムのソースコードで定義しているグローバル変数を抽出するステップと、前記グローバル変数を変数名に応じて検索できるようにデータベース化して共有メモリに格納するステップと、前記ソースコードのグローバル変数宣言領域を除去した後、前記共有メモリ上に格納空間が割り当てられるようにオリジナルソースコードを変更して、各々のプログラムに対する実行ファイルを生成するステップと、前記生成された実行ファイルを実行し同期化された時間間隔で時間進行させ、各プログラムの状態を決定する共有メモリ格納空間を物理的メモリに格納及び復元するステップとを含む。
特に、前記プログラムのソースコードで定義しているグローバル変数を抽出するステップは、前記グローバル変数をパーシング(parsing)して各グローバル変数に対するデスクリプション、単位、所属系統、変数形態、次数、オフセット値、及び変数名のうちの何れか一つ以上を含む情報を特定構造体形式で生成するステップを含むことを特徴とする。
また、前記グローバル変数を変数名に応じて検索できるようにデータベース化して共有メモリに格納するステップは、前記グローバル変数と一対一に対応する構造体の客体を挿入、削除、及び照会するための管理構造体を定義するステップを含むことを特徴とする。
また、前記管理構造体は、登録された総グローバル変数個数を表す変数、データ検索のためにグローバル変数全体の重点になるノードを指し示す変数、前記グローバル変数と一対一に対応する構造体の客体を挿入、削除、照会、及び検索するための関数を含むことを特徴とする。
また、前記ソースコードのグローバル変数宣言領域を除去した後、前記共有メモリ上に格納空間が割り当てられるようにオリジナルソースコードを変更して、各々のプログラムに対する実行ファイルを生成するステップは、前記実行ファイルに対する情報を前記共有メモリ上の実行情報構造体に格納するステップを含むことを特徴とする。
また、前記実行情報構造体は、実行ファイル名が格納される格納空間、同期化信号を受ける同期化個体格納空間、及び実行ファイルが実行された状態が格納される格納空間を含むことを特徴とする。
また、複数のプログラムを統合して複合的分析用途として使用する場合、各プログラムが使用するすべての内部変数の格納空間をデータベース化された共有メモリに再割り当てして定義された共有メモリを前記物理的メモリに格納し、前記物理的メモリの内容を共有メモリに復元して、各実行ファイルの状態を格納された時点と同じ状態に復元するステップをさらに含むことを特徴とする。
また、工学的分析用プログラムに対するグラフィックプログラムとの連係時、前記データベース化された共有メモリの方式で内部グローバル変数の格納空間を再割り当てして連係変数の現在値抽出及び更新をするステップをさらに含むことを特徴とする。
本発明によれば、次のような効果を期待することができる。
複数の工学的分析用プログラムを統合するために、従来のソースコードを直接統合して大型ソースコードに作るか、又はDLL方式あるいはLIB方式の関数因子交換形式で開発する時の大いなる統合期間と連係変数の変化による数多くのコード変更期間が必要であった。しかしながら、本発明では、体系化された共有メモリを使用してすべてのグローバル変数のすべての情報を共有することによって、多量の連係伝達関数の生成及び連係関数呼び出し回数増加に伴う非効率性の増大、及び連係変数のための数多くのソースコードの変更などの多くの短所を克服することができるから、統合開発期間を大きく短縮させることができるという効果がある。
また、以前方式の直接ソースコード統合では、プログラムの実行途中の状態を格納するためには、ソースコード上において特定時点を物理的メモリに記録するソースコードを作成しなければならず、予め決まった時点以外には、プログラム状態の格納及び復元が基本的に不可能であった。しかしながら、本発明によれば、定義された共有メモリをハードディスクのような物理的メモリに格納し、物理的メモリの内容を共有メモリに復元することだけでも、各実行ファイルの現在状態を格納された時点と同じ状態に完壁に復元できるから、プログラムを介した工学的分析が必要なとき、いつでもプログラムの状態を格納することができ、同期化統合システムを利用してシステム分析作業時に大きな利点を提供できる。
また、以前方式の直接ソースコード統合では、数多くの試行錯誤を経た後に、完成された統合プログラムであっても、各々のプログラムがバージョン・アップ(Verion−up)される場合には、これを反映するために、長い統合過程を再び繰り返さなければならなかった。しかしながら、本発明によれば、各実行ファイルが独立した実行をしながらも時間同期化が可能になるから、各プログラムを独立的に維持補修及びバージョン・アップされたコードに統合できるようにする基本的な方法を提供できる。
また、従来のソースコード統合による方式は、グラフィック連係プログラムの開発時に、ディスプレイ(Display)を望む連係変数をプログラムソース次元で連係変数をいちいち指定して、直接関数のような連係方式で、内部変数値を外部に公開しなければならなかった。しかしながら、本発明によれば、標準化された連係変数の挿入、削除、照会、及び検索機能の関数を提供することによって、グラフィックディスプレイプログラムなどのようなその他の目的の連係プログラムの開発時にも、かなり便利な機能を提供できる。
本発明に係るデータベース化された共有メモリを利用した工学的分析用プログラム間の同期化された連係システムを説明するための図である。 本発明に係るデータベース化された共有メモリの構造を説明するための図である。 本発明において使用される構造体を説明するための図である。 本発明において使用される構造体を説明するための図である。 本発明において使用される構造体を説明するための図である。 本発明において使用される構造体を説明するための図である。 本発明において使用される構造体を説明するための図である。 本発明に係る連係システムの翻訳部でのオリジナルソースコードの変更例を説明するための図である。 本発明に係る連係システムの翻訳部でのオリジナルソースコードの変更例を説明するための図である。 本発明に係るデータベース化された共有メモリを利用した工学的分析用プログラム間の同期化された連係方法を説明するためのフローチャートである。
添付された図面を参照して、本発明を詳細に説明すれば、以下のとおりである。ここで、繰り返される説明、本発明の要旨を不明にするおそれがある公知機能、及び構成についての詳細な説明は省略する。本発明の実施の形態は、当業者に本発明をさらに完全に説明するために提供されるものである。したがって、図面での要素の形状及びサイズなどは、さらに明確な説明を強調するために誇張された。
以下、本発明に係るデータベース化された共有メモリを利用した工学的分析用プログラム間の同期化された連係方法及びシステムを詳細に説明する。
図1は、本発明に係るデータベース化された共有メモリを利用した工学的分析用プログラム間の同期化された連係システムを説明するための図である。
図1に示すように、本発明に係る工学的分析用プログラム間の同期化された連係システムは、プログラムの構成ソースコードが使用するグローバル変数を各種情報と共に抽出するグローバル変数抽出部100、抽出されたグローバル変数を変数名(Key値)に応じる検索が可能なようにデータベース化して、共有メモリに論理的に格納するメモリ管理部200、プログラムソースコードのグローバル変数宣言領域部分を除去し、その代わりにメモリ管理部200から提供する共有メモリ上に格納空間が割り当てられるようにオリジナルソースコードを変更(7)して実行ファイルを生成する翻訳部300、翻訳部300により生成された実行ファイル8を実行し、同期化された時間間隔で時間進行させ、各プログラムの状態を決定する共有メモリ格納空間を物理的メモリに格納及び復元するコード実行部400を備える。
図1ないし図7に示すように、グローバル変数抽出部100は、単一プログラムを構成するソースコード6で定義しているすべてのグローバル変数(あるいは、Static変数、new/mallocなどHeap変数)をパーシング(parsing)して、グローバル変数に対するデスクリプション(Description)35、単位(Units)36、所属系統(System)37、変数形態(Type)38、次数(Dims)39、変数現在値を格納するメモリ番地に対するオフセット値(nOffset)40、変数名(Name)41等、複数の情報をVAR_INFO構造体34の形式にして、これをメモリ管理部200に伝達する役割を果たす。
メモリ管理部200は、グローバル変数抽出部100から受けたグローバル変数を共有メモリ5上の格納空間に再び割り当てるために、図2のように体系化されたメモリ管理ロジックを有した構造で共有メモリ5を構成して、グローバル変数に対する情報をVAR_INFO構造体34の形式で挿入する。そして、メモリ管理部200は、削除及び検索機能29を行う関数も提供して、グローバル変数に対する共有メモリ5上でのデータベース管理を行う役割を果たす。
このために、共有メモリ5は、図2のようなメモリ構造を有し、共有メモリ5のヘッダは、SHARED_MEMORY_HEADER構造体15から始まる。
さらに詳細には、SHARED_MEMORY_HEADER構造体15の、最初の4バイト空間16には、グローバル変数と一対一に対応する構造体であるANODEの客体30が共有メモリ5上での格納空間23の大きさを表す整数情報(ここでは、nVarsSize値に該当)が格納される。そして、次の4バイト空間17には、共有メモリ5上でのグローバル変数の現在値格納空間24が占める大きさを表す整数情報(ここでは、nValuesSize値に該当)が格納される。そして、次の4バイト空間18には、後述するコード実行部400で実行させる実行ファイル8の情報格納空間25の大きさを表す整数情報(ここでは、nExesSize値に該当)格納される。
また、SHARED_MEMORY_HEADER構造体15には、ANODE構造体30の客体をデータベース化して管理(照会/挿入/削除)するためのDataBaseManager構造体26であるVarsメンバー変数19、ANODE客体30の格納空間23(大きさ:nVarsSizeバイト)の開始番地20−1を格納したpVarsポインタメンバー変数21、グローバル変数の現在値格納空間24(大きさ:nValuesSizeバイト)の開始番地21−1を格納したpValuesポインタメンバー変数21、実行ファイルの情報格納空間25(大きさ:nExesSizeバイト)の開始番地22−1を格納したpExesポインタメンバー変数22が構成要素として格納される。
そして、共有メモリ5は、上述のANODE客体30の格納空間23を備える。
また、共有メモリ5は、内部グローバル変数の現在値格納空間24及び実行ファイル(実行させる分析用コードの個数分だけ存在)に対した情報格納空間25を備える。
工学的分析用プログラムのソースコード6のグローバル変数がグローバル変数抽出部100により抽出されると、そのグローバル変数に対する情報がVAR_INFO構造体34のフィールドに満たされる。VAR_INFO構造体34は、次のようなフィールドから構成される。
−Description:変数に対するDescription文字列格納空間35
−Units:変数に対する単位格納空間36
−System:変数が属した代表システム名の格納空間37
−Type:変数の(char/bool/short/int/real/double等)型情報格納空間38
−Dims:変数の次数情報格納空間39
−nOffset:グローバル変数現在値を格納するための空間の開始アドレス101から該当変数の値納空間までのオフセット格納空間40
−Name:変数名文字列格納空間41
ANODE構造体30は、VAR_INFO構造体34と二つのANODEポインタ変数30がメンバー変数として存在し、ANODEポインタメンバー変数31、32は、データベースの以前(previous)及び次の(next)Nodeポインタに該当する概念である。1個のグローバル変数は、1個の対応するANODE客体30を有するようになる。
また、本発明では、ANODE構造体30を論理的でかつ簡潔に挿入、削除、及び照会するために、DataBaseManager構造体26を定義する。ここで、DataBaseManager構造体26は、請求の範囲に記載された管理構造体に該当する。
DataBaseManager構造体26は、登録された総グローバル変数個数(すなわち、登録されたANODE客体の個数)であるCountメンバー変数27、データ検索のためにグローバル変数全体の重点になるノードを指し示すANODE構造体ポインタであるancestorメンバー変数28、ANODE構造体30を挿入、削除、照会、及び検索するためのInsert/Delete/Traverse/Searchメンバー関数29から構成される。
1個のグローバル変数が抽出されて、1個のANODE構造体30情報が取得されると、SHARED_MEMORY_HEADER構造体15のDataBaseManager構造体26型のVarsメンバー変数19のInsert29関数により、ANODE客体格納空間23の一領域にANODE客体30が挿入される。
このとき、ANODE客体格納空間23の大きさであるnVarsSizeは、+sizeof(ANODE)分だけ増加し、pValues番地アドレス値21、101もやはり+sizeof(ANODE)分だけ増加し、pValues格納空間24の大きさであるnValuesSizeもやはり+sizeof(グローバル変数のデータType)分だけ増加し、実行ファイル情報が格納される空間25であるpExesポインタ値22、102もやはり順延されて増加する。
また、後述する翻訳部300により生成される実行ファイル8に対する情報は、EXE_INFO構造体42に格納されるが、メンバー変数は、次のとおりである。ここで、EXE_INFO構造体42は、請求範囲に記載された「実行情報構造体」に該当する。
「ExeName」は、経路を含んだ実行ファイル名が格納される格納空間43であり、「hStartメンバー変数」は、同期化信号を受ける同期化個体格納空間44であり、「Statusメンバー変数」は、実行ファイルが実行された状態が格納される格納空間45である。
EXE_INFO客体の格納空間25は、共有メモリ5の終わり部分(すなわち、nValuesSizeバイト後)に位置するようになるが、この空間25に登録されたEXE_INFO客体は、コード実行部400による同期化実行に利用される。
上述の論理構造を有した共有メモリ5は、全体大きさに該当するsizeof(SHARED_MEMORY_HEADER)+nVarsSize+nValuesSize+nExeSizeバイトのみを把握していると、すべてのグローバル変数情報及び現在状態値を検索及び照会できるだけでなく、共有メモリ5の全体バイトをハードディスクのような物理的メモリ12に格納だけしておいても、後に特定時点の状態に完壁に復帰できることを意味するので、後述するコード実行部400でこれを利用して、現在状態を格納及び復元できる。
翻訳部300は、各プログラムソースコード6からグローバル変数(あるいはC言語の場合にnew/mallocなどHeap変数)の宣言領域46を除去し、その代わりにメモリ管理副200から提供する共有メモリ格納空間が割り当てられるようにオリジナルソースを構文解析して、ソース自体を変更47(Translation)する。
また、翻訳部300は、プログラムの時間進行10(Advancement)区間反復文48を同期化個体を待たせるロジック49に変更して、コード実行部400が発生させる時間同期化信号がオンになる時点11においてのみ時間進行10されるように変更し、変更されたソースをコンパイル(compiling)して実行ファイルを生成(linking)する。
コード実行部400は、共有メモリ5上の実行ファイル情報格納空間25から実行ファイル8の情報を検索して、同期化実行をするようにする。
すなわち、コード実行部400は、共有メモリ5のpExesポインタメンバー変数22の格納値である実行ファイル情報格納空間25開始番地から共有メモリ終端までの空間(大きさ:nExesSizeバイト)に記録されたEXE_INFO45客体の内容を把握して、実行ファイル8の経路及びファイル名を抽出して実行ファイル8を実行させる。このとき、実行ファイル8は、WaitForSingleObjectのような同期化待機関数49により待機(Waiting)状態で同期化信号を待機するようになる。
コード実行部400から発生する同期化信号を受けることによって、各実行ファイル8は、同期化時間進行10になる。このとき、各実行ファイル8は、決まったΔt(Time Advancement)分だけ進行(11−1)されてからは、また再び同期化待機関数により待機状態に進入するようになる。実行ファイル8に対した情報を含んでいるEXE_INFO構造体42のStatusメンバー変数45は、該当実行ファイル8が1回のTime Advancement作業を終えたかどうかの状態を表すが、コード実行部400ですべてのEXE_INFO42客体のStatusメンバー変数情報を周期的に把握して、すべての実行ファイル8が1回時間進行(Time Advancement)が終了した時点にて、同期化個体の信号をON11に変更することによって、実行ファイル8が次のTime Advancementを進行できるようにする。かかる論理で各実行ファイル8が時間同期化をなしながら実行されうることである。
また、コード実行部400では、前述した共有メモリ5の全体大きさに該当するsizeof(SHARED_MEMORY_HEADER)+nVarsSize+nValuesSize+nExesSizeバイトをハードディスクのような物理的メモリ(Physical Memory)12に記録することによって、記録する当時のすべての実行ファイルの状態を全て格納することができる。それだけでなく、物理的メモリ12の内容を共有メモリ5に復元することだけでも、各実行ファイル8の現在状態を格納された時点と同じ状態に完壁に復元できる。
前述したような本発明によれば、複数の工学的分析用プログラム6を統合するために、従来のソースコードを直接統合して大型ソースコードに作るか、又はDLL方式あるいはLIB方式の関数因子交換形式で開発する時の大いなる統合期間と連係変数の変化による数多くのコード変更期間が必要であった。
しかしながら、本発明では、体系化された共有メモリを使用してすべてのグローバル変数のすべての情報を共有することによって、多い量の連係伝達関数の生成及び連係関数呼び出し回数増加に応じる非効率性の増大、そして連係変数のための数多くのソースコードの変更などの多くの短所が克服できるから、統合開発期間を大きく短縮させることができるという効果がある。
また、以前方式の直接ソースコード統合では、プログラムの実行途中の状態を格納するためには、ソースコード上において特定時点を物理的メモリに記録するソースコードを作成しなければならず、予め決まった時点以外には、プログラム状態の格納及び復元することが基本的に不可能であった。しかしながら、本発明によれば、定義された共有メモリ5をハードディスクのような物理的メモリ12に格納し、物理的メモリ12の内容を共有メモリ5に復元することだけでも、各実行ファイル8の現在状態を格納された時点と同じ状態に完壁に復元できるから、プログラムを介した工学的分析必要時にいつでもプログラムの状態を格納することができ、同期化統合システムを利用して、システム分析作業時に大きな利点を提供できる。
また、以前方式の直接ソースコード統合では、数多くの試行錯誤を経た後に完成された統合プログラムであっても、各々のプログラムがバージョン・アップ(Verion−up)される場合には、これを反映するために、長い統合過程を再び反復しなければならなかった。しかしながら、本発明によれば、各実行ファイルが独立した実行をしながらも時間同期化が可能になるから、各プログラムを独立的に維持補修及びバージョン・アップされたコードに統合できるようにする基本的な方法を提供できる。
また、従来のソースコード統合による方式は、グラフィック連係プログラムの開発時に、ディスプレイ(Display)を望む連係変数をプログラムソース次元で連係変数をいちいち指定して、直接関数のような連係方式で、内部変数値を外部に公開しなければならなかった。しかしながら、本発明によれば、標準化された連係変数の挿入、削除、照会、及び検索機能の関数を提供することによって、グラフィックディスプレイプログラムなどのようなその他の目的の連係プログラムの開発時にも、かなり便利な機能を提供できる。
図10は、本発明に係るデータベース化された共有メモリを利用した工学的分析用プログラム間の同期化された連係方法を説明するためのフローチャートである。
本発明に係る工学的プログラム間の同期化された連係方法は、プログラムのソースコードで定義しているグロバール変数を抽出するステップと、そのグロバール変数を変数名に応じて検索できるようにデータベース化して共有メモリに格納するステップと、そのソースコードのグロバール変数宣言領域を除去した後、その共有メモリ上に格納空間が割り当てられるようにオリジナルソースコードを変更して、各々のプログラムに対する実行ファイルを生成するステップと、その生成された実行ファイルを実行し同期化された時間間隔で時間進行させ、各プログラムの状態を決定する共有メモリ格納空間を物理的メモリに格納及び復元するステップとを含む。
図10に示すように、まず、グロバール変数抽出部が単一のプログラムを構成するソースコードで定義しているすべてのグロバール変数(あるいはStatic変数、new/mallocなどHeap変数)をパーシングして、変数に対する各種の情報をVAR_INFO構造体34の形式に作って、これをメモリ管理部に伝達する(S100)。
次に、メモリ管理部がグロバール変数抽出部から受けたグロバール変数を変数名(Key値)に応じる検索が容易なようにデータベース化して、共有メモリに論理的に格納する(S110)。
そして、翻訳部は、各プログラムソースコードからグローバル変数(あるいはC言語の場合にnew/mallocなどHeap変数)の宣言領域を除去し、その代わりにメモリ管理副から提供する共有メモリ格納空間が割り当てられるようにオリジナルソースを構文解析して、ソース自体を変更する(S120)。また、翻訳部は、プログラムの時間進行区間反復文を同期化個体を待たせるロジックに変更して、コード実行部が発生させる時間同期化信号がオンになる時点においてのみ時間進行されるように変更し、変更されたソースをコンパイルして実行ファイルを生成する(S130)。
次に、コード実行部は、共有メモリ上の実行ファイル情報格納空間から実行ファイルの情報を検索して、同期化実行をするようにする(S140)。これにより、コード実行部から発生する同期化信号を受けることによって、各実行ファイル8は、同期化時間進行になる(S150)。
最後に、コード実行部は、上述の共有メモリの全体大きさに該当するバイトをハードディスクのような物理的メモリに記録することによって、記録する当時のすべての実行ファイルの状態を全て格納することができ、物理的メモリの内容を共有メモリに復元することだけでも、各実行ファイルの現在状態を格納された時点と同じ状態に完壁に復元できる(S160)。
以上、図面と明細書において最適の実施形態が開示された。ここで、特定の用語が使用されたが、これは但し本発明を説明するための目的で使用されたものであり、意味限定や請求の範囲に記載された本発明の範囲を制限するために使用されたものではない。したがって、本技術分野の通常の知識を有した者であれば、これから多様な変形及び均等な他の実施形態が可能であるという点を理解するはずである。したがって、本発明の真の技術的保護範囲は、添付された特許請求の範囲の技術的思想により定められねばならない。

Claims (17)

  1. プログラムのソースコードで定義しているグローバル変数を抽出するグローバル変数抽出部と、
    前記グローバル変数を変数名に応じて検索できるようにデータベース化して、共有メモリに格納するメモリ管理部と、
    前記ソースコードのグローバル変数宣言領域を除去した後、前記共有メモリ上に格納空間が割り当てられるようにオリジナルソースコードを変更して、各々のプログラムに対する実行ファイルを生成する翻訳部と、
    前記翻訳部により生成された実行ファイルを実行し、同期化された時間間隔で時間進行させ、各プログラムの状態を決定する共有メモリ格納空間を物理的メモリに格納及び復元するコード実行部と
    を備える、工学的分析用プログラム間の同期化された連係システム。
  2. 前記グローバル変数抽出部は、
    前記グローバル変数をパーシング(parsing)して、各グローバル変数に対するデスクリプション、単位、所属系統、変数形態、次数、オフセット値、及び変数名のうち、何れか一つ以上を含む情報を特定構造体形式で生成し、生成された情報を前記メモリ管理部に伝達することを特徴とする、請求項1に記載の工学的分析用プログラム間の同期化された連係システム。
  3. 前記共有メモリのヘッダは、
    前記グローバル変数と一対一に対応する構造体の客体が前記共有メモリ上において占める格納空間の大きさを表す整数情報、前記共有メモリ上においてグローバル変数の現在値が占める格納空間の大きさを表す整数情報と、
    前記コード実行部で実行させる実行ファイルの格納空間の大きさを表す整数情報を含んでいることを特徴とする、請求項1に記載の工学的分析用プログラム間の同期化された連係システム。
  4. 前記共有メモリのヘッダは、
    前記グローバル変数と一対一に対応する構造体の客体をデータベース化して管理するための変数と、
    前記グローバル変数と一対一に対応する構造体の客体の格納空間の開始番地を格納した変数と、
    前記グローバル変数の現在値格納空間の開始番地を格納した変数と、
    前記実行ファイルの格納空間の開始番地を格納した変数と
    をさらに含むことを特徴とする、請求項3に記載の工学的分析用プログラム間の同期化された連係システム。
  5. 前記共有メモリは、
    前記グローバル変数と一対一に対応する構造体の客体を格納するための格納空間と、
    前記グローバル変数の現在値を格納するための格納空間と、
    前記実行ファイルに対する情報を格納するための格納空間と
    を備えることを特徴とする、請求項3に記載の工学的分析用プログラム間の同期化された連係システム。
  6. 前記メモリ管理部は、
    前記グローバル変数と一対一に対応する構造体の客体を挿入、削除、及び照会するための管理構造体を定義し、
    前記管理構造体は、
    登録された総グローバル変数個数を表す変数、データ検索のためにグローバル変数全体の重点になるノードを指し示す変数、前記グローバル変数と一対一に対応する構造体の客体を挿入、削除、照会、及び検索するための関数を含むことを特徴とする、請求項3に記載の工学的分析用プログラム間の同期化された連係システム。
  7. 前記翻訳部は、
    前記オリジナルソースコードの時間進行区間反復文を同期化個体を待たせるロジックに変更して、前記コード実行部が発生させる時間同期化信号がオン(ON)になる時点に時間進行されるように前記実行ファイルを生成することを特徴とする、請求項1に記載の工学的分析用プログラム間の同期化された連係システム。
  8. 前記翻訳部は、
    前記実行ファイルに対する情報を前記共有メモリ上の実行情報構造体に格納し、
    前記実行情報構造体は、
    実行ファイル名が格納される格納空間、同期化信号を受ける同期化個体格納空間と、
    実行ファイルが実行された状態が格納される格納空間と
    を備えることを特徴とする、請求項1に記載の工学的分析用プログラム間の同期化された連係システム。
  9. 前記コード実行部は、
    前記実行ファイル名が格納される格納空間、同期化信号を受ける同期化個体の格納空間、及び実行ファイルが実行された状態が格納される格納空間に登録された客体の内容を把握して、実行ファイルの同期化実行に利用することを特徴とする、請求項8に記載の工学的分析用プログラム間の同期化された連係システム。
  10. プログラムのソースコードで定義しているグローバル変数を抽出するステップと、
    前記グローバル変数を変数名に応じて検索できるようにデータベース化して共有メモリに格納するステップと、
    前記ソースコードのグローバル変数宣言領域を除去した後、前記共有メモリ上に格納空間が割り当てられるようにオリジナルソースコードを変更して、各々のプログラムに対する実行ファイルを生成するステップと、
    前記生成された実行ファイルを実行し同期化された時間間隔で時間進行させ、各プログラムの状態を決定する共有メモリ格納空間を物理的メモリに格納及び復元するステップと
    を含む、工学的分析用プログラム間の同期化された連係方法。
  11. 前記プログラムのソースコードで定義しているグローバル変数を抽出するステップは、
    前記グローバル変数をパーシング(parsing)して各グローバル変数に対するデスクリプション、単位、所属系統、変数形態、次数、オフセット値、及び変数名のうちの何れか一つ以上を含む情報を特定構造体形式で生成するステップを含むことを特徴とする、請求項10に記載の工学的分析用プログラム間の同期化された連係方法。
  12. 前記グローバル変数を変数名に応じて検索できるようにデータベース化して共有メモリに格納するステップは、
    前記グローバル変数と一対一に対応する構造体の客体を挿入、削除、及び照会するための管理構造体を定義するステップを含むことを特徴とする、請求項10に記載の工学的分析用プログラム間の同期化された連係方法。
  13. 前記管理構造体は、
    登録された総グローバル変数個数を表す変数、データ検索のためにグローバル変数全体の重点になるノードを指し示す変数、前記グローバル変数と一対一に対応する構造体の客体を挿入、削除、照会、及び検索するための関数を含むことを特徴とする、請求項12に記載の工学的分析用プログラム間の同期化された連係方法。
  14. 前記ソースコードのグローバル変数宣言領域を除去した後、前記共有メモリ上に格納空間が割り当てられるようにオリジナルソースコードを変更して、各々のプログラムに対する実行ファイルを生成するステップは、
    前記実行ファイルに対する情報を前記共有メモリ上の実行情報構造体に格納するステップを含むことを特徴とする、請求項10に記載の工学的分析用プログラム間の同期化された連係方法。
  15. 前記実行情報構造体は、
    実行ファイル名が格納される格納空間、同期化信号を受ける同期化個体格納空間、及び実行ファイルが実行された状態が格納される格納空間を含むことを特徴とする、請求項14に記載の工学的分析用プログラム間の同期化された連係方法。
  16. 複数のプログラムを統合して複合的分析用途として使用する場合、各プログラムが使用するすべての内部変数の格納空間をデータベース化された共有メモリに再割り当てして定義された共有メモリを前記物理的メモリに格納し、
    前記物理的メモリの内容を共有メモリに復元して、各実行ファイルの状態を格納された時点と同じ状態に復元するステップをさらに含むことを特徴とする、請求項10に記載の工学的分析用プログラム間の同期化された連係方法。
  17. 工学的分析用プログラムに対するグラフィックプログラムとの連係時、前記データベース化された共有メモリの方式で内部グローバル変数の格納空間を再割り当てして連係変数の現在値抽出及び更新をするステップをさらに含むことを特徴とする、請求項16に記載の工学的分析用プログラム間の同期化された連係方法。
JP2013521667A 2010-07-29 2010-09-02 データベース化された共有メモリを利用した工学的分析用プログラム間の同期化された連係方法及びシステム Active JP5465358B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
KR10-2010-0073204 2010-07-29
KR1020100073204A KR101139610B1 (ko) 2010-07-29 2010-07-29 데이터베이스화된 공유메모리를 이용한 공학적 분석용 프로그램들간의 동기화된 연계 방법 및 시스템
PCT/KR2010/005946 WO2012015097A1 (ko) 2010-07-29 2010-09-02 데이터베이스화된 공유메모리를 이용한 공학적 분석용 프로그램들간의 동기화된 연계 방법 및 시스템

Publications (2)

Publication Number Publication Date
JP2013533564A true JP2013533564A (ja) 2013-08-22
JP5465358B2 JP5465358B2 (ja) 2014-04-09

Family

ID=45530284

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013521667A Active JP5465358B2 (ja) 2010-07-29 2010-09-02 データベース化された共有メモリを利用した工学的分析用プログラム間の同期化された連係方法及びシステム

Country Status (6)

Country Link
US (1) US20130132341A1 (ja)
EP (1) EP2600256A4 (ja)
JP (1) JP5465358B2 (ja)
KR (1) KR101139610B1 (ja)
CN (1) CN103080925B (ja)
WO (1) WO2012015097A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101425527B1 (ko) * 2012-05-01 2014-07-31 한국수력원자력 주식회사 원자력발전소 훈련용 시뮬레이터의 실시간 중대사고 모의 시스템 및 그 방법
CN105740038B (zh) * 2016-02-02 2019-04-23 浙江工业大学 一种面向物联网重编程的存储优化方法
CN106445467A (zh) * 2016-09-28 2017-02-22 广东芬尼克兹节能设备有限公司 一种操作变量同步方法及系统
KR101702912B1 (ko) * 2016-11-03 2017-02-07 (주) 이디티 프로세스 데이터 섹션을 이용한 공학용 분석코드 가상통합 구동시스템
CN108205596B (zh) * 2016-12-16 2021-06-08 中广核研究院有限公司 实现核电厂严重事故分析计算程序仿真功能的方法
US10453427B2 (en) 2017-04-01 2019-10-22 Intel Corporation Register spill/fill using shared local memory space
CN112783912B (zh) * 2021-02-03 2023-10-13 腾讯科技(深圳)有限公司 一种数据处理方法、装置、计算机设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07311693A (ja) * 1994-05-19 1995-11-28 Toshiba Corp デバッグ方式
JP2008102915A (ja) * 2006-09-20 2008-05-01 Toshiba Tec Corp 情報処理装置及び情報処理プログラム
JP2010055249A (ja) * 2008-08-27 2010-03-11 Internatl Business Mach Corp <Ibm> シミュレーション方法、システム及びプログラム

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030010217A (ko) * 2001-07-26 2003-02-05 주식회사 모비츠 통합 중개 시스템에서의 어플리케이션 데이터 처리방법
EP1546928A4 (en) * 2002-09-18 2008-07-09 Netezza Corp Field-Oriented Pipeline Architecture for a Programmable Data Streaming Processor
US7200840B2 (en) * 2002-10-24 2007-04-03 International Business Machines Corporation Method and apparatus for enabling access to global data by a plurality of codes in an integrated executable for a heterogeneous architecture
EP1489862A1 (en) 2003-06-20 2004-12-22 Axalto S.A. Database synchronization
KR20050090744A (ko) * 2004-03-09 2005-09-14 주식회사 비즈모델라인 클라이언트와 서버간 동기화 기술을 이용한 개인화된상품정보 제공방법
KR20100004208A (ko) * 2008-07-03 2010-01-13 삼성전자주식회사 단말 및 그의 db 동기화 방법
US8561035B2 (en) * 2009-09-03 2013-10-15 International Business Machines Corporation Method and system to discover possible program variable values by connecting program value extraction with external data sources

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07311693A (ja) * 1994-05-19 1995-11-28 Toshiba Corp デバッグ方式
JP2008102915A (ja) * 2006-09-20 2008-05-01 Toshiba Tec Corp 情報処理装置及び情報処理プログラム
JP2010055249A (ja) * 2008-08-27 2010-03-11 Internatl Business Mach Corp <Ibm> シミュレーション方法、システム及びプログラム

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CSNG200100889006; 草野和寛、佐藤三久、細見岳生、妹尾義樹: 'Cenju-4の分散共有メモリ機構を用いたOmni OpenMPコンパイラ' 情報処理学会研究報告 Vol.2000,No.93, 20001006, p.39, 社団法人情報処理学会 *
JPN6014000503; 草野和寛、佐藤三久、細見岳生、妹尾義樹: 'Cenju-4の分散共有メモリ機構を用いたOmni OpenMPコンパイラ' 情報処理学会研究報告 Vol.2000,No.93, 20001006, p.39, 社団法人情報処理学会 *

Also Published As

Publication number Publication date
CN103080925B (zh) 2016-11-16
EP2600256A1 (en) 2013-06-05
WO2012015097A1 (ko) 2012-02-02
EP2600256A4 (en) 2014-02-19
KR20120011950A (ko) 2012-02-09
KR101139610B1 (ko) 2012-04-27
CN103080925A (zh) 2013-05-01
US20130132341A1 (en) 2013-05-23
JP5465358B2 (ja) 2014-04-09

Similar Documents

Publication Publication Date Title
JP5465358B2 (ja) データベース化された共有メモリを利用した工学的分析用プログラム間の同期化された連係方法及びシステム
CN105550296B (zh) 一种基于spark-SQL大数据处理平台的数据导入方法
US9646030B2 (en) Computer-readable medium storing program and version control method
US8826225B2 (en) Model transformation unit
CN101640587B (zh) 数据同步方法及装置
US20150324191A1 (en) Universal and adaptive software development platform for data-driven applications
US20090037386A1 (en) Computer file processing
US7730099B2 (en) Storage and retrieval of richly typed hierarchical network models
CN102982130A (zh) 一种nosql与rdbms的数据库同步方法和系统
US11593357B2 (en) Databases and methods of storing, retrieving, and processing data
CN101221504B (zh) 测试脚本的调度执行系统
CN113448562B (zh) 一种逻辑代码自动生成方法、装置和电子设备
CN110737437A (zh) 一种基于代码集成的编译方法和装置
CN105094941B (zh) 一种实现多语言的方法及装置
CN112463149A (zh) 一种面向软件定义卫星的可复用代码库构建方法与装置
US8196093B2 (en) Apparatus and method for componentizing legacy system
CN115994085A (zh) 代码覆盖率的测试处理方法、装置、设备及存储介质
CN114816247A (zh) 一种逻辑数据获取方法及装置
CN105843661B (zh) 一种面向主机系统的代码重定位方法及其系统
CN110764777B (zh) 一种elf文件生成方法、elf文件、设备及存储介质
US20100185652A1 (en) Multi-Dimensional Resource Fallback
CN102591859A (zh) 一种重用行业标准格式文件的方法及相关装置
WO2018182454A1 (ru) Способ разработки, хранения и использования компилированных в бинарное представление программ в таблицах баз данных
CN101799758A (zh) 规格管理装置
CN103473319A (zh) 一种热点数据的统计方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130128

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131210

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: 20140114

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140121

R150 Certificate of patent or registration of utility model

Ref document number: 5465358

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313117

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250