JP7015203B2 - How to run the app - Google Patents
How to run the app Download PDFInfo
- Publication number
- JP7015203B2 JP7015203B2 JP2018076056A JP2018076056A JP7015203B2 JP 7015203 B2 JP7015203 B2 JP 7015203B2 JP 2018076056 A JP2018076056 A JP 2018076056A JP 2018076056 A JP2018076056 A JP 2018076056A JP 7015203 B2 JP7015203 B2 JP 7015203B2
- Authority
- JP
- Japan
- Prior art keywords
- application
- thread
- execution
- executing
- executed
- 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
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Description
本発明は、アプリの実行状態の管理及び監視を可能にするアプリの実行方法に関する。 The present invention relates to an application execution method that enables management and monitoring of an application execution state.
情報システム及び制御システムにおける高信頼性を保証するために、運用するアプリの確実な実行状態の管理が要求される。しかし、アプリの実行状態は、OS内部で管理されることが多いことから、OS上のミドルレイヤやアプリのレイヤでの監視は容易ではない。特に、情報システム及び制御システムとして、アプリの終了状態を明確に把握し、該当のアプリが確保したメモリ等の計算機資源を確実に解放してシステムの高信頼性を保証するためには、OS内部の情報を取得するための方法を考案する必要がある。 In order to guarantee high reliability in information systems and control systems, it is required to manage the reliable execution state of the application to be operated. However, since the execution state of the application is often managed inside the OS, it is not easy to monitor the middle layer or the application layer on the OS. In particular, as an information system and control system, in order to clearly grasp the end state of the application and surely release the computer resources such as memory secured by the application to guarantee the high reliability of the system, it is inside the OS. It is necessary to devise a method for obtaining the information of.
また、ハードウェアやOSの世代交代によりアプリを移植するための開発投資を最小限に抑えるニーズが多いため、アプリ実行状態の管理がOS上のミドルレイヤやアプリレイヤで実現されることが望ましい。その一つの手法として、例えばLinux(登録商標)の場合、OSとアプリ間での通信手段であるNetLink等のインタフェースを活用して、アプリの実行状態を監視することができる。ただし、その監視方法において、OSからのアプリ状態通知イベントを確実に受け取るためには、別のアプリが必要であり、さらにそのイベントを取りこぼさないためには、該当アプリを高優先度で実行する必要がある。 In addition, since there are many needs to minimize the development investment for porting an application by changing the generation of hardware and OS, it is desirable that the management of the application execution state is realized in the middle layer or the application layer on the OS. As one of the methods, for example, in the case of Linux (registered trademark) , the execution status of the application can be monitored by utilizing an interface such as NetLink, which is a communication means between the OS and the application. However, in the monitoring method, another application is required to reliably receive the application status notification event from the OS, and in order not to miss the event, the corresponding application is executed with high priority. There is a need.
一方、制御システムのような制御処理以外のアプリによって性能干渉が発生するようなアプリを運用ことは困難である。そのため、OS上のミドルレイヤまたはアプリレイヤで運用するアプリの実行状態を管理できる手法が必要である。例えば、非特許文献1に記載の「Java VM」(なお、Javaは、登録商標)は、ミドルレイヤにおいてJava言語で書かれたアプリを制御・管理できる技術であり、そのアプリの実行状態の監視は容易である。しかし、Java言語ではない言語で書かれたアプリの運用は困難であり、特に制御システムのようなリアルタイムの性能要件が厳しい環境では、C言語かアセンブラで書かれたアプリの運用が大半であり、その技術の適用には困難を伴う。 On the other hand, it is difficult to operate an application such as a control system in which performance interference occurs due to an application other than control processing. Therefore, there is a need for a method that can manage the execution status of the application operated in the middle layer or application layer on the OS. For example, "Java VM" (Java is a registered trademark) described in Non-Patent Document 1 is a technology that can control and manage an application written in Java language in the middle layer, and monitors the execution state of the application. Is easy. However, it is difficult to operate apps written in languages other than Java, and most of the apps are written in C or assembler, especially in environments where real-time performance requirements are strict, such as control systems. The application of the technology is difficult.
また、特許文献1には、アプリのイベント情報を管理するイベント管理手段として複数のイベント通知スレッドを有し、このイベント管理手段を用いて複数のアプリの動作を制御する技術が示されている。
さらに、特許文献2には、スレッドのコンパイル時に、スレッドの内部情報を読み出すような別処理をリンクする手順に関する技術が示されている、
Further, Patent Document 1 discloses a technique of having a plurality of event notification threads as an event management means for managing event information of an application and controlling the operation of a plurality of applications by using the event management means.
Further, Patent Document 2 discloses a technique relating to a procedure for linking another process such as reading internal information of a thread when compiling the thread.
システムの高信頼化が必要なミッションクリティカルなアプリを運用するシステムにおいて、アプリの実行状態の管理及び監視が確実にできるアプリの実行環境をOS上のミドルレイヤまたはアプリレイヤで実現し、アプリの実行状態によって必要な高信頼性機能の実現を容易にしたいニーズがある。さらには、ハードウェアやOSの世代交代によってアプリを移植する必要が発生するが、そのための開発投資を最小限に抑えたいニーズがある。
それらに応えるために、本発明の目的は、特殊なハードウェアやOSの機能に依存しないアプリの実行基盤を実現提供することである。
In a system that operates a mission-critical application that requires high reliability of the system, the execution environment of the application that can reliably manage and monitor the execution status of the application is realized in the middle layer or the application layer on the OS, and the application is executed. There is a need to facilitate the realization of the required high reliability functions depending on the state. Furthermore, it will be necessary to port apps due to changes in hardware and OS generations, but there is a need to minimize development investment for that purpose.
In order to respond to them, an object of the present invention is to realize and provide an execution platform of an application that does not depend on special hardware or OS functions.
本発明は、前記課題を解決するために、アプリを関数化して関数化アプリとして格納する共有ライブラリを生成し、関数化アプリを実行するスレッドを予め生成してプールし、ユーザからアプリの開始要求を受けて、当該開始要求があった実行対象のアプリとプールしたスレッドから選択した空きのスレッドとを関連付け、当該関連付けた空きのスレッドを使って実行対象のアプリに対応する共有ライブラリ上の関数化アプリを実行することを特徴とする。 In the present invention, in order to solve the above-mentioned problems, a shared library for functionalizing an application and storing it as a functionalized application is generated, a thread for executing the functionalized application is generated in advance and pooled, and a user requests to start the application. In response to this, the application to be executed that received the start request is associated with a free thread selected from the pooled threads, and the function on the shared library corresponding to the application to be executed is used using the associated free thread. It is characterized by running a computerized application.
本発明によれば、処理性能要件が厳しい制御システムにおいて、特殊なハードウェエアやOSの機能に依存せずにアプリの実行状態を管理及び監視することが可能となる。また、アプリのソースレベルの修正を要求しないため、ミドルレイヤ及びアプリレイヤで、管理対象のアプリの実行状態を管理及び監視することが可能であり、特にアプリの終了状態をもって実現する計算機資源の開放等といった高信頼性を必要とする機能の実現が容易となる。 According to the present invention, in a control system with strict processing performance requirements, it is possible to manage and monitor the execution state of an application without depending on a special hard way air or OS function. In addition, since it does not require modification of the source level of the application, it is possible to manage and monitor the execution state of the managed application in the middle layer and the application layer, and in particular, the release of computer resources realized when the application is terminated. It becomes easy to realize functions that require high reliability such as.
通常のOS上で実行されるアプリの処理ロジックのソースをコンパイルすると、OS上の1つのプロセスとして実行されるバイナリが生成される。本発明では、実行状態を管理対象のアプリをOS上の一つのプロセスではなく、1つの関数としてコンパイルし計算機のメモリ上にロード可能なアプリの共有ライブラリとして生成すると共に、この関数化したアプリを実行するスレッドを生成し運用する。 Compiling the source of the processing logic of an application that runs on a normal OS produces a binary that runs as a single process on the OS. In the present invention, the application whose execution state is to be managed is compiled as one function instead of one process on the OS and generated as a shared library of the application which can be loaded in the memory of the computer, and this functionalized application is generated. Create and operate a thread to execute.
また、本発明は、前記スレッドにおいては監視対象のアプリは一つの関数として扱うため、関数の終了をもって該当アプリの実行終了を確実に把握する。さらに、関数化されたアプリのエントリポイントやそのアプリに引き渡す引数は、外部テーブルを設けて指定または設定し、スレッドプールから1つのスレッドを選び、該スレッドがその外部テーブルから関数化されたアプリのバイナリの実行のためのパラメータを取得する。 Further, in the present invention, since the application to be monitored is treated as one function in the thread, the execution end of the corresponding application is surely grasped at the end of the function. In addition, the entry point of the functionalized app and the arguments to pass to that app are specified or set in an external table, one thread is selected from the thread pool, and that thread is functionalized from that external table. Get the parameters for executing the binary.
以下に、本発明を実施するための形態として、実施例について図面を用いて詳細に説明する。なお、図面においては、アプリ及びライブライの表記を「AP」及び「Lib」としている。 Hereinafter, examples of the present invention will be described in detail with reference to the drawings. In the drawings, the notation of the application and the concert is "AP" and "Lib".
図1は、本発明の実施例に係るハードウェア及びソフトウェアプログラムの構成の一例を示す図である。
ハードウェア構成としては、OSを含むソフトウェアプログラムを実行する演算装置11、前記プログラム及びその実行に必要なデータを格納する記憶装置12を備える。ここで、記憶装置12は、例えばRAMやハードディスクなどである。また、演算装置11は、1つ以上のCPU11-Aを備える。
FIG. 1 is a diagram showing an example of a configuration of hardware and a software program according to an embodiment of the present invention.
The hardware configuration includes an
ソフトウェアプログラムの構成について説明する。
OS21は、OSの上で動作するアプリをスケジュールする機能、演算装置11及び記憶装置12のような計算機資源の排他制御機能及びアプリ間の協調のための動作制御用として同期イベントの発生制御機能を有する。また、LinuxやWindows(登録商標)のような汎用OSが備える機能も有する。
The structure of the software program will be described.
The OS 21 has a function of scheduling applications running on the OS, an exclusive control function of computer resources such as the
アプリ51は、少なくとも1つ以上存在し、演算装置11が実行可能な命令コードからなるバイナリを生成するためのソースファイルである。また、アプリ51は、コンパイラによってアセンブルコードに変換され、演算装置11が実行可能なバイナリに変換される。バイナリに変換されたアプリ51は、OS21によって、OS21が管理するプロセス単位で実行される。
The
共有ライブラリ(Lib)化部31は、コンパイラによって通常プロセス単位で実行されるバイナリに変換されるアプリ51を、共有ライブラリ53の1つの関数単位のバイナリに変換するための処理機能を有する。この機能により、1つ以上のアプリ51をそれぞれ関数単位でバイナリ変換した後、コンパイラ機能を利用し共有ライブラリ53を生成する。
The shared library (Lib)
スレッドプール管理部41は、共有ライブラリ53に含まれる関数化されたアプリ51のバイナリを実行する1つ以上のスレッド61を生成管理する。スレッド61は、OS21が管理するプロセスまたはスレッドであり、スレッドプール管理部41がOS21の機能を用いて生成する。
The thread
また、スレッドプール管理部41は、スレッド処理部42及びスレッド監視部43と、テーブルとして、アプリ(AP)管理テーブル44、スレッド管理テーブル45並びにスレッドイベントテーブル46とを備える。
Further, the thread
スレッド処理部42は、スレッド61が実行する処理機能であり、スレッド監視部43は、監視スレッド62が実行する処理機能である。ここで、監視スレッド62は、スレッドプール管理部41により生成され、スレッド61の異常監視を行う。
The
各テーブル(アプリ管理テーブル44、スレッド管理テーブル45及びスレッドイベントテーブル46)について、図2~4を用いて順に説明する。
図2は、アプリ管理テーブル44の構成を示す図である。アプリ管理テーブル44は、従来アプリ51が運用されている計算機環境上において、OSレイヤで管理運用されるテーブルである。アプリ管理テーブル44によって、アプリ51の実行状態が監視でき、システムに必要な高信頼機能が実現できる。例えば、該当アプリに割り当てられた計算機資源の解放などがある。本実施例では、共有ライブラリ化部31とスレッドプール管理部41とによって、OS21上のミドルレイヤで運用可能である。
Each table (application management table 44, thread management table 45, and thread event table 46) will be described in order with reference to FIGS. 2 to 4.
FIG. 2 is a diagram showing the configuration of the application management table 44. The application management table 44 is a table managed and operated in the OS layer in the computer environment in which the
アプリ管理テーブル44は、アプリ(AP)51を識別するためのアプリ(AP)識別子44-A及びアプリ51の実行状態を格納するアプリ(AP)状態44-Bから構成される。アプリ51の実行状態としては、アプリ51を実行するためのスレッド61が割り当てられていることを示す‘D’、アプリ51のバイナリの実行開始を表す‘S’、アプリ51のバイナリ実行中を示す‘R’及びアプリ51の実行終了を表す‘E’の各値をもつ。ここで、‘S’及び‘E’の実行状態は、スレッド61で処理されるスレッド処理部42で設定される。その他の状態は、スレッドプール管理部41が、アプリ51のバイナリの処理内容によって設定する。
The application management table 44 is composed of an application (AP) identifier 44-A for identifying the application (AP) 51 and an application (AP) state 44-B for storing the execution state of the
図3は、スレッド管理テーブル45の構成を示す図である。スレッド管理テーブル45は、スレッドプール管理部41が生成するスレッド61の最大数の値を格納するスレッドMAX数45-A、監視スレッド62のスレッド監視部43における処理結果を格納する異常フラグ45-B、スレッド61を識別するためのスレッド識別子45-C及びスレッド61が実行するアプリ51の識別子を格納する45-Dから構成される。スレッドMAX数45-Aは、ユーザによって予め設定される。異常フラグ45-Bは、異常状態を表す‘1’及び正常状態を表す‘0’のいずれの値を格納する。
FIG. 3 is a diagram showing the configuration of the thread management table 45. The thread management table 45 has a maximum number of threads 45-A that stores the value of the maximum number of
図4は、スレッドイベントテーブル46の構成を示す図である。スレッドイベントテーブル46は、スレッドプール管理部41とスレッド61との間で引き渡されるパラメータを設定するもので、スレッド61の数分だけレコード行が存在する。各レコード行には、スレッドプール管理部41がイベントを引き渡したいスレッドを識別するためのスレッド識別子46-A及び引き渡すパラメータから構成される。
FIG. 4 is a diagram showing the configuration of the thread event table 46. The thread event table 46 sets the parameters passed between the thread
このパラメータとしては、スレッド管理用パラメータ46-B及びアプり(AP)実行用パラメータ46-Cを備える。さらに、スレッド管理用パラメータ46-Bとしては、スレッドの優先度46-B1と計算機資源のアクセスを制御するための資源アクセス権限46-B2とを有する。また、アプリ実行用パラメータ46-Cは、スレッド61が実行するアプリ51の関数化されたバイナリを実行するために用いられる。
This parameter includes a thread management parameter 46-B and an app (AP) execution parameter 46-C. Further, the thread management parameter 46-B has a thread priority 46-B1 and a resource access authority 46-B2 for controlling access to computer resources. Further, the application execution parameters 46-C are used to execute the functionalized binary of the
スレッド管理用パラメータ46-Bの中のスレッドの優先度46-B1は、従来アプリ51を一つのプロセスとして実行した計算機環境上のOSで備えられたスケジューラを、OS21上のミドルウェアレイヤのスレッドプール管理部41で実現するためのパラメータである。例えば、優先度ベースのリアルタイムスケジュールは、優先度46-B1で優先度を設定すればよい。設定した優先度は、従来アプリのバイナリを共有ライブラリ化部31によって、共有ライブラリ53上の関数化されたバイナリを実行するスレッド61の優先度としてOS21に反映される。これにより、従来アプリを運用したスケジューラを外付けで柔軟に実現することができる。
The thread priority 46-B1 in the thread management parameter 46-B manages the thread pool of the middleware layer on the
また、アプリ実行用パラメータ46-Cをスレッド61に渡すことができるため、従来アプリの処理が、関数化されたバイナリでも実現できる。例えば、webサーバのアプリを共有ライブラリ化部31によって関数化し、スレッド61によって実行することを可能とし、その処理の開始と終了とをOS21のミドルレイヤで確実に監視することを可能とする。なお、アプリ処理の開始及び終了の監視処理の詳細については、図9を用いて後述する。
Further, since the application execution parameters 46-C can be passed to the
次に、共有ライブラリ化部31による処理フローについて説明する。図5は、共有ライブラリ化部31が実行する処理フローの詳細を示す図である。なお、以下の各ステップでは、共有ライブラリ化部31が処理の実行主体であるので、主体の記載を省略する。
Next, the processing flow by the shared
<ステップ101>
ユーザから、関数化バイナリの作成対象であるアプリ51のアプリ識別子を受け取る。
<Step 101>
Receives from the user the app identifier of the
<ステップ102>
ユーザが予め指定した、アプリ51のソースファイルから関数化バイナリを作成するための中間ファイルを保存する場所を、その情報を格納する変換済アプリ(AP)格納場所記憶部32から読込む。
<Step 102>
The location for storing the intermediate file for creating the functionalized binary from the source file of the
<ステップ103>
アプリ(AP)ソースのアプリ51を、コンパイラでアセンブルコードAP52に書換えて、変換済アプリ格納場所記憶部32の指定場所へ格納する。ここで用いるコンパイラは、OS21で運用可能な汎用コンパイラでよい。例えば汎用Linxuの場合、コンパイラ「gcc(GNU Compiler Collection)」に相当するものである。
<Step 103>
The
<ステップ104>
アセンブルコードAP52を読込み、このアセンブルコードからentry_point処理の「_main」シンボルを探し、ステップ101から受け取ったアプリ識別子を先頭に付け、entry_pointのシンボルを変換する。例えば、アプリ識別子が「AP1」の場合、「_main」から「_AP1_main」に変換される。ただし、変換の形式には拘らず、アプリ51と結び付けられるものであればよい。
<Step 104>
The assemble code AP52 is read, the "_main" symbol of the entry_point process is searched from this assemble code, the application identifier received from
<ステップ105>
アセンブルコードから終了処理の「_exit」シンボルを探し、このシンボルがあれば、関数からのリターン処理に置換える。例えば、スタックフレームの「pop」と「ret」のアセンブラに置き換える。
<Step 105>
Search the assemble code for the "_exit" symbol of the end processing, and if there is this symbol, replace it with the return processing from the function. For example, replace it with the "pop" and "ret" assemblers of the stack frame.
<ステップ106>
コンパイラの共有ライブラリ生成オプションにより、変換済アプリ格納場所記憶部32に中間ファイルとして格納されている変換済の全アセンブルコードAP52をコンパイルし、共有ライブラリ53を生成する。例えば、先の「gcc」の場合、「-shared」のオプションを使う。
<Step 106>
The shared library generation option of the compiler compiles all the converted assemble code AP52 stored as an intermediate file in the converted application storage
<ステップ107>
共有ライブラリ53上の関数化されたアプリ51のバイナリを実行するスレッド61がアクセスできるように、記憶装置12のRAM上にロードする。例えば、POSIXのAPIを活用するか、標準Linuxの場合には「ldconfig」コマンドを活用することが可能である。
<Step 107>
It is loaded onto the RAM of the
次に、スレッドプール管理部41による処理フローについて説明する。図6は、スレッドプール管理部41が実行する処理フローの詳細を示す図である。なお、以下の各ステップでは、スレッドプール管理部41が処理の実行主体であるので、主体の記載を省略する。
Next, the processing flow by the thread
<ステップ201>
スレッド監視テーブル45のスレッドMAX数45-Aを読取り、内部変数に格納する。なお、スレッドMAX数45-Aは、ユーザから設定されていることを前提とし、本実施例では「32」とする。
<Step 201>
The thread MAX number 45-A of the thread monitoring table 45 is read and stored in an internal variable. It is assumed that the thread MAX number 45-A is set by the user, and is set to "32" in this embodiment.
<ステップ202>
スレッド生成カウンタ(cnt)の内部変数を初期化する(cnt←0)。
<Step 202>
Initialize the internal variables of the thread generation counter (ct) (ct ← 0).
<ステップ203>
スレッド生成カウンタ(cnt)の値が、スレッドMAX数45-Aの値を超えたか否かを確認する。超えた場合には(Y)、ステップ204に進み、超えていない場合には(N)、ステップ211に進む。
<Step 203>
It is confirmed whether or not the value of the thread generation counter (ct) exceeds the value of the thread MAX number 45-A. If it exceeds, the process proceeds to (Y) and step 204, and if it does not exceed (N), the process proceeds to step 211.
<ステップ204>
スレッド監視部43により処理される監視スレッド62を生成する。監視スレッド62は、OS21の機能を用いて生成する。
<Step 204>
A
<ステップ205>
アプリ開始処理へ進む。アプリ開始処理については、図7を用いて後述する。
<Step 205>
Proceed to the application start process. The application start process will be described later with reference to FIG. 7.
<ステップ211>
スレッド処理部42により処理されるスレッド61を生成し、OS21からの戻り値を内部変数TIDへ格納する。スレッド61は、OS21の機能を用いて生成する。
<Step 211>
A
<ステップ212>
スレッド生成カウンタ(cnt)を1増加し、このスレッド生成カウンタ番目に対するスレッド管理テーブル45のスレッド識別子45-Cに、内部変数TIDを格納する。
<Step 212>
The thread generation counter (ct) is incremented by 1, and the internal variable TID is stored in the thread identifier 45-C of the thread management table 45 for the thread generation counter.
<ステップ213>
スレッドイベントテーブル46のスレッド生成カウンタ番目のスレッド識別子46-Aに内部変数TIDを格納し、同スレッド識別子46-Aの行を‘0’で初期化する。
<Step 213>
The internal variable TID is stored in the thread identifier 46-A of the thread generation counter of the thread event table 46, and the row of the thread identifier 46-A is initialized with '0'.
<ステップ214>
スレッド管理テーブル45のスレッド生成カウンタ番目の実行アプリ(AP)識別子45-Dを‘0’で初期化する。
<Step 214>
Initialize the execution application (AP) identifier 45-D of the thread generation counter th in the thread management table 45 with '0'.
以上のように、ステップ211からステップ214まで、必要なスレッドを予め生成してプール化しておくことで、従来アプリ51がプロセスとして実行開始するときに必要なプロセス生成処理時間を省くことができる。また、本実施例は、リアルタイム性が必要なシステムのアプリ51の実行環境においても有効である。
As described above, by generating necessary threads in advance and pooling them from
続いて、先のステップ205のアプリ開始処理の処理フローについて説明する。図7は、アプリ開始処理の処理フローの詳細を示す図である。なお、以下の各ステップでは、スレッドプール管理部41が処理の実行主体であるので、主体の記載を省略する。
<ステップ301>
ユーザからのアプリ開始要求のイベント通知、またはスレッド監視部43からのイベント通知を受け取る。コンソールによるユーザからの要求イベントや後述するスレッド監視部43からのイベントは、OS21の機能を用いて実現する。例えば汎用Linuxの場合には、「select」APIの非同期イベント機能が利用できる。
Next, the processing flow of the application start processing of the
<Step 301>
Receive the event notification of the application start request from the user or the event notification from the
<ステップ302>
受け取ったイベント通知が、アプリ開始要求のイベントか否かを確認する。アプリ開始要求のイベント通知である場合は(Y)、ステップ303に進む。アプリ開始要求のイベント通知でない場合は(N)、すなわちスレッド監視部43からのイベント通知である場合、ステップ311に進む。
<Step 302>
Check if the received event notification is an event of the application start request. If it is an event notification of the application start request (Y), the process proceeds to step 303. If it is not the event notification of the application start request (N), that is, if it is the event notification from the
<ステップ303>
ユーザから、アプリ識別子44-A、スレッド管理用パラメータ46-B及びアプリ実行用パラメータ46-Cを受け取る。これらのパラメータは、先のステップ302におけるユーザからのA51開始要求のイベント通知が行われる際に、ユーザが設定するものである。
<Step 303>
The application identifier 44-A, the thread management parameter 46-B, and the application execution parameter 46-C are received from the user. These parameters are set by the user when the event notification of the A51 start request from the user in the
<ステップ304>
スレッド管理テーブル45の実行アプリ識別子45-Dの値が‘0’であるスレッド識別子45-Cを読み取る。
<Step 304>
Read the thread identifier 45-C in which the value of the execution application identifier 45-D in the thread management table 45 is '0'.
<ステップ305>
スレッドイベントテーブル46において、先のステップ304で読み取ったスレッド識別子45-Cの識別子名を持つスレッド識別子46-Aと同じ行のスレッド管理用パラメータ46-B及びアプリ実行用パラメータ46-Cに、先のステップ303で受け取ったパラメータを格納する。
<Step 305>
In the thread event table 46, the thread management parameter 46-B and the application execution parameter 46-C in the same row as the thread identifier 46-A having the identifier name of the thread identifier 45-C read in the
<ステップ306>
先のステップ304で読み取ったスレッド識別子45-Cの識別子名を持つスレッド61に対して、OS21の機能を用いてイベント通知を行う。
<Step 306>
An event is notified to the
<ステップ311>
スレッド管理テーブル45の異常フラグ45-Bを読み取る。
<Step 311>
Read the error flag 45-B of the thread management table 45.
<ステップ312>
異常フラグ45-Bの値が、正常値‘0’か否かを確認する。正常値‘0’であれば(Y)、ステップ301に戻り、異常値‘1’であれば(N)、スレッドプール管理41の処理を終了する。この終了処理には、先のステップ211で生成したスレッド61を終了する処理などが含まれる。
<Step 312>
It is confirmed whether or not the value of the abnormality flag 45-B is the normal value '0'. If the normal value is '0', the process returns to step 301, and if the abnormal value is '1', the process of the
次に、スレッド処理部42による処理フローについて説明する。図8は、スレッド処理部42が実行する処理フローの詳細を示す図である。なお、以下の各ステップでは、スレッド処理部42が処理の実行主体であるので、主体の記載を省略する。
Next, the processing flow by the
<ステップ401>
スレッドプール管理部41からのイベント通知を待つ状態で、先のステップ305でスレッドイベントテーブル46に必要なパラメータが設定された後に、スレッドプール管理部41から先のステップ306によりイベント通知されるので、このイベント通知を受け取る。
<Step 401>
While waiting for the event notification from the thread
<ステップ402>
スレッドイベントテーブル46のスレッド管理用パラメータ46-Bを読み取る。
<Step 402>
Read the thread management parameter 46-B of the thread event table 46.
<ステップ403>
スレッド管理用パラメータ46-Bの中から46-B1に格納されたスレッドの優先度及び46-B2に格納された資源アクセス権限を、OS21の機能を使って設定する。
<Step 403>
From the thread management parameters 46-B, the priority of the thread stored in 46-B1 and the resource access authority stored in 46-B2 are set by using the function of OS21.
<ステップ404>
スレッドイベントテーブル46のアプリ実行用パラメータ46-Cを読み取る。
<Step 404>
Read the application execution parameters 46-C in the thread event table 46.
<ステップ405>
アプリ実行処理に進む。アプリ実行処理については、図9を用いて後述する。
<Step 405>
Proceed to application execution process. The application execution process will be described later with reference to FIG.
<ステップ406>
先のステップ403で設定したスレッドの優先度及び資源アクセス権限を元に戻す。先のステップ211でスレッド61が生成された時には、OS21で設定されたdefaultのスレッドの優先度及び資源アクセス権限に戻す。
<Step 406>
Restore the thread priority and resource access authority set in
以上により、ステップ405の前後のステップ404とステップ406とによって、外付けで従来アプリ51が運用された計算機環境上のプロセスまたはスレッドのスケジュール方法が実現できる。例えば、優先度ベースのリアルタイムスケジュール方式は、本実施例により容易に実現可能である。
As described above, by
次に、先のステップ405のアプリ実行処理について説明する。図9は、アプリ実行処理の処理フローの詳細を示す図である。なお、以下の各ステップでは、スレッド処理部42が処理の実行主体であるので、主体の記載を省略する。
<ステップ501>
スレッドイベントテーブル46のアプリ実行用パラメータ46-Cにおけるentry_point名46-C1からアプリ識別子を取り出し、スレッド管理テーブル45における自らのスレッド識別子45-Cと同行にある実行アプリ識別子45-Dに当該アプリ識別子を格納する。自らのスレッド識別子45-Cは、OS21の機能で取得可能であり、先のステップ211で格納したOS21の戻り値と一致する。
本ステップ501によって、実行対象のアプリ51のバイナリと実行するスレッド61との間の関連付けが行われる。
Next, the application execution process of the
<Step 501>
The application identifier is extracted from entry_point name 46-C1 in the application execution parameter 46-C of the thread event table 46, and the application identifier is set to the execution application identifier 45-D in the same line as the own thread identifier 45-C in the thread management table 45. To store. Its own thread identifier 45-C can be acquired by the function of OS21, and matches the return value of OS21 stored in the
By this
<ステップ502>
先のステップ501で取り出したアプリ識別子を、アプリ管理テーブル44のアプリ識別子44-Aに格納し、アプリ状態44-Bに開始状態を示す‘S’を格納する。
<Step 502>
The application identifier extracted in the
<ステップ503>
スレッドイベントテーブル46のアプリ実行用パラメータ46-Cにおけるentry_point名46-C1が示す関数を呼び出し、当該関数に引数46-C2を渡し、共有ライブラリ53上のアプリ51のバイナリ処理を実行する。
<Step 503>
The function indicated by entry_point name 46-C1 in the application execution parameter 46-C of the thread event table 46 is called, the argument 46-C2 is passed to the function, and the binary processing of the
<ステップ504>
先のステップ503によるアプリ51のバイナリ処理からの戻り値を確認し、アプリ管理テーブル44のアプリ状態44-Bに終了状態を示す‘E’を格納する。先のステップ502と本ステップ504とによって、OS21のミドルレイヤでアプリ51の開始及び終了の実行状態が明確に管理できることになり、それを利用した高信頼機能の実現が容易となる。
<Step 504>
The return value from the binary processing of the
<ステップ505>
スレッド管理テーブル45の実行アプリ識別子45-Dに‘0’を格納し、初期化状態にする。これによって、他のアプリ51からの実行開始要求の受付が可能となる。
<Step 505>
'0' is stored in the execution application identifier 45-D of the thread management table 45, and the initialization state is set. This makes it possible to receive an execution start request from another
最後に、スレッド監視部43による処理フローについて説明する。図10は、スレッド監視部43が実行する処理フローの詳細を示す図である。なお、以下の各ステップでは、スレッド監視部43が処理の実行主体であるので、主体の記載を省略する。
Finally, the processing flow by the
本処理フローは、監視スレッド62を使って処理される。スレッド61が実行するアプリ51のバイナリ処理が終了し、アプリ管理テーブル44のアプリ状態44-Bは‘E’状態である。この状態において、監視スレッド62は、スレッド管理テーブル45においてスレッド61の実行アプリ識別子45-Dがまだ‘0’でない状態をもつスレッド61を監視する。それによって、スレッド61の実行状態の監視が可能となり、ユーザからのアプリ51の開始要求を実行できるスレッド61が枯渇されることを防ぐ。もし、枯渇した場合にも、新しいスレッド61を立ち上げる等の処理を実施することも可能である。また、この監視処理を、一定周期で以て実施してもよいし、異常カウンタを設けて異常の再確認処理として行ってもよい。
This processing flow is processed using the
<ステップ601>
スレッド管理テーブル45の異常フラグ45-Bに‘0’を格納し、初期化する。
<Step 601>
'0' is stored in the error flag 45-B of the thread management table 45 and initialized.
<ステップ602>
アプリ管理テーブル44の先頭レコードのアプリ状態44-Bを読み取る。
<Step 602>
Read the application status 44-B of the first record of the application management table 44.
<ステップ603>
読み取ったアプリ状態が終了を示す‘E’か否かを判断する。終了‘E’であれば(Y)、ステップ604に進み、終了‘E’でなければ(N)、ステップ611に進む。
<Step 603>
Judge whether the read application status is'E'indicating the end. If the end is'E', the process proceeds to step 604 (Y), and if the end is not'E', the process proceeds to step 611 (N).
<ステップ604>
アプリ管理テーブル44から読み取ったアプリ状態44-Bと同行にあるアプリ識別子44-Aを読み取る。
<Step 604>
The application identifier 44-A in the same bank as the application state 44-B read from the application management table 44 is read.
<ステップ605>
読み取ったアプリ識別子44-Aが、スレッド管理テーブル45の実行アプリ識別子45-Dに存在するか否かを確認する。
<Step 605>
It is confirmed whether or not the read application identifier 44-A exists in the execution application identifier 45-D of the thread management table 45.
<ステップ606>
存在すれば(Y)、ステップ607に進み、存在しなければ(N)、ステップ611に進む。
<Step 606>
If it exists (Y), the process proceeds to step 607, and if it does not exist (N), the process proceeds to step 611.
<ステップ607>
スレッド管理テーブル45の異常フラグ45-Bに異常を示す‘1’を格納する。
<Step 607>
'1' indicating an abnormality is stored in the abnormality flag 45-B of the thread management table 45.
<ステップ608>
スレッドプール管理部41へ、OS21の機能によってイベント通知をする。また、このイベント通知によって、スレッドプール管理部41において先のステップ311の処理が実行される。
<Step 608>
An event is notified to the thread
<ステップ611>
アプリ管理テーブル44の最後尾の行まで処理を行ったか否かを確認する。最後尾の行でなければ(Y)、ステップ612に進み、最後尾の行であれば(N)、ステップ602に進む。
<Step 611>
Check whether the processing has been performed up to the last row of the application management table 44. If it is not the last line (Y), the process proceeds to step 612, and if it is the last line (N), the process proceeds to step 602.
<ステップ612>
アプリ管理テーブル44の次の行のアプリ状態44-Bを読み取り、ステップ603に戻る。
<Step 612>
The application state 44-B in the next row of the application management table 44 is read, and the process returns to step 603.
11…演算装置、11-A…CPU、12…記憶装置、21…OS、
31…共有ライブラリ(Lib)化部、32…変換済アプリ(AP)格納場所記憶部、
41…スレッドプール管理部、42…スレッド処理部、43…スレッド監視部、
44…アプリ(AP)管理テーブル、45…スレッド管理テーブル、
46…スレッドイベントテーブル、51…既存アプリ(AP)ソース、
52…書換えアセンブルコード、53…アプリ51を関数化した共有ライブラリ、
61…スレッド、62…監視スレッド
11 ... Arithmetic logic unit, 11-A ... CPU, 12 ... Storage device, 21 ... OS,
31 ... Shared library (Lib) conversion unit, 32 ... Converted application (AP) storage location storage unit,
41 ... Thread pool management unit, 42 ... Thread processing unit, 43 ... Thread monitoring unit,
44 ... App (AP) management table, 45 ... Thread management table,
46 ... Thread event table, 51 ... Existing application (AP) source,
52 ... Rewrite assemble code, 53 ... Shared library that functions
61 ... thread, 62 ... monitoring thread
Claims (5)
ことを特徴とするアプリの実行方法。 A shared library that functions an application and stores it as a functionalized application is generated, a thread that executes the functionalized application is generated in advance and pooled, and a start request of the application is received from a user, and the start request is made. To associate the application to be executed with a free thread selected from the pooled threads, and execute the functionalized application on the shared library corresponding to the application to be executed using the associated free thread. How to run an app that features.
前記スレッドをプールするに際し、設定数分の前記スレッドに対して当該スレッドの実行制御に係るパラメータを初期化する
ことを特徴とするアプリの実行方法。 The method for executing the application according to claim 1.
A method of executing an application, characterized in that when pooling the threads, parameters related to execution control of the threads are initialized for the set number of threads.
前記関連付けた空きのスレッドに対して、前記開始要求があった実行対象のアプリに関係する前記パラメータを通知する
ことを特徴とするアプリの実行方法。 The method for executing the application according to claim 2.
A method of executing an application, which comprises notifying the associated free thread of the parameters related to the application to be executed for which the start request has been made.
前記関連付けた空きのスレッドに対して、当該スレッドの優先度及び資源アクセス権限が設定される
ことを特徴とするアプリの実行方法。 The method for executing the application according to any one of claims 1 to 3.
A method of executing an application, characterized in that the priority and resource access authority of the thread are set for the associated free thread.
実行が終了した前記アプリに関連付けられた前記スレッドが実行済みで初期化状態に戻ったか否かを監視する
ことを特徴とするアプリの実行方法。 The method for executing the application according to any one of claims 1 to 4.
A method of executing an application, which monitors whether or not the thread associated with the application whose execution has been completed has been executed and has returned to the initialized state.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018076056A JP7015203B2 (en) | 2018-04-11 | 2018-04-11 | How to run the app |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018076056A JP7015203B2 (en) | 2018-04-11 | 2018-04-11 | How to run the app |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2019185423A JP2019185423A (en) | 2019-10-24 |
JP7015203B2 true JP7015203B2 (en) | 2022-02-02 |
Family
ID=68341357
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018076056A Active JP7015203B2 (en) | 2018-04-11 | 2018-04-11 | How to run the app |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP7015203B2 (en) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2022164182A (en) * | 2021-04-16 | 2022-10-27 | 株式会社日立製作所 | Arithmetic device, and method for operating program |
JPWO2023053234A1 (en) * | 2021-09-29 | 2023-04-06 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008140053A1 (en) | 2007-05-10 | 2008-11-20 | International Business Machines Corporation | Server device operating in response to received request |
JP2010243717A (en) | 2009-04-03 | 2010-10-28 | Kyocera Mita Corp | Image processor |
-
2018
- 2018-04-11 JP JP2018076056A patent/JP7015203B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008140053A1 (en) | 2007-05-10 | 2008-11-20 | International Business Machines Corporation | Server device operating in response to received request |
JP2010243717A (en) | 2009-04-03 | 2010-10-28 | Kyocera Mita Corp | Image processor |
Non-Patent Citations (1)
Title |
---|
SPY,「Java 9 集中講座 : 第5章 付属ツール大変化」,WEB+DB PRESS Vol.101,初版,(株)技術評論社,2017年11月16日,pp.77-82 |
Also Published As
Publication number | Publication date |
---|---|
JP2019185423A (en) | 2019-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4866864B2 (en) | Method and program for managing access to shared resources in a multi-processor environment | |
JP6294586B2 (en) | Execution management system combining instruction threads and management method | |
JP5505914B2 (en) | Method for optimizing logging and playback of multitasking applications in a single processor or multiprocessor computer system | |
JP5102634B2 (en) | How to count instructions for logging and playing deterministic event sequences | |
US9075692B2 (en) | Method, device and system for activating on-line patch | |
EP2962192B1 (en) | System and method thereof to optimize boot time of computers having multiple cpus | |
US8286152B2 (en) | Systems, methods, and computer products for just-in-time compilation for virtual machine environments for fast application startup and maximal run-time performance | |
US9582312B1 (en) | Execution context trace for asynchronous tasks | |
US20110258608A1 (en) | Method and apparatus to locate bottleneck of java program | |
US20070226715A1 (en) | Application server system and computer product | |
JP2008529114A5 (en) | ||
US8990551B2 (en) | Analysis and visualization of cluster resource utilization | |
US9904581B2 (en) | System, method, program, and code generation unit | |
US20150128147A1 (en) | Modified jvm with multi-tenant application domains and memory management | |
JP7015203B2 (en) | How to run the app | |
JP2008003882A (en) | Compiler program, area allocation optimizing method of list vector, compile processing device and computer readable medium recording compiler program | |
US8615760B2 (en) | Facilitating memory analysis | |
JP2820189B2 (en) | Control software execution system for numerical controller | |
US20120005460A1 (en) | Instruction execution apparatus, instruction execution method, and instruction execution program | |
EP3401784A1 (en) | Multicore processing system | |
JP5678347B2 (en) | IT system configuration method, computer program thereof, and IT system | |
JP5186334B2 (en) | Conversion device, program, and conversion method | |
Wu et al. | Extending Heron Scheduler | |
Blewett et al. | An Introduction to Asynchronous Programming | |
JP2014078088A (en) | Program control method, and device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20201027 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20211006 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20211012 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20211109 |
|
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: 20220111 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20220121 |