JP2011198363A - プログラムコンパイラ、プログラム設置装置、及びプログラム設置方法 - Google Patents
プログラムコンパイラ、プログラム設置装置、及びプログラム設置方法 Download PDFInfo
- Publication number
- JP2011198363A JP2011198363A JP2011054345A JP2011054345A JP2011198363A JP 2011198363 A JP2011198363 A JP 2011198363A JP 2011054345 A JP2011054345 A JP 2011054345A JP 2011054345 A JP2011054345 A JP 2011054345A JP 2011198363 A JP2011198363 A JP 2011198363A
- Authority
- JP
- Japan
- Prior art keywords
- program
- execution
- function
- snapshot
- installation
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/54—Link editing before load time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
【課題】 プログラムコンパイラ、プログラム設置装置、及びプログラム設置方法を提供する。
【解決手段】 本発明の一態様によるプログラム設置装置は、スナップショットイメージを用いてプログラムを即時実行可能な形態で設置することができる。スナップショットイメージは、プログラムの部分実行結果を保存している。スナップショットイメージが生成される地点であるスナップショットポイントは、プログラムに対するシステム実行環境の依存性を分析して定められる。プログラム設置装置は、システム実行環境に影響を受けない部分をあらかじめ実行してスナップショットイメージを作り、このスナップショットイメージに基づいて短い初期起動時間でプログラムを実行することができる。
【選択図】 図1
【解決手段】 本発明の一態様によるプログラム設置装置は、スナップショットイメージを用いてプログラムを即時実行可能な形態で設置することができる。スナップショットイメージは、プログラムの部分実行結果を保存している。スナップショットイメージが生成される地点であるスナップショットポイントは、プログラムに対するシステム実行環境の依存性を分析して定められる。プログラム設置装置は、システム実行環境に影響を受けない部分をあらかじめ実行してスナップショットイメージを作り、このスナップショットイメージに基づいて短い初期起動時間でプログラムを実行することができる。
【選択図】 図1
Description
本発明は、実行速度を高めるためのプログラム設置技術に関する。
プログラムが実行されるためには、所定のコストがかかる。プログラム実行のためのコストには、プログラムのハードディスクドライブ(Hard Disk Drive:以下、HDD)からメモリ(Random Access Memory、RAM)へのローディングコスト、関連ライブラリーのローディングコスト、プログラムと関連した共有ライブラリーの再配置コスト、プログラムのメイン関数の進入前の初期化関数の実行コストなどがある。
最近、プログラムが次第に複雑になって知能化されながら、このようなコストも増加し、プログラム実行に必要なコストを減らすための研究に関心が高まりつつある。
プログラムの実行コストを減らすための方法としては、入出力性能に優れた保存装置を利用する方法が代表的である。例えば、HDDより入出力性能に優れたSSD(Solid State Drive)を用いてプログラムのメモリへのローディング速度を高めることができる。
本発明は、プログラムコンパイラ、プログラム設置装置、及びプログラム設置方法を提供することを目的とする。
本発明の一態様による装置は、プログラムの実行順序上の所定地点をスナップショットポイントとして設定するスナップショットポイント設定部と、前記スナップショットポイントまで前記プログラムを実行する第1実行部と、前記スナップショットポイントまでの前記プログラムの実行結果を保存するスナップショットイメージ保存部と、を含みうる。
本発明の一態様によるコンパイラは、プログラムの実行順序上で、システムコールの使用如何によって、システム実行環境に実質的に影響を受ける部分を検出する依存性分析部と、前記システム実行環境に実質的に影響を受ける部分の実行順序を調節する再配列部と、を含みうる。
本発明の一態様による方法は、プログラムの実行順序上の所定部分をスナップショットポイントとして設定する段階と、前記スナップショットポイントまで前記プログラムを実行する段階と、前記スナップショットポイントまでの前記プログラムの実行結果を保存する段階と、を含みうる。
本発明の一態様によるコンピュータで判読可能な記録媒体は、プログラムの実行順序上の所定部分をスナップショットポイントとして設定する段階と、前記スナップショットポイントまで前記プログラムを実行する段階と、前記スナップショットポイントまでの前記プログラムの実行結果を保存する段階と、を含むプログラム設置及び実行方法が記録されうる。
本発明の他の態様による装置は、プログラムの実行順序上の特定の位置をスナップショットポイントとして設定するスナップショットポイント設定部と、前記スナップショットポイントまで前記プログラムを実行する第1実行部と、前記プログラムのスナップショットポイント以後の残りの部分を実行する第2実行部と、を含みうる。
本発明の他の態様による方法は、プログラムの実行順序上の特定の位置をスナップショットポイントとして設定する段階と、前記スナップショットポイントまで前記プログラムを実行する段階と、前記プログラムのスナップショットポイント以後の残りの部分を実行する段階と、を含みうる。
以下、添付した図面を参照して、本発明の実施のための具体的な例を詳しく説明する。
図1は、本発明の一実施形態によるプログラム設置及び実行装置を示す図である。図1を参照すると、プログラム設置及び実行装置100は、スナップショットポイント設定部101、実行部102、スナップショットイメージ保存部103、及びローディング部104を含む。
スナップショットポイント設定部101は、プログラムの実行順序のうち、特定の部分をスナップショットポイント(snapshot point)として設定する。
スナップショットポイントとは、プログラムの部分実行地点に対応する。例えば、実行部102が、一連の関数(または、コード)で構成されたプログラムを実行する時、実行部102は、スナップショットポイント設定部101の制御命令によって設定されたスナップショットポイントまでにプログラムを部分的に実行させることができる。
スナップショットポイント設定部101は、プログラムの実行順序でシステム実行環境に依存的な部分を検出し、該検出されたシステム実行環境に依存的な部分に基づいてスナップショットポイントの設定位置を決定する。
システム実行環境とは、運用体制及びプログラムの初期入力値などになり、システム実行環境に依存的な部分は、このような初期入力値などに影響を受ける関数またはコードになりうる。例えば、あるプログラムが、A関数、B関数、C関数、及びD関数の順序で実行され、C関数が、システム実行環境に依存的な関数であると仮定すれば、スナップショットポイント設定部101は、B関数の実行完了地点またはC関数の実行開始地点をスナップショットポイントの設定位置として決定することができる。
スナップショットポイント設定部101は、プログラムを構成する関数のシステムコールの使用如何によって、システム実行環境に依存的な部分を検出することができる。例えば、スナップショットポイント設定部101は、プログラムを構成する関数を分析してシステムコールを使う関数を検出し、システムコールを使う関数が実行される部分をシステム実行環境に依存性がある部分として検出することができる。
第1実行部112は、スナップショットポイント設定部101によって設定されたスナップショットポイントまでプログラムの一部分を実行する。例えば、あるプログラムが、A関数、B関数、C関数、及びD関数の順序で実行され、B関数の実行完了地点またはC関数の実行開始地点がスナップショットポイントとして設定された場合、第1実行部112は、全体プログラムでA関数及びB関数のみ実行することができる。
スナップショットイメージ保存部103は、第1実行部112の部分実行結果であるスナップショットイメージを生成し、該生成されたスナップショットイメージを保存する。スナップショットイメージは、プログラムがスナップショットポイントまで実行された時の結果値、レジストリ情報、及びメモリ情報などを含みうる。生成されたスナップショットイメージは、不揮発性メモリに保存することができる。不揮発性メモリとしては、PRAM(Phase−change Memory)、MRAM(Magnetic Random Access Memory)、FRAM(Ferroelectric Random Access Memory)などが使われる。
ローディング部104は、スナップショットイメージ保存部103でスナップショットイメージをローディングする。ローディング部104は、ユーザの実行要請または実行命令がある場合に、スナップショットイメージをローディングすることができる。
第2実行部122は、ローディング部104がローディングしたスナップショットイメージに基づいてプログラムの残りの部分、すなわち、スナップショットポイント以後の部分を実行する。例えば、A関数、B関数、C関数、及びD関数の順序で実行され、B関数の実行完了地点またはC関数の実行開始地点がスナップショットポイントとして設定された場合、プログラムが設置されるやいなや第1実行部112は、全体プログラムでA関数及びB関数のみ実行し、第2実行部122は、設置以後のユーザの実行命令によって残りのC関数及びD関数を実行することができる。
このように、プログラム設置及び実行装置100は、あるプログラムを即時実行される形態で設置することが可能である。すなわち、スナップショットポイントは、システム実行環境を考慮してその位置が決定されるために、プログラムが設置されるやいなやスナップショットポイントまであらかじめ実行させ、以後の実行要請に対しては、スナップショットイメージに基づいてスナップショットポイント以後を実行することができる。したがって、設置されたプログラムまたは更新によって再設置されたプログラムの初期起動時間を減らすことができる。
図2は、本発明の一実施形態によるスナップショットポイント設定部を示す図である。図2を参照すると、スナップショットポイント設定部101は、依存性分析部201、再配列部202及び位置決定部203を含む。
依存性分析部201は、プログラムを構成する関数またはコードに対するシステム実行環境の依存性を分析する。
本実施形態で、システム実行環境に依存性がある関数またはコードを従属関数であると指称し、システム実行環境に依存性がない関数またはコードを独立関数であると指称する。あるプログラムが、メイン関数とメイン関数の進入前の初期化関数で構成された場合、初期化関数は、システム実行環境の依存性によって独立関数と従属関数とに区分することができる。初期化関数は、メイン関数の実行前に実行または呼び出される全域クラス生成子または共有ライブラリーの初期関数などになりうる。ある初期化関数が、独立関数であるか、または従属関数であるかは、その初期化関数が、システムコールを使用するか否かによって決定されうる。例えば、システムメモリ量によって相異なる経路に分岐される関数の場合、システム実行環境に影響を受ける従属関数になりうる。
依存性分析部201は、システムコールの使用如何によって、プログラムの実行順序でシステム実行環境に依存的な部分を検出することができる。
再配列部202は、依存性分析部201が分析した初期化関数に対するシステム実行環境の依存性に基づいてシステム実行環境に影響を受ける初期化関数が最大限遅く実行されるように、初期化関数の実行順序を変更する。
例えば、メイン関数の進入前に、A関数、B関数、C関数、及びD関数などの初期化関数が存在し、そのうち、B関数が、システム実行環境に影響を受ける従属関数であると仮定すれば、再配列部202は、B関数の実行順序または呼び出し順序をA関数、C関数、及びD関数の実行順序または呼び出し順序より裏側に位置させることができる。
位置決定部203は、依存性分析部201が分析した初期化関数に対するシステム実行環境の依存性及び再配列部202の実行順序の調節に基づいてスナップショットポイントの設定位置を決定する。
位置決定部203は、従属関数の実行開始地点をスナップショットポイントの設定位置として決定することができる。例えば、再配列部202によって初期化関数の実行順序が、A関数、C関数、D関数、及びB関数の順序で調節された場合、位置決定部203は、D関数の実行完了地点またはB関数の実行開始地点をスナップショットポイントの設定位置として決定することができる。
図3は、本発明の一実施形態によるプログラム及びプログラムの実行順序を示す図である。図3を参照すると、プログラムは、初期化関数301とメイン関数302とを含む。
メイン関数302は、プログラムの主要機能を実行する部分であり、初期化関数301は、メイン関数302の実行前に実行または呼び出される全域クラス生成子または共有ライブラリーの初期関数になりうる。
プログラムが設置されれば、スナップショットポイント設定部101は、プログラムの実行順序でシステム実行環境に影響を受ける部分を検出する。例えば、A関数、B関数、C関数、及びD関数からなる初期化関数のシステムコールの有無を分析した結果、C関数が、システムコールを使う場合、スナップショットポイント設定部101は、C関数をシステム実行環境に影響を受ける従属関数として検出することができる。
システム実行環境に影響を受ける部分が検出されれば、スナップショットポイント設定部101は、システム実行環境に影響を受ける部分に基づいてプログラムの部分実行地点であるスナップショットポイント303を設定する。例えば、スナップショットポイント設定部101は、従属関数として検出されたC関数の実行開始地点をスナップショットポイント303として設定することができる。
スナップショットポイント303が設定されれば、第1実行部112は、スナップショットポイント303までプログラムを実行する。例えば、第1実行部112は、初期化関数301のうち、A関数及びB関数を実行することができる。
スナップショットポイント303までプログラムが部分的に実行されれば、プログラムの部分実行結果であるスナップショットイメージが生成及び保存される。例えば、スナップショットイメージ保存部103は、A関数及びB関数が実行された時の結果値、レジストリ情報及びメモリ情報をスナップショットイメージとして生成して不揮発性メモリに保存することができる。
以後、ユーザのプログラム実行要請または実行命令がある場合、ローディング部104は、保存されたスナップショットイメージをローディングし、第2実行部122がローディングされたスナップショットイメージに基づいて、C関数、D関数、及びメイン関数を実行することが可能である。
図4A及び図4Bは、本発明の他の実施形態によるプログラム及びプログラムの実行順序を示す図である。
図4Aを参照すると、プログラムは、初期化関数301とメイン関数302とを含む。初期化関数301及びメイン関数302は、図3から説明したものと同じである。図4Aで、プログラムが設置されれば、依存性分析部201は、プログラムの実行順序でシステム実行環境に影響を受ける部分を検出する。例えば、A関数、B関数、C関数、及びD関数からなる初期化関数のシステムコールの有無を分析した結果、C関数がシステムコールを使う場合、依存性分析部201は、C関数をシステム実行環境に影響を受ける従属関数として検出することができる。
従属関数であるC関数が検出されれば、再配列部202は、初期化関数301の実行順序を調節する。例えば、図4Bのように、再配列部202は、従属関数として検出されたC関数がD関数より遅く実行されるように実行順序を変更する。
図4Bで、初期化関数301の実行順序が調節されれば、位置決定部203は、依存性分析部201が検出した従属関数を用いてスナップショットポイント303の設定位置を決定する。例えば、位置決定部203は、従属関数であるC関数の実行開始地点をスナップショットポイント303として設定することができる。
このように、プログラム設置及び実行装置100は、あるプログラムをシステム実行環境に影響を受けない部分をあらかじめ実行させて設置することができ、以後の実行要請に対しては、あらかじめ実行させた部分を省略し、その以後の部分から即時実行が可能であるので、プログラムの初期起動時間を減らすことができる。また、システム実行環境に依存性がある部分が最大限遅く実行されるように初期化関数の実行順序を調節するために、プログラムの初期起動時間をさらに短縮させることができる。
図5は、本発明の一実施形態によるプログラム設置方法を示す図である。図5を参照すると、プログラム設置方法500は、あるプログラムが新たに設置される場合、または設置されたプログラムが更新によって再設置される場合、全てに適用可能である。
図5で、プログラム設置方法500は、プログラム設置命令または更新命令によってプログラムが設置されれば開始される。理解の便宜上、プログラムの各種コードがシステムに保存される一般的な設置過程を第1設置過程であると名付ける。すなわち、プログラム設置方法500は、第1設置過程が完了されれば開始されうる。
第1設置過程が完了されれば、本実施形態による第2設置過程が開始されるが、第2設置過程によってプログラム設置方法500は、スナップショットポイントを設定する(501)。スナップショットポイントは、第1設置過程を通じて設置されたプログラムの部分実行地点になりうる。例えば、スナップショットポイント設定部101が、初期化関数のシステムコールの使用如何を分析してシステム実行環境に依存的な部分をスナップショットポイントとして設定することができる。
そして、プログラム設置方法500は、設定されたスナップショットポイントまでプログラムを実行する(502)。例えば、第1実行部112が、第1設置過程を通じて設置されたプログラムをシステム実行環境に影響を受けない部分まであらかじめ実行させることが可能である。
そして、プログラム設置方法500は、スナップショットポイントまでのプログラム実行結果をスナップショットイメージとして生成及び保存する(503)。例えば、スナップショットイメージ保存部103が、第1実行部112の実行結果値、レジストリ情報及びメモリ情報を不揮発性メモリに保存することが可能である。
スナップショットポイントは、システム実行環境に依存的な部分に基づいて設定されるので、第2設置過程を通じてシステム実行環境に影響を受けない部分があらかじめ実行され、即時実行可能な形態でプログラムが設置されることもある。
図6は、本発明の一実施形態によるプログラム実行方法を示す図である。図6を参照すると、プログラム実行方法600は、図5のような過程を通じてプログラムが設置された以後に、ユーザの実行要請または実行命令がある場合に開始されうる。また、プログラム実行方法600は、任意のまたは定められた時間にスナップショットイメージを生成するためにプログラムのインストール段階で実行することもある。
図6で、プログラム実行方法600は、ユーザの実行要請または実行命令によってスナップショットイメージをローディングする(601)。例えば、ローディング部104が、スナップショットイメージ保存部103でスナップショットイメージをローディングすることができる。
そして、プログラム実行方法600は、ローディングされたスナップショットイメージが実行可能な形態であるか否かを判断する(602)。判断の結果、実行可能な形態であれば、スナップショットイメージを用いてプログラムを実行する(603)。例えば、第2実行部122が、ローディングされたスナップショットイメージに基づいてスナップショットポイント以後の残りのプログラム部分を実行することができる。判断の結果、実行可能な形態ではないならば、スナップショットイメージを再生成する(604)。スナップショットイメージを再生成する過程は、図5の過程による。
生成されたスナップショットイメージは、プログラムが更新されることによって更新及び/または再生成されうる。また、生成されたスナップショットイメージは、プログラムが更新されることによって無効化され、再び生成されることもある。スナップショットタイミングは、プログラムのシステムコールに基づいて決定されうる。
プログラマーは、ソースコードを訂正することができる。プログラマーは、システムコールの発生時間に関する情報を提供するためにヒント(hint)を提供することもできる。システムコールの発生位置は、ソース/バイナリ静的解析ツールを通じて分かる。システムコールの発生は、運用体制のシステムコールインターフェースを通じて確認されうる。初期関数は、スナップショットタイミングを遅延させるために再配置されうる。プログラマーは、初期関数が再配置されるようにソースを訂正することができる。初期関数の再配置のために、静的解析ツールを通じて自動化ツールが新たに形成されることもある。初期関数の再配置のためにプログラムバイナリが訂正されることもある。
ソース(例えば、ソースコード)静的解析ツールは、応用プログラムのソースコードを有しているという仮定下で、プログラムソースをパージングして、システムコール(system call)を呼び出す関数または間接的にシステムコールを呼び出すライブラリー関数(library function)を探す方法を言う。バイナリ静的解析ツールは、応用プログラムの実行ファイルフォーマット(ex、ELF、COFF)のコードセクション(code section)を探してアセンブリー言語(assembly language)を分析して、システムコールを呼び出す関数または間接的にシステムコールを呼び出すライブラリー関数を探す方法を言う。
自動化ツールは、次のように動作することができる。
1.関数の呼び出し時ごとに特定の関数を呼び出すモードでソースコードを再コンパイルする(ex、−finstrument−function in GCC)。
2.プログラムを実行させ、1番から言及した特定の関数は、呼び出される度に如何なる関数が呼び出されたのかを記録する。
3.プログラムの起動(startup)が完了されれば終了する。
4.2番から得た関数をソースコードに基づいて分析して、順序が変わっても実行に問題にならなければ(ex、全域の親子関係ではないクラスの生成子関数)、当該関数のリスト(list)をリンカー(linker)に引き渡す。
5.リンカーは、当該関数の呼び出し順序を裏側に来るように再配置する。
開発者は、自身が使う関数がシステムの状態(state)によって行動が変わる関数であるか否かが分かる。したがって、当該関数のソースコード上に、そのような関数が呼び出される直前システムに、その事実を知らせる特定の関数を挿入するか、またはそのような関数をプログラマーが、ソースコード上に特定のアトリビュート(attribute)で宣言してコンパイラに知らせ、コンパイラは、そのような関数をコンパイルする時、システムにその事実を知らせる特定の関数を挿入することが可能である。
図7は、本発明の一実施形態によるコンピューティング装置を示す図である。図7を参照すると、コンピューティング装置700は、中央処理部701、入出力部702、及び保存部703を含む。
本実施形態による中央処理部701は、プログラムを設置する時、プログラムの各種コードを保存部703に予備的に設置した後、予備的に設置したプログラムを部分的に実行してスナップショットイメージを生成し、該生成されたスナップショットイメージを保存してプログラムを最終的に設置する。
保存部703は、メインメモリとハードディスクとに区分されることもある。本実施形態によって少なくとも保存部703のメインメモリは、不揮発性メモリとして形成される。したがって、スナップショットイメージが、保存部703に保存された後、保存部703への電源供給が遮断されても、スナップショットイメージは維持されうる。
また、中央処理部701は、保存部703に保存されたスナップショットイメージを用いてプログラムを実行し、その実行結果を入出力部702を通じてユーザに提供する。
図8は、本発明の一実施形態によるコンパイラを示す図である。図8を参照すると、コンパイラ800は、依存性分析部801、再配列部802、及び実行ファイル生成部803を含む。
依存性分析部801は、プログラムを構成する関数またはコードに対するシステム実行環境の依存性を分析する。例えば、依存性分析部801は、プログラムを構成する関数がシステムコールを使用するか否かによって、システム実行環境に依存的な従属関数を検出することができる。
再配列部802は、システム実行環境に依存的な従属関数の実行または呼び出し順序が最大限遅くなるように、関数の実行順序または呼び出し順序を調節する。
実行ファイル生成部803は、調節された関数の実行順序または呼び出し順序に基づいてプログラムの実行ファイルを生成する。
一方、本発明の実施形態は、コンピュータで読み取り可能な記録媒体にコンピュータで読み取り可能なコードとして具現することが可能である。コンピュータで読み取り可能な記録媒体は、コンピュータシステムによって読み取れるデータが保存されるあらゆる種類の記録装置を含む。
コンピュータで読み取り可能な記録媒体の例としては、ROM、RAM、CD−ROM、磁気テープ、フロッピー(登録商標)ディスク、光データ保存装置などがあり、また、キャリアウェーブ(例えば、インターネットを通じる伝送)の形態で具現するものを含む。また、コンピュータで読み取り可能な記録媒体は、ネットワークで連結されたコンピュータシステムに分散されて、分散方式でコンピュータで読み取り可能なコードとして保存されて実行可能である。そして、本発明を具現するための機能的な(functional)プログラム、コード及びコードセグメントは、本発明が属する技術分野のプログラマーによって容易に推論されうる。
以上、本発明の実施のための具体的な例を説明した。前述した実施形態は、本発明を例示的に説明するためのものであって、本発明の権利範囲が特定の実施形態に限定されない。
本発明は、実行速度を高めるためのプログラム設置技術分野に適用されうる。
100 プログラム設置及び実行装置
101 スナップショットポイント設定部
102 実行部
103 スナップショットイメージ保存部
104 ローディング部
112 第1実行部
122 第2実行部
201 依存性分析部
202 再配列部
203 位置決定部
301 初期化関数
302 メイン関数
303 スナップショットポイント
500 プログラム設置方法
600 プログラム実行方法
700 コンピューティング装置
701 中央処理部
702 入出力部
703 保存部
800 コンパイラ
101 スナップショットポイント設定部
102 実行部
103 スナップショットイメージ保存部
104 ローディング部
112 第1実行部
122 第2実行部
201 依存性分析部
202 再配列部
203 位置決定部
301 初期化関数
302 メイン関数
303 スナップショットポイント
500 プログラム設置方法
600 プログラム実行方法
700 コンピューティング装置
701 中央処理部
702 入出力部
703 保存部
800 コンパイラ
Claims (47)
- プログラムの実行順序上の所定地点をスナップショットポイントとして設定するスナップショットポイント設定部と、
前記スナップショットポイントまで前記プログラムを実行する第1実行部と、
前記スナップショットポイントまでの前記プログラムの実行結果を保存するスナップショットイメージ保存部と、
を含むことを特徴とするプログラム設置及び実行装置。 - 前記スナップショットポイントまでの実行結果をローディングするスナップショットイメージローディング部と、
前記ローディングされたスナップショットイメージに基づいて、前記プログラムのスナップショットポイント以後の残りの部分を実行する第2実行部と、
を含むことを特徴とする請求項1に記載のプログラム設置及び実行装置。 - 前記スナップショットポイント設定部は、
前記プログラムの実行順序のうち、システム実行環境に実質的に影響を受ける部分を検出し、該検出された部分に基づいて、前記スナップショットポイントの設定位置を決定することを特徴とする請求項1に記載のプログラム設置及び実行装置。 - 前記システム実行環境に実質的に影響を受ける部分は、
前記プログラムの初期化関数のうち、システムコールを使う初期化関数の実行順序に対応することを特徴とする請求項3に記載のプログラム設置及び実行装置。 - 前記初期化関数は、
前記プログラムのメイン関数の実行前に実行される全域クラス生成子または共有ライブラリーの初期関数を含むことを特徴とする請求項4に記載のプログラム設置及び実行装置。 - 前記スナップショットポイント設定部は、
前記プログラムの実行順序上で、システムコールの使用如何によって、システム実行環境に実質的に影響を受ける部分を検出する依存性分析部と、
前記システム実行環境に実質的に影響を受ける部分の実行順序を調節する再配列部と、
を含むことを特徴とする請求項1に記載のプログラム設置及び実行装置。 - 前記プログラムは、システム実行環境に実質的に影響を受けない独立関数と前記システム実行環境に実質的に影響を受ける従属関数とを含み、
前記再配列部は、前記独立関数が、前記従属関数より相対的に先に実行または先に呼び出されるように、前記独立関数及び前記従属関数の実行順序を調節することを特徴とする請求項6に記載のプログラム設置及び実行装置。 - 前記プログラムは、
設置されたプログラムまたは設置後の更新されたプログラムを含むことを特徴とする請求項1に記載のプログラム設置及び実行装置。 - 前記実行結果は、
前記プログラムが、前記スナップショットポイントまで実行された時までのレジストリ情報及びメモリ情報を含むことを特徴とする請求項1に記載のプログラム設置及び実行装置。 - 前記実行結果は、
不揮発性メモリに保存されることを特徴とする請求項1に記載のプログラム設置及び実行装置。 - プログラムの実行順序上で、システムコールの使用如何によって、システム実行環境に実質的に影響を受ける部分を検出する依存性分析部と、
前記システム実行環境に実質的に影響を受ける部分の実行順序を調節する再配列部と、を含むことを特徴とするプログラムコンパイラ。 - プログラムの実行順序上の所定部分をスナップショットポイントとして設定する段階と、
前記スナップショットポイントまで前記プログラムを実行する段階と、
前記スナップショットポイントまでの前記プログラムの実行結果を保存する段階と、
を含むことを特徴とするプログラム設置及び実行方法。 - 前記保存された実行結果をローディングする段階と、
前記ローディングされた実行結果に基づいて、前記プログラムのスナップショットポイント以後の残りの部分を実行する段階と、
をさらに含むことを特徴とする請求項12に記載のプログラム設置及び実行方法。 - 前記スナップショットポイントを設定する段階は、
前記プログラムの実行順序のうち、システム実行環境に実質的に影響を受ける部分を検出し、該検出された部分に基づいて、前記スナップショットポイントの位置を決定する過程を含むことを特徴とする請求項12に記載のプログラム設置及び実行方法。 - 前記システム実行環境に実質的に影響を受ける部分は、
前記プログラムの初期化関数のうち、システムコールを使う初期化関数の実行順序に対応することを特徴とする請求項14に記載のプログラム設置及び実行方法。 - 前記初期化関数は、
前記プログラムのメイン関数の実行前に実行される全域クラス生成子または共有ライブラリーの初期関数を含むことを特徴とする請求項15に記載のプログラム設置及び実行方法。 - 前記プログラムは、システム実行環境に実質的に影響を受けない独立関数と前記システム実行環境に実質的に影響を受ける従属関数とを含み、
前記スナップショットポイントを設定する段階は、前記独立関数が、前記従属関数より相対的に先に実行または先に呼び出されるように、前記独立関数及び前記従属関数の実行順序を調節した後、前記スナップショットポイントの設定位置を決定する過程を含むことを特徴とする請求項12に記載のプログラム設置及び実行方法。 - 前記プログラムは、
設置されたプログラムまたは設置後の更新されたプログラムを含むことを特徴とする請求項12に記載のプログラム設置及び実行方法。 - 前記実行結果は、
前記プログラムが、前記スナップショットポイントまで実行された時までのレジストリ情報及びメモリ情報を含むことを特徴とする請求項12に記載のプログラム設置及び実行方法。 - 前記実行結果は、
不揮発性メモリに保存されることを特徴とする請求項12に記載のプログラム設置及び実行方法。 - 前記プログラムは、
スナップショットイメージを生成するために、前記プログラムの設置過程で実行されることを特徴とする請求項12に記載のプログラム設置及び実行方法。 - 前記プログラムの実行結果は、
前記プログラムの更新によって更新及び再生成されることを特徴とする請求項12に記載のプログラム設置及び実行方法。 - 前記プログラムの実行結果は、
前記プログラムの更新によって無効化されることを特徴とする請求項12に記載のプログラム設置及び実行方法。 - 前記各段階が実行される時点に対応するスナップショットタイミングは、前記プログラムのシステムコールに基づいて決定されることを特徴とする請求項12に記載のプログラム設置及び実行方法。
- ソース/バイナリ静的解析ツールを用いてシステムコールの発生位置を確認することを特徴とする請求項12に記載のプログラム設置及び実行方法。
- 運用体制のシステムコールインターフェースを通じてシステムコールの発生を確認することを特徴とする請求項12に記載のプログラム設置及び実行方法。
- 初期化関数は、スナップショットタイミングを遅延させるために再位置されることを特徴とする請求項12に記載のプログラム設置及び実行方法。
- 初期化関数を再位置するために静的解析ツールを用いて自動化ツールが新たに形成されることを特徴とする請求項12に記載のプログラム設置及び実行方法。
- 初期化関数を再位置させるためにプログラムバイナリが訂正されることを特徴とする請求項12に記載のプログラム設置及び実行方法。
- スナップショットイメージが無効化されることによって対応するスナップショットイメージが再生成されることを特徴とする請求項12に記載のプログラム設置及び実行方法。
- プログラムの実行順序上の所定部分をスナップショットポイントとして設定する段階と、
前記スナップショットポイントまで前記プログラムを実行する段階と、
前記スナップショットポイントまでの前記プログラムの実行結果を保存する段階と、
を含むことを特徴とするプログラム設置及び実行方法が記録されたコンピュータで判読可能な記録媒体。 - 前記保存された実行結果をローディングする段階と、
前記ローディングされた実行結果に基づいて、前記プログラムのスナップショットポイント以後の残りの部分を実行する段階と、
をさらに含むことを特徴とする請求項31に記載の記録媒体。 - 前記スナップショットポイントを設定する段階は、
前記プログラムの実行順序のうち、システム実行環境に実質的に影響を受ける部分を検出し、該検出された部分に基づいて、前記スナップショットポイントの位置を決定する過程を含むことを特徴とする請求項31に記載の記録媒体。 - 前記システム実行環境に実質的に影響を受ける部分は、
前記プログラムの初期化関数のうち、システムコールを使う初期化関数の実行順序に対応することを特徴とする請求項31に記載の記録媒体。 - 前記初期化関数は、
前記プログラムのメイン関数の実行前に実行される全域クラス生成子または共有ライブラリーの初期関数を含むことを特徴とする請求項31に記載の記録媒体。 - 前記プログラムは、システム実行環境に実質的に影響を受けない独立関数と前記システム実行環境に実質的に影響を受ける従属関数とを含み、
前記スナップショットポイントを設定する段階は、前記独立関数が、前記従属関数より相対的に先に実行または先に呼び出されるように、前記独立関数及び前記従属関数の実行順序を調節した後、前記スナップショットポイントの設定位置を決定する過程を含むことを特徴とする請求項31に記載の記録媒体。 - 前記プログラムは、
設置されたプログラムまたは設置後の更新されたプログラムを含むことを特徴とする請求項31に記載の記録媒体。 - 前記実行結果は、
前記プログラムが、前記スナップショットポイントまで実行された時までのレジストリ情報及びメモリ情報を含むことを特徴とする請求項31に記載の記録媒体。 - プログラムの実行順序上の特定の位置をスナップショットポイントとして設定するスナップショットポイント設定部と、
前記スナップショットポイントまで前記プログラムを実行する第1実行部と、
前記プログラムのスナップショットポイント以後の残りの部分を実行する第2実行部と、を含むことを特徴とするプログラム実行装置。 - 前記プログラムは、
システム実行環境に独立した独立関数と、
前記システム実行環境に依存的な従属関数と、を含み、
前記プログラム実行装置は、前記独立関数が、前記従属関数より先に実行または呼び出されるように、前記独立関数及び前記従属関数の実行順序を調節する再配置部をさらに含むことを特徴とする請求項39に記載のプログラム実行装置。 - 前記プログラムは、
設置されたプログラムまたは更新されたプログラムを含むことを特徴とする請求項39に記載のプログラム実行装置。 - 前記プログラムの実行結果は、前記スナップショットポイントまで実行されたプログラムのレジストリ情報及びメモリ情報のうち少なくとも一つを含むことを特徴とする請求項39に記載のプログラム実行装置。
- 前記プログラムの実行結果は、不揮発性メモリに保存されることを特徴とする請求項39に記載のプログラム実行装置。
- プログラムの実行順序上の特定の位置をスナップショットポイントとして設定する段階と、
前記スナップショットポイントまで前記プログラムを実行する段階と、
前記プログラムのスナップショットポイント以後の残りの部分を実行する段階と、
を含むことを特徴とするプログラム実行方法。 - 前記プログラムは、
システム実行環境に独立した独立関数と、
前記システム実行環境に依存的な従属関数と、を含み、
前記プログラム実行装置は、前記独立関数が、前記従属関数より先に実行または呼び出されるように、前記独立関数及び前記従属関数の実行順序を調節する段階をさらに含むことを特徴とする請求項44に記載のプログラム実行方法。 - 前記プログラムは、
設置されたプログラムまたは更新されたプログラムを含むことを特徴とする請求項44に記載のプログラム実行方法。 - 前記プログラムの実行結果は、前記スナップショットポイントまで実行されたプログラムのレジストリ情報及びメモリ情報のうち少なくとも一つを含むことを特徴とする請求項44に記載のプログラム実行方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020100025914A KR20110106716A (ko) | 2010-03-23 | 2010-03-23 | 프로그램 컴파일러, 설치 장치, 및 설치 방법 |
KR10-2010-0025914 | 2010-03-23 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011198363A true JP2011198363A (ja) | 2011-10-06 |
Family
ID=44310246
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011054345A Pending JP2011198363A (ja) | 2010-03-23 | 2011-03-11 | プログラムコンパイラ、プログラム設置装置、及びプログラム設置方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8762967B2 (ja) |
EP (1) | EP2372540A1 (ja) |
JP (1) | JP2011198363A (ja) |
KR (1) | KR20110106716A (ja) |
CN (1) | CN102200920A (ja) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8601473B1 (en) | 2011-08-10 | 2013-12-03 | Nutanix, Inc. | Architecture for managing I/O and storage for a virtualization environment |
TWI479418B (zh) * | 2012-01-19 | 2015-04-01 | Novatek Microelectronics Corp | 多媒體裝置的啟動方法及多媒體裝置 |
US9218373B2 (en) * | 2012-10-10 | 2015-12-22 | Business Objects Software Ltd. | In-memory data profiling |
US9183120B1 (en) * | 2013-06-04 | 2015-11-10 | The Mathworks, Inc. | Functional dependency analysis |
US9665386B2 (en) | 2013-06-14 | 2017-05-30 | Nutanix, Inc. | Method for leveraging hypervisor functionality for maintaining application consistent snapshots in a virtualization environment |
US9740514B1 (en) * | 2013-06-26 | 2017-08-22 | Nutanix, Inc. | Method and system to share data with snapshots in a virtualization environment |
US11243707B2 (en) | 2014-03-12 | 2022-02-08 | Nutanix, Inc. | Method and system for implementing virtual machine images |
US10613947B2 (en) | 2016-06-09 | 2020-04-07 | Nutanix, Inc. | Saving and restoring storage devices using application-consistent snapshots |
CN109144599B (zh) * | 2017-06-27 | 2021-09-24 | 上海木鸡网络科技有限公司 | 函数加载方法及装置、计算机可读存储介质、终端 |
CN109284166A (zh) * | 2017-07-20 | 2019-01-29 | 上海木鸡网络科技有限公司 | 执行程序的方法及装置、存储介质、工作站、终端 |
US10824522B2 (en) | 2017-11-27 | 2020-11-03 | Nutanix, Inc. | Method, apparatus, and computer program product for generating consistent snapshots without quiescing applications |
CN110109673B (zh) * | 2019-04-25 | 2020-10-30 | 武汉大学 | 一种基于北斗亚纳秒级高精度授时的编译器检测装置及方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04127330A (ja) * | 1990-09-19 | 1992-04-28 | Hitachi Ltd | プログラム入替方法 |
JP2003316578A (ja) * | 2002-03-19 | 2003-11-07 | Gateway Inc | 受注生産(bto)式パーソナルコンピュータ製造における高速ブート方法 |
US20050114871A1 (en) * | 2003-11-24 | 2005-05-26 | Wolff Adam G. | System for optimizing application start-up |
JP2005284491A (ja) * | 2004-03-29 | 2005-10-13 | Mitsubishi Electric Corp | 計算機の起動時間短縮方式 |
JP2007334869A (ja) * | 2006-05-16 | 2007-12-27 | Matsushita Electric Ind Co Ltd | プログラム起動装置、プログラム起動方法、起動処理プログラム及び集積回路 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1786211A3 (en) | 1996-09-11 | 2009-07-29 | Panasonic Corporation | Program reception/execution apparatus that can commence execution of a machine program having only received the program in part, and a program transmission apparatus that enables such execution |
US6742179B2 (en) * | 2001-07-12 | 2004-05-25 | International Business Machines Corporation | Restructuring of executable computer code and large data sets |
US20050003810A1 (en) * | 2003-05-28 | 2005-01-06 | Sun Microsystems, Inc. | Method and system for optimizing software program start-up time |
US7181646B2 (en) | 2003-09-16 | 2007-02-20 | Hitachi, Ltd. | Mapping apparatus for backup and restoration of multi-generation recovered snapshots |
US7440966B2 (en) | 2004-02-12 | 2008-10-21 | International Business Machines Corporation | Method and apparatus for file system snapshot persistence |
US7484220B2 (en) * | 2004-05-26 | 2009-01-27 | Qualcomm Incorporated | Method, software and apparatus for using application state history information when re-launching applications |
US7653794B2 (en) | 2006-05-08 | 2010-01-26 | Microsoft Corporation | Converting physical machines to virtual machines |
JP4725798B2 (ja) | 2006-06-21 | 2011-07-13 | 日本電気株式会社 | コンピュータシステム、ネットワークブートシステム、osイメージ切替方法、osイメージ切替プログラム |
JP2009151386A (ja) | 2007-12-18 | 2009-07-09 | Ricoh Co Ltd | 画像処理装置 |
KR101496325B1 (ko) * | 2008-01-16 | 2015-03-04 | 삼성전자주식회사 | 가상 머신의 상태를 저장, 복원하는 방법 및 장치 |
US8949801B2 (en) * | 2009-05-13 | 2015-02-03 | International Business Machines Corporation | Failure recovery for stream processing applications |
-
2010
- 2010-03-23 KR KR1020100025914A patent/KR20110106716A/ko not_active Application Discontinuation
- 2010-12-17 US US12/971,283 patent/US8762967B2/en active Active
-
2011
- 2011-03-11 JP JP2011054345A patent/JP2011198363A/ja active Pending
- 2011-03-14 EP EP11158003A patent/EP2372540A1/en not_active Withdrawn
- 2011-03-21 CN CN2011100674829A patent/CN102200920A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04127330A (ja) * | 1990-09-19 | 1992-04-28 | Hitachi Ltd | プログラム入替方法 |
JP2003316578A (ja) * | 2002-03-19 | 2003-11-07 | Gateway Inc | 受注生産(bto)式パーソナルコンピュータ製造における高速ブート方法 |
US20050114871A1 (en) * | 2003-11-24 | 2005-05-26 | Wolff Adam G. | System for optimizing application start-up |
JP2005284491A (ja) * | 2004-03-29 | 2005-10-13 | Mitsubishi Electric Corp | 計算機の起動時間短縮方式 |
JP2007334869A (ja) * | 2006-05-16 | 2007-12-27 | Matsushita Electric Ind Co Ltd | プログラム起動装置、プログラム起動方法、起動処理プログラム及び集積回路 |
Non-Patent Citations (1)
Title |
---|
JPN6015013217; '瞬間起動 フラッシュ・メモリがもたらす機器の進化 第3部<デジタル家電> 起動時間は10秒以下へ 対応技' 日経エレクトロニクス 第931号, 20060731, p.70-77, 日経BP社 * |
Also Published As
Publication number | Publication date |
---|---|
US20110239199A1 (en) | 2011-09-29 |
EP2372540A1 (en) | 2011-10-05 |
KR20110106716A (ko) | 2011-09-29 |
CN102200920A (zh) | 2011-09-28 |
US8762967B2 (en) | 2014-06-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2011198363A (ja) | プログラムコンパイラ、プログラム設置装置、及びプログラム設置方法 | |
JP6018590B2 (ja) | ライブラリーオペレーティングシステムによるアプリケーションの互換性 | |
US7568190B2 (en) | Late binding of optimization information for just in time compilation | |
JP5007046B2 (ja) | コンポーネントベースのソフトウェア・プロダクトの保守 | |
US8990786B2 (en) | Program optimizing apparatus, program optimizing method, and program optimizing article of manufacture | |
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 | |
KR101081090B1 (ko) | 명령어 스트림의 효율적인 에뮬레이션을 가능하게 하기 위한 레지스터 기반의 명령어 최적화 | |
US8910126B2 (en) | Compiling source code for debugging with variable value restoration based on debugging user activity | |
US8112745B2 (en) | Apparatus and method for capabilities verification and restriction of managed applications in an execution environment | |
US20130275947A1 (en) | Compiling Source Code For Debugging With User Preferred Snapshot Locations | |
WO2013165459A1 (en) | Control flow graph operating system configuration | |
JP5026494B2 (ja) | 高速で起動するコンピュータ | |
CN103345411A (zh) | 卸载应用程序的方法及装置 | |
US11983519B2 (en) | Abort installation of firmware bundles | |
EP2080115B1 (en) | Automatic native generation | |
EP3432149A1 (en) | A computer-implemented method and system of compiling a modified source code at a plurality of target machines | |
Robillard et al. | SMT-Based Planning Synthesis for Distributed System Reconfigurations. | |
JPWO2020017264A1 (ja) | シミュレーション装置、及びその方法、並びにecu装置 | |
US20130305094A1 (en) | Observability control with observability information file | |
US10552135B1 (en) | Reducing a size of an application package | |
WO2024051290A1 (zh) | 代码编译方法、装置、存储介质及电子设备 | |
CN110858142A (zh) | 一种应用的启动方法及装置 | |
US9558003B2 (en) | Reconfigurable processor for parallel processing and operation method of the reconfigurable processor | |
KR102021777B1 (ko) | 병렬 처리를 위한 재구성형 프로세서 및 재구성형 프로세서의 동작 방법 | |
RU2521265C2 (ru) | Система и способ автоматической обработки системных ошибок программного обеспечения |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20140305 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20150318 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20150407 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20150915 |