JP5979250B2 - Exclusive control inspection device, exclusive control inspection method, exclusive control inspection program - Google Patents

Exclusive control inspection device, exclusive control inspection method, exclusive control inspection program Download PDF

Info

Publication number
JP5979250B2
JP5979250B2 JP2014557377A JP2014557377A JP5979250B2 JP 5979250 B2 JP5979250 B2 JP 5979250B2 JP 2014557377 A JP2014557377 A JP 2014557377A JP 2014557377 A JP2014557377 A JP 2014557377A JP 5979250 B2 JP5979250 B2 JP 5979250B2
Authority
JP
Japan
Prior art keywords
lock
lock section
execution
exclusive control
section
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
JP2014557377A
Other languages
Japanese (ja)
Other versions
JPWO2014112304A1 (en
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.)
Nissan Motor Co Ltd
Original Assignee
Nissan Motor 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 Nissan Motor Co Ltd filed Critical Nissan Motor Co Ltd
Application granted granted Critical
Publication of JP5979250B2 publication Critical patent/JP5979250B2/en
Publication of JPWO2014112304A1 publication Critical patent/JPWO2014112304A1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/28Error detection; Error correction; Monitoring by checking the correct order of processing

Description

本発明は、排他制御検査装置、排他制御検査方法、排他制御検査プログラムに関するものである。   The present invention relates to an exclusive control inspection device, an exclusive control inspection method, and an exclusive control inspection program.

コンピュータプログラム内のロック区間で用いられる、セマフォのビジー率及び競合率を算出するため、測定対象として指定されたセマフォのロック取得からロック解放までのロック時間、及びセマフォのロック取得待ちからロック取得までのロック解除待ち時間のそれぞれを実時間で測定するロック動作測定方法が知られている(特許文献1参照)。   To calculate the busy rate and contention rate of the semaphore used in the lock section in the computer program, the lock time from the acquisition of the semaphore specified as the measurement target to the lock release, and from the semaphore lock acquisition wait to the lock acquisition There is known a lock operation measurement method for measuring each of the lock release waiting times in real time (see Patent Document 1).

特開平11−085574号公報Japanese Patent Application Laid-Open No. 11-085574

特許文献1に開示されたロック動作測定方法は、システムを動作させて上記時間を測定するという動的な検査方法であるため、実際に実行されたロック区間やロック解除待ち処理のみを対象としている。そのため実際に実行されなかったロック区間や分岐経路を測定対象とすることができない。よって、実行し得るロック区間の各々について、ロック時間の最大値を把握することはできないため、システムの応答性が悪化するロック区間を特定することができない。つまり、コンピュータプログラムで使用されるロック区間の実行に要する時間(ロック時間)や、競合関係、タイムアウトが発生する状況を把握し、システムに課せられた要求を満足するか検証するという目的を、十分に果たすことができないという課題を、特許文献1に開示されたロック動作測定方法は有している。   The lock operation measurement method disclosed in Patent Document 1 is a dynamic inspection method in which the system is operated and the time is measured. Therefore, only the actually executed lock section and lock release waiting process are targeted. . For this reason, a lock section or a branch path that has not been actually executed cannot be measured. Therefore, since the maximum value of the lock time cannot be grasped for each lock section that can be executed, the lock section in which the responsiveness of the system is deteriorated cannot be specified. In other words, the purpose of verifying whether the time required for execution of the lock section used by the computer program (lock time), contention, and time-out conditions are satisfied and whether the requirements imposed on the system are satisfied is sufficiently However, the lock operation measuring method disclosed in Patent Document 1 has a problem that it cannot be achieved.

本発明は、上記課題に鑑みて成されたものであり、その目的は、コンピュータプログラム中で実行し得るロック区間について、システムの応答性が悪化する可能性がある箇所をユーザに気づかせることができる排他制御検査装置、排他制御検査方法、排他制御検査プログラムを提供することである。   The present invention has been made in view of the above problems, and its purpose is to make a user aware of a place where the responsiveness of the system may be deteriorated in a lock section that can be executed in a computer program. An exclusive control inspection device, an exclusive control inspection method, and an exclusive control inspection program are provided.

本発明の一態様に係わる排他制御検査装置は、検査対象となるコンピュータプログラムに含まれるステートメントの実行順序及び実行経路を特定し、特定されたステートメントの実行順序及び実行経路に基づいて、コンピュータプログラムに含まれる複数のタスクが利用可能な共有資源に対して排他制御を実行する一群のステートメントからなるロック区間を特定する。そして、特定されたロック区間に含まれる実行経路の各々について、ロック区間の実行に要するクロック数を算出する。そして特定された実行順序及び実行経路、ロック区間、算出されたクロック数などの情報を検査結果として出力する。   An exclusive control checking apparatus according to an aspect of the present invention specifies an execution order and an execution path of statements included in a computer program to be checked, and stores the computer program based on the specified execution order and execution path of the statements. A lock section consisting of a group of statements that execute exclusive control on a shared resource that can be used by a plurality of tasks included is specified. Then, the number of clocks required for execution of the lock section is calculated for each execution path included in the specified lock section. Information such as the specified execution order and execution path, lock interval, and calculated number of clocks is output as a test result.

本発明の一態様に係わる排他制御検査装置は、ロック区間の各々について、共有資源へのアクセス制限が解除されることを待つことができるタイムアウト時間を抽出し、ロック区間が属するタスクとは異なる他のタスクに属する他のロック区間を競合するタスクであるとして特定し、ロック区間のクロック数の最大値が、他のロック区間のタイムアウト時間よりも大きい場合、他のロック区間がスキップされる可能性があると判断することが好ましい。   The exclusive control inspection apparatus according to one aspect of the present invention extracts a timeout time for waiting for the restriction on access to the shared resource to be released for each lock section, and is different from the task to which the lock section belongs. If another lock section belonging to the specified task is identified as a competing task, and the maximum number of clocks in the lock section is greater than the timeout period of the other lock section, another lock section may be skipped It is preferable to judge that there is.

図1は、本発明の実施形態に係わる排他制御検査装置のハードウェア構成を示すブロック図である。FIG. 1 is a block diagram showing a hardware configuration of an exclusive control inspection apparatus according to an embodiment of the present invention. 図2は、CPU11の機能的構成を示すブロック図である。FIG. 2 is a block diagram showing a functional configuration of the CPU 11. 図3は、本発明の実施形態に係わる排他制御検査装置によって実行される情報処理の流れを示すフローチャートである。FIG. 3 is a flowchart showing a flow of information processing executed by the exclusive control inspection apparatus according to the embodiment of the present invention. 図4(a)、図4(b)、図4(c)は、ソースコード入力部21により読み込まれたソースコードD01として、C言語で記述されたコンピュータプログラムの一例を示す図である。FIG. 4A, FIG. 4B, and FIG. 4C are diagrams showing an example of a computer program described in C language as the source code D01 read by the source code input unit 21. 図5は、図4(a)の関数「Task1」をエントリーポイントとした場合のステートメント(コード)の実行順序及び実行経路を示す表(実行順序/実行経路表T01)である。FIG. 5 is a table (execution order / execution path table T01) showing the execution order and execution paths of statements (codes) when the function “Task1” in FIG. 図6は、エントリーポイント一覧D02の一例を示す表である。FIG. 6 is a table showing an example of the entry point list D02. 図7は、ロック開始命令/解除命令リストD03の一例を示す表である。FIG. 7 is a table showing an example of the lock start instruction / release instruction list D03. 図8は、所要クロック数一覧D04の一例を示す表である。FIG. 8 is a table showing an example of the required clock count list D04. 図9は、図3のステップS03〜S05に示す情報処理F01の詳細な処理手順の一例を示すフローチャートである。FIG. 9 is a flowchart showing an example of a detailed processing procedure of the information processing F01 shown in steps S03 to S05 of FIG. 図10は、図9のフローチャートの実行結果の一例として、図4(a)の関数「Task1」についての実行結果を示す表(ロック区間特定表T02)である。FIG. 10 is a table (lock section identification table T02) showing the execution result for the function “Task1” in FIG. 4A as an example of the execution result of the flowchart of FIG. 図11は、図3のステップS06及びS07の実行結果の一例として、実行経路の各々のクロック数、及びロック区間の実行に要するクロック数の最大値を示す表(クロック数合計管理表T03)である。FIG. 11 is a table (clock number total management table T03) showing the maximum number of clocks required for execution in the lock section and the number of clocks in each execution path as an example of the execution results of steps S06 and S07 in FIG. is there. 図12は、図3のステップS08の実行結果の一例として、競合関係にあるブロック区間の組合せを示す表(排他制御構造管理表T04)である。FIG. 12 is a table (exclusive control structure management table T04) showing combinations of block sections in a competitive relationship as an example of the execution result of step S08 in FIG. 図13は、排他制御検査結果D05の一例を示す表である。FIG. 13 is a table showing an example of the exclusive control inspection result D05.

図面を参照して、本発明の実施形態を説明する。図面の記載において同一部分には同一符号を付し説明を省略する。   Embodiments of the present invention will be described with reference to the drawings. In the description of the drawings, the same parts are denoted by the same reference numerals and description thereof is omitted.

[排他制御検査装置のハードウェア構成]
本発明の実施形態に係わる排他制御検査装置は、例えば車両に搭載される電子制御装置(ECU)により実行されるコンピュータプログラムに含まれる排他制御を検査する処理に適用することができる。
[Hardware configuration of exclusive control inspection device]
The exclusive control inspection apparatus according to the embodiment of the present invention can be applied to a process for inspecting exclusive control included in a computer program executed by, for example, an electronic control unit (ECU) mounted on a vehicle.

コンピュータプログラムの実行において、複数のタスク(アプリケーションを含む)が利用できる共有資源(データ、ファイル、データベースを含む)に対して、複数のタスクからの同時アクセスにより競合が発生する場合、共有資源の整合性を保つために、一方のタスクが共有資源を独占的に利用している間は、他方のタスクは共有資源を利用できないようにする。これを排他制御という。具体的には、一方のタスクが共有資源を使用する一定区間、他方のタスクの起動をロックする。ロックされる他方のタスクは、ロックする一方のタスクがセマフォを解放した後に起動され、共有資源へのアクセスを実行する。   In the execution of a computer program, if a conflict occurs due to simultaneous access from multiple tasks to shared resources (including data, files, and databases) that can be used by multiple tasks (including applications), the shared resources are aligned. In order to maintain performance, while one task exclusively uses the shared resource, the other task is prevented from using the shared resource. This is called exclusive control. Specifically, the activation of the other task is locked during a certain period in which one task uses the shared resource. The other task to be locked is started after the one task to be locked releases the semaphore and performs access to the shared resource.

本発明の実施形態に係わる排他制御検査装置は、コンピュータプログラムに含まれる複数のタスクから利用可能な共有資源に対して実行する排他制御を検査する装置である。   An exclusive control inspection apparatus according to an embodiment of the present invention is an apparatus that inspects exclusive control executed on shared resources that can be used from a plurality of tasks included in a computer program.

図1を参照して、本発明の実施形態に係わる排他制御検査装置のハードウェア構成を説明する。排他制御検査装置のハードウェア構成として、汎用のコンピュータを用いることができる。例えば、排他制御検査装置は、記憶媒体から検査対象のコンピュータプログラム(ソースコードD01)及び検査に必要なデータ(エントリーポイント一覧D02、ロック開始命令/解除命令リストD03、所要クロック数一覧D04を含む)を読み込む入出力装置12と、入出力装置12で読み込んだソースコードD01や解析の中間データを格納する記憶装置14と、各種演算を実行してソースコードD01を解析するCPU(中央処理装置)11と、ユーザが解析に必要な情報を入力するための入力装置13と、CPU11から出力される検査結果(排他制御検査結果D05を含む)を表示する表示装置15と、を備える。検査結果は、入出力装置12を用いて記憶媒体に書き込むことも可能である。記憶装置14としてはメモリ、ハードディスクなどが挙げられ、記憶装置14とCPU(中央処理装置)11との間で、データの入出力が行われる。   With reference to FIG. 1, the hardware configuration of the exclusive control inspection apparatus according to the embodiment of the present invention will be described. A general-purpose computer can be used as the hardware configuration of the exclusive control inspection apparatus. For example, the exclusive control inspection device includes a computer program (source code D01) to be inspected and data required for inspection (entry point list D02, lock start instruction / release instruction list D03, and required clock number list D04) from the storage medium. ), A storage device 14 that stores the source code D01 read by the input / output device 12 and analysis intermediate data, and a CPU (central processing unit) that performs various operations and analyzes the source code D01. 11, an input device 13 for a user to input information necessary for analysis, and a display device 15 for displaying a test result (including an exclusive control test result D05) output from the CPU 11. The inspection result can also be written to a storage medium using the input / output device 12. Examples of the storage device 14 include a memory and a hard disk, and data is input and output between the storage device 14 and a CPU (central processing unit) 11.

記憶装置14に格納されている中間データはCPU11によって更新される。中間データとしては、後述する実行順序/実行経路表T01、ロック区間特定表T02、クロック数合計管理表T03、排他制御構造管理表T04などが挙げられる。   The intermediate data stored in the storage device 14 is updated by the CPU 11. Examples of the intermediate data include an execution order / execution path table T01, a lock section specification table T02, a clock number total management table T03, an exclusive control structure management table T04, which will be described later.

また、排他制御検査装置は、クライアントサーバモデルとしても実現可能である。例えば、コンピュータネットワークを介して汎用のパーソナルコンピュータ(クライアント)をサーバに接続する。これにより、図1に示すCPU11を備えるリモート環境に置かれたサーバを、コンピュータネットワークを介して、クライアントが備える入出力装置12、入力装置13、記憶装置14、あるいは表示装置15に接続することができる。この場合、排他制御検査装置は、主にCPU11(サーバ)により構成され、入出力装置12、入力装置13、記憶装置14、あるいは表示装置15は排他制御検査装置に含まれない。   The exclusive control inspection device can also be realized as a client-server model. For example, a general-purpose personal computer (client) is connected to the server via a computer network. Accordingly, a server placed in a remote environment including the CPU 11 shown in FIG. 1 can be connected to the input / output device 12, the input device 13, the storage device 14, or the display device 15 included in the client via a computer network. it can. In this case, the exclusive control inspection device is mainly configured by the CPU 11 (server), and the input / output device 12, the input device 13, the storage device 14, or the display device 15 is not included in the exclusive control inspection device.

図2を参照して、CPU11の機能的構成を説明する。CPU11を備えるコンピュータを排他制御検査装置として機能させるためのコンピュータプログラム(排他制御検査プログラム)を、CPU11を備えるコンピュータにインストールして実行する。これにより、CPU11は、以下に示す各情報処理部として機能する。なお、ここでは、ソフトウェアによって排他制御検査装置を実現する例を示すが、もちろん、以下に示す各情報処理を実行するための専用のハードウェアを用意して、排他制御検査装置を構成することも可能である。   A functional configuration of the CPU 11 will be described with reference to FIG. A computer program (exclusive control inspection program) for causing a computer including the CPU 11 to function as an exclusive control inspection apparatus is installed and executed on the computer including the CPU 11. Thereby, CPU11 functions as each information processing part shown below. Although an example in which the exclusive control inspection device is realized by software is shown here, of course, the exclusive control inspection device may be configured by preparing dedicated hardware for executing the following information processing. Is possible.

CPU11は、ソースコード入力部21、順序経路特定部22、ロック区間特定部23、クロック数算出部24、最大クロック数算出部25、及び検査結果出力部29として機能する。   The CPU 11 functions as the source code input unit 21, the order path specifying unit 22, the lock section specifying unit 23, the clock number calculating unit 24, the maximum clock number calculating unit 25, and the inspection result output unit 29.

ソースコード入力部21は、検査対象となるコンピュータプログラム(ソースコードD01)を入出力装置12あるいは入力装置13から読み取り、記憶装置14に格納する。   The source code input unit 21 reads a computer program (source code D01) to be inspected from the input / output device 12 or the input device 13, and stores it in the storage device 14.

順序経路特定部22は、ソースコード入力部21により読み取られたコンピュータプログラムに含まれるステートメントの実行順序及び実行経路を特定する。具体的には、入出力装置12あるいは入力装置13から入力されるエントリーポイント一覧D02を用いて、入力装置13から入力されるエントリーポイント(プログラムの開始点)を起点に実行されるステートメントの実行順序及び実行経路を特定する。エントリーポイント一覧D02については、図6を参照して後述する。エントリーポイント一覧D02は、ファイル形式あるいはデータベースとして記憶装置14に記録される。エントリーポイント一覧D02は、CPU11からの指示によって読み出される。順序経路特定部22によって特定されたステートメントの実行順序及び実行経路は、順序経路特定部22によって実行順序/実行経路表T01(図5)に記録される。実行順序/実行経路表T01は、ファイル形式あるいはデータベースとして記憶装置14に記録される。   The order path specifying unit 22 specifies an execution order and an execution path of statements included in the computer program read by the source code input unit 21. Specifically, using the entry point list D02 input from the input / output device 12 or the input device 13, the execution order of statements executed starting from the entry point (program start point) input from the input device 13 And the execution path is specified. The entry point list D02 will be described later with reference to FIG. The entry point list D02 is recorded in the storage device 14 as a file format or a database. The entry point list D02 is read by an instruction from the CPU 11. The execution order and execution path of the statements specified by the order path specifying unit 22 are recorded in the execution order / execution path table T01 (FIG. 5) by the order path specifying unit 22. The execution order / execution path table T01 is recorded in the storage device 14 as a file format or a database.

ロック区間特定部23は、順序経路特定部22により特定されたステートメントの実行順序及び実行経路に基づいて、ロック区間を特定する。「ロック区間」は、コンピュータプログラムに含まれる複数のタスクが利用可能な共有資源に対して排他制御を実行する一群のステートメントからなる。換言すれば、ロック区間とは、一方のタスクが共有資源を排他的に使用する一定区間である。ロック区間において、他方のタスクの起動はロックされ、共有資源の使用が禁止される。   The lock section specifying unit 23 specifies a lock section based on the execution order and execution path of the statements specified by the order path specifying unit 22. The “lock section” includes a group of statements that execute exclusive control on a shared resource that can be used by a plurality of tasks included in a computer program. In other words, the lock section is a fixed section in which one task exclusively uses the shared resource. In the lock section, the activation of the other task is locked, and the use of shared resources is prohibited.

具体的に、ロック区間特定部23は、実行順序/実行経路表T01に記録されたステートメントの実行順序及び実行経路の情報に従って、ロック開始命令から解除命令までの区間(ロック区間)を特定する。ロック区間特定部23は、入出力装置12あるいは入力装置13から入力されるロック開始命令/解除命令リストD03に基づいて、ロック開始命令、およびロック解除命令のステートメントを特定する。ロック開始命令/解除命令リストD03については、図7を参照して後述する。ロック開始命令/解除命令リストD03は、ファイル形式あるいはデータベースとして記憶装置14に記録される。ロック開始命令/解除命令リストD03は、CPU11のロック区間特定部23からの指示によって読み出される。   Specifically, the lock section specifying unit 23 specifies a section (lock section) from the lock start instruction to the release instruction according to the statement execution order and execution path information recorded in the execution order / execution path table T01. The lock section specifying unit 23 specifies the statements of the lock start command and the lock release command based on the lock start command / release command list D03 input from the input / output device 12 or the input device 13. The lock start command / release command list D03 will be described later with reference to FIG. The lock start command / release command list D03 is recorded in the storage device 14 as a file format or a database. The lock start command / release command list D03 is read by an instruction from the lock section specifying unit 23 of the CPU 11.

クロック数算出部24は、ロック区間特定部23により特定されたロック区間に含まれる実行経路の各々について、ロック区間の実行に要するクロック数を算出する。具体的には、入出力装置12あるいは入力装置13から入力される所要クロック数一覧D04に基づいて、ロック区間特定部23により特定されたロック区間に含まれる各ステートメントの実行に要するクロック数を算出する。なお所要クロック数一覧D04には、ステートメントに記述される命令の種類毎に、その命令の実行に必要なクロック数が記録されている。所要クロック数一覧D04については、図8を参照して後述する。所要クロック数一覧D04は、ファイル形式あるいはデータベースとして記憶装置14に記録され、CPU11のクロック数算出部24からの指示によって読み出される。   The clock number calculation unit 24 calculates the number of clocks required for execution of the lock section for each execution path included in the lock section specified by the lock section specifying unit 23. Specifically, the number of clocks required to execute each statement included in the lock section specified by the lock section specifying unit 23 based on the required clock number list D04 input from the input / output device 12 or the input device 13 is calculated. calculate. In the required clock number list D04, the number of clocks necessary for executing the instruction is recorded for each type of instruction described in the statement. The required clock count list D04 will be described later with reference to FIG. The required clock number list D04 is recorded in the storage device 14 as a file format or a database, and is read by an instruction from the clock number calculation unit 24 of the CPU 11.

クロック数算出部24によって算出された各ステートメントの実行に要するクロック数は、クロック数算出部24によってロック区間特定表T02(図10)に記録される。ロック区間特定表T02は、ファイル形式あるいはデータベースとして記憶装置14に記録される。   The number of clocks required to execute each statement calculated by the clock number calculation unit 24 is recorded by the clock number calculation unit 24 in the lock section identification table T02 (FIG. 10). The lock section specifying table T02 is recorded in the storage device 14 as a file format or a database.

そして、クロック数算出部24は、実行経路の各々について、各ステートメントの実行に要するクロック数の合計値を算出し、その合計値を、ロック区間特定部23によって特定されたロック区間に関する情報と共にクロック数合計管理表T03(図11)に記録する。クロック数合計管理表T03は、ファイル形式あるいはデータベースとして記憶装置14に記録される。   Then, the clock number calculation unit 24 calculates the total number of clocks required to execute each statement for each execution path, and the total value is clocked together with information on the lock section specified by the lock section specifying unit 23. It records in the number total management table T03 (FIG. 11). The total clock number management table T03 is recorded in the storage device 14 as a file format or a database.

最大クロック数算出部25は、クロック数合計管理表T03を参照して、ロック区間の各々について、クロック数算出部24により算出されたクロック数の最大値を算出する。具体的には、1つのロック区間に2以上の実行経路が含まれている場合、即ち、1つのロック区間の中で分岐条件のもとで2以上の分岐処理が行われる場合、2以上の実行経路の中で、最も大きなクロック数を抽出する。1つのロック区間に1つの実行経路だけが含まれている場合、クロック数算出部24により算出されたクロック数がそのまま、そのロック区間におけるクロック数の最大値となる。最大クロック数算出部25によって算出されたクロック数の最大値は、最大クロック数算出部25によってクロック数合計管理表T03に記録される。   The maximum clock number calculation unit 25 refers to the clock number total management table T03 and calculates the maximum value of the clock number calculated by the clock number calculation unit 24 for each lock section. Specifically, when two or more execution paths are included in one lock section, that is, when two or more branch processes are performed under a branch condition in one lock section, two or more The largest clock number is extracted in the execution path. When only one execution path is included in one lock section, the number of clocks calculated by the clock number calculation unit 24 is the maximum value of the number of clocks in the lock section. The maximum value of the clock number calculated by the maximum clock number calculation unit 25 is recorded in the clock number total management table T03 by the maximum clock number calculation unit 25.

検査結果出力部29は、少なくとも最大クロック数算出部25により算出されたクロック数の最大値を、排他制御検査結果D05として表示装置15あるいは入出力装置12に挿入された記憶媒体へ出力する。検査結果出力部29により出力されるクロック数の最大値については、図11を参照して後述する。   The inspection result output unit 29 outputs at least the maximum value of the clock number calculated by the maximum clock number calculation unit 25 to the storage medium inserted in the display device 15 or the input / output device 12 as the exclusive control inspection result D05. The maximum number of clocks output by the inspection result output unit 29 will be described later with reference to FIG.

CPU11は、タイムアウト時間抽出部26、競合ロック区間特定部27、及びタイムアウト判断部28として更に機能する。   The CPU 11 further functions as a timeout time extraction unit 26, a conflict lock section identification unit 27, and a timeout determination unit 28.

タイムアウト時間抽出部26は、ロック区間の各々について、共有資源へのアクセス制限が解除されることを待つことができるタイムアウト時間を抽出する。具体的には、ロック区間に対応するロック開始命令の引数を参照することにより、タイムアウト時間を抽出する。   The timeout time extraction unit 26 extracts a timeout time that can wait for the access restriction to the shared resource to be released for each lock section. Specifically, the timeout time is extracted by referring to the argument of the lock start instruction corresponding to the lock section.

一方のタスクによる共有資源の使用によって、共有資源の使用が禁止される他方のタスクは、その他方のタスクのロック区間に対応するロック開始命令の引数で設定されたタイムアウト時間だけ、一方のタスクによるセマフォの解放を待つことができる。しかし、タイムアウト時間が経過しても、一方のタスクがセマフォを解放しない場合、他方のタスクは実行せずに、次の処理へスキップする。   The use of shared resources by one task prohibits the use of shared resources. The other task depends on one task for the timeout period set by the argument of the lock start instruction corresponding to the lock interval of the other task. You can wait for the semaphore to be released. However, if one task does not release the semaphore even after the timeout period has elapsed, the other task is not executed and skips to the next process.

競合ロック区間特定部27は、クロック数合計管理表T03を参照して、ロック区間の各々について、ロック区間が属するタスクとは異なる他のタスクに属する他のロック区間を特定する。同一の共有資源を排他的に利用可能な複数のタスクのうち一方のタスクがセマフォを獲得している場合、他方のタスクは同じセマフォを獲得できない。同じセマフォを用いる2以上のロック区間のうち、異なるタスクに属するロック区間は、そのセマフォの獲得について競合することになる。競合ロック区間特定部27は、ロック区間の各々について、セマフォの獲得に関して競合する他のロック区間を特定する。つまり、競合関係にあるロック区間の組合せを特定する。特定された競合関係にあるロック区間の組合せは、競合ロック区間特定部27によって排他制御構造管理表T04(図12)に記録される。排他制御構造管理表T04はファイル形式あるいはデータベースとして記憶装置14に記録される。   The contention lock section specifying unit 27 refers to the clock number total management table T03 and specifies, for each lock section, another lock section belonging to another task different from the task to which the lock section belongs. When one task among a plurality of tasks that can exclusively use the same shared resource has acquired a semaphore, the other task cannot acquire the same semaphore. Among two or more lock sections using the same semaphore, lock sections belonging to different tasks compete for acquisition of the semaphore. The contention lock section specifying unit 27 specifies, for each lock section, another lock section that competes for semaphore acquisition. That is, a combination of lock sections in a competitive relationship is specified. The combination of lock sections having the specified conflict relationship is recorded in the exclusive control structure management table T04 (FIG. 12) by the conflict lock section specifying unit 27. The exclusive control structure management table T04 is recorded in the storage device 14 as a file format or a database.

タイムアウト判断部28は、クロック数合計管理表T03および排他制御構造管理表T04を参照して、ロック区間のクロック数の最大値と、競合関係にある他のロック区間のタイムアウト時間を取得する。そしてタイムアウト判断部28は、ロック区間のクロック数の最大値が、他のロック区間のタイムアウト時間よりも大きい場合、他のロック区間がスキップされる可能性があると判断する。具体的には、タイムアウト判断部28は、競合関係にある2以上のロック区間のうち、一方のロック区間の実行に要するクロック数の最大値と、他方のロック区間で規定されるタイムアウト時間とを比較する。   The timeout determination unit 28 refers to the clock number total management table T03 and the exclusive control structure management table T04, and acquires the maximum value of the number of clocks in the lock section and the timeout time of other lock sections in a competitive relationship. Then, the timeout determination unit 28 determines that there is a possibility that another lock section may be skipped if the maximum value of the number of clocks in the lock section is larger than the timeout time of another lock section. Specifically, the timeout determination unit 28 calculates the maximum value of the number of clocks required for execution of one lock section and the timeout time defined in the other lock section among the two or more lock sections in a competitive relationship. Compare.

クロック数とは、マイコンが行うタイミング制御に用いる内部クロックの数を示す。クロック数に、マイコンの1クロックあたりの実行時間にクロック数を掛け合わせることにより、ロック区間の実行に要する時間が求められる。またタイムアウト時間は、マイコンが行うタイミング制御に用いる内部クロックの数として表現される。そのため、タイムアウト判断部28は、一方のロック区間の実行に要するクロック数の最大値と、クロック数によって表現された他のロック区間のタイムアウト時間とを比較する。   The number of clocks indicates the number of internal clocks used for timing control performed by the microcomputer. By multiplying the number of clocks by the execution time per clock of the microcomputer and the number of clocks, the time required for execution of the lock section is obtained. The timeout time is expressed as the number of internal clocks used for timing control performed by the microcomputer. Therefore, the timeout determination unit 28 compares the maximum value of the number of clocks required for execution of one lock section with the timeout time of another lock section expressed by the number of clocks.

一方のロック区間の実行に要するクロック数の最大値が、他方のロック区間のタイムアウト時間よりも大きい場合、タイムアウト時間が経過しても一方のロック区間がセマフォを解放しないため、他方のロック区間がスキップされてしまう可能性があると、タイムアウト判断部28は判断することができる。   If the maximum number of clocks required to execute one lock interval is greater than the timeout time of the other lock interval, one lock interval will not release the semaphore even if the timeout interval elapses. If there is a possibility of being skipped, the timeout determination unit 28 can determine.

検査結果出力部29は、タイムアウト判断部28による判断結果を、最大クロック数算出部25により算出されたクロック数の最大値と共に、排他制御検査結果D05として出力する。排他制御検査結果D05については、図13を参照して後述する。   The inspection result output unit 29 outputs the determination result by the timeout determination unit 28 as the exclusive control inspection result D05 together with the maximum number of clocks calculated by the maximum clock number calculation unit 25. The exclusive control inspection result D05 will be described later with reference to FIG.

[排他制御検査装置により実行される情報処理の手順]
次に、図3〜図13を参照して、本発明の実施形態に係わる排他制御検査方法の一例として、図1及び図2に示す排他制御検査装置によって実行される情報処理の手順を説明する。
[Procedure for information processing executed by exclusive control inspection device]
Next, an information processing procedure executed by the exclusive control checking apparatus shown in FIGS. 1 and 2 will be described as an example of the exclusive control checking method according to the embodiment of the present invention with reference to FIGS. .

先ず、ステップS01において、ソースコード入力部21は、検査対象となるソースコードD01を例えば入出力装置12から読み込み、記憶装置14に格納する。なお、ソースコードD01は、予め入出力装置12を用いてユーザにより排他制御検査装置内に読み込まれ、記憶装置14に格納されていてもよい。この場合、ステップS01の処理は不要である。図4(a)、図4(b)、図4(c)は、読み込まれたソースコードD01として、C言語で記述されたコンピュータプログラムの一例を示す。検査対象となるコンピュータプログラムは、図4(a)、図4(b)、図4(c)に示す3つのファイルに跨って記述されている。図4(a)のファイル名は「File1.c」であり、図4(b)のファイル名は「File2.c」であり、図4(c)のファイル名は「File3.c」である。C言語で記述されたコンピュータプログラムの一例において、各ファイルの左端部に記載された1から始まる連続番号は、各ファイルの「行番号」を示す。   First, in step S01, the source code input unit 21 reads the source code D01 to be inspected from, for example, the input / output device 12, and stores it in the storage device 14. The source code D01 may be read into the exclusive control inspection device by the user in advance using the input / output device 12 and stored in the storage device 14. In this case, the process of step S01 is unnecessary. 4 (a), 4 (b), and 4 (c) show an example of a computer program described in C language as the read source code D01. The computer program to be inspected is described across the three files shown in FIGS. 4 (a), 4 (b), and 4 (c). The file name in FIG. 4A is “File1.c”, the file name in FIG. 4B is “File2.c”, and the file name in FIG. 4C is “File3.c”. . In an example of a computer program written in the C language, a serial number starting from 1 described at the left end of each file indicates a “line number” of each file.

次に、ステップS02において、順序経路特定部22は、エントリーポイント一覧D02を用いて、エントリーポイント(プログラムの開始点)を起点としたコントロールフロー、即ち、ステートメントの実行順序及び実行経路を特定する。   Next, in step S02, the order path specifying unit 22 uses the entry point list D02 to specify the control flow starting from the entry point (program start point), that is, the execution order and execution path of the statements.

図4(a)、図4(b)、図4(c)に示すコンピュータプログラムには、4つの関数が記述されている。図4(a)の「File1.c」の中に、関数「Task1」が記述されている。関数「Task1」は、2つの関数「Func1」及び関数「Func2」を呼び出して終了する。関数「Func1」及び関数「Func2」は図4(b)の「File2.c」の中に記述されている。図4(c)の「File3.c」の中に、関数「Task2」が記述されている。関数「Task2」は、関数「Func2」を呼び出して終了する。図6に示すように、プログラムの開始点となるエントリーポイントは、「Task1」及び「Task2」である。   In the computer program shown in FIGS. 4A, 4B, and 4C, four functions are described. The function “Task1” is described in “File1.c” in FIG. The function “Task1” calls two functions “Func1” and “Func2” and ends. The function “Func1” and the function “Func2” are described in “File2.c” in FIG. The function “Task2” is described in “File3.c” in FIG. The function “Task2” ends by calling the function “Func2”. As shown in FIG. 6, the entry points that are the starting points of the program are “Task1” and “Task2”.

図5の表は、図4(a)の関数「Task1」をエントリーポイントとした場合のステートメント(コード)の実行順序及び実行経路の一例を示す。図5の表において、「ステートメントID」は、ソースコードD01内のステートメントに付される「1」から始まる連続番号である。すなわち「ステートメントID」は、ソースコードD01を構成する図4(a)、図4(b)、図4(c)に示す3つのファイルの、各行に記載された実行命令に対して、行番号の順に付される。   The table in FIG. 5 shows an example of the execution order and execution path of statements (codes) when the function “Task1” in FIG. In the table of FIG. 5, “statement ID” is a serial number starting from “1” attached to a statement in the source code D01. That is, the “statement ID” is a line number corresponding to the execution instruction described in each line of the three files shown in FIGS. 4A, 4B, and 4C constituting the source code D01. It is attached in the order.

各行の記載が空(例えば図4(a)の10行目)、あるいはプログラムのブロック区切り(“{”、“}”などの括弧)のみから構成される行(例えば図4(a)の3、12、15行目など)は、プログラム実行時において実行時間を発生させるものではないものと判断できる。そのため、順序経路特定部22は、このような行を以降の処理の対象から外すため、このような行に対して「ステートメントID」を付していない。もちろん、このような行に対してステートメントIDを付したとしても、以降の処理に影響を及ぼすものではない。プログラム実行時において実行時間を発生させる可能性があるものと判断できる行がすべて処理の対象となるようにステートメントIDが付与されればよいのであって、ステートメントIDの付与の方法は本実施形態の例に限定されるものではない。   The description of each line is empty (for example, the 10th line in FIG. 4 (a)) or a line (for example, 3 in FIG. , 12, 15, etc.) can be determined not to cause execution time during program execution. Therefore, the order path specifying unit 22 does not attach a “statement ID” to such a line in order to exclude such a line from the target of subsequent processing. Of course, even if a statement ID is assigned to such a line, the subsequent processing is not affected. It is only necessary to assign a statement ID so that all the lines that can be considered to cause execution time at the time of program execution are to be processed. It is not limited to examples.

「前実行ステートメントID」は、そのステートメントの前に実行されるステートメントに付されたステートメントIDを示す。「次実行ステートメントID」は、そのステートメントの次に実行されるステートメントに付されたステートメントIDを示す。   The “previous execution statement ID” indicates a statement ID given to a statement executed before the statement. “Next execution statement ID” indicates a statement ID given to a statement executed next to the statement.

ステートメントが分岐命令、関数呼出し命令、繰り返し命令である場合には、ジャンプ先のステートメントに対応するステートメントIDが、次実行ステートメントIDとして登録される。ジャンプ先は一般に1つとは限らず、複数個存在する場合もあるため、次実行ステートメントIDとしては、1個または複数個のステートメントIDを順序経路特定部22によって実行順序/実行経路表T01に記録する。ステートメントが分岐命令、関数呼出し命令、繰り返し命令のいずれでもない場合には、ソースコードD01上の、次の行番号の箇所で記載されたステートメントに対応するステートメントIDを、次実行ステートメントIDとして登録する。   If the statement is a branch instruction, a function call instruction, or a repeat instruction, the statement ID corresponding to the jump destination statement is registered as the next execution statement ID. In general, the number of jump destinations is not limited to one, and there may be a plurality of jump destinations. Therefore, one or a plurality of statement IDs are recorded in the execution order / execution path table T01 by the order path specifying unit 22 as the next execution statement ID. To do. If the statement is neither a branch instruction, a function call instruction, or a repeat instruction, the statement ID corresponding to the statement described at the next line number in the source code D01 is registered as the next execution statement ID. .

前実行ステートメントIDは、ソースコードD01に含まれる全てのステートメントについて次実行ステートメントIDが記録された後に、実行順序/実行経路表T01に登録することができる。例えばソースコードD01のステートメントL01について前実行ステートメントIDを登録する場合、実行順序/実行経路表T01を参照して、ステートメントL01に対応するステートメントIDが次実行ステートメントIDとして記録されているステートメントL02を読み出す。つまり、ステートメントL02の1つ後にステートメントL01が実行されることから、ステートメントL01の1つ前に実行されるステートメントはステートメントL02であることが分かる。そのため、ステートメントL01について前実行ステートメントIDとしては、ステートメントL02に対応するステートメントIDを記録する。ソースコードD01の全てのステートメントについて、同様の作業を繰り返すことにより、全ての前実行ステートメントIDを記録することができる。   The previous execution statement ID can be registered in the execution order / execution path table T01 after the next execution statement ID is recorded for all the statements included in the source code D01. For example, when the previous execution statement ID is registered for the statement L01 of the source code D01, the statement L02 in which the statement ID corresponding to the statement L01 is recorded as the next execution statement ID is read with reference to the execution order / execution path table T01. . That is, since the statement L01 is executed immediately after the statement L02, it can be understood that the statement executed immediately before the statement L01 is the statement L02. Therefore, the statement ID corresponding to the statement L02 is recorded as the previous execution statement ID for the statement L01. By repeating the same operation for all statements in the source code D01, all previous execution statement IDs can be recorded.

なお、ステートメントL01について次実行ステートメントIDが複数記録されている場合には、記録されている次実行ステートメントIDのそれぞれについて同様の処理を繰り返すことにより、前実行ステートメントIDを記録することができる。   When a plurality of next execution statement IDs are recorded for the statement L01, the previous execution statement ID can be recorded by repeating the same processing for each recorded next execution statement ID.

順序経路特定部22は、ソースコードD01に含まれるステートメントの中から条件分岐を検出する。条件分岐には、if〜else構文、switch〜case構文、ループ文(for文、while文)、3項演算子“:”が含まれる。順序経路特定部22は、条件分岐が開始するステートメントを「分岐開始点」と判断し、条件分岐が終了するステートメントを「分岐終了点」と判断する。特定された2以上の「分岐開始点」「分岐終了点」には「分岐ID」を付して識別する。ただし分岐開始点とその分岐開始点に対応する分岐終了点には、対応関係が分かるよう同一の分岐IDを付す。   The order path specifying unit 22 detects a conditional branch from the statements included in the source code D01. The conditional branch includes an if-else syntax, a switch-case syntax, a loop statement (for statement, while statement), and a ternary operator “:”. The order path specifying unit 22 determines a statement at which a conditional branch starts as a “branch start point”, and determines a statement at which a conditional branch ends as a “branch end point”. Two or more identified “branch start points” and “branch end points” are identified by adding “branch IDs”. However, the same branch ID is attached to the branch start point and the branch end point corresponding to the branch start point so that the correspondence can be understood.

そして、順序経路特定部22は、分岐開始点と分岐終了点との間にあるステートメントに対して、条件分岐によって生成される2以上の実行経路を特定する。そして、特定された2以上の実行経路には「経路ID」を付して識別する。   Then, the sequential path specifying unit 22 specifies two or more execution paths generated by the conditional branch with respect to a statement between the branch start point and the branch end point. Then, two or more specified execution paths are identified by attaching a “path ID”.

図5には、関数「Task1」をエントリーポイントとした場合を例示するが、順序経路特定部22は、関数「Task2」をエントリーポイントとして場合についても、図5と同様にして実行順序及び実行経路を特定する。   FIG. 5 illustrates the case where the function “Task1” is an entry point, but the order path specifying unit 22 also executes the execution order and the execution path in the same manner as in FIG. 5 when the function “Task2” is an entry point. Is identified.

なお図5の例では、順序経路特定部22は、分岐開始点にあるステートメントに対して条件分岐によって生成される2以上の実行経路を特定し、一方で、分岐終了点にあるステートメントに対しては実行経路を特定していない。分岐開始点および分岐終了点のステートメントについて実行経路の特定を行うか否かは、本実施形態の例に限定されるものではない。   In the example of FIG. 5, the sequential path specifying unit 22 specifies two or more execution paths generated by the conditional branch for the statement at the branch start point, and for the statement at the branch end point. Does not specify the execution path. Whether the execution path is specified for the branch start point and branch end point statements is not limited to the example of this embodiment.

さらに、図5の例では、条件分岐により複数の実行経路のうちいずれの実行経路を進む場合でも、条件文の評価に際してクロック数が発生するため、条件文を含む条件分岐を表すステートメントは、複数の実行経路に属しているものとして扱っている。このように、順序経路特定部22は、複数の実行経路で実行されるものと判断されるステートメントに対して、対応する複数の実行経路を指し示す複数の経路IDを付す。   Furthermore, in the example of FIG. 5, the number of clocks is generated when evaluating a conditional statement, regardless of which of the plurality of execution routes is advanced by a conditional branch. Therefore, there are a plurality of statements representing conditional branches including conditional statements. It is treated as belonging to the execution path. As described above, the order path specifying unit 22 attaches a plurality of path IDs indicating a plurality of corresponding execution paths to a statement determined to be executed by a plurality of execution paths.

上述したようにして、順序経路特定部22は、図5の表に示すようなソースコードD01に含まれるステートメント(コード)の実行順序/実行経路表T01を作成する。   As described above, the order path specifying unit 22 creates an execution order / execution path table T01 of statements (codes) included in the source code D01 as shown in the table of FIG.

実行順序/実行経路表T01に記録された前実行ステートメントIDおよび次実行ステートメントIDを用いると、ステートメントの上流、および下流で実行されるステートメントを抽出することができる性質に注意する。すなわち、前実行ステートメントIDを参照することで、順次、1つ前に実行されるステートメントを参照できるため、あるステートメントに関して、その上流で実行されるステートメント抽出することができる。また、次実行ステートメントIDを参照することで、順次、1つ後に実行されるステートメントを参照できるため、下流で実行されるステートメントを抽出することができる。   Note that using the previous execution statement ID and the next execution statement ID recorded in the execution order / execution path table T01, it is possible to extract statements executed upstream and downstream of the statement. That is, by referring to the previous execution statement ID, it is possible to refer to the statement executed immediately before, so that a statement executed upstream of a certain statement can be extracted. Further, by referring to the next execution statement ID, it is possible to refer to the statements that are executed one after the other sequentially, so it is possible to extract the statements that are executed downstream.

次に、ステップS03〜S05に示す情報処理F01を実行する。ステップS03において、ロック区間特定部23は、図7に示すロック開始命令/解除命令リストD03に基づいて、ロック開始命令から解除命令までの区間(ロック区間)を特定する。ステップS04において、タイムアウト時間抽出部26は、特定されたロック区間の各々について、タイムアウト時間を抽出する。ステップS05において、クロック数算出部24は、図8に示す所要クロック数一覧D04に基づいて、ロック区間に含まれる各ステートメントの実行に要するクロック数を算出する。   Next, information processing F01 shown in steps S03 to S05 is executed. In step S03, the lock section specifying unit 23 specifies a section (lock section) from the lock start command to the release command based on the lock start command / release command list D03 shown in FIG. In step S04, the timeout time extracting unit 26 extracts a timeout time for each of the specified lock sections. In step S05, the clock number calculation unit 24 calculates the number of clocks required to execute each statement included in the lock section based on the required clock number list D04 shown in FIG.

図7の表は、ロック開始命令/解除命令リストD03の一例を示す。ロック開始命令として「Sem_Lock」が定義され、ロック解除命令として「Sem_UnLock」が定義されている。ソースコードD01の中で用いられる複数のセマフォを識別するためのセマフォIDは、「Sem_Lock」及び「Sem_UnLock」でそれぞれ引用される第1引数によって指定される。また、タイムアウト時間は、「Sem_Lock」で引用される第2引数によって指定される。例えば、図4(a)の4行目に示す「Sem_Lock(ID1,100)」とは、セマフォIDが「ID1」で識別されるセマフォによるロック区間の開始命令を示し、4行目から始まるロック区間のタイムアウト時間が100(クロック数)であることを示す。図4(a)の9行目に示す「Sem_UnLock(ID1)」とは、セマフォIDが「ID1」のセマフォによるロック区間の解除命令を示す。   The table in FIG. 7 shows an example of the lock start instruction / release instruction list D03. “Sem_Lock” is defined as a lock start command, and “Sem_UnLock” is defined as a lock release command. A semaphore ID for identifying a plurality of semaphores used in the source code D01 is specified by a first argument quoted by “Sem_Lock” and “Sem_UnLock”, respectively. The timeout time is specified by the second argument quoted by “Sem_Lock”. For example, “Sem_Lock (ID1,100)” shown in the fourth line of FIG. 4A indicates a start command of a lock section by the semaphore identified by the semaphore ID “ID1”, and the lock starts from the fourth line. This indicates that the time-out time of the section is 100 (number of clocks). “Sem_UnLock (ID1)” shown in the ninth line of FIG. 4A indicates a lock section release command by the semaphore having the semaphore ID “ID1”.

図8の表は、所要クロック数一覧D04の一例を示す。ステートメントに記述される命令毎に、その命令の実行に必要なクロック数が定義されている。   The table in FIG. 8 shows an example of the required clock count list D04. For each instruction described in the statement, the number of clocks required to execute the instruction is defined.

ここで、ステップS03〜S05は並行して実施することができる。図9のフローチャートを参照して、ステップS03〜S05に示す情報処理F01の詳細な処理手順の一例を説明する。   Here, steps S03 to S05 can be performed in parallel. With reference to the flowchart of FIG. 9, an example of a detailed processing procedure of the information processing F01 shown in steps S03 to S05 will be described.

先ず、ステップS101において、ロック区間を識別するための区間IDを初期化する。ステップS102において、ソースコードD01に含まれるタスクを識別するためのタスクIDを初期化する。ステップS103へ進み、ステップS102で初期化されたタスクIDで特定される関数「Task1」における最初のステートメント(ステートメントID=1)を読み込む。   First, in step S101, a section ID for identifying a lock section is initialized. In step S102, a task ID for identifying a task included in the source code D01 is initialized. Proceeding to step S103, the first statement (statement ID = 1) in the function “Task1” specified by the task ID initialized in step S102 is read.

ロック区間特定部23は、図7のロック開始命令/解除命令リストD03を参照して、読み込んだステートメントがロック開始命令「Sem_Lock」あるいはロック解除命令「Sem_UnLock」に合致するか否かを判断する。ロック開始命令「Sem_Lock」に合致する場合、ステップS105に進む。ロック解除命令「Sem_UnLock」に合致する場合、ステップS107に進む。ロック開始命令「Sem_Lock」及びロック解除命令「Sem_UnLock」の何れにも合致しない場合、ステップS108に進む。   The lock section specifying unit 23 refers to the lock start instruction / release instruction list D03 in FIG. 7 to determine whether the read statement matches the lock start instruction “Sem_Lock” or the lock release instruction “Sem_UnLock”. If it matches the lock start command “Sem_Lock”, the process proceeds to step S105. If it matches the unlock command “Sem_UnLock”, the process proceeds to step S107. If neither the lock start command “Sem_Lock” nor the lock release command “Sem_UnLock” matches, the process proceeds to step S108.

ステップS105において、区間IDをカウントアップする。ステップS106に進み、ステートメント種別としてのロック開始命令(「開始))、区間ID、セマフォID、及びタイムアウト時間をロック区間特定表T02に記録する。ここで記録するセマフォID、及びタイムアウト時間は、ロック開始命令の第1引数および第2引数を参照することで得られる。その後、ステップS113に進む。   In step S105, the section ID is counted up. In step S106, a lock start command (“start”) as a statement type, a section ID, a semaphore ID, and a time-out time are recorded in the lock section specification table T02. This is obtained by referring to the first argument and the second argument of the start instruction, and then proceeds to step S113.

一方、ステップS107において、ステートメント種別としてのロック解除命令(「解除」)、セマフォIDが同じである上流のロック開始命令の区間ID、およびセマフォIDをロック区間特定表T02に記録する。その後、ステップS113に進む。   On the other hand, in step S107, the lock release instruction (“release”) as the statement type, the section ID of the upstream lock start instruction having the same semaphore ID, and the semaphore ID are recorded in the lock section specifying table T02. Thereafter, the process proceeds to step S113.

ステップS107において、セマフォIDは、ロック解除命令の第1引数を参照することで得られる。また、上流のロック開始命令は、実行順序/実行経路表T01の前実行ステートメントIDを使用することにより抽出できる。読み込んだステートメントに対応する前実行ステートメントIDを参照することで、1つ前に実行されるステートメントを抽出できる。そのステートメントがロック開始命令でない場合、前実行ステートメントIDを参照してさらに1つ前に実行されるステートメントを抽出する。同様の作業を繰り返すことにより、最終的に上流のロック開始命令を抽出できる。そこで上流のロック開始命令のセマフォIDが、ロック解除命令のセマフォIDと同じであるか否かを判定する。同じである場合には、上流のロック開始命令の区間IDをロック区間特定表T02に記録する。なお前実行ステートメントIDには、1つ前に実行されるステートメントに対応する複数のステートメントIDが記載される場合があるので、複数の上流のロック開始命令が存在する場合も起こりうる。   In step S107, the semaphore ID is obtained by referring to the first argument of the unlock command. Further, the upstream lock start instruction can be extracted by using the previous execution statement ID in the execution order / execution path table T01. By referring to the previous execution statement ID corresponding to the read statement, it is possible to extract the statement executed immediately before. If the statement is not a lock start instruction, the previous executed statement ID is referenced to extract a statement that is executed one more time before. By repeating the same operation, an upstream lock start command can be finally extracted. Therefore, it is determined whether or not the semaphore ID of the upstream lock start instruction is the same as the semaphore ID of the lock release instruction. If they are the same, the section ID of the upstream lock start instruction is recorded in the lock section identification table T02. Since a plurality of statement IDs corresponding to the statement executed immediately before may be described in the previous execution statement ID, there may be a case where there are a plurality of upstream lock start instructions.

ステップS108において、ロック区間特定部23は、読み込んだステートメントが、ロック開始命令からロック解除命令までのロック区間内にあるか否かを判定する。ロック区間内にある場合(ステップS108でYES)、ステップS109に進む。一方、ロック区間内にない場合(ステップS108でNO)、ステップS110に進み、ロック区間特定部23は、ステートメント種別として「区間外」をロック区間特定表T02に記録する。その後、ステップS113へ進む。   In step S108, the lock section specifying unit 23 determines whether or not the read statement is within the lock section from the lock start instruction to the lock release instruction. If within the lock section (YES in step S108), the process proceeds to step S109. On the other hand, if it is not within the lock section (NO in step S108), the process proceeds to step S110, and the lock section specifying unit 23 records “outside section” as the statement type in the lock section specifying table T02. Thereafter, the process proceeds to step S113.

ステップS110において、ロック区間特定部23は、ステートメント種別として「区間内」及び区間IDをロック区間特定表T02に記録する。ステップS111に進み、クロック数算出部24は、読み込んだステートメントに記述された総ての命令を抽出する。ステップS112に進み、クロック数算出部24は、図8に示す所要クロック数一覧D04に基づいて、読み込んだステートメントから抽出した総ての命令の実行に必要なクロック数の総和を算出する。これにより、クロック数算出部24は、読み込んだステートメントの実行に要するクロック数を求めることができる。クロック数算出部24は、算出されたクロック数をロック区間特定表T02に記録する。その後、ステップS113へ進む。   In step S110, the lock section specifying unit 23 records “in section” and the section ID as the statement type in the lock section specifying table T02. In step S111, the clock number calculation unit 24 extracts all instructions described in the read statement. In step S112, the clock number calculation unit 24 calculates the total number of clocks necessary for execution of all the instructions extracted from the read statement based on the required clock number list D04 shown in FIG. As a result, the clock number calculation unit 24 can obtain the number of clocks required to execute the read statement. The clock number calculation unit 24 records the calculated clock number in the lock section identification table T02. Thereafter, the process proceeds to step S113.

ステップS113において、読み込んだステートメントが、ロック区間内の最後のステートメントであるか否かを判断する。ロック区間内の最後のステートメントでない場合(ステップS113でNO)、実行順序/実行経路表T01の次実行ステートメントIDを参照して、次のステートメントを読み込み(S118)、ステップS104へ戻る。一方、読み込んだステートメントが、ロック区間内の最後のステートメントである場合(ステップS113でYES)、ステップS114へ進む。未だ判定していないステートメントがある場合(S114でYES)、ステップS115に進み、未だ判定していないステートメントを読み込み、ステップS104へ戻る。   In step S113, it is determined whether or not the read statement is the last statement in the lock section. If it is not the last statement in the lock section (NO in step S113), the next statement is read with reference to the next execution statement ID in the execution order / execution path table T01 (S118), and the process returns to step S104. On the other hand, if the read statement is the last statement in the lock section (YES in step S113), the process proceeds to step S114. If there is a statement that has not been determined yet (YES in S114), the process proceeds to step S115, a statement that has not yet been determined is read, and the process returns to step S104.

一方、未だ判定していないステートメントがない場合(S114でNO)、ステップS116に進み、ステップS102で初期化されたタスクIDで特定される関数「Task1」が最後のタスクであるか否かを判断する。最後のタスクでなければ(ステップS116でNO)、タスクIDをインクリメントして(ステップS117)、ステップS103に戻る。そして、関数「Task2」について上記した手順を実行する。一方で、最後のタスクであれば(ステップS116でYES)、図9のフローチャートは終了する。   On the other hand, if there is no statement that has not yet been determined (NO in S114), the process proceeds to step S116, and it is determined whether or not the function “Task1” identified by the task ID initialized in step S102 is the last task. To do. If it is not the last task (NO in step S116), the task ID is incremented (step S117), and the process returns to step S103. Then, the above-described procedure is executed for the function “Task2”. On the other hand, if it is the last task (YES in step S116), the flowchart of FIG. 9 ends.

読み込んだステートメントが、ロック開始命令からロック解除命令までのロック区間内にあるか否かの判定は、実行順序/実行経路表T01の前実行ステートメントIDおよび次実行ステートメントIDを用いて、読み込んだステートメントの上流および下流で実行されるステートメントを検索し、ロック開始命令、ロック解除命令が存在するか否かによって行う。検索して得られたロック開始命令とロック解除命令について、セマフォIDおよび区間IDが同一であれば、読み込んだステートメントは区間IDで指定されるロック区間に含まれているものと、ロック区間特定部23は判断できる。また、一般に、ソースコードD01が条件分岐を含んでいる場合、読み込んだステートメントが複数のロック区間にある場合も起こりうる。   Whether the read statement is within the lock section from the lock start instruction to the lock release instruction is determined by using the previous execution statement ID and the next execution statement ID in the execution order / execution path table T01. The statements executed upstream and downstream of the server are searched, and whether or not there is a lock start instruction and a lock release instruction is performed. If the semaphore ID and the section ID are the same for the lock start instruction and the lock release instruction obtained by the search, the read statement is included in the lock section specified by the section ID, and the lock section specifying unit 23 can be judged. In general, when the source code D01 includes a conditional branch, the read statement may be in a plurality of lock sections.

上流および下流で実行されるステートメントの検索には、タスクに含まれる全てのロック開始命令およびロック解除命令について、ロック区間特定表T02への記録が行われている必要があるが、図9のフローチャートの処理では簡略化して表現している。   For the search of statements executed upstream and downstream, it is necessary to record all lock start instructions and lock release instructions included in the task in the lock section specifying table T02. This process is expressed in a simplified manner.

図10の表は、図9のフローチャートの実行結果の一例として、図4(a)の関数「Task1」についての実行結果を示しており、図4(a)の関数「Task1」についての、ロック区間特定表T02を表す。ステートメントID=2〜7の一群のステートメントが、区間ID=1で識別されるロック区間として特定される。区間ID=1のロック区間のロック開始命令「Sem_Lock」と合致するステートメントID=2では、セマフォID=1及びタイムアウト時間=100を記録している。ステートメントID=2〜7で実行されるステートメントID=3〜6の一群のステートメントには「区間内(区間ID=1)」がそれぞれ記録され、ステートメントID=3〜6の一群のステートメントの各々について、ステートメントに含まれる命令のリスト及びステートメントの実行に要するクロック数が記録されている。ロック区間(区間ID=1)のロック解除命令「Sem_UnLock」と合致するステートメントID=7のステートメントに対しては、セマフォID=1が記録されている。なお、ロック区間(区間ID=1)では、1つのロック区間の中に、経路ID(1,1)(1,2)でそれぞれ識別される2つの実行経路に分岐する分岐処理が存在している。   The table in FIG. 10 shows the execution result for the function “Task1” in FIG. 4A as an example of the execution result of the flowchart in FIG. 9, and the lock for the function “Task1” in FIG. The section identification table T02 is represented. A group of statements with statement ID = 2-7 is specified as a lock section identified by section ID = 1. In the statement ID = 2 that matches the lock start command “Sem_Lock” in the lock section of the section ID = 1, semaphore ID = 1 and timeout time = 100 are recorded. “Intra-section (section ID = 1)” is recorded in each group of statements executed with statement ID = 2-7, and each group of statements with statement ID = 3-6 is recorded. A list of instructions included in the statement and the number of clocks required to execute the statement are recorded. A semaphore ID = 1 is recorded for a statement with a statement ID = 7 that matches the unlock command “Sem_UnLock” in the lock section (section ID = 1). In the lock section (section ID = 1), there is a branch process that branches into two execution paths identified by the path IDs (1, 1) (1, 2) in one lock section. Yes.

同様にして、ステートメントID=9、10、15、16、14の順番で実行される一群のステートメントが、区間ID=2で識別されるロック区間として特定される。また、ステートメントID=12、13、17、18、14の順番で実行される一群のステートメントが、区間ID=3で識別されるロック区間として特定される。ロック区間(区間ID=2)及びロック区間(区間ID=3)で使用するセマフォ(セマフォID=ID2)は共通している。一方、ロック区間(区間ID=2)及びロック区間(区間ID=3)で使用するセマフォ(セマフォID=ID2)は、ロック区間(区間ID=1)で使用するセマフォ(セマフォID=ID1)とは異なる。なお、ロック区間(区間ID=2)及びロック区間(区間ID=3)は、ステートメントID=8のステートメントを分岐開始点(分岐ID=2)とし、ステートメントID=14のステートメントを分岐終了点(分岐ID=2)とする、それぞれ経路ID(2,1)(2,2)で識別される2つの実行経路の中に存在している。   Similarly, a group of statements executed in the order of statement ID = 9, 10, 15, 16, 14 is specified as a lock section identified by section ID = 2. Further, a group of statements executed in the order of statement ID = 12, 13, 17, 18, and 14 is specified as a lock section identified by section ID = 3. The semaphore (semaphore ID = ID2) used in the lock section (section ID = 2) and the lock section (section ID = 3) is common. On the other hand, the semaphore (semaphore ID = ID2) used in the lock section (section ID = 2) and the lock section (section ID = 3) is the same as the semaphore (semaphore ID = ID1) used in the lock section (section ID = 1). Is different. In the lock section (section ID = 2) and the lock section (section ID = 3), the statement with statement ID = 8 is set as the branch start point (branch ID = 2), and the statement with statement ID = 14 is set at the branch end point ( Branch ID = 2) exists in two execution paths identified by path IDs (2, 1) (2, 2), respectively.

上述したようにして、ロック区間特定部23およびクロック数算出部24は、実行順序/実行経路表T01を元にして、図10の表に示すようなソースコードD01に含まれるステートメント(コード)のロック区間特定表T02を作成する。このロック区間特定表T02には、ロック区間特定部23が特定したステートメント種別、区間ID、セマフォID、タイムアウト時間が記録される。そして、クロック数算出部24が抽出したステートメント内の命令、もしくはその命令の種別、クロック数が記録される。   As described above, the lock section specifying unit 23 and the clock number calculating unit 24 execute the statements (codes) included in the source code D01 as shown in the table of FIG. 10 based on the execution order / execution path table T01. A lock section identification table T02 is created. In the lock section specifying table T02, the statement type, section ID, semaphore ID, and timeout time specified by the lock section specifying unit 23 are recorded. Then, the instruction in the statement extracted by the clock number calculation unit 24, the type of the instruction, and the clock number are recorded.

図3に戻り、ステップS06において、クロック数算出部24は、ロック区間特定部23により特定されたロック区間に含まれる実行経路の各々について、ロック区間の実行に要するクロック数を算出する。具体的には、図9のステップS112において算出された、各ステートメントの実行に要するクロック数を、記憶装置14に記録されたロック区間特定表T02から読み出し、各ロック区間に含まれる総てのステートメントについてクロック数を合算する。これにより、実行経路の各々について、ロック区間の実行に要するクロック数を算出することができる。この際、ロック区間(ロックID=1)内に2以上の実行経路(経路ID(1,1)(1,2))が存在する場合、実行経路の各々について、ロック区間の実行に要するクロック数を算出する。算出されたロック区間の実行に要するクロック数は、図11に示すクロック数合計管理表T03に記録される。   Returning to FIG. 3, in step S <b> 06, the clock number calculation unit 24 calculates the number of clocks required to execute the lock section for each execution path included in the lock section specified by the lock section specifying unit 23. Specifically, the number of clocks required to execute each statement calculated in step S112 in FIG. 9 is read from the lock section specifying table T02 recorded in the storage device 14, and all statements included in each lock section are read. Add the number of clocks for. As a result, the number of clocks required to execute the lock section can be calculated for each execution path. At this time, if there are two or more execution paths (path ID (1, 1) (1, 2)) in the lock section (lock ID = 1), the clock required for execution of the lock section for each of the execution paths. Calculate the number. The calculated number of clocks required for execution of the lock section is recorded in the total clock number management table T03 shown in FIG.

図11のクロック数合計管理表T03のうち、「区間内ステートメントのクロック数合計」は、関数「Task1」及び関数「Task2」に含まれるロック区間(ロックID=1〜4)について、ロック区間の実行に要するクロック数を示す。ロック区間(ロックID=1)に関しては、ロック区間内に2つの実行経路(経路ID(1,1)(1,2))が存在するため、実行経路毎にロック区間の実行に要するクロック数を示す。例えば、図10に示したように、経路ID(1,1)で識別される実行経路には、ステートメントID=3、4の一群のステートメントが含まれる。ステートメントID=3のステートメントの実行に要するクロック数は、「1」であり、ステートメントID=4のステートメントの実行に要するクロック数は、「3」である。よって、図11に示すように、経路ID(1,1)で識別される実行経路について、ロック区間(ロックID=1)の実行に要するクロック数は「1+3」=「4」である。   In the total clock number management table T03 in FIG. 11, “total number of clocks of statements in the section” is the lock section (lock ID = 1 to 4) included in the function “Task1” and the function “Task2”. Indicates the number of clocks required for execution. Regarding the lock section (lock ID = 1), since there are two execution paths (path ID (1,1) (1,2)) in the lock section, the number of clocks required to execute the lock section for each execution path Indicates. For example, as shown in FIG. 10, the execution path identified by the path ID (1, 1) includes a group of statements with statement ID = 3 and 4. The number of clocks required to execute the statement with statement ID = 3 is “1”, and the number of clocks required to execute the statement with statement ID = 4 is “3”. Therefore, as shown in FIG. 11, for the execution path identified by the path ID (1, 1), the number of clocks required to execute the lock section (lock ID = 1) is “1 + 3” = “4”.

ステップS07において、最大クロック数算出部25は、クロック数合計管理表T03のうち「区間内ステートメントのクロック数合計」を参照して、ロック区間の各々について、ステップS06において算出されたクロック数の最大値を算出する。図11に示すように、ロック区間(ロックID=1)に関しては、経路ID(1,1)で識別される実行経路のクロック数(=4)と、経路ID(1,2)で識別される実行経路のクロック数(=3)とを比較して、大きい方のクロック数(=4)を選択する。1つのロック区間に1つの実行経路だけが含まれている場合、ステップS06において算出されたクロック数がそのまま、そのロック区間におけるクロック数の最大値となる。   In step S07, the maximum clock number calculation unit 25 refers to “total number of clocks of statements in the section” in the total clock number management table T03, and for each lock section, the maximum number of clocks calculated in step S06. Calculate the value. As shown in FIG. 11, the lock section (lock ID = 1) is identified by the clock number (= 4) of the execution path identified by the path ID (1, 1) and the path ID (1, 2). And the larger clock number (= 4) is selected. When only one execution path is included in one lock section, the number of clocks calculated in step S06 is directly used as the maximum number of clocks in the lock section.

図11に示すように、実施形態に係わる排他制御検査装置は、検査対象となるソースコードD01に含まれる排他制御に関する構造を可視化することができる。換言すれば、ソースコードD01に含まれる排他制御に関する構造として、エントリーポイント、区間ID、セマフォID、経路ID、経路に含まれるステートメントIDを特定することができる。そして、静的な解析方法により、検査対象となるソースコードD01中で実行し得るロック区間の各々について、ロック区間の実行に要するクロック数の最大値を求めることができる。よって、コンピュータプログラム中で実行し得るロック区間について、システムの応答性が悪化する可能性がある箇所を漏れなく特定することができる。   As shown in FIG. 11, the exclusive control inspection apparatus according to the embodiment can visualize the structure related to exclusive control included in the source code D01 to be inspected. In other words, the entry point, the section ID, the semaphore ID, the route ID, and the statement ID included in the route can be specified as the structure related to the exclusive control included in the source code D01. Then, the maximum number of clocks required to execute the lock section can be obtained for each lock section that can be executed in the source code D01 to be inspected by a static analysis method. Therefore, it is possible to specify a portion where the responsiveness of the system may be deteriorated without omission in the lock section that can be executed in the computer program.

図3に戻り、ステップS08において、競合ロック区間特定部27は、クロック数合計管理表T03を参照して、ロック区間の各々について、ロック区間が属するタスクとは異なる他のタスクに属する他のロック区間を特定する。更に、実施形態では、ソースコードD01の中で、複数種類のセマフォ(セマフォID=ID1及びID2)を用いている。セマフォが異なれば、セマフォの取得に関する競合関係は生じない。このため、同じセマフォを用いているロック区間において、異なるタスクに属するロック区間の組合せを特定する。図12は排他制御構造管理表T04を示す。排他制御構造管理表T04には、競合関係にあるブロック区間の組合せが記録される。ステップS08において、競合ロック区間特定部27により排他制御構造管理表T04は読み出され、あるいは更新される。   Returning to FIG. 3, in step S08, the contention lock section specifying unit 27 refers to the clock number total management table T03, and for each lock section, another lock belonging to another task different from the task to which the lock section belongs. Identify the section. Further, in the embodiment, a plurality of types of semaphores (semaphore ID = ID1 and ID2) are used in the source code D01. Different semaphores do not create a competitive relationship for semaphore acquisition. For this reason, in the lock section using the same semaphore, a combination of lock sections belonging to different tasks is specified. FIG. 12 shows the exclusive control structure management table T04. In the exclusive control structure management table T04, combinations of block sections having a competitive relationship are recorded. In step S08, the exclusive lock structure management table T04 is read or updated by the contention lock section specifying unit 27.

ロック区間(ロックID=1)は、関数「Task1」に属し、且つセマフォ(セマフォID=ID1)を使用する。ロック区間(ロックID=2)及びロック区間(ロックID=3)は、関数「Task1」に属し、且つセマフォ(セマフォID=ID2)を使用する。一方、ロック区間(ロックID=4)は、関数「Task2」に属し、且つセマフォ(セマフォID=ID2)を使用する。   The lock section (lock ID = 1) belongs to the function “Task1” and uses a semaphore (semaphore ID = ID1). The lock section (lock ID = 2) and the lock section (lock ID = 3) belong to the function “Task1” and use a semaphore (semaphore ID = ID2). On the other hand, the lock section (lock ID = 4) belongs to the function “Task2” and uses a semaphore (semaphore ID = ID2).

よって、ロック区間(ロックID=2)、ロック区間(ロックID=3)、及びロック区間(ロックID=4)は、同一の共有資源に対して同じセマフォ(セマフォID=ID2)を用いて排他制御を実行する。ここでロック区間(ロックID=2)とロック区間(ロックID=4)は、異なるタスク「Task1」、「Task2」に属するため、セマフォID=ID2のセマフォの取得に関して競合関係にある。同様に、ロック区間(ロックID=3)とロック区間(ロックID=4)は、セマフォID=ID2のセマフォの取得に関して競合関係にある。一方、ロック区間(ロックID=2)とロック区間(ロックID=3)は、同じセマフォID=ID2のセマフォを使用するが、同じタスク「Task1」に属するため、セマフォID=ID2のセマフォの取得に関して競合することはない。   Therefore, the lock section (lock ID = 2), the lock section (lock ID = 3), and the lock section (lock ID = 4) are exclusive using the same semaphore (semaphore ID = ID2) for the same shared resource. Execute control. Here, since the lock section (lock ID = 2) and the lock section (lock ID = 4) belong to different tasks “Task1” and “Task2”, they have a competitive relationship with respect to acquisition of the semaphore with semaphore ID = ID2. Similarly, the lock section (lock ID = 3) and the lock section (lock ID = 4) are in a competitive relationship regarding the acquisition of the semaphore with semaphore ID = ID2. On the other hand, the lock section (lock ID = 2) and the lock section (lock ID = 3) use the semaphore with the same semaphore ID = ID2, but belong to the same task “Task1”, and therefore acquire the semaphore with the semaphore ID = ID2. There will be no competition.

ロック区間(ロックID=1)については、その他のロック区間(ロックID=2)、ロック区間(ロックID=3)、ロック区間(ロックID=4)とは使用するセマフォが異なるため競合しない。   The lock section (lock ID = 1) does not compete with other lock sections (lock ID = 2), lock section (lock ID = 3), and lock section (lock ID = 4) because the semaphores used are different.

上述したように、競合ロック区間特定部27は各ロック区間について、そのロック区間の属するタスク、および使用するセマフォの情報を用いて、その他のロック区間と競合するか否かを特定する。ステップS08の実行後において、排他制御構造管理表T04は、競合ロック区間特定部27が特定した、競合関係にあるブロック区間の組合せに関する情報を格納した状態となる。   As described above, the contention lock section specifying unit 27 specifies, for each lock section, whether or not it competes with other lock sections by using the task to which the lock section belongs and the information of the semaphore to be used. After execution of step S08, the exclusive control structure management table T04 is in a state in which information related to the combination of block sections in a competitive relationship specified by the conflict lock section specifying unit 27 is stored.

次に、ステップS09に進み、タイムアウト判断部28は、ロック区間のクロック数の最大値が、競合する他のロック区間のタイムアウト時間よりも大きいか否かを判断する。具体的には、タイムアウト判断部28は、ロック区間特定表T02に記録された各ロック区間のタイムアウト時間と、排他制御構造管理表T04に記録された競合関係にあるブロック区間の組合せの情報とを参照する。そしてステップS08で特定された競合関係にあるロック区間の組合せのうち、一方のロック区間の実行に要するクロック数の最大値と、他方のロック区間のタイムアウト時間とを対比する。なお、前述したように、タイムアウト時間は、マイコンが行うタイミング制御に用いる内部クロックの数として表現されるため、クロック数の最大値と比較することは可能である。   Next, the process proceeds to step S09, and the timeout determination unit 28 determines whether or not the maximum value of the number of clocks in the lock section is larger than the timeout time of another competing lock section. Specifically, the time-out determining unit 28 uses the time-out time of each lock section recorded in the lock-section specifying table T02 and the information on the combination of the block sections in the competitive relationship recorded in the exclusive control structure management table T04. refer. Then, among the combinations of the lock sections having the competitive relationship specified in step S08, the maximum value of the number of clocks required for execution of one lock section is compared with the timeout time of the other lock section. As described above, the timeout time is expressed as the number of internal clocks used for timing control performed by the microcomputer, and can be compared with the maximum number of clocks.

一方のロック区間の実行に要するクロック数の最大値が、他方のロック区間のタイムアウト時間よりも大きい場合(ステップS09でYES)、タイムアウト判断部28は、他方のロック区間をスキップしてしまう可能性があると判断する(ステップS10)。   When the maximum number of clocks required for execution of one lock section is larger than the timeout time of the other lock section (YES in step S09), the timeout determination unit 28 may skip the other lock section. It is determined that there is (step S10).

一方のロック区間の実行に要するクロック数の最大値が、他方のロック区間のタイムアウト時間よりも小さいあるいは等しい場合(ステップS09でNO)、タイムアウト判断部28は、他方のロック区間をスキップしてしまう可能性は無いと判断する(ステップS12)。
If the maximum number of clocks required to execute one lock interval is smaller than or equal to the timeout time of the other lock interval (NO in step S09), the timeout determination unit 28 skips the other lock interval. It is determined that there is no possibility (step S12).

タイムアウト判断部28は、ステップS09で特定された総てのブロック区間の組合せについて、ステップS09の判断を実行する。   The timeout determination unit 28 executes the determination in step S09 for all combinations of block sections specified in step S09.

ステップS11に進み、検査結果出力部29は、タイムアウト判断部28による判断結果を、最大クロック数算出部25により算出されたクロック数の最大値と共に、排他制御検査結果D05として出力する。図13は、排他制御検査結果D05の一例を示す表である。例えば、一方のロック区間(ロックID=3)のクロック数の最大値(=6)は、競合する他方のロック区間(ロックID=4)のタイムアウト時間(=5)よりも大きい。つまり、一方のロック区間(ロックID=3)がセマフォID=ID2のセマフォをロックしている間に、他方のロック区間(ロックID=4)はセマフォID=ID2のセマフォを取得することなく、セマフォ解除待ちのまま、タイムアウト時間が経過してしまう可能性がある。そこで、タイムアウト判断部28は、関数「Task1」の実行中にロック区間(ロックID=4)をスキップしてしまう可能性があると判断する。同様に、一方のロック区間(ロックID=4)のクロック数の最大値(=11)は、競合する他方のロック区間(ロックID=2)のタイムアウト時間(=10)よりも大きい。このため、タイムアウト判断部28は、関数「Task2」の実行中にロック区間(ロックID=2)をスキップしてしまう可能性があると判断する。   In step S11, the inspection result output unit 29 outputs the determination result by the timeout determination unit 28 as the exclusive control inspection result D05 together with the maximum number of clocks calculated by the maximum clock number calculation unit 25. FIG. 13 is a table showing an example of the exclusive control inspection result D05. For example, the maximum value (= 6) of the number of clocks in one lock section (lock ID = 3) is longer than the timeout time (= 5) of the competing other lock section (lock ID = 4). That is, while one lock section (lock ID = 3) locks the semaphore with semaphore ID = ID2, the other lock section (lock ID = 4) does not acquire the semaphore with semaphore ID = ID2. The timeout period may elapse while waiting for semaphore release. Therefore, the timeout determination unit 28 determines that there is a possibility that the lock section (lock ID = 4) may be skipped during the execution of the function “Task1”. Similarly, the maximum value (= 11) of the number of clocks in one lock section (lock ID = 4) is longer than the timeout time (= 10) of the competing other lock section (lock ID = 2). Therefore, the timeout determination unit 28 determines that there is a possibility that the lock section (lock ID = 2) may be skipped during the execution of the function “Task2”.

これに対して、一方のロック区間(ロックID=2)のクロック数の最大値(=5)は、競合する他方のロック区間(ロックID=4)のタイムアウト時間(=5)よりも大きくない。同様に、一方のロック区間(ロックID=4)のクロック数の最大値(=11)は、競合する他方のロック区間(ロックID=3)のタイムアウト時間(=15)よりも大きくない。よって、これらのロック区間の組合せについては、セマフォの解除待ちのまま、タイムアウト時間が経過してしまう可能性はないと判断することができる。なお、図13には、セマフォID=ID1のセマフォを使用するロック区間(ロックID=1)を記載しているが、ソースコードD01の中にセマフォID=ID1のセマフォを使用する他のロック区間が無いため、競合関係は存在しない。   On the other hand, the maximum value (= 5) of the number of clocks in one lock section (lock ID = 2) is not longer than the timeout time (= 5) of the competing other lock section (lock ID = 4). . Similarly, the maximum value (= 11) of the number of clocks in one lock section (lock ID = 4) is not longer than the timeout time (= 15) of the competing other lock section (lock ID = 3). Therefore, with respect to the combination of these lock sections, it can be determined that there is no possibility that the timeout time elapses while waiting for the semaphore to be released. FIG. 13 shows a lock section (lock ID = 1) using a semaphore with semaphore ID = ID1, but another lock section using a semaphore with semaphore ID = ID1 in the source code D01. Because there is no competition, there is no competition.

[実施形態による効果]
コンピュータプログラムにおいて、複数のタスクやアプリケーションが同一のリソース(資源)にアクセスする場合、アクセスの競合によるデータ破壊を避けるため、セマフォ等の排他制御により他のタスクからのアクセスを一時的に禁止する処置をとる。すなわち、一方のタスクがリソースを使用する一定区間、他方のタスクの起動をロックする。ロックされるタスクは、ロックするタスクがセマフォを解放した後に起動され、リソースへのアクセスを実行する。ここで、他のタスクからのリソースアクセスをロックする区間(ロック区間)の設定を誤ると、ロックするタスクが不当な時間リソースを占有し、他のタスクの動作を遅くするという問題が発生する。結果的には、タスクの応答時間が延び、システムの動作が鈍くなるという不具合につながる。
[Effects of the embodiment]
In a computer program, when multiple tasks or applications access the same resource (resource), in order to avoid data corruption due to access contention, a measure to temporarily prohibit access from other tasks by exclusive control such as semaphores Take. In other words, the activation of the other task is locked in a certain interval in which one task uses the resource. The locked task is started after the locking task releases the semaphore and executes access to the resource. Here, if the section for locking resource access from other tasks (lock section) is set incorrectly, there is a problem that the locked task occupies an unreasonable time resource and slows down the operation of the other tasks. As a result, the response time of the task is extended, leading to a problem that the system operation becomes dull.

このような問題を避け、システムの応答性を許容範囲内に収めるため、セマフォの開放待ち、即ちロック解除待ちのタイムアウト時間を設定する。タイムアウト時間を超えてもセマフォが解放されない場合に、リソースへのアクセス処理をスキップし、その先の処理を実行する。   In order to avoid such problems and keep the responsiveness of the system within an allowable range, a timeout period for waiting for semaphore release, that is, waiting for unlocking is set. If the semaphore is not released even if the timeout time is exceeded, the access process to the resource is skipped and the process after that is executed.

しかしながら、レガシーコードの流用や拡張により、ロック区間が想定外に長くなると、設定されたタイムアウト時間に対しロック区間の平均処理時間が長くなり、タイムアウトが頻発するという問題が起きる。また、大規模なソフトウェアでは、ロックの競合関係が把握できず、不適切なタイムアウト時間が設定されてしまうという問題がある。   However, if the lock section becomes longer than expected due to diversion or expansion of the legacy code, there is a problem that the average processing time of the lock section becomes longer than the set timeout time, and timeouts occur frequently. In addition, large-scale software has a problem that lock conflicts cannot be grasped and an inappropriate timeout time is set.

そこで、実施形態に係わる排他制御検査装置は、順序経路特定部22により、検査対象となるソースコードD01(コンピュータプログラム)に含まれるステートメントの実行順序及び実行経路を特定し、特定されたステートメントの実行順序及び実行経路に基づいて、ロック区間特定部23はコンピュータプログラムに含まれる複数のタスクが利用可能な共有資源に対して排他制御を実行する一群のステートメントからなるロック区間を特定する。そして、特定されたロック区間に含まれる実行経路の各々について、クロック数算出部24はロック区間の実行に要するクロック数を算出する。これにより、排他制御を実行するロック区間の各々についてロック時間の最大値を求めることができる。検査結果出力部29によって、特定された実行順序及び実行経路、ロック区間、算出されたクロック数などの情報が検査結果として出力されるため、コンピュータプログラム中で実行し得るロック区間について、システムの応答性が悪化する可能性がある箇所をユーザに気づかせることができる。これにより、タイムアウト時間を適正化して、システムの応答性を改善することができる。また、コンピュータプログラムを静的な手法により解析することにより、実際に実行されないロック区間やロック解除待ち処理を検査対象とすることができるため、検証の見落としを抑制することができる。   Therefore, the exclusive control checking apparatus according to the embodiment specifies the execution order and execution path of the statements included in the source code D01 (computer program) to be checked by the order path specifying unit 22, and executes the specified statement. Based on the order and the execution path, the lock section specifying unit 23 specifies a lock section including a group of statements that execute exclusive control on a shared resource that can be used by a plurality of tasks included in the computer program. Then, for each execution path included in the specified lock section, the clock number calculation unit 24 calculates the number of clocks required for execution of the lock section. Thereby, the maximum value of lock time can be calculated | required about each of the lock area which performs exclusive control. Since the inspection result output unit 29 outputs information such as the specified execution order and execution path, the lock interval, and the calculated number of clocks as the inspection result, the system response for the lock interval that can be executed in the computer program. It is possible to make the user aware of a place where there is a possibility that the sex will deteriorate. Thereby, the time-out time can be optimized and the responsiveness of the system can be improved. Further, by analyzing the computer program by a static method, lock sections and lock release waiting processes that are not actually executed can be examined, so that verification oversight can be suppressed.

また、排他制御検査装置は、タイムアウト時間抽出部26によってロック区間の各々について、共有資源へのアクセス制限が解除されることを待つことができるロック区間に設定されたタイムアウト時間を抽出し、ロック区間が取得するセマフォ、およびロック区間が属するタスクの情報に基づき、競合ロック区間特定部27によってロック区間の各々について競合関係を形成する他のロック区間を特定する。そして、タイムアウト判断部28は、競合関係を形成する一方のロック区間のクロック数の最大値が、競合関係を形成する他方のロック区間のタイムアウト時間よりも大きい場合、他方のロック区間がスキップされる可能性があると判断し、その判断結果は、検査結果出力部29によって出力される。これにより、例えば、レガシーコードの移植ミスや、分散開発されたソースコードの結合ミスにより、不適切なタイムアウト時間が設定されている箇所を、ユーザに気づかせることができる。よって、タイムアウト時間の適正化を図り、タイムアウトの頻発を抑制することができる。   In addition, the exclusive control inspection device extracts a timeout period set in the lock section in which the access restriction to the shared resource can be waited for for each lock section by the timeout period extraction unit 26, and the lock section Based on the information on the semaphore acquired by the task and the information of the task to which the lock section belongs, the contention lock section specifying unit 27 specifies another lock section that forms a competitive relationship for each lock section. Then, the timeout determination unit 28 skips the other lock section when the maximum number of clocks in one lock section forming the competition relationship is larger than the timeout time of the other lock section forming the competition relationship. It is determined that there is a possibility, and the determination result is output by the inspection result output unit 29. As a result, for example, it is possible to make the user aware of a place where an inappropriate timeout time is set due to a mistake in porting legacy code or a mistake in combining source code that has been distributed and developed. Therefore, it is possible to optimize the timeout time and suppress frequent occurrence of timeout.

その他の変形例として、例えば、図3のステップS09及びS10において、スキップしてしまう可能性があると判断した競合関係にあるロック区間の組合せに対して、排他制御検査装置は、一方のロック区間のクロック数の最大値に対する、他方のロック区間のタイムアウト時間の割合を検証優先度として算出して、排他制御検査結果D05として出力してもよい。この割合(検証優先度)が高い程、つまり、100%に近い程、排他制御に関する検証優先度が高まる。スキップしてしまう可能性がある箇所として、複数のロック区間の組合せを特定する情報が出力される場合、検証対象としての優先度をユーザに伝えることができるので、ユーザによる検証作業の効率を高めることができる。検証優先度が100%未満だが極めて100%に近い値のロック区間の組合せを点検することで、レガシーコードの移植ミスや、分散開発されたソースコードの結合ミスにより、不適切なタイムアウト時間が設定されている箇所を、効率よく発見できる。   As another modification, for example, for the combination of lock sections that are in a conflicting relationship determined to be likely to be skipped in steps S09 and S10 in FIG. The ratio of the timeout time of the other lock section to the maximum value of the number of clocks may be calculated as the verification priority and output as the exclusive control test result D05. The higher this ratio (verification priority), that is, the closer to 100%, the higher the verification priority regarding exclusive control. When information specifying a combination of a plurality of lock sections is output as a portion that may be skipped, the priority as a verification target can be communicated to the user, so that the efficiency of verification work by the user is improved. be able to. By checking the combination of lock sections whose verification priority is less than 100% but very close to 100%, an inappropriate timeout period is set due to a legacy code porting error or a distributed source code combining error. Can be found efficiently.

以上、本発明の実施形態について説明したが、これらの実施形態は本発明の理解を容易にするために記載された単なる例示に過ぎず、本発明は当該実施形態に限定されるものではない。本発明の技術的範囲は、上記実施形態で開示した具体的な技術事項に限らず、そこから容易に導きうる様々な変形、変更、代替技術なども含むものである。この開示から当業者には様々な代替実施の形態、実施例及び運用技術が明らかとなろう。   As mentioned above, although embodiment of this invention was described, these embodiment is only the illustration described in order to make an understanding of this invention easy, and this invention is not limited to the said embodiment. The technical scope of the present invention is not limited to the specific technical matters disclosed in the above embodiment, but includes various modifications, changes, alternative techniques, and the like that can be easily derived therefrom. From this disclosure, various alternative embodiments, examples and operational techniques will be apparent to those skilled in the art.

本出願は、2013年1月21日に出願された日本国特許願第2013−008356号に基づく優先権を主張しており、この出願の全内容が参照により本明細書に組み込まれる。   This application claims priority based on Japanese Patent Application No. 2013-008356 filed on Jan. 21, 2013, the entire contents of which are incorporated herein by reference.

本発明によれば、コンピュータプログラムを静的な手法により解析し、排他制御を実行するロック区間の各々についてロック時間の最大値を求めることができる。よって、コンピュータプログラム中で実行し得るロック区間について、システムの応答性が悪化する可能性がある箇所をユーザに気づかせることができる。   According to the present invention, the computer program is analyzed by a static method, and the maximum value of the lock time can be obtained for each lock section in which exclusive control is executed. Therefore, it is possible to make the user aware of a place where the responsiveness of the system may be deteriorated in the lock section that can be executed in the computer program.

21 ソースコード入力部
22 順序経路特定部
23 ロック区間特定部
24 クロック数算出部
25 最大クロック数算出部
26 タイムアウト時間抽出部
27 競合ロック区間特定部
28 タイムアウト判断部
29 検査結果出力部
D01 ソースコード(コンピュータプログラム)
D02 エントリーポイント一覧
D03 ロック開始命令/解除命令リスト
D04 所要クロック数一覧
D05 排他制御検査結果
T01 実行順序/実行経路表
T02 ロック区間特定表
T03 クロック数合計管理表
T04 排他制御構造管理表
DESCRIPTION OF SYMBOLS 21 Source code input part 22 Order path | route identification part 23 Lock area specification part 24 Clock number calculation part 25 Maximum clock number calculation part 26 Timeout time extraction part 27 Contention lock area specification part 28 Timeout judgment part 29 Test result output part D01 Source code ( Computer program)
D02 Entry Point List D03 Lock Start Instruction / Release Instruction List D04 Required Clock List D05 Exclusive Control Check Result T01 Execution Order / Execution Path Table T02 Lock Section Specific Table T03 Clock Count Total Management Table T04 Exclusive Control Structure Management Table

Claims (4)

コンピュータプログラムに含まれる排他制御を検査する排他制御検査装置であって、
検査対象となる前記コンピュータプログラムに含まれるステートメントの実行順序及び実行経路を特定する順序経路特定部と、
前記順序経路特定部により特定された前記ステートメントの実行順序及び実行経路に基づいて、前記コンピュータプログラムに含まれる複数のタスクが利用可能な共有資源に対して排他制御を実行する一群のステートメントからなるロック区間を特定するロック区間特定部と、
前記ロック区間特定部により特定された前記ロック区間に含まれる実行経路の各々について、前記ロック区間の実行に要するクロック数を算出するクロック数算出部と、
前記ロック区間の各々について、前記クロック数算出部により算出された前記クロック数の最大値を算出する最大クロック数算出部と、
前記最大クロック数算出部により算出された前記クロック数の最大値を出力する検査結果出力部と、
を備えることを特徴とする排他制御検査装置。
An exclusive control inspection device for inspecting exclusive control included in a computer program,
An order path specifying unit for specifying an execution order and an execution path of statements included in the computer program to be inspected;
A lock composed of a group of statements that execute exclusive control on a shared resource that can be used by a plurality of tasks included in the computer program, based on the execution order and execution path of the statements specified by the order path specifying unit. A lock section identifying unit for identifying a section;
A clock number calculating unit for calculating the number of clocks required for execution of the lock section for each of execution paths included in the lock section specified by the lock section specifying unit;
A maximum clock number calculating unit that calculates a maximum value of the clock number calculated by the clock number calculating unit for each of the lock sections;
An inspection result output unit that outputs a maximum value of the clock number calculated by the maximum clock number calculation unit;
An exclusive control inspection device comprising:
請求項1に記載の排他制御検査装置であって、
前記ロック区間の各々について、前記共有資源へのアクセス制限が解除されることを待つことができるタイムアウト時間を抽出するタイムアウト時間抽出部と、
前記ロック区間の各々について、前記ロック区間が属するタスクとは異なる他のタスクに属する他のロック区間を特定する競合ロック区間特定部と、
前記ロック区間の前記クロック数の最大値が、前記他のロック区間のタイムアウト時間よりも大きい場合、前記他のロック区間がスキップされる可能性があると判断するタイムアウト判断部と、を更に備え、
前記検査結果出力部は、前記タイムアウト判断部による判断結果を出力する
ことを特徴とする排他制御検査装置。
The exclusive control inspection device according to claim 1,
For each of the lock sections, a time-out time extracting unit that extracts a time-out time that can wait for the access restriction to the shared resource to be released;
For each of the lock sections, a contention lock section specifying unit that specifies another lock section belonging to another task different from the task to which the lock section belongs,
A time-out determination unit that determines that the other lock section may be skipped when the maximum value of the number of clocks in the lock section is larger than a timeout time of the other lock section;
The exclusive control inspection apparatus, wherein the inspection result output unit outputs a determination result by the timeout determination unit.
コンピュータプログラムに含まれる排他制御を検査する排他制御検査方法であって、
検査対象となる前記コンピュータプログラムに含まれるステートメントの実行順序及び実行経路を特定し、
前記ステートメントの実行順序及び実行経路に基づいて、前記コンピュータプログラムに含まれる複数のタスクが利用可能な共有資源に対して排他制御を実行する一群のステートメントからなるロック区間を特定し、
前記ロック区間に含まれる実行経路の各々について、前記ロック区間の実行に要するクロック数を算出し、
前記ロック区間の各々について、前記クロック数の最大値を算出し、
前記クロック数の最大値を出力する
ことを特徴とする排他制御検査方法。
An exclusive control inspection method for inspecting exclusive control included in a computer program,
Specify the execution order and execution path of the statements included in the computer program to be examined,
Based on the execution order and execution path of the statements, specify a lock section consisting of a group of statements that execute exclusive control on a shared resource that can be used by a plurality of tasks included in the computer program,
For each execution path included in the lock section, calculate the number of clocks required to execute the lock section,
For each of the lock intervals, calculate the maximum number of clocks,
An exclusive control inspection method, wherein the maximum value of the number of clocks is output.
コンピュータプログラムに含まれる排他制御を検査する排他制御検査プログラムであって、
コンピュータに、
検査対象となる前記コンピュータプログラムに含まれるステートメントの実行順序及び実行経路を特定する機能と、
前記ステートメントの実行順序及び実行経路に基づいて、前記コンピュータプログラムに含まれる複数のタスクが利用可能な共有資源に対して排他制御を実行する一群のステートメントからなるロック区間を特定する機能と、
前記ロック区間に含まれる実行経路の各々について、前記ロック区間の実行に要するクロック数を算出する機能と、
前記ロック区間の各々について、前記クロック数の最大値を算出する機能と、
前記クロック数の最大値を出力する機能と、
を実現させることを特徴とする排他制御検査プログラム。
An exclusive control inspection program for inspecting exclusive control included in a computer program,
On the computer,
A function for specifying an execution order and an execution path of statements included in the computer program to be inspected;
A function for specifying a lock section consisting of a group of statements that execute exclusive control on a shared resource that can be used by a plurality of tasks included in the computer program, based on an execution order and an execution path of the statements;
A function for calculating the number of clocks required for execution of the lock section for each of the execution paths included in the lock section;
A function of calculating the maximum number of clocks for each of the lock sections;
A function of outputting the maximum number of clocks;
The exclusive control inspection program characterized by realizing.
JP2014557377A 2013-01-21 2013-12-25 Exclusive control inspection device, exclusive control inspection method, exclusive control inspection program Active JP5979250B2 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2013008356 2013-01-21
JP2013008356 2013-01-21
PCT/JP2013/084616 WO2014112304A1 (en) 2013-01-21 2013-12-25 Exclusive-control review device, exclusive-control review method, and exclusive-control review program

Publications (2)

Publication Number Publication Date
JP5979250B2 true JP5979250B2 (en) 2016-08-24
JPWO2014112304A1 JPWO2014112304A1 (en) 2017-01-19

Family

ID=51209406

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014557377A Active JP5979250B2 (en) 2013-01-21 2013-12-25 Exclusive control inspection device, exclusive control inspection method, exclusive control inspection program

Country Status (3)

Country Link
JP (1) JP5979250B2 (en)
CN (1) CN104885061B (en)
WO (1) WO2014112304A1 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003316615A (en) * 2002-04-26 2003-11-07 Nissan Motor Co Ltd Operation order checking device and method therefor
JP2006331027A (en) * 2005-05-25 2006-12-07 Nissan Motor Co Ltd Inspection device, inspection method and inspection program
JP2008090696A (en) * 2006-10-04 2008-04-17 Nissan Motor Co Ltd Program analysis apparatus and program analysis method

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2073516A1 (en) * 1991-11-27 1993-05-28 Peter Michael Kogge Dynamic multi-mode parallel processor array architecture computer system
JPH07219819A (en) * 1993-12-10 1995-08-18 Nec Corp Production of program evaluation data
US5729676A (en) * 1993-12-10 1998-03-17 Nec Corporation Method of generating data for evaluating programs
US7401334B2 (en) * 2002-12-20 2008-07-15 International Business Machines Corporation Method, apparatus and computer program product for managing message flow in a multithreaded, message flow environment

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003316615A (en) * 2002-04-26 2003-11-07 Nissan Motor Co Ltd Operation order checking device and method therefor
JP2006331027A (en) * 2005-05-25 2006-12-07 Nissan Motor Co Ltd Inspection device, inspection method and inspection program
JP2008090696A (en) * 2006-10-04 2008-04-17 Nissan Motor Co Ltd Program analysis apparatus and program analysis method

Also Published As

Publication number Publication date
CN104885061A (en) 2015-09-02
WO2014112304A1 (en) 2014-07-24
CN104885061B (en) 2016-11-09
JPWO2014112304A1 (en) 2017-01-19

Similar Documents

Publication Publication Date Title
JP6607565B2 (en) Integrated automated test case generation for safety critical software
US8327325B2 (en) Programmable framework for automatic tuning of software applications
US9576036B2 (en) Self-analyzing data processing job to determine data quality issues
US8832665B2 (en) Method and system for tracing individual transactions at the granularity level of method calls throughout distributed heterogeneous applications without source code modifications including the detection of outgoing requests
US8997057B1 (en) Using trace matching to identify and analyze application traces
JP5139486B2 (en) Trace generation device, system, and program thereof
KR101106595B1 (en) Method and apparatus for automated testing for software program
US20090049429A1 (en) Method and System for Tracing Individual Transactions at the Granularity Level of Method Calls Throughout Distributed Heterogeneous Applications Without Source Code Modifications
JP2008140162A (en) Debug information collection method
US7752399B2 (en) Exclusion control method and information processing apparatus
CN113568604B (en) Method and device for updating wind control strategy and computer readable storage medium
JP5979250B2 (en) Exclusive control inspection device, exclusive control inspection method, exclusive control inspection program
US9251028B2 (en) Managing code instrumentation in a production computer program
JP5240220B2 (en) Software effective performance evaluation system, software effective performance evaluation method, and program
JP6176380B2 (en) Information processing apparatus, method, and program
JP6048500B2 (en) Information processing apparatus, information processing method, information processing program, and recording medium
JP6666216B2 (en) Electronic control unit, analysis system
WO2014112303A1 (en) Missed-data-update review device, missed-data-update review method, and missed-data-update review program
Vögler et al. Non-intrusive monitoring of stream processing applications
Ma et al. Analyzing distributed Java applications by automatic centralization
CN110569155A (en) data processing method and system, electronic device and medium
JP2010211574A (en) Information processing system, monitoring method, and monitoring program
JP2018151803A (en) Inspection device of computer program, and on-vehicle device for inspecting computer program for vehicle control
CN115658551B (en) Code testing method, storage medium, electronic device and apparatus
JP2010262491A (en) Log aggregation device

Legal Events

Date Code Title Description
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: 20160628

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160711

R151 Written notification of patent or utility model registration

Ref document number: 5979250

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151