JP2016062311A - 更新装置及び情報処理方法 - Google Patents

更新装置及び情報処理方法 Download PDF

Info

Publication number
JP2016062311A
JP2016062311A JP2014189892A JP2014189892A JP2016062311A JP 2016062311 A JP2016062311 A JP 2016062311A JP 2014189892 A JP2014189892 A JP 2014189892A JP 2014189892 A JP2014189892 A JP 2014189892A JP 2016062311 A JP2016062311 A JP 2016062311A
Authority
JP
Japan
Prior art keywords
function
update
prohibition
program
information
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
Application number
JP2014189892A
Other languages
English (en)
Inventor
若林 昇
Noboru Wakabayashi
昇 若林
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2014189892A priority Critical patent/JP2016062311A/ja
Publication of JP2016062311A publication Critical patent/JP2016062311A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

【課題】プログラムを更新する際に用いる情報として、処理やデータの不整合の発生を防止できる更新処理情報を生成する更新装置及び情報処理方法を提供する。【解決手段】複数の関数を含む更新対象プログラムのうち更新対象となる更新対象関数及び更新対象関数と関連性を有する関数を入力して、各関数を更新禁止関数として管理する更新禁止関数入力部と、更新対象プログラムに属する各関数のシンボル情報とアドレス情報に基づいて各関数の関数名とアドレスとを関連づけた更新禁止関数リストを生成する更新禁止関数リスト生成部と、更新部分及び更新禁止関数リストを含む情報を、プログラム実行先に対する更新処理情報として管理する更新処理情報管理部と、を有し、更新処理情報管理部は、更新禁止関数に属する各関数が、その更新を禁止する関数である旨の更新禁止情報を更新処理情報に付加する。【選択図】図1

Description

本発明は、プログラムを更新するための情報を生成する更新装置及び情報処理方法に関する。
本技術分野の背景技術として、特開2010−130620号公報(特許文献1)がある。この公報には、「更新される旧部分モジュールに置き換えられる新部分モジュールを主メモリにアップロードする新モジュールアップロード手段と、主メモリ上で有効な部分モジュールを旧部分モジュールから新部分モジュールに切り替える新旧モジュール切り替え手段と、上述の切り替え後に、主メモリ上の旧部分モジュールをアンロードする旧モジュールアンロード手段とを有する」と記載されている(要約参照)。
特開2010−130620号公報
特許文献1には、プログラム管理テーブルを用いて新旧プログラムを切替え、サブルーチンの実行カウンタが0になるまで切替えない仕組みが記載されている。しかし、特許文献1の仕組みでは、更新タイミングに関して、更新対象関数とそのサブルーチンしか考慮しておらず、トランザクション処理やネットワーク通信を行う装置などでは、更新対象関数以外の関数を実行している場合でも、更新対象関数を更新することで処理やデータの不整合が起こる可能性がある。
本発明の目的は、更新対象プログラムの実行先で、更新対象プログラムを停止させることなく、その一部を更新する際に用いる情報として、処理やデータの不整合が発生するのを防止できる更新処理情報を生成することにある。
上記課題を解決するために、本発明は、複数の関数を含む更新対象プログラムを作成するプログラム作成部と、前記更新対象プログラムに対する更新部分を作成する更新部分作成部と、前記更新対象プログラムに属する複数の関数のうち更新対象となる更新対象関数及び当該更新対象関数から外れた関数であって前記更新対象関数と関連性を有する関数を入力し、当該入力した各関数を更新禁止関数として管理する更新禁止関数入力部と、前記更新対象プログラムに属する各関数のシンボル情報とアドレス情報に基づいて前記更新禁止関数に属する各関数の関数名と、前記更新対象プログラムの実行を管理するためのアドレスであって、前記更新禁止関数に属する各関数に割当てられたアドレスと、を関連づけた更新禁止関数リストを生成する更新禁止関数リスト生成部と、前記更新部分作成部の作成による更新部分及び前記更新禁止関数リスト生成部の生成による更新禁止関数リストを含む情報を、前記更新対象プログラムを実行するプログラム実行先に対する更新処理情報として管理する更新処理情報管理部と、を有し、前記更新処理情報管理部は、前記更新禁止関数に属する各関数が、前記更新対象プログラムの実行中、その更新を禁止する関数である旨の更新禁止情報を前記更新処理情報に付加してなることを特徴とする。
本発明によれば、更新対象プログラムの実行先で、更新対象プログラムを停止させることなく、その一部を更新する際に用いる情報として、処理やデータの不整合が発生するのを防止できる更新処理情報を生成することができる。
本発明の第1実施例を示す更新装置及び更新対象装置のブロック図である。 本発明の第1実施例における更新禁止関数リスト管理部のブロック図である。 本発明の第1実施例における更新禁止関数リストの構成図である。 本発明の第1実施例における動的プログラム更新部のブロック図である。 本発明の第1実施例におけるジャンプテーブルの構成図である。 本発明の第1実施例における更新禁止関数リストの設定処理手順を示すフローチャートである。 本発明の第1実施例における更新禁止関数リストの拡充処理手順を示すフローチャートである。 本発明の第1実施例における更新部分及び更新禁止関数リストの送信処理手順を示すフローチャートである。 本発明の第1実施例におけるプログラムの更新処理手順を示すフローチャートである。 本発明の第2実施例における更新禁止関数リスト管理部のブロック図である。 本発明の第2実施例における更新禁止関数リストの拡充処理手順を示すフローチャートである。
本実施例は、更新対象プログラムの更新部分及び更新対象プログラムの実行を管理するための更新禁止関数リストを含む更新処理情報を更新装置で生成し、生成した更新処理情報を更新装置から更新対象装置に送信し、更新処理情報を受信した更新対象装置が、受信した更新処理情報に従って更新対象プログラムを処理するものである。以下、本実施例を図1から図9を用いて説明する。
図1は、本実施例における更新装置及び更新対象装置の構成を示すブロック図である。図1において、更新装置101は、通信インターフェース装置、記憶資源(例えばメモリおよびHDD)、およびそれらに接続されたプロセッサ(CPU)を有し(いずれも図示せず)、プロセッサが、メモリに格納されたコンピュータプログラムを基に更新対象プログラム及び更新対象プログラムの更新部分(差分部分)を作成すると共に、更新対象プログラムの一部を更新するための情報を生成するコンピュータ装置として構成される。記憶資源には、更新部分作成部102と、プログラム作成部103と、更新禁止関数リスト管理部104及び1以上のコンピュータプログラムが記憶される。プロセッサ(CPU)が、記憶資源内の1以上のコンピュータプログラムを実行することにより、更新部分作成部102と、プログラム作成部103及び更新禁止関数リスト管理部104は、各部に付加された機能を発揮することができる。
更新部分作成部102は、更新対象プログラムに対して、更新対象関数を含む更新部分を作成する機能を有する。プログラム作成部103は、ソースコードからプログラムをコンパイルして、複数の関数を含む更新対象プログラムを作成する機能を有する。更新部分作成部102及びプログラム作成部103は、コンパイラやリンカ、Makefileなどのビルドシステムを含む構成である。更新禁止関数リスト管理部104は、ユーザインターフェース105を介して、入力部106に接続されると共に、ネットワークインターフェース107を介して更新対象装置110に接続され、更新対象プログラムの実行中は、更新対象プログラムの動的更新を禁止する関数のリスト(更新禁止関数リスト)を管理する機能を有する。入力部106は、各種情報を入力するユーザ端末、例えば、キーボード、マウス等で構成される。
更新対象装置110は、更新対象プログラムを搭載すると共に、搭載した更新対象プログラムを実行する機能を有し、更新装置101のプログラム作成部103で作成した更新対象プログラムを実行するプログラム実行部111と、プログラム実行部111で実行している更新対象プログラムに対して、この更新対象プログラムの一部を動的に更新する動的プログラム更新部112とから構成される。プログラム実行部111は、CPUやメモリなどのプログラム実行環境を含み、メモリには、プログラムの実行状態をアドレスで管理するプログラムカウンタや共有ライブラリの割り当てアドレスを管理するメモリマップ等が構築される。
ここで、本実施例の概略について説明する。まず、更新装置101では、プログラム作成部103にて、更新対象装置110を制御する更新対象プログラムを作成し、作成した更新対象プログラムを、ネットワークインターフェース107を介して更新対象装置110に転送し、プログラム実行部111で実行させる。なお、作成した更新対象プログラムをシリアル通信或いはROMライタなどによって更新対象装置110に転送することができる。更新対象装置110が365日24時間サービスを提供するような高可用性が求められる装置の場合、この実行している更新対象プログラムは基本的には実行し続けている。しかし、新サービスの追加や新たに見つかった問題の修復のために、更新対象プログラムを迅速に変更することが求められる。この要求に対しては、稼働中の更新対象プログラムを止めずに動いたままで、更新対象プログラムの一部を更新する動的プログラム更新が有効である。動的プログラム更新の単位は、プロセスから行単位まで様々な単位があるが、本実施例では関数単位とする。
更新装置101では、動的プログラム更新を可能にするために、プログラム作成部103で作成された更新対象プログラムであって、更新対象装置110のプログラム実行部111にて実行中の更新対象プログラムに対して、更新部分作成部102で、更新対象となる更新部分(差分部分)を作成する。更新部分の作成には既存の作成方法を用いてよい。通常、更新部分を更新装置101から更新対象装置110に送信し、更新対象装置110で、動的プログラム更新を行うが、本実施例では、更新装置101において、動的プログラム更新のタイミングに係わる更新禁止関数リストを用意し、更新禁止関数リスト管理部104で、更新禁止関数リストの作成と保存及び更新対象装置110への送信等を行う。なお、更新禁止関数とは、更新禁止関数実行中は、動的プログラム更新を行わない関数のことである。
このように、更新装置101で作成した更新部分と更新禁止関数リストを、更新装置101から更新対象装置110に送信する。更新対象装置110では、更新装置101から更新部分と更新禁止関数リストを受け取り、動的プログラム更新部112で更新禁止関数リストに記載されていない関数の実行時に、更新部分を適用して、プログラム実行部111で実行している更新対象プログラムに対して、この更新対象プログラムの一部を動的に更新する。
図2は、更新装置における更新禁止関数リスト管理部の構成を示したブロック図である。図2において、更新禁止関数リスト管理部104は、更新禁止関数名(シンボル名)を、ユーザインターフェース105を介して入力部106から取得する更新禁止関数名取得部201と、プログラム作成部103で作成した更新対象プログラムをプログラム作成部103から取得する更新対象プログラム取得部202と、更新対象プログラム取得部202で取得した更新対象プログラムの関数及びこの関数のアドレス一覧と更新禁止関数名取得部201で取得した更新禁止関数名とから、更新禁止関数の開始及び終了のアドレス範囲を取得する更新禁止関数アドレス範囲取得部203と、更新禁止関数アドレス範囲取得部203で取得した更新禁止関数のアドレスと更新禁止関数名の一覧を生成する更新禁止関数リスト生成部204と、更新禁止関数リスト生成部204で生成した更新禁止関数リストを不揮発メモリや磁気記憶装置などの不揮発性記憶装置(図示せず)に保存する更新禁止関数リスト保存部205と、更新対象プログラム取得部202で取得した更新対象プログラムに対して、更新対象関数及び更新禁止関数に係わるテストを実行するためのテストプログラムを、例えば、ネットワークインターフェース107を介して、テストプログラム管理装置(図示せず)から取得するテストプログラム取得部206と、エミュレータなどを含み、更新対象プログラム取得部202から更新対象プログラムを取り込むと共に、テストプログラム取得部206からテストプログラムを取り込み、このテストプログラムに従って更新対象関数及び更新禁止関数に係わるテストを実行するテストプログラム実行部207と、テストプログラム実行部207で実行したテストにおいて、更新対象プログラムの実行関数をトレースして関数コールグラフを作成し、作成結果を更新禁止関数アドレス範囲取得部203に追加する関数トレース取得部208と、更新部分作成部102で作成した更新部分を更新部分作成部102から取得する更新部分取得部209と、更新禁止関数リスト保存部205で保存した更新禁止関数リストと更新部分取得部209で取得した更新部分を、ネットワークインターフェース107などを介して更新対象装置110へ送信する送信部210から構成される。
この際、更新禁止関数名取得部201及び入力部105は、更新対象プログラムに属する複数の関数のうち更新対象となる更新対象関数及びこの更新対象関数から外れた関数であって更新対象関数と関連性を有する関数を入力し、入力した各関数を更新禁止関数として管理する更新禁止関数入力部として機能する。
ここで、本実施例では、更新禁止関数リストと更新部分を、送信部210からネットワークインターフェース107を介して送信するとしたが、取り外し可能な外付けメモリ装置やシリアルケーブルなどを介して受け渡ししても良い。また関数トレース取得部208は、取得した更新禁止関数に関する関数を、更新禁止関数アドレス範囲取得部203を介して更新禁止関数リスト生成部204に転送し、更新禁止関数リスト生成部204は、転送された関数を更新禁止関数リストに追加する。なお、関数トレース取得部208では、更新禁止関数に関する関数だけでなく、更新対象関数についてもトレース対象とする。この際、更新対象関数及びそのサブ関数は、更新対象関数実行時に自身を更新すると処理の不整合が起きるので、更新禁止関数とする。これにより、更新禁止関数名取得部201で取得した更新禁止関数だけでなく、更新禁止関数に係わる関数及び更新対象関数と更新対象関数に係わる関数についても、自動で更新禁止関数リストに追加することができる。
図3は、更新禁止関数リスト生成部で生成する更新禁止関数リストの構成図である。図3において、更新禁止関数リスト300は、更新禁止関数の関数名(シンボル名)を格納する更新禁止関数名欄301と、更新禁止関数名の開始アドレスから終了アドレスのアドレス範囲を格納するアドレス範囲欄302と、アドレス範囲欄302に格納したアドレスがオフセット値かどうかを示す情報を格納するオフセット欄303と、更新禁止関数名欄301に格納した更新禁止関数の実体が存在している保存先の情報として、共有ライブラリのライブラリ名を示す情報を格納する共有ライブラリ名欄304から構成される。
ここで、更新禁止関数が共有ライブラリの関数の場合、そのアドレス範囲は絶対アドレスにはなっておらず、更新装置101ではオフセット値しかわからない。その為、更新禁止関数が共有ライブラリの関数の場合は、オフセット欄303にオフセット値になっていることを示す情報が付加され、どの共有ライブラリに含まれているのかを示す情報が共有ライブラリ名欄304に記載される。なお、これらの情報は、更新対象装置110側で、メモリマップを基にオフセット値を絶対アドレスに変換する際に必要となる。また、更新禁止関数が共有ライブラリの関数ではなく、更新対象プログラム内にstaticに組込まれた関数の場合は、オフセット欄303及び前記共有ライブラリ名欄304の情報は不要である。
図3の例では、共有ライブラリが、「libAAA.so」内にあり、アドレス範囲が、「0xAAAA-OxBAAA」の関数funcXに対して、更新禁止関数名欄301には、更新禁止関数名として、「funcX」が記載され、アドレス範囲欄302には、アドレス範囲として、「0xAAAA-OxBAAA」が記載され、オフセット欄303には、アドレス値がオフセットとなっていることを示す情報として「○」が記載され、共有ライブラリ名欄304には、共有ライブラリ名として、「libAAA.so」が記載される。また、更新対象プログラム内にstaticに組込まれたアドレス範囲が「0x8888-0x9888」である関数funcYに対して、更新禁止関数名欄301には、更新禁止関数名として、「funcY」が記載され、アドレス範囲欄302には、アドレス範囲として、「0x8888-Ox9888」が記載され、オフセット欄303及び共有ライブラリ名欄304には、それぞれ「N/A」が記載される。
図4は、更新対象装置における動的プログラム更新部の構成を示したブロック図である。図4において、動的プログラム更新部112は、更新部分と更新禁止関数リストを含む送信データをネットワークインターフェース107などを介して更新装置101から受信する受信部401と、受信部401で受信した送信データから更新部分を取得して、不揮発性記憶装置(図示せず)に保存する更新部分取得部402と、更新部分取得部402で取得し保存した更新部分をメモリ(図示せず)に配置する更新部分メモリ配置部403と、受信部401で受信した送信データから更新禁止関数リストを取得して、不揮発性記憶装置に保存する更新禁止関数リスト取得部404と、メモリからメモリマップを取得するメモリマップ取得部405と、更新禁止関数リスト取得部404で取得して保存した更新禁止関数リスト内のオフセット欄303が、「○」となっている更新禁止関数のアドレス範囲に対して、メモリマップ取得部405で取得したメモリマップと更新禁止関数リストの共有ライブラリ名欄304の共有ライブラリ名を基に、オフセット値を絶対アドレスへ変換するオフセット−絶対アドレス変換部406と、プログラム実行部111で実行中の更新対象プログラムの現在のプログラムカウンタのカウント値(アドレス)をメモリから取得するプログラムカウンタ取得部407と、プログラムカウンタ取得部407で取得したプログラムカウンタのカウント値とオフセット−絶対アドレス変換部406でアドレス範囲が全て絶対アドレスに変換された更新禁止関数リストのアドレスとを比較して、更新対象関数を更新してよいか否かのタイミングを判断する更新タイミング判断部408と、更新タイミング判断部408で更新可能タイミングと判断した場合に、更新対象関数の現アドレスと、更新部分メモリ配置部403でメモリに配置した更新部分(更新対象関数)の新アドレスをスタックとするジャンプテーブルを生成するジャンプテーブル生成部409とから構成される。
ここで、本実施例では、更新部分と更新禁止関数リストを含む送信データを受信部401でネットワークインターフェース107を介して受信するとしたが、取り外し可能な外付けメモリ装置やシリアルケーブルなどを介して受け渡ししも良い。また、ジャンプテーブル生成部409でジャンプテーブルを生成すると、以後、更新対象プログラムに属する各関数が実行される過程で、更新対象関数(現アドレスに対応する更新対象関数)が呼ばれた場合、ジャンプテーブルを介して、更新部分メモリ配置部403でメモリに配置した更新部分(更新関数)の新アドレスにジャンプし、更新後の関数(更新部分の更新関数)が実行される。これにより、プログラムの停止なしでプログラムの一部を更新することができる。
図5は、ジャンプテーブル生成部で生成するジャンプテーブルの構成図である。図5において、ジャンプテーブル500は、更新対象関数の関数名を示す更新対象関数名欄501と、更新対象関数の実体がある新旧のジャンプ先アドレスを示すジャンプ先欄502から構成される。本実施例では、ジャンプ先欄502には、スタック方式でジャンプ先アドレスが格納される。例えば、更新対象関数の現アドレスが、「0x1111」として格納され、更新対象関数(更新部分)の新アドレスが、「0x2222」として格納される。なお、ジャンプ先欄502のジャンプ先アドレスは絶対アドレスである。
次に更新装置101における更新禁止関数リストを設定する処理手順について、図2と図3及び図6を用いて説明する。
図6は、本実施例における更新禁止関数リストを設定する処理手順を示すフローチャートである。本処理は更新装置101のユーザの指示により開始される。まず、更新対象プログラム取得部202は、プログラム作成部103から更新対象プログラムを取得する(ステップS601)。なお、ここで更新対象プログラムは、実行時にリンクする共有ライブラリも含む。また、更新対象プログラムのバイナリには、ビルド時に関数名などシンボル情報と各関数のアドレス情報が付加される。
次に、更新禁止関数名取得部201は、ユーザインターフェース105を介して入力部106から、更新禁止関数名(シンボル名)、例えば、更新対象関数及び更新対象関数に関連性を有する関数(更新対象関数以外の関数であって、その関数の実行中に、更新対象関数を更新すると、処理やデータの不整合が起こることが想定される関数)を含む関数の関数名を文字列で取得する(ステップS602)。
この後、更新禁止関数アドレス範囲取得部203は、更新対象プログラムに付加された情報を参照し、ステップS602で更新禁止関数名取得部201によって取得された更新禁止関数に対して、この更新禁止関数が、共有ライブラリ内の関数か否かを判断する(ステップS603)。更新禁止関数アドレス範囲取得部203は、ステップS603で、更新禁止関数が共有ライブラリ内の関数であると判断した場合、ステップS601で更新対象プログラム取得部202が取得した更新対象プログラムの中の更新禁止関数の実体が含まれる共有ライブラリから、更新禁止関数のアドレス情報をオフセット値として取得し(ステップS604)、ステップS603で、更新禁止関数が共有ライブラリ内の関数でないと判断した場合、ステップS601で更新対象プログラム取得部202が取得した更新対象プログラムに付加されたアドレス情報を基に、更新禁止関数のアドレスを絶対アドレスとして取得する(ステップS605)。
次に、更新禁止関数リスト生成部204は、ステップS602で更新禁止関数名取得部201が取得した更新禁止関数名と、ステップS604及びステップS605で更新禁止関数アドレス範囲取得部203が取得した更新禁止関数のアドレス範囲を、更新禁止関数リスト300へ記入する(ステップS606)。この際、更新禁止関数リスト生成部204は、ステップS604を経由した場合は、更新禁止関数リスト300のオフセット欄303にオフセット値を記入し、共有ライブラリ名欄304に共有ライブラリ名を記入し、ステップS605を経由した場合は、更新禁止関数リスト300のオフセット欄303及び共有ライブラリ名欄304にはそれぞれ「N/A」と記入する。
この後、更新禁止関数を他に追記したい場合、更新禁止関数リスト生成部204は、全ての更新禁止関数についてアドレス範囲を取得したか否かを判断する(ステップS607)。まだ追記する必要がある場合、すなわち全ての更新禁止関数についてアドレス範囲を取得していないと、更新禁止関数リスト生成部204が判断した場合、ステップS607からステップS602に戻って一連の処理を続ける。一方、ステップS607にて、他に追記する必要が無い場合、すなわち全ての更新禁止関数についてアドレス範囲を取得したと、更新禁止関数リスト生成部204が判断した場合、更新禁止関数リスト保存部205は、更新禁止関数リスト300をメモリに保存し、一連の処理を終了する。これにより、更新装置101のユーザが指定した更新禁止関数全てについて更新禁止関数リスト300を作成することができる。すなわち、更新禁止関数リスト生成部204は、更新対象プログラムに属する各関数のシンボル情報とアドレス情報に基づいて更新禁止関数に属する各関数の関数名と、更新対象プログラムの実行を管理するためのアドレスであって、更新禁止関数に属する各関数に割当てられたアドレスとを関連づけた更新禁止関数リスト300を生成することになる。
次に、更新装置101における更新禁止関数リストを拡充する処理手順について、図2と図3及び図7を用いて説明する。なお、プログラムを更新する際は、更新対象関数が正しく動くのかテストをする必要がある。その際に、更新禁止関数に対するテストも実施し、テスト実施時の関数トレース情報を用いて更新禁止関数リストを拡充するものである。
図7は、本実施例における更新禁止関数に関わる関数一覧を取得し更新禁止関数リストを拡充する処理手順を示すフローチャートである。本処理は、更新装置101のユーザの指示により開始しても良いし、図6で示した更新禁止関数リストを設定する処理の終了を契機に開始しても良い。
まず、更新対象プログラム取得部202は、プログラム作成部103から更新対象プログラムを取得する(ステップS701)。なお、ここで更新対象プログラムは、実行時にリンクする共有ライブラリも含む。また、更新対象プログラムのバイナリには、ビルド時に関数名などのシンボル情報と各関数のアドレス情報(絶対アドレスまたはオフセットアドレス)が付加される。
次に、テストプログラム取得部206は、更新対象プログラム取得部202によって取得された更新対象プログラムに対して、更新対象関数及び更新禁止関数に係わるテストを実行するためのテストプログラムをネットワークインターフェース107を介して取得し(ステップS702)、更新対象プログラムに対して関数トレース機能をONにして関数トレースを取得できるようにする(ステップS703)。なお、テストプログラムを更新装置101のメモリに予め格納し、テストプログラム取得部206が、メモリからテストプログラムを取得することもできる。
次に、テストプログラム実行部207は、ステップS702で取得した、更新対象関数及び更新禁止関数に係わるテストプログラムを実行する(ステップS704)。このテスト後、関数トレース取得部208は、ステップS704で実行したテストにおいて、更新対象プログラムの実行関数をトレースして、関数コールグラフを作成する(ステップS705)。なお、この関数トレースには、サブ関数等の更新対象関数及び更新禁止関数に係わる関数が含まれている。
次に、更新禁止関数アドレス範囲取得部203は、ステップS705で取得した関数トレース結果の各関数について、各関数が共有ライブラリ内の関数か否かを判断する(ステップS706)。更新禁止関数アドレス範囲取得部203は、ステップS706で、関数トレース結果の関数が共有ライブラリ内の関数であると判断した場合、ステップS701で更新対象プログラム取得部202が取得した更新対象プログラムの中の関数の実体が含まれる共有ライブラリから、関数のアドレスをオフセット値として取得し(ステップS707)、ステップS706で、関数が共有ライブラリ内の関数でないと判断した場合、ステップS701で更新対象プログラム取得部202が取得した更新対象プログラムに付加されたアドレス情報を参照し、関数のアドレスを絶対アドレスとして取得する(ステップS708)。
次に、更新禁止関数リスト生成部204は、ステップS705で関数トレース取得部208が取得した関数名と、ステップS707及びステップS708で更新禁止関数アドレス範囲取得部203が取得した関数のアドレス範囲を、更新禁止関数リスト300へ記入する(ステップS709)。この際、更新禁止関数リスト生成部204は、ステップS707を経由した場合は、更新禁止関数リスト300のオフセット欄303にオフセット値を記入し、共有ライブラリ名欄304に共有ライブラリ名を記入し、ステップS708を経由した場合は、更新禁止関数リスト300のオフセット欄303及び共有ライブラリ名欄304にはそれぞれ「N/A」と記入する。
この後、更新禁止関数リスト生成部204は、ステップS705で取得した関数トレースに含まれる全ての関数についてアドレス範囲を取得したか否かを判断する(ステップS710)。全ての関数についてアドレス範囲を取得していないと、更新禁止関数リスト生成部204が判断した場合、ステップS710からステップS706に戻って一連の処理を続ける。一方、ステップS710にて、全ての関数についてアドレス範囲を取得したと、更新禁止関数リスト生成部204が判断した場合、更新禁止関数リスト保存部205は、更新禁止関数リスト300をメモリに保存し、一連の処理を終了する。これにより、更新装置101のユーザが指定した更新禁止関数に係わる関数及び更新対象関数に係わる関数全てについて更新禁止関数リスト300を作成することができる。
この際、更新禁止関数リスト生成部204は、関数トレース取得部208で取得した関数コールに属する関数トレースによる各関数の関数名と、この関数トレースによる各関数のアドレスとを関連づけて更新禁止関数リストに追加することになる。さらに、関数トレース取得部208が、関数コールに属する関数として、関数トレースによる更新対象関数に関わる関数(サブ関数等)及び更新禁止関数に関わる関数(サブ関数等)を取得した場合、更新禁止関数リスト生成部204は、これらの関数の関数名とアドレスを更新禁止関数リストに追加する。
次に更新装置101における、更新部分及び更新禁止関数リストを更新対象装置110に送信する処理手順について、図2及び図8を用いて説明する。
図8は、更新部分及び更新禁止関数リストを更新対象装置に送信する処理手順を示すフローチャートである。本処理は、更新装置101のユーザの指示により開始しても良いし、図7で示した更新禁止関数リストを設定する処理の終了を契機に開始しても良いし、タイマーを設定して指定した時刻に開始しても良い。
まず、更新部分取得部209は、更新部分作成部102で作成した更新部分を更新部分作成部102から取得する(ステップS801)。次に、送信部210は、更新禁止関数リスト保存部205がメモリに保存した更新禁止関数リスト300を更新禁止関数リスト保存部205から取得する(ステップS802)。この後、送信部201は、ステップS801で更新部分取得部209が取得した更新部分を更新部分取得部209から取得し、取得した更新部分及び、ステップS802で取得した更新禁止関数リスト300を含む送信データを、ネットワークインターフェース107を介して更新対象装置110に送信し(ステップS803)、一連の処理を終了する。
この際、送信部210は、更新部分及び更新禁止関数リストを含む情報を、更新対象プログラムを実行するプログラム実行先、例えば、更新対象装置110に対する更新処理情報として管理する更新処理情報管理部として機能し、更新部分及び更新禁止関数リストを含む送信データに、更新禁止関数に属する各関数が、更新対象プログラムの実行中、その更新を禁止する関数である旨の更新禁止情報を更新処理情報に付加することができる。この更新禁止情報として、例えば、更新対象プログラムの実行を示すアドレス(更新対象装置110におけるプログラムカウンタのカウント値に相当するアドレス)が、更新禁止関数に属する関数のアドレスの範囲内にある場合、この関数の更新を禁止することを示す情報を用いることができる。
次に、更新対象装置110において更新禁止関数リストに基づいて動的プログラム更新を実施する処理手順について、図4と図5及び図9を用いて説明する。
図9は、更新禁止関数リストに基づいて動的にプログラムを更新する処理手順を示すフローチャートである。本処理は、更新対象装置110が、更新装置101から更新部分及び更新禁止関数リストを含む送信データを受信したことを契機に開始しても良いし、送信データの受信後一定期間後に開始しても良い。
まず、受信部401が、更新部分と更新禁止関数リスト及び更新禁止情報を有する更新処理情報を含む送信データをネットワークインターフェース107を介して受信すると、受信部401は、受信した送信データを判別すると共に、受信した送信データを受信データとして処理し、更新部分取得部402は、受信部401から更新部分を取得して不揮発性記憶装置に保存し、更新禁止関数リスト取得部404は、受信部401から更新禁止関数リストを取得して、不揮発性記憶装置(メモリ)に保存する(ステップS901)。
次に、更新部分メモリ配置部403は、ステップS901で更新部分取得部402が取得した更新部分を、更新対象装置110のメモリに配置する(ステップS902)。この際、メモリには、更新対象となる領域(更新前の関数を含む領域)と更新部分の領域(更新後の関数を含む領域)が併存することになる。この時に更新対象関数の絶対アドレスが決まる。なお、この場合、更新部分をメモリに配置しただけであり、更新対象関数はまだ更新しない。
次に、メモリマップ取得部405は、更新対象プログラムのメモリマップをメモリから取得する(ステップS903)。なお、このメモリマップは、例えば、更新対象装置110に搭載されるOSが作成するものであり、メモリマップには共有ライブラリのメモリ割当て情報が含まれている。
次に、オフセット−絶対アドレス変換部406は、ステップS901で取得した更新禁止関数リスト内のオフセット欄303が「○」となっている更新禁止関数のアドレス範囲に対して、ステップS903で取得したメモリマップを参照し、更新禁止関数リストの共有ライブラリ名欄304の共有ライブラリ名を基にメモリマップから共有ライブラリの割当てアドレスを取得し、取得した割当てアドレスと更新禁止関数リストのオフセット値と足し合わせることで、オフセットアドレスを絶対アドレスへ変換する(ステップS904)。
次に、プログラムカウンタ取得部407は、実行中の更新対象プログラムの現在のプログラムカウンタのカウント値(アドレス)をメモリから取得し、更新タイミング判断部408は、プログラムカウンタ取得部407が取得した、現在のプログラムカウンタのカウント値(アドレス)が、ステップS904で絶対アドレスに変換された更新禁止関数リストのアドレス範囲内にあるか否かを判断する(ステップS905)。この際、更新タイミング判断部408は、送信データに付加された更新禁止情報を基に、更新禁止関数リスト300に属する関数が、更新可能か否かを判断する。更新タイミング判断部408は、ステップS905で、現在のプログラムカウンタのカウント値(アドレス)が、更新禁止関数リストのアドレス範囲内にあると判断した場合、更新不可(更新禁止)のため、プログラム更新はせず、プログラムカウンタを進めるための処理を実行し(ステップS906)、ステップS905に戻る。更新タイミング判断部408は、ステップS905で、現在のプログラムカウンタのカウント値(アドレス)が、更新禁止関数リストのアドレス範囲外であると判断した場合、更新可能であると判断できるため、プログラム更新処理を行う。
まず、更新タイミング判断部408は、ステップS901で更新部分取得部402が取得し、ステップS902で更新部分メモリ配置部403がメモリに配置した更新部分内の更新対象関数のジャンプテーブルがあるか、すなわち図5のジャンプテーブル500の更新対象関数名欄501に、更新対象関数名が書かれているか否かを判断する(ステップS907)。ステップS907で、メモリに配置した更新部分内の更新対象関数のジャンプテーブル500がないと更新タイミング判断部408が判断した場合、ジャンプテーブル生成部409は、更新対象関数名を更新対象関数名欄501に記入し、更新対象関数の現アドレスをジャンプ先欄502に記入したジャンプテーブル500を生成する(S908)。一方、ステップS907で既に更新対象関数のジャンプテーブル500があると更新タイミング判断部408が判断した場合は、ステップS908をスキップする。
その後、ジャンプテーブル生成部409は、ステップS902で更新部分取得部402がメモリに配置した更新対象関数の新アドレスを、ジャンプテーブル500のジャンプ先502に追記する(ステップS909)。なお新アドレスは絶対アドレスである。これにより、以後、更新対象プログラムに属する各関数が順次実行される過程で、更新対象関数が呼ばれた場合、ジャンプテーブル500を参照して、ステップS902で更新部分取得部402がメモリに配置した更新関数の新アドレスにジャンプし、更新後の関数が実行される。
その後、ジャンプテーブル生成部409は、更新部分に含まれる全ての更新対象関数について新アドレスを追加、すなわちジャンプテーブル500を更新したか否かを判断する(ステップS910)。まだ更新対象関数があるとジャンプテーブル生成部409が判断した場合、ステップS905に戻り一連の処理を続ける。一方、ジャンプテーブル生成部409は、ステップS910にて、全ての更新対象関数についてジャンプテーブル500を更新したと判断した場合、ジャンプテーブル500をメモリに保存し、一連の処理を終了する。
本実施例によれば、更新部分及び更新禁止関数リストを含む情報であって、更新禁止情報が付加された更新処理情報を含む送信データを更新装置101で生成し、生成した送信データを更新装置101から更新対象装置110に送信し、送信データを受信した更新対象装置110が、送信データに付加された更新処理情報に従って更新対象プログラムを処理するようにしたので、更新対象プログラムを停止させることなく、更新対象装置110で更新対象プログラムの更新部分を更新することができるとともに、処理やデータの不整合が発生するのを防止することができる。すなわち、更新装置101は、更新対象装置110で、更新対象プログラムを停止させることなく、その一部を更新する際に用いる情報として、処理やデータの不整合が発生するのを防止できる更新処理情報を生成することができる。
本実施例は、更新対象装置の機器種別毎の更新禁止関数リストを用意し、機器種別毎の更新禁止関数リストを基に更新対象機器の機器種別を判定することで、更新禁止関数リストを拡充するものである。なお、第1の実施例で示したブロック図、処理フローは、図1及び図2から図9で示したものと同じであるので、それぞれの説明は省略する。以下、図10と図11を用いて、本実施例における更新禁止関数リストを追記する方法について説明する。
図10は、本発明の第2実施例における更新禁止関数リスト管理部のブロック図である。図10における更新禁止関数リスト管理部104は、一部が図2に示すものとは異なるが、他の構成は、図2に示すものと同様である。本実施例では、図2と異なる部分について説明する。
図10において、更新禁止関数リスト管理部104には、関数トレース取得部208で取得した関数コール一覧と、機器種別毎に用意した関数呼び出し一覧とを比較し、更新対象装置110の機器種別を判定する機器種別判断部1001と、機器種別判断部1001の判定結果を基に、機器種別毎に用意した更新禁止関数リストを取得する種別毎更新禁止関数リスト取得部1002が追加されている。
ここで、機器種別とは、更新対象プログラムを実行するプログラム実行先の機器種別であって、例えば、ネットワーク機器のような通信機器であったり、レコーダのような記憶機器であったりする。本実施例では、ネットワーク通信機器とレコーダの例で説明する。
次に、図11を用いて、本実施例における更新禁止関数リストを追記する方法について説明する。
図11は、本実施例における更新禁止関数に関わる関数一覧を取得し、更新禁止関数リストを拡充する処理手順を示すフローチャートである。本処理は、図7で示した処理の終了を契機に開始する。なお、図7で説明したステップS706からステップS710と同じ処理については説明を省略する。
まず、機器種別判断部1001は、テストプログラム実行部207の実行結果から得られた関数コール一覧を関数トレース取得部208から取得する(ステップS1101)。次に、機器種別判断部1001は、関数トレース取得部208から取得した関数コール一覧と機器種別毎に予め用意した関数コール(呼び出し)一覧(予めメモリに保存されていた関数コール一覧)とを比較し、取得した関数コール一覧の中に予め用意した関数コールとパターンが一致するものが存在するか否かを判断する(ステップS1102)。
ここで、予め用意した関数コールとは、本実施例では、ネットワーク通信機器とレコーダを例としており、ネットワーク通信機器では、socketやlisten、connect、send等を含むソケット通信システムコールの関数コールであり、レコーダでは、HDD等のI/Oデバイスへのioctlやwrite及びファイルシステムを含むシステムコールの関数コールである。
機器種別判断部1001は、ステップS1102では、取得した関数コール一覧の中に、これらシステムコールに属する関数コールの並びが一定割合以上、例えば、5割以上含まれていれば、該当する機器種別ありと判断する。
次に、機器種別判断部1001は、該当種別ありか否かを判断する(ステップS1103)。機器種別判断部1001が、ステップS1103で該当種別なしと判断した場合には、このルーチンでの処理を終了する。一方、機器種別判断部1001が、ステップS1103で該当種別ありと判断した場合、すなわち、該当する機器種別がある場合、種別毎更新禁止関数リスト取得部1002は、機器種別判断部1001から該当機器種別の更新禁止関数名の一覧を取得する(ステップS1104)。
ステップS1104で取得した更新禁止関数一覧について、以後、ステップ1105からステップS1109の処理(図7で示したステップS706からステップS710の処理と同一の処理)を行うことで、更新禁止関数リスト300の内容を拡充する。すなわち、更新禁止関数リスト生成部204は、ステップS1104で取得した更新禁止関数一覧を基に、機器種別関数コールに属する機器種別による各関数の関数名と、この機器種別による各関数のアドレスとを関連づけて更新禁止関数リストに追加することになる。
本実施例において、機器種別判断部1001と種別毎更新禁止関数リスト取得部1002は、関数トレース取得部208で取得した関数コールと、プログラム実行先の機器種別を示す機器種別毎の関数コールとを比較し、関数トレース取得部208で取得した関数コールが、機器種別毎の関数コールの中に存在する場合、関数トレース取得部208で取得した関数コールをプログラム実行先の機器種別に対応した機器種別関数コールとして保持する機器種別関数コール保持部として機能し、関数トレース取得部208で取得した関数コールの中に、プログラム実行先の機器種別毎の関数コールのうちいずれか一つの関数コールの並びが一定割合以上存在することを条件に、関数トレース取得部208で取得した関数コールをプログラム実行先の機器種別に対応した機器種別関数コールとして保持することになる。
本実施例において、機器種別がネットワーク通信機器の場合は、ソケット通信のシステムコール中はクリティカル処理になると判断し、ソケット通信システムコール一覧を更新禁止関数とする。また、同様に、機器種別がレコーダの場合は、I/Oデバイスへのアクセスやファイルシステムのシステムコール中はクリティカル処理になると判断し、システムコール一覧を更新禁止関数とする。なお、本実施例では、システムコールを更新禁止関数としたが、システムコール以外のクリティカル処理になる関数を更新禁止関数としても良い。
本実施例によれば、第1の実施例と同様の効果を奏することができると共に、機器種別を自動で判断し、予め用意した機器種別毎の更新禁止関数を更新禁止関数リストに自動で追加することで、更新装置101のユーザが更新禁止関数名を指定する手間を省くことができる。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。
また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
また、上記の各構成、機能等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。
101 更新装置、102 更新部分作成部、103 プログラム作成部、104 更新禁止関数リスト管理部、105 ユーザインターフェース、106 入力部、107 ネットワークインターフェース、110…更新対象装置、111…プログラム実行部、112…動的プログラム更新部。

Claims (14)

  1. プログラムを格納するメモリと、前記メモリに格納されたプログラムを基に情報を処理するプロセッサとを有する更新装置であって、
    複数の関数を含む更新対象プログラムを作成するプログラム作成部と、
    前記更新対象プログラムに対する更新部分を作成する更新部分作成部と、
    前記更新対象プログラムに属する複数の関数のうち更新対象となる更新対象関数及び当該更新対象関数から外れた関数であって前記更新対象関数と関連性を有する関数を入力し、当該入力した各関数を更新禁止関数として管理する更新禁止関数入力部と、
    前記更新対象プログラムに属する各関数のシンボル情報とアドレス情報に基づいて前記更新禁止関数に属する各関数の関数名と、前記更新対象プログラムの実行を管理するためのアドレスであって、前記更新禁止関数に属する各関数に割当てられたアドレスとを関連づけた更新禁止関数リストを生成する更新禁止関数リスト生成部と、
    前記更新部分作成部の作成による更新部分及び前記更新禁止関数リスト生成部の生成による更新禁止関数リストを含む情報を、前記更新対象プログラムを実行するプログラム実行先に対する更新処理情報として管理する更新処理情報管理部と、を有し、
    前記更新処理情報管理部は、
    前記更新禁止関数に属する各関数が、前記更新対象プログラムの実行中、その更新を禁止する関数である旨の更新禁止情報を前記更新処理情報に付加してなる、ことを特徴とする更新装置。
  2. 請求項1に記載の更新装置であって、
    前記更新禁止情報は、
    前記更新対象プログラムの実行を示すアドレスが、前記更新禁止関数に属する関数のアドレスの範囲内にある場合、当該関数の更新を禁止することを示す情報である、ことを特徴とする更新装置。
  3. 請求項1又は2に記載の更新装置であって、
    前記更新対象プログラムに属する各関数に関わるテストをテストプログラムに従って実行するテストプログラム実行部と、
    前記テストプログラム実行部の実行結果を関数トレースして、前記更新対象プログラムに属する各関数の中から、関数トレースによる更新対象関数及び更新禁止関数を含む関数コールを取得する関数トレース取得部と、を更に有し、
    前記更新禁止関数リスト生成部は、
    前記関数トレース取得部で取得した関数コールに属する関数トレースによる各関数の関数名と、当該関数トレースによる各関数のアドレスとを関連づけて前記更新禁止関数リストに追加する、ことを特徴とする更新装置。
  4. 請求項3に記載の更新装置であって、
    前記関数トレース取得部は、
    前記関数コールに属する関数として、関数トレースによる更新対象関数に関わる関数及び更新禁止関数に関わる関数を取得する、ことを特徴とする更新装置。
  5. 請求項3に記載の更新装置であって、
    前記関数トレース取得部で取得した関数コールと、前記プログラム実行先の機器種別を示す機器種別毎の関数コールとを比較し、前記関数トレース取得部で取得した関数コールが、前記機器種別毎の関数コールの中に存在する場合、前記関数トレース取得部で取得した関数コールを前記プログラム実行先の機器種別に対応した機器種別関数コールとして保持する機器種別関数コール保持部を有し、
    前記更新禁止関数リスト生成部は、
    前記機器種別関数コール保持部で保持された機器種別関数コールに属する機器種別による各関数の関数名と、当該機器種別による各関数のアドレスとを関連づけて前記更新禁止関数リストに追加する、ことを特徴とする更新装置。
  6. 請求項5に記載の更新装置であって、
    前記機器種別関数コール保持部は、
    前記関数トレース取得部で取得した関数コールの中に、前記プログラム実行先の機器種別毎の関数コールのうちいずれか一つの関数コールの並びが一定割合以上存在することを条件に、前記関数トレース取得部で取得した関数コールを前記プログラム実行先の機器種別に対応した機器種別関数コールとして保持する、ことを特徴とする更新装置。
  7. 請求項1〜6のうちいずれか1項に記載の更新装置であって、
    前記更新禁止関数リスト生成部は、
    前記更新禁止関数が、共有ライブラリの関数である場合、前記更新禁止関数の実体が存在する保存先の情報を前記更新禁止関数リストに付加し、当該更新禁止関数リストのアドレスのうち、前記共有ライブラリの関数となる更新禁止関数のアドレスに、オフセット値を記録する、ことを特徴とする更新装置。
  8. プログラムを格納するメモリと、前記メモリに格納されたプログラムを基に情報を処理するプロセッサとを有する更新装置における情報処理方法であって、
    複数の関数を含む更新対象プログラムを作成するプログラム作成手順と、
    前記更新対象プログラムに対する更新部分を作成する更新部分作成手順と、
    前記更新対象プログラムに属する複数の関数のうち更新対象となる更新対象関数及び当該更新対象関数から外れた関数であって前記更新対象関数と関連性を有する関数を入力し、当該入力した各関数を更新禁止関数として管理する更新禁止関数入力手順と、
    前記更新対象プログラムに属する各関数のシンボル情報とアドレス情報に基づいて前記更新禁止関数に属する各関数の関数名と、前記更新対象プログラムの実行を管理するためのアドレスであって、前記更新禁止関数に属する各関数に割当てられたアドレスとを関連づけた更新禁止関数リストを生成する更新禁止関数リスト生成手順と、
    前記更新部分作成手順での作成による更新部分及び前記更新禁止関数リスト生成手順での生成による更新禁止関数リストを含む情報を、前記更新対象プログラムを実行するプログラム実行先に対する更新処理情報として管理する更新処理情報管理手順と、を有し、
    前記更新処理情報管理手順では、
    前記更新禁止関数に属する各関数が、前記更新対象プログラムの実行中、その更新を禁止する関数である旨の更新禁止情報を前記更新処理情報に付加する、ことを特徴とする情報処理方法。
  9. 請求項8に記載の情報処理方法であって、
    前記更新禁止情報は、
    前記更新対象プログラムの実行を示すアドレスが、前記更新禁止関数に属する関数のアドレスの範囲内にある場合、当該関数の更新を禁止することを示す情報である、ことを特徴とする情報処理方法。
  10. 請求項8又は9に記載の情報処理方法であって、
    前記更新対象プログラムに属する各関数に関わるテストをテストプログラムに従って実行するテストプログラム実行手順と、
    前記テストプログラム実行手順での実行結果を関数トレースして、前記更新対象プログラムに属する各関数の中から、関数トレースによる更新対象関数及び更新禁止関数を含む関数コールを取得する関数トレース取得手順と、を更に有し、
    前記更新禁止関数リスト生成手順では、
    前記関数トレース取得手順で取得した関数コールに属する関数トレースによる各関数の関数名と、当該関数トレースによる各関数のアドレスとを関連づけて前記更新禁止関数リストに追加する、ことを特徴とする情報処理方法。
  11. 請求項10に記載の情報処理方法であって、
    前記関数トレース取得手順では、
    前記関数コールに属する関数として、関数トレースによる更新対象関数に関わる関数及び更新禁止関数に関わる関数を取得する、ことを特徴とする情報処理方法。
  12. 請求項10に記載の情報処理方法であって、
    前記関数トレース取得手順で取得した関数コールと、前記プログラム実行先の機器種別を示す機器種別毎の関数コールとを比較し、前記関数トレース取得手順で取得した関数コールが、前記機器種別毎の関数コールの中に存在する場合、前記関数トレース取得手順で取得した関数コールを前記プログラム実行先の機器種別に対応した機器種別関数コールとして保持する機器種別関数コール保持手順を有し、
    前記更新禁止関数リスト生成手順では、
    前記機器種別関数コール保持手順で保持された機器種別関数コールに属する機器種別による各関数の関数名と、当該機器種別による各関数のアドレスとを関連づけて前記更新禁止関数リストに追加する、ことを特徴とする情報処理方法。
  13. 請求項12に記載の情報処理方法であって、
    前記機器種別関数コール保持手順では、
    前記関数トレース取得手順で取得した関数コールの中に、前記プログラム実行先の機器種別毎の関数コールのうちいずれか一つの関数コールの並びが一定割合以上存在することを条件に、前記関数トレース取得手順で取得した関数コールを前記プログラム実行先の機器種別に対応した機器種別関数コールとして保持する、ことを特徴とする情報処理方法。
  14. 請求項8〜13のうちいずれか1項に記載の情報処理方法であって、
    前記更新禁止関数リスト生成手順では、
    前記更新禁止関数が、共有ライブラリの関数である場合、前記更新禁止関数の実体が存在する保存先の情報を前記更新禁止関数リストに付加し、当該更新禁止関数リストのアドレスのうち、前記共有ライブラリの関数となる更新禁止関数のアドレスに、オフセット値を記録する、ことを特徴とする情報処理方法。
JP2014189892A 2014-09-18 2014-09-18 更新装置及び情報処理方法 Pending JP2016062311A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014189892A JP2016062311A (ja) 2014-09-18 2014-09-18 更新装置及び情報処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014189892A JP2016062311A (ja) 2014-09-18 2014-09-18 更新装置及び情報処理方法

Publications (1)

Publication Number Publication Date
JP2016062311A true JP2016062311A (ja) 2016-04-25

Family

ID=55796045

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014189892A Pending JP2016062311A (ja) 2014-09-18 2014-09-18 更新装置及び情報処理方法

Country Status (1)

Country Link
JP (1) JP2016062311A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018150820A1 (ja) * 2017-02-17 2018-08-23 日立オートモティブシステムズ株式会社 情報処理装置
WO2019024643A1 (zh) * 2017-07-31 2019-02-07 Oppo广东移动通信有限公司 数据同步管控方法、装置及电子设备

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018150820A1 (ja) * 2017-02-17 2018-08-23 日立オートモティブシステムズ株式会社 情報処理装置
JPWO2018150820A1 (ja) * 2017-02-17 2019-07-18 日立オートモティブシステムズ株式会社 情報処理装置
WO2019024643A1 (zh) * 2017-07-31 2019-02-07 Oppo广东移动通信有限公司 数据同步管控方法、装置及电子设备

Similar Documents

Publication Publication Date Title
JP7090657B2 (ja) アプリケーションをアップグレードするための方法、装置、デバイスならびに記憶媒体
US11003625B2 (en) Method and apparatus for operating on file
US11086638B2 (en) Method and apparatus for loading application
US10430281B2 (en) Space efficient cascading point in time copying
US9652220B2 (en) Zero down-time deployment of new application versions
CN111949605A (zh) 用于实现文件***的方法、设备和计算机程序产品
US20140331228A1 (en) Live application mobility from one operating system level to an updated operating system level
CN104268229A (zh) 一种基于多进程浏览器的资源获得方法及装置
US10338910B2 (en) Multi-tenant upgrading
CN110795399A (zh) 一种为应用产生机器id的方法、装置和***
US10452635B2 (en) Synchronizing files on different computing devices using file anchors
CN108694049B (zh) 一种更新软件的方法和设备
CN103514004A (zh) Windows***下的***环境管理方法及装置
US8769498B2 (en) Warning of register and storage area assignment errors
JP2007323657A (ja) 過渡状態情報を格納するための方法、システムおよびコンピュータ・プログラム
CN116685946A (zh) 在不停止应用的执行的情况下的更新的共享库的重新加载
US9317420B2 (en) Computer program installation across multiple memories
JP2016062311A (ja) 更新装置及び情報処理方法
CN109558121A (zh) 接口驱动程序的开发方法、装置、设备及存储介质
CN113127430B (zh) 镜像信息处理方法、装置、计算机可读介质及电子设备
CN109614383B (zh) 数据复制方法、装置、电子设备及存储介质
WO2011157105A2 (zh) 组件扩展方法和装置
CN114138376B (zh) 一种在应用中加载插件的方法、计算设备及存储介质
CN115481103A (zh) 一种数据库扩缩容方法、装置及计算机可读存储介质
CN109254870B (zh) 数据备份的方法和装置