JP4638484B2 - データ処理装置におけるデータ整合性 - Google Patents

データ処理装置におけるデータ整合性 Download PDF

Info

Publication number
JP4638484B2
JP4638484B2 JP2007506769A JP2007506769A JP4638484B2 JP 4638484 B2 JP4638484 B2 JP 4638484B2 JP 2007506769 A JP2007506769 A JP 2007506769A JP 2007506769 A JP2007506769 A JP 2007506769A JP 4638484 B2 JP4638484 B2 JP 4638484B2
Authority
JP
Japan
Prior art keywords
function
functions
object code
symbol
variable
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
JP2007506769A
Other languages
English (en)
Other versions
JP2007531946A (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.)
Robert Bosch GmbH
Original Assignee
Robert Bosch GmbH
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 Robert Bosch GmbH filed Critical Robert Bosch GmbH
Publication of JP2007531946A publication Critical patent/JP2007531946A/ja
Application granted granted Critical
Publication of JP4638484B2 publication Critical patent/JP4638484B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • 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
    • 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/526Mutual exclusion algorithms

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Description

本発明は、リアルタイムアプリケーションが実行されるデータ処理装置におけるデータ整合性の問題に関する。この種のアプリケーションは、一般に複数の機能からなり、それらの機能は、時間的に固定され互いに調整されることなく、広域変数とも称される共通に利用される変数に/を書込み/読取るようにアクセスする。この種の機能が計算を実行するためにこの種の変数を相次いで複数回に亘って読取り、特に2つのこの種の読取りアクセスの間に他の機能によって変数が変更された場合には、計算の結果がエラーを伴うものになると推定されうる。計算が広域変数に複数回の書込みアクセスを必要とし、それに際して暫定的な中間結果が変数に記憶され、他の機能がこの種の中間結果にアクセスする場合には、全く同様にしてエラーが生ずる。
本願の範囲内において、同一の広域変数にアクセスする機能は、個々のケースで機能間の衝突が実際に生じうるか否かに係らず、干渉する機能と称される。
(背景技術)
データ処理システムにおいて広域変数の整合性を保証するための既知の技術は、干渉する機能の重複するアクセスによって妨げられうる広域変数に機能がアクセスする場合には、常に他の全ての機能を同一の変数へのアクセスから除外することである。しかし、この種の方法は、一般にリアルタイムアプリケーションには適さない。というのは、アクセスから除外された変数にアクセスしなければならない機能の実行は、変数へのアクセスが再び許可されるまで停止してしまうからであって、それら機能の実行に際して予測不能な遅延をもたらしうる。
データ整合性を保証するための他の既知の方法は、個々の機能のために広域変数のコピーを各々に使用することである。すなわち、干渉する機能は、その開始に際して、必要とされる広域変数の局所コピーを各々に作成し、続いて、そのコピーによって処理し、機能が変数を変更しうる場合には、その終了前に局所変数を広域変数にコピーバックし、その場合にはコピープロセスが各々に他の機能によって中断されることがない。
複雑なプログラムシステムにおいては、データ非整合性をもたらしうるアクセス衝突の発生箇所が開発の当初には往々にして不明である、という問題がある。この問題は、機能に必要とされる全ての広域変数の局所コピーが各機能内に作成されることで対処されうる。しかし、この種の措置は、記憶領域および処理能力の必要性を著しく増大させる。
システム統合の時点では、どの機能にどの広域変量のコピーが必要とされるか、が常に説明されうる。というのは、この時点では、全ての機能とその実行頻度および優先順位(他の機能を中断する権利)が認識されているからである。システム統合を容易にするために、存在するソースコード内で付加情報を用いてデータ整合性を保証するためにコピーによって処理しなければならない機能を識別し、かつオリジナル変量の代りに対応するコピーによって処理するように当該機能を変更する、例えばOLT(Off Line Tool)またはESCAPE(www.etas.com)のような種々のソフトウェアツールが存在する。さらに、対応するコピープロセスも生成される。これらのコピープロセスは、静的な駆動システム構成に応じて、(相互に中断されないため、共通のコピーが使用されうる。)1つまたは複数の機能のオリジナル変量にコピーを各々に同期させる。これらのツールは、個々の機能の優先順位および分類を確定するために駆動システム構成を読取ることで、機能または機能グループの前後の駆動システム構成内に必要とされるコピープロセスを自動的に挿入しうる。
これらのツールの適用性は、それらがソースコードの変更に依存しているという事実によって制限される。しかし、このソースコードは、必ずしも常には提供されない。特に開発パートナーが第三者から機能を提供される場合には、第三者は、機密保持の理由から往々にして機能をソースコードの形式ではなく、場合によってはオブジェクトコードとして提供する。この種の機能は、既知のツールでは処理されえないので、衝突のないことを保証するために、広範で自動化不能であり、よって高コストでエラーを生じ易い変更がソースコード内に存在する機能に必要となりうる。
さらに、ソースコードへの介入は、変更されたコードの新たな翻訳を毎回必要とする。特に機能(例えば、駆動システム構成)の優先順位の変更は、他の多数の機能のソースコードに広範な変更をもたらしうる。膨大なプログラムシステムにおいては、これが非常に長い翻訳時間をもたらし、開発プロセスを著しく遅延させうる。
他の問題は、既知の開発ツールが、各々に所定の高水準言語に適応されており、すなわち様々な高水準言語で記述された機能を処理するための使用には適していないことである。
(発明の利点)
本発明によれば、データ非整合性を回避する方法とその方法を適用するための開発ツールとが提供され、それらは、そのソースコードが記述される高水準言語に依存せずに、またはソースコードの提供の可能性に係らずに、任意の機能への適用を可能とし、遅滞のない開発を可能にする。
第1の利点は、請求項1に記載の方法において、補助変数の使用に必要とされるその初期化が、ソースコード内に挿入されて続いてオブジェクトコードに変換される代わりに、そこに存在するオブジェクトコード内に直接的に挿入されることでなされる。本発明によれば、初期化に必要とされるプログラムステップが、識別された機能内に直接的に挿入され、または識別された機能を呼出す機能内にその呼出し前に直接的に挿入され、あるいは初期化を引受る補助機能へのジャンプ命令が挿入される。
補助変数は、それを使用する機能の局所変数であって、すなわち、その機能内でのみ定義されてアクセス可能な変数である。実際的には、補助変数が望ましくは広域に定義される。というのは、その際には、互いに衝突しないことが認識されている、複数の干渉する機能が同一の補助変数を使用しうるからである。
選択された機能による広域変数へのアクセスを、補助変数へのアクセスに置換えるには、2つの方法がある。第1の方法においては、まず、選択された機能のうち未だ記号的な形式で存在するオブジェクトコード内で、例えば書込みまたは読取り命令の独立変数として生じうる個々の広域変数の記号を各々に識別し、補助変数の記号に置換える。第2の方法においては、オブジェクトコードをリンクする場合、すなわちオブジェクトコード内で全ての記号を具体的な領域アドレスへの参照に置換える場合には、広域変数の記号を各々にそれに置換えられる補助変数の領域アドレスへの参照に直接的に置換え、書込み/読取りアクセスをいわば「ゆがめ」る。
置換えまたは「ゆがめ」は、望ましくは特殊なツールによって実行され、そのツールはオブジェクトコードデータファイルを読取り、その中で記号を置換え、またはリンカーに該当する命令を挿入し、続いてそれをまた適切な形式のオブジェクトコードデータファイルとして記述しうる。
広域変数の代わりに補助変数を使用する機能の数を必要以上に多くしないために、本方法は、望ましくは、干渉する機能のうち相互に中断されうる機能を識別するステップc’)を含み、その際には、補助変数の導入と、そのようにして識別された少なくとも1つの機能のみへのアクセスの置換えとが適用される。他の機能によって中断されず、かつ他の機能を中断しない機能では、データ非整合性を生ずる恐れがないので、置換えが不要である。
このステップc’)は、望ましくは前述されたツールによって実行され、そのツールは入力データファイルとして、本来のオブジェクトデータファイルの他に望ましくは付加情報を、望ましくは複数の干渉する機能のうち他の機能によって中断されうるために、広域変数の代わりに補助変数によって処理されねばならないか否か、を示す制御データファイルの1つとして受取る。
相互に中断されるという干渉する機能の可能性は、付加情報内で、望ましくは機能に対応づけられた優先順位値によって定められる。
さらに、望ましくは、例えば実行可能なオブジェクトデータファイルの記述部分への制御データファイルの単純な挿入によって、少なくとも1つの選択された機能内で行われる置換えが記録され、その情報がデバッガーに提供される。この付加情報は、実行された置換えをトレースし、よってツールによって実行された変更をデバッガーの使用者に対して透過的にする可能性を、デバッガーに提供する。これは、特に、ソフトウェアの所定の実行時点でオリジナル変数とコピーとが異なる値を示し、テストされた機能がオリジナル変数または所定のコピーのいずれにアクセスするかをトレースすることを使用者に可能にする場合に、有益となる。
選択された機能で行われる置換えの少なくとも1つが書込みアクセスである場合、すなわち機能が補助変数の値を変更しうる場合には、広域変数を補助変数の値で上書きするステップが、選択された機能のオブジェクトコード内に挿入され、または選択された機能を呼出す機能内にその呼出し後に挿入され、その種の変更が広域に提供可能となる。
他の利点は、請求項8に従って、データ処理システム内で実行されるべき機能グループの記号的なオブジェクトコードが準備され、干渉する機能が識別され、その際には、広域変数が、それらにアクセスする各機能の記号的なオブジェクトコード内で、その機能に固有の記号で各々に表されており、少なくとも1つの干渉する機能が選択され、広域変数を機能に固有の記号に対応づけられた記憶領域にコピーする命令が、選択された各機能内に挿入され、または選択された機能を呼出す機能内にその呼出し前に挿入され、かつ選択されていない各機能のために各機能に固有の記号が広域変数に対応づけられた記憶領域に結合される、ことで得られる。
前述のように定義された方法を実施するツールにおいて、機能に固有の記号に応じて同一の広域変数を各々に識別することを容易にするために、望ましくは、機能内で広域変数のために使用される記号を含むテーブルが準備される。
複数の干渉する機能のオブジェクトコードがソースコードからコンパイルされる際には、望ましくは、そのために使用されるコンパイラが、機能のソースコード内に含まれる広域変数の同一の名称を、各機能に固有の記号に置換えて、テーブルを作成するように定められる。
本発明の他の特徴と利点は、添付図面を参照しながら以下の実施形態を説明することで明らかにされる。
(実施形態の説明)
図1に示される開発ツールは、第1のステップとしてコンパイラCOMPを備え、それは、開発中のアプリケーションの機能に関する例えばCのような高水準言語で記述されたソードコードS1、S2、…、Snを、記号的なオブジェクトコード機能O1、O2、…Onに変換する。記号的なオブジェクトコードは、各々の命令に1:1に対応する命令からなり、それらの命令は、コンパイルすべきソースコードが定められているターゲットプロセッサによって実行可能である。しかし、オブジェクトコードは、直接的に実行可能なコードとは異なり、書込みまたは読取りアクセスおよびジャンプ命令のために領域アドレスではなく記号で表されるアドレスを使用し、そのアドレスには処理の後のステップで初めてリンカーLINKによって固定値が割り当てられる。
コンパイラCOMPの後ステップには、オブジェクトコードプロセッサOPが配置されており、それは、コンパイラによって生成された、個々の機能のオブジェクトコードO1、O2、…、Onと、場合によっては、コンパイラCOMPによってコンパイルされていない、他の機能のオブジェクトコードOn+1、…、Omとを、それらの機能の複数によって使用される広域変数の整合性を保証するために改訂する。オブジェクトコードOn+1、…、Omは、例えば元々ソースコードS1、S2、…Snの言語とは異なる言語で記述された機能、または、アプリケーションの開発者によって追加的に入手された機能であって、そのソースコードが提供されない機能に属することもある。
オブジェクトコードプロセッサOPは、開発者によって準備されたデータファイルDESCRにアクセスし、そのデータファイルには、オブジェクトコード機能O1、…、Omの各々について、機能がアクセスする広域変数と、機能に割り当てられた優先順位とが詳細に記述されている。
図2は、オブジェクトコードプロセッサOPによって実行される処理をフローチャートを用いて示している。ステップ1において、オブジェクトコード機能の1つであるOi(1≦i≦m)が選択される。ステップ2において、データファイルDESCR内でオブジェクトコード機能Oiのために記述されている広域変数が選択され、ステップ3において、同様にデータファイルDESCRを用いて、選択された機能Oiに干渉する機能、すなわち同一の広域変数にアクセスする機能Oj(1≦j≦m、j≠i)が存在するか、が調査される。肯定である場合には、ステップS4において、どの機能がより高い優先順位を伴うか、が調査される。機能Oiの優先順位が低い場合には、選択された機能Oiが他の機能Ojによって中断される可能性があり、よって、第1の機能Oiによる2つの読取りアクセスの間に、優先順位のより高い他の機能Ojが広域変数を変更させ、または広域変数の定義されていない中間値を読取る場合には、データ非整合性を生ずる恐れがあることを意味している。この場合には、オブジェクトプロセッサは、機能Oiのオブジェクトコード内では、該当する広域変数への最初のアクセスの前に、または機能Oiを呼出す機能では、その呼出しの前に、それらの変数を補助変数にコピーする命令を挿入し、オブジェクトコードOi内の後続する全ての広域変数へのアクセスを補助変数へのアクセスに置換えさせる。この置換えにおいて、アクセスの少なくとも1つが書込みアクセスであることが検出された場合には、さらに、その終了前に実行されるべき、補助変数の値を広域変数にコピーする命令が各々に機能Oi内に挿入される。代替的に、この種の命令は、呼出しの後に、呼出す機能内に挿入されうる。
ステップ4の調査によって、機能Oiが他の機能Ojと同一またはより高い優先順位を伴うという結果が明らかにされれば、この第1の機能Oiが他の機能Ojによって中断される恐れはなく、コピーの使用は必要ない。この場合には、処理はステップ4からステップ6に直接移行する。
ステップ6は、ステップ1で選択された機能OiについてデータファイルDESCR内に他の広域変数が記述されているか、を調査し、肯定である場合には、処理は、ステップ2に復帰し、それらの変数の1つを選択する。否定である場合には、ステップ7において、処理すべき機能が未だ存在するか、が調査され、それがなければ処理が終了される。
このようにして、オブジェクトプロセッサは、データ整合性を伴うオブジェクトコード機能のグループO’1、…、O’mを生成し、それらに広域変数へのアクセスの種類に応じて広域変数を局所補助変数にコピーする命令のみ(機能が読取りアクセスのみである場合であって、機能O’1、O’nにおける単一の網掛けブロックIによって記号的に表されている)、または広域変数を局所変数にコピーし、かつコピーバックする命令(機能が書込みおよび読取りアクセスである場合であって、機能O’2、O’mにおける2つの網掛けブロックI、Cによって記号的に表されている)が挿入され、あるいは、当該機能が、該当する広域変数にアクセスする機能に割り当てられる最高の優先順位を伴う場合には、機能O’n+1の場合のように命令は挿入されない。
このようにして得られた整合性を伴うオブジェクト機能が、既知の方法でリンカーLINKによって実行可能なアプリケーションに結合され、それによって、オブジェクトコードの全ての記号が記憶領域の明確なアドレスに置換えられる。
開発ツールの望ましい発展またはその処理方法が図3を用いて説明される。コンパイラCOMPと、それによってソースコード機能S1、…、Snから生成されたオブジェクトコード機能O1、…、Onと、外部のオブジェクト機能On+1、…、Omとについては、図1と同様である。しかし、図1とは異なり、これらの機能は、データに整合性を伴わせるために、オブジェクトコードプロセッサOPによって処理されずに、オブジェクトコードブロックO”1、…、O”pを生成するコードリンカーCLINKを経る。これらのブロックの数は、オブジェクトコード機能に割り当てられ、コードリンカーCLINKによって読取られる、個々のオブジェクトコード機能O1、Omのために詳しく定められた優先順位レベルのデータPRIOの数に相当する。各オブジェクトコードブロックO”1〜O”pは、同一の優先順位レベルの機能を含む。最高の優先順位レベルを伴う機能がブロックO”1に集約されており、それらの機能はリスクを伴わずに広域変数に直接的にアクセス可能であり、オブジェクトコードプロセッサOPで処理される必要はない。他の全てのブロックO”2〜O”pは、オブジェクトコードプロセッサOPによって、図1および2を参照して説明された整合性処理を施される。機能をより大きなブロックに集約することによって、オブジェクトコードプロセッサOP内の処理が効率化される。個々のブロックの各々の機能は、相互に中断されないため、それらは各広域変数について共通の局所コピーを使用可能であり、それによって記憶領域が節約される。
整合性処理されるブロックO”1〜O”pは、続いて、変数リンカーVLINKと称される他のリンクステップ、すなわち、記憶領域への記号的な参照の全てを明確な領域アドレスに置換するリンカーを経ることで、ブロック間のジャンプを示しておりコードリンカーによっては明確なアドレスに置換え不能なジャンプアドレスを解決できる。すなわち、最終的に完成された実行可能なアプリケーションが得られる。
図4に示される実施形態においては、オブジェクトコードブロックO”1、…、O”pの生成までの構成と処理は、図3に示される実施形態と区別されない。しkし、オブジェクトコードプロセッサが省略され、その代わりに変数リンカーVLINKの処理方法が変更されている。この変数リンカーは、各機能について各機能がアクセスする広域変数を詳細に記述しているデータファイルVARを読取り、その情報を用いてオブジェクトコードブロックO”2〜O”pの各々で使用される広域変数を確定する。これら広域変数の各々は、オブジェクトコードブロックのリンク形成に際して、各ブロックに他の明確な領域アドレスを各々に割り当てる。続いて、変数リンカーVLINKは、個々のオブジェクトコードブロックの各々の機能に、ライブラリから読取られたコピー機能を結合することで、機能の最初または最後の各々でコピー機能が実行されるようにし、その際には、それらのコピー機能が当該機能によって使用される各々の広域変数を、当該機能のオブジェクトコードグループO”1、…O”pに割り当てられている記憶領域にコピーまたはコピーバックする。これによって、他の実施形態においては、オブジェクトコードプロセッサOPによって実行されるオブジェクトコードの操作が不要となり、それにもかかわらず、優先順位の高い機能によって中断の恐れがある全ての機能は、オリジナルにアクセスすることなしに、広域変数のコピーにのみアクセスすることが常に達成される。
図5は、本発明の第4の実施形態に基づく処理のステップを概略的に示している。前述された実施形態のように、第1ステップは、コンパイラCOMPであって、ソースコードで記述されている機能S1、S2、…Snを記号的なオブジェクトコードO1、…、Onに変換する。図5のコンパイラの特徴は、記号的なオブジェクトコード内で複数の機能によって使用され、かつ、そのソースコード内で同一の名称で表される広域変数については、そのソースコード名称を、それらに干渉する機能の全ての記号的なオブジェクトコード内では、広域変数用の記号として統一的に使用せず、各機能のオブジェクトコード内では、個々の変数用の該当する機能に固有の記号として使用することである。これは、例えば、ソースコードの機能内で呼出す変数を呼出された機能の名称に結合して、コンパイラがオブジェクトコードの記号を各々に生成することで行われうる。すなわち、コンパイラによって生成された、該当する機能のオブジェクトコードO1、O2では、機能F1、F2のソースコードS1、S2内でG1と称される広域変数に、各々に記号G1_F1またはG1_F2が対応づけられる。
コンパイルの間に、コンパイラCOMPは、制御データファイルVARを生成し、それには、図6に示されるように、各オブジェクトコード機能Oiについて、例えばG1、G2のように、そのオブジェクトコード内で広域変数のために使用される記号、ここではG1_FiまたはG2_Fiが記述されている。制御データファイルVARが望ましくは従来のテキストエディタによって編集可能な形式を有することで、コンパイラCOMPによってコンパイルされずに、最初から記号的なオブジェクトコードの形式で存在する、機能On+1〜Omのための制御データファイルの入力を、ソースコードS1〜Sn内で使用されている広域変数の名称とオブジェクトコードOn+1、…、Om内におけるそれらの名称との間の対応づけを、開発者が手動で補足できる。
第2の制御データファイルPRIOは、図6で示されるのと同様に、各オブジェクトコード機能Oi(i=1、…、m)について、当該機能による他の機能の実行を中断する権利を表す優先値PRIO(Oi)を記述している。
リンカーLINKは、実行可能なアプリケーションを生成するために、記号的なオブジェクトコードO1、…、On内において記号を明確な記憶領域への参照に置換える。この際に、リンカーは制御データファイルVARおよびPRIOの内容を考慮する。リンカーは、最高レベルの優先順位レベルを伴う機能でのみ、その機能内で広域変数のために使用されている記号を、それらの変数の実際の記憶領域への参照に置換える。リンカーは、最高レベルの優先順位レベルとは異なる優先順位レベルを伴う機能を呼出す前に、機能によって使用される広域変数のコピーを作成するコピー機能Iの呼出しを挿入し、当該機能のオブジェクトコード内において機能内で広域変数のために使用される記号を、コピー機能によって作成されたコピーのアドレスへの参照に置換える。機能が広域変数に書込みアクセスする際には、機能の終了後に、付加的にコピーバック(Ruckkopier)する機能Cが挿入され、それが広域変数のコピー値をその実際の記憶領域にコピーバックする。
よって、リンカーによって生成された実行可能なアプリケーションにおいて、kが機能O1〜Omにおける優先順位レベルの数である場合には、広域変数のk−1までのコピーが作成され、相互に中断されえない同一の優先順位レベルを伴う機能は、各々に同一のコピーにアクセスする。そして、ここでは、図3および4の実施形態と同様に、コピーの作成に必要とされる記憶領域が最小限に限定される。
本発明に基づく開発ツールの図式的ステップと、それらの間で交換されるデータオブジェクトを示す。 図1のオブジェクトプロセス内で実行される処理方法のフローチャートである。 本発明の第2の実施形態を図1と同様に示す。 第3の実施形態を同様に示す。 第4の実施形態を同様に示す。 第4の形態において使用される制御データファイルの内容を示す。
符号の説明
S1...Sn ソースコード機能
O1...Om オブジェクトコード機能
O’1...O’m 整合性処理を施されたオブジェクトコード機能
O’’1...O’’p 整合性処理を施されたオブジェクトコード機能のブロック
COMP コンパイラ
OP オブジェクトコードプロセッサ
LINK リンカー
CLINK コードリンカー
VLINK 変数リンカー
Descr データファイル
VAR 第1の制御データファイル
PRIO 第2の制御データファイル
Kop. コピー

Claims (15)

  1. データ処理システムにおけるアプリケーションの異なる機能による広域変数へのアクセスによって生ずるデータ非整合性を回避する方法であって、前記データ処理システムのコンピュータによって、
    a)前記データ処理システム内で実行されるべき機能グループ(O1、…、Om)について、変数が記号により参照される記号的なオブジェクトコードを準備し、干渉する機能と称され、かつ同一の広域変数にアクセスする前記機能(O1、O2、On、Om)を識別し、
    b)少なくとも1つの前記干渉する機能を選択し、
    c)前記広域変数の値を用いて補助変数を初期化するステップ(I)を、ステップb)で選択された各機能の前記オブジェクトコード内に挿入し、または選択された機能を呼出す機能に呼出し前に挿入し、
    d)前記選択された機能の前記オブジェクトコード内における前記広域変数の記号を、前記補助変数の記憶領域への参照に置換える、
    ステップを含み、
    a’)前記識別された干渉する機能のうち他の機能により相互に中断されうる機能を識別するステップをさらに含み、ステップb)では、ステップa’)で識別された機能のみが選択されることを特徴とする、データ非整合性を回避する方法。
  2. ステップd)において、前記選択された機能の記号的なオブジェクトコード内で、前記広域変数の記号が前記補助変数の記号に置換えられ、続いて、前記補助変数の記号が前記補助変数の記憶領域への参照に置換えられることを特徴とする、請求項1に記載の方法。
  3. ステップd)において、リンカーが前記広域変数の記号を直接的に前記補助変数の記憶領域への参照に置換えることを特徴とする、請求項1に記載の方法。
  4. 前記リンカーが、少なくとも1つの選択されていない干渉する機能内で、前記広域変数の記号を前記広域変数の記憶領域への参照に置換えることを特徴とする、請求項3に記載の方法。
  5. 少なくとも1つの前記選択された機能で行われた置換えが記録されることを特徴とする、請求項1〜4のいずれか1項に記載の方法。
  6. 少なくとも1つの前記選択された機能で行われた置換えが書込みアクセスに該当する場合には、前記補助変数の値によって前記広域変数を上書するステップが挿入されることを特徴とする、請求項1〜5のいずれか1項に記載の方法。
  7. ステップa)における前記干渉する機能の前記識別が前記機能のオブジェクトコードに付加的に準備された情報(DESCR、VAR)を用いて行われることを特徴とする、請求項1〜6のいずれか1項に記載の方法。
  8. データ処理システムにおけるアプリケーションの異なる機能による広域変数へのアクセスによって生ずるデータ非整合性を回避する方法であって、前記データ処理システムのコンピュータによって、
    a)前記データ処理システム内で実行されるべき機能グループ(O1、…、Om)について、変数が記号により参照される記号的なオブジェクトコードを準備し、干渉する機能と称され、かつ同一の広域変数(G1、G2)にアクセスする前記機能(O1、O2、On、Om)を識別し、その際には、前記広域変数(G1、G2)が、それらにアクセスする各々の機能の記号的なオブジェクトコード内で、その機能に固有の記号(G1_Fi;G2_Fi)で各々に表されており;
    b)少なくとも1つの前記干渉する機能を選択し;
    c)前記広域変数(G1、G2)を前記機能に固有の記号(G1_Fi;G2_Fi)に対応づけられた記憶領域にコピーする命令(I)を、ステップb)で選択された各機能に挿入し、または選択された機能を呼出す機能に呼出し前に挿入し、
    d)ステップb)で選択されていない各機能のために、各機能に固有の記号を前記広域変数(G1、G2)に対応づけられた記憶領域に結合する、
    ステップを含み、
    a’)前記識別された干渉する機能のうち他の機能により相互に中断されうる機能を識別するステップをさらに含み、ステップb)では、ステップa’)で識別された機能のみが選択されることを特徴とする、データ非整合性を回避する方法。
  9. 前記干渉する機能が前記機能内で前記広域変数のために使用される記号を含むテーブル(VAR)を用いて識別されることを特徴とする、請求項8に記載の方法。
  10. 複数の前記干渉する機能の前記オブジェクトコードがソースコード(S1、S2、…、Sn)からコンパイルされ、コンパイラ(COMP)は、コンパイルに際して、前記機能のソースコード内に含まれる前記広域変数の同一の名称(G1;G2)を、各機能に固有の記号(G1_Fi;G2_Fi)に置換え、前記テーブル(VAR)を作成することを特徴とする、請求項9に記載の方法。
  11. 前記選択された機能が前記機能に固有の記号に対応づけられた記憶領域に書込みアクセスする場合には、前記広域変数を前記コピーの値で上書きするステップCが挿入されることを特徴とする、請求項8〜10のいずれか1項に記載の方法。
  12. ステップa’)の前記識別が、前記機能の記号的なオブジェクトコードに付加的に準備された情報(DESCR、VAR)を用いて行われることを特徴とする、請求項11に記載の方法。
  13. 相互に中断されるという前記機能の可能性が、付加的に準備された前記情報(DESCR、VAR)内に記述されている、前記機能の優先順位値を用いて認識されることを特徴とする、請求項12に記載の方法。
  14. 機能(O1、…、Om)グループについて、変数が記号により参照される記号的なオブジェクトコードを受取る入力インターフェイス(OP)と、同一の広域変数にアクセスする、いわゆる干渉する機能(O1、O2、On、Om)を識別する論理ユニット(OP)と、前記広域変数の記号を、前記干渉する機能(O1、O2、On、Om)から選択された少なくとも1つの機能に係る前記オブジェクトコード内における補助変数の、前記広域変数の値で初期化された記憶領域への参照に置換えるオブジェクトコード処理ユニット(OP、VLINK)と、前記機能グループの前記オブジェクトコードを、前記オブジェクトコード処理ユニット(OP、VLINK)による処理の後に実行可能なアプリケーションにリンクするリンカーと、を備え
    前記識別された干渉する機能のうち他の機能により相互に中断されうる機能が識別され、前記干渉する機能のうち前記識別された機能のみが選択されることを特徴とする、開発ツール。
  15. 機能(O1、…、Om)グループについて、変数が記号により参照される記号的なオブジェクトコードを受取る入力インターフェイスと、同一の広域変数にアクセスする、いわゆる干渉する機能(O1、O2、On、Om)を識別する論理ユニットであって、前記広域変数が自らにアクセスする各機能の前記オブジェクトコード内で異なる記号で表されている前記論理ユニットと、選択された機能の前記機能に固有の記号に対応づけられた記憶領域に、前記広域変数をコピーする命令(I)を挿入するオブジェクトコード処理ユニット(LINK)と、前記機能グループの前記オブジェクトコードを、前記オブジェクトコード処理ユニットによる処理の後に実行可能なアプリケーションにリンクするリンカー(LINK)と、を備え、前記リンカーが、前記選択された機能によって前記広域変数のために使用される記号(G1_Fi;G2_Fi)を、前記記号に対応づけられた記憶領域に結合し、かつ前記選択された機能以外の機能によって前記広域変数のために使用される記号を、前記広域変数(G1;G2)の記憶領域に結合するように形成され
    前記識別された干渉する機能のうち他の機能により相互に中断されうる機能が識別され、前記干渉する機能のうち前記識別された機能のみが選択されることを特徴とする、開発ツール。
JP2007506769A 2004-04-07 2005-03-30 データ処理装置におけるデータ整合性 Active JP4638484B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE102004017050A DE102004017050A1 (de) 2004-04-07 2004-04-07 Datenkonsistenz in Datenverarbeitungsanlagen
PCT/EP2005/051449 WO2005098617A1 (de) 2004-04-07 2005-03-30 Verfahren zum vermeiden von dateninkonsistenz zwischen zugriffen verschiedener funktionen einer anwendung auf eine globale variable in einem datenverarbeitungsanlagen

Publications (2)

Publication Number Publication Date
JP2007531946A JP2007531946A (ja) 2007-11-08
JP4638484B2 true JP4638484B2 (ja) 2011-02-23

Family

ID=34965767

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007506769A Active JP4638484B2 (ja) 2004-04-07 2005-03-30 データ処理装置におけるデータ整合性

Country Status (6)

Country Link
US (1) US8464236B2 (ja)
EP (1) EP1738257B1 (ja)
JP (1) JP4638484B2 (ja)
CN (1) CN100514294C (ja)
DE (1) DE102004017050A1 (ja)
WO (1) WO2005098617A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2675680C (en) * 2009-08-27 2013-05-14 Ibm Canada Limited - Ibm Canada Limitee Generating object code that uses calculated contents for a variable determined from a predicate
CA2691851A1 (en) * 2010-02-04 2011-08-04 Ibm Canada Limited - Ibm Canada Limitee Control flow analysis using deductive reaching definitions
JP4957853B1 (ja) 2011-03-15 2012-06-20 オムロン株式会社 Plcのcpuユニット、plc用のシステムプログラムおよびplc用のシステムプログラムを格納した記録媒体
WO2013035659A1 (ja) * 2011-09-05 2013-03-14 株式会社エヌ・ティ・ティ・ドコモ 情報処理装置およびプログラム
US20130275954A1 (en) * 2012-04-17 2013-10-17 Futurewei Technologies, Inc. Inter-procedural unreachable code elimination with use graph
US20150128117A1 (en) * 2013-11-07 2015-05-07 Netronome Systems, Inc. Linker that statically allocates non-memory resources at link time
US9823913B2 (en) * 2015-12-03 2017-11-21 International Business Machines Corporation Method of adding local variables in place of global in JavaScript
FR3071334B1 (fr) * 2017-09-19 2019-08-30 Psa Automobiles Sa Procede pour assurer la stabilite des donnees d’un processeur multicoeur d’un vehicule automobile
US10922074B2 (en) 2017-09-28 2021-02-16 Oracle International Corporation Deferred state mutation
CN107844385B (zh) * 2017-11-08 2021-04-23 北京龙之心科技有限公司 一种基于共享内存的变量读写方法及装置
CN112380529B (zh) * 2020-10-26 2022-03-11 浙江大学 一种基于操作的嵌入式裸机系统安全隔离系统

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5428793A (en) * 1989-11-13 1995-06-27 Hewlett-Packard Company Method and apparatus for compiling computer programs with interproceduural register allocation
US5442758A (en) * 1993-07-19 1995-08-15 Sequent Computer Systems, Inc. Apparatus and method for achieving reduced overhead mutual exclusion and maintaining coherency in a multiprocessor system utilizing execution history and thread monitoring
US5802368A (en) * 1995-09-29 1998-09-01 Informix Software, Inc. Dynamic Library Task Switching
JPH09330212A (ja) * 1996-06-13 1997-12-22 Mitsubishi Electric Corp プログラミング言語処理システム
FR2762418B1 (fr) * 1997-04-17 1999-06-11 Alsthom Cge Alcatel Procede de gestion d'une memoire partagee
DE19728971C2 (de) * 1997-07-07 2003-10-09 Bosch Gmbh Robert Datenverarbeitungsvorrichtung und -verfahren
JPH11212807A (ja) * 1998-01-30 1999-08-06 Hitachi Ltd プログラム実行方法
US6110227A (en) * 1998-06-24 2000-08-29 Microsoft Corporation Systems and methods for pre-processing variable initializers
JP3650713B2 (ja) * 2000-02-04 2005-05-25 松下電器産業株式会社 プログラム変換装置、プログラム変換方法及びプログラム記憶媒体
US6529985B1 (en) * 2000-02-04 2003-03-04 Ensim Corporation Selective interception of system calls
WO2001090887A1 (fr) * 2000-05-25 2001-11-29 Fujitsu Limited Procede de traitement de programme permettant un traitement haute vitesse au moyen d'un materiel a reconfiguration dynamique et programme permettant d'executer ce procede de traitement
JP2002099425A (ja) * 2000-09-25 2002-04-05 Hitachi Ltd グローバル変数のローカル変数変換方法
JP2002132502A (ja) * 2000-10-25 2002-05-10 Nec Software Hokuriku Ltd 言語機能解釈による分散オブジェクト自動生成システム及び方法
JP2003256219A (ja) * 2002-03-01 2003-09-10 Aplix Corp 組込み機器におけるプログラム実行方法
JP2003280922A (ja) * 2002-03-26 2003-10-03 Hitachi Ltd コードサイズ削減方法
JP3840149B2 (ja) * 2002-06-28 2006-11-01 株式会社東芝 コンパイラ、演算処理システム及び演算処理方法
US7069548B2 (en) * 2002-06-28 2006-06-27 Intel Corporation Inter-procedure global register allocation method
US7558935B1 (en) * 2004-05-04 2009-07-07 Sun Microsystems, Inc. Method and system for optimizing memory allocation
US7689979B1 (en) * 2005-08-02 2010-03-30 Adobe Systems Inc. Methods and apparatus to improve application launch time

Also Published As

Publication number Publication date
WO2005098617A1 (de) 2005-10-20
CN1938683A (zh) 2007-03-28
CN100514294C (zh) 2009-07-15
US20090049437A1 (en) 2009-02-19
US8464236B2 (en) 2013-06-11
EP1738257A1 (de) 2007-01-03
DE102004017050A1 (de) 2005-10-27
JP2007531946A (ja) 2007-11-08
EP1738257B1 (de) 2012-10-31

Similar Documents

Publication Publication Date Title
JP4638484B2 (ja) データ処理装置におけるデータ整合性
CN111796831B (zh) 一种多芯片兼容的编译方法和装置
US6243864B1 (en) Compiler for optimizing memory instruction sequences by marking instructions not having multiple memory address paths
US5768592A (en) Method and apparatus for managing profile data
JP4794437B2 (ja) 編集処理中にプログラムコンポーネントの整合性を表現しチェックするための拡張型システム
US5832273A (en) System for deleting redundant instructions from high level language source code containing in-line assembly instructions
CN109086215B (zh) 一种嵌入式软件单元测试用例生成方法及系统
US6298479B1 (en) Method and system for compiling and linking source files
US8776024B2 (en) Software application fine-tuning method, system, and corresponding computer program product
US6738966B1 (en) Compiling device, computer-readable recording medium on which a compiling program is recorded and a compiling method
US10303467B2 (en) Target typing-dependent combinatorial code analysis
US20110126179A1 (en) Method and System for Dynamic Patching Software Using Source Code
CN101208690B (zh) 计算环境中翻译表达式
US6351848B1 (en) Unitary data structure systems, methods, and computer program products, for global conflict determination
US7269828B2 (en) Method for safely instrumenting large binary code
JP4026940B2 (ja) プログラム変換装置
JP2021184246A (ja) 命令変換支援プログラム、命令変換支援方法および情報処理装置
US6519768B1 (en) Instruction translation method
CN111880803B (zh) 一种应用于多平台的软件构建方法及装置
JP2017204201A (ja) 情報処理装置、コンパイル方法、およびコンパイルプログラム
JP2009169864A (ja) コンパイル方法およびコンパイルプログラム
CN114327497A (zh) 一种代码处理方法、装置及设备
US20050138610A1 (en) Compiler program, compiler program recording medium, compile method, and program processing system
EP0911743A1 (en) Converter for tag-delimited files
CN114327469A (zh) 一种代码解析方法、装置、设备及介质

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090721

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20091021

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20091029

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20091124

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20091201

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091221

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100126

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100426

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100507

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100526

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100629

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100929

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101125

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131203

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4638484

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

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

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250