WO2011104825A1 - 更新方法、更新装置、および更新プログラム - Google Patents

更新方法、更新装置、および更新プログラム Download PDF

Info

Publication number
WO2011104825A1
WO2011104825A1 PCT/JP2010/052794 JP2010052794W WO2011104825A1 WO 2011104825 A1 WO2011104825 A1 WO 2011104825A1 JP 2010052794 W JP2010052794 W JP 2010052794W WO 2011104825 A1 WO2011104825 A1 WO 2011104825A1
Authority
WO
WIPO (PCT)
Prior art keywords
node
file
old
update
dll
Prior art date
Application number
PCT/JP2010/052794
Other languages
English (en)
French (fr)
Inventor
宏真 山内
浩一郎 山下
Original Assignee
富士通株式会社
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 富士通株式会社 filed Critical 富士通株式会社
Priority to CN2010800632393A priority Critical patent/CN102754082A/zh
Priority to PCT/JP2010/052794 priority patent/WO2011104825A1/ja
Priority to JP2012501564A priority patent/JPWO2011104825A1/ja
Priority to EP10846492.6A priority patent/EP2541412A4/en
Publication of WO2011104825A1 publication Critical patent/WO2011104825A1/ja
Priority to US13/569,659 priority patent/US20120304162A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates

Abstract

 ハイパーバイザ(131)が存在通知を受けると、ノードの参照対象を拡張設定し(S403)、旧ノード(N1)を生成し(S404)、ダウンローダ(135)に対してダウンロード開始を通知する(S405)。リンカ(134)からチェック結果通知(不使用)を受けると、対象ライブラリ(a.dll)の呼出禁止を設定する(S410)。呼出禁止を設定すると、ハイパーバイザ(131)は、旧a.dllの消去指示をダウンローダ(135)に通知する(S411)。ハイパーバイザ(131)は、消去完了の通知を受けると、旧ノード(N1)の識別ビットを「0」から「1」に書き換える(S414)。そして、対象ライブラリ(a.dll)の呼出禁止を解除する(S415)。これにより、システム規模や費用の低減化を図りつつ、無停止アップデートを実現する。

Description

更新方法、更新装置、および更新プログラム
 本発明は、ライブラリを更新する更新方法、更新装置、および更新プログラムに関する。
 従来の携帯型端末では、ライブラリのアップデートに当たり、更新期間中には機能を停止させる必要があった。このため、更新期間中には、利用者は機能を利用することができない。しかし、汎用計算機とは異なり、携帯型端末などの組み込みシステムは24時間365日動かし続けることを想定しており、機能を停止させなければならないことが問題となっていた。
 従来技術として、サーバ分野において無停止でアップデートを行う手法が提案されている。主に、主系統の他に待機系統を用意し、主系統のアップデート中には待機系統で処理をおこなうものである(たとえば、下記特許文献1を参照。)。
 また、システム全体の待機系統を用意するのではなく、OS(Operating System)のみを複数搭載することで、無停止でアップデートをおこなう手法が提案されている(たとえば、下記特許文献2~4を参照。)。
 下記特許文献1では、複数のOSを搭載したシステムにおいて、保守対象ではないシステムによって、保守対象のシステムの機能を補完する。たとえば、システム全体を複数のサブシステムに分割し、それぞれにOS(ローカルOS)を搭載する。また、各OSの機能をすべて持つOS(グローバルOS)を用意し、ローカルOSの1つが更新処理を行う場合には、そのOSの機能をグローバルOSが代行することで、システムを止めずにアップデートを行っている。
特開2002-342102号公報 特開昭54-106146号公報 特開2005-63050号公報 特開2006-31312号公報
 しかしながら、上述した従来技術において、主系統の他に待機系統を用意し、主系統のアップデート中には待機系統で処理をおこなう場合、組み込みシステムにおいては、システム規模や費用の増加を招くという問題があった。
 また、特許文献1では、グローバルOSが代行することで、システムを止めずにアップデートをおこなっているため、組み込みシステムにおいては、システム規模や費用の増加を招くという問題があった。
 一方、待機系統やグローバルOSがない(たとえば、シングルOS)場合、アップデートを代行することができないため、アップデートの際にシステムを停止しなければならないという問題があった。
 このように、携帯型端末などの組み込みシステムは24時間365日動かし続けることを想定しており、上述した従来技術では、更新期間中には、利用者は機能を利用することができず、また、機能を停止させなければならないことが問題となっていた。
 本発明は、上述した従来技術による問題点を解消するため、システム規模や費用の低減化を図りつつ、無停止アップデートを実現することができる更新方法、更新装置、および更新プログラムを提供することを目的とする。
 上述した課題を解決し、目的を達成するため、本更新方法、更新装置、および更新プログラムは、OS内のライブラリ群の中の対象ライブラリに関する新バージョンのファイルのダウンロードと前記対象ライブラリに関する旧バージョンのファイルの消去を実行する更新プログラム、更新装置、および更新方法において、前記新バージョンのファイルの存在を検出し、検出された場合、前記旧バージョンのファイルの保存領域を指定する第1のノードとは異なる保存領域を指定する第2のノードを生成し、生成された第2のノードにより指定された保存領域に前記新バージョンのファイルがダウンロードされた場合、前記旧バージョンのファイルが使用中であるか否かを判断し、使用中でないと判断された場合、前記旧バージョンのファイルおよび前記第1のノードの消去指示を通知することを要件とする。
 本更新方法、更新装置、および更新プログラムによれば、システム規模や費用の低減化を図りつつ、無停止アップデートを実現することができるという効果を奏する。
本実施の形態にかかる更新装置のハードウェア構成を示すブロック図である。 ハイパーバイザによるファイルシステムの制御を示す説明図である。 プロセステーブル、リンクテーブル、およびステータステーブルの参照関係を示す説明図である。 アップデートモードのシーケンス図(その1)である。 アップデートモードのシーケンス図(その2)である。 アップデートモードのシーケンス図(その3)である。 本実施の形態にかかるライブラリ更新処理手順を示すフローチャートである。 図7に示したアップデート処理の詳細な処理手順を示すフローチャートである。 ハイパーバイザによるステータステーブルの更新処理を示すフローチャートである。 ハイパーバイザによるライブラリの読み出し処理を示すフローチャートである。
 以下に添付図面を参照して、この発明にかかる更新方法、更新装置、および更新プログラムの好適な実施の形態を詳細に説明する。
(更新装置のハードウェア構成)
 図1は、本実施の形態にかかる更新装置のハードウェア構成を示すブロック図である。更新装置100は、CPU(Central Processing Unit)101と、I/F(Interface)102と、メモリ103と、有する。CPU101とI/F102とメモリ103は、バス104により接続されている。
 ここで、CPU101は、更新装置100の全体の制御を司るプロセッサである。I/F102は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク105に、たとえば無線で接続され、このネットワーク105を介してダウンロード元のサーバ106に接続される。そして、I/F102は、ネットワーク105と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。
 メモリ103は、各種情報を記憶したり、CPU101のワークエリアとして使用される。メモリ103は、具体的には、たとえば、ROM(Read Only Memory)、RAM(Random Access Memory)、フラッシュメモリ、ハードディスクドライブなどの記憶装置である。
 メモリ103には、ハイパーバイザ131、OS132、ファイルシステム133、リンカ134、ダウンローダ135、アプリケーションプログラム136が記憶されている。メモリ103に記憶されているプログラムは、CPU101にロードされることで、コーディングされている処理をCPU101に実行させることとなる。
 ハイパーバイザ131は、CPU101などのハードウェア上で直接動作するプログラムである。ハイパーバイザ131は、CPU101内のレジスタを直接参照したり、CPU101内のレジスタの情報を読み出したり、CPU101内のレジスタの情報を書き換えたりする特権命令を実行することができる。また、ハイパーバイザ131は、ファイルシステム133に直接アクセスする。
 ハイパーバイザ131は、通常は上述した処理を実行する通常モードのほか、アップデートモードも有する。アップデートモードでは、ハイパーバイザ131が特殊な処理を実行することで、OS132が停止することなく、ライブラリを更新することができる。アップデートモード以外のときは、通常モードである。
 また、ハイパーバイザ131は、アップデートモード時において、メモリ103内にステータステーブル151を作成する。CPU101内の空きレジスタに割り当ててもよい。ステータステーブル151は、ライブラリが実行中であるか否か、ダウンロード済みであるか否かといったステータスを管理するテーブルである。
 OS132は、ハイパーバイザ131上で動作するソフトウェアである。OS132は、カーネル141とライブラリ群142とを有する。カーネル141は、CPU管理、タスク管理、メモリ管理、ファイル管理といった処理を実行する。たとえば、タスク管理においては、カーネル141は、現在実行されている一または複数のアプリケーションプログラム136などのプロセスをプロセステーブル152に登録する。
 これにより、どのアプリケーションプログラム136が実行中であり、どのアプリケーションプログラム136が実行終了したかを監視することができる。また、ファイル管理においては、OS132は、ファイルシステム133にアクセスすることで、メモリ103内に記憶されているファイルにアクセスすることができる。
 ライブラリ群142は、ライブラリの集合である。ライブラリとは、汎用性の高い複数のプログラム部品をファイル化したプログラムであり、アプリケーションプログラム136などOS132上で動作する他のプログラムの一部として動作する。ライブラリ単独では実行することはできない。たとえば、ダイナミックリンクライブラリは、アプリケーションプログラム136などの実行中に、メモリ103から呼び出されて利用される。
 ファイルシステム133は、メモリ103内に保存されているファイルを管理する。ファイルシステム133は、メモリ103内のファイルの保存領域を指定するノード(ノードID、iノードともいう)を有する。1つのノードは、所定幅のビット列であり、ビット列の値により、ファイルの保存領域を指定する。
 リンカ134は、アプリケーションプログラム136とそのアプリケーションプログラム136で利用されるライブラリをリンクさせるプログラムである。リンカ134は、現在実行中のアプリケーションプログラム136により呼び出されたライブラリをリンクテーブル153に登録する。これにより、現在実行中のアプリケーションプログラム136がどのライブラリを呼び出したかを監視することができる。
 アプリケーションプログラム136は、OS132上で動作するプログラムであり、必要に応じてライブラリを呼び出して処理を実行する。ダウンローダ135は、更新すべきライブラリを検出し、サーバ106から新しいライブラリをダウンロードし、旧ライブラリを消去するアプリケーションプログラム136である。
(ハイパーバイザ131によるファイルシステム133の制御)
 図2は、ハイパーバイザ131によるファイルシステム133の制御を示す説明図である。以降、例として、ライブラリ名「a.dll」のライブラリを更新対象のライブラリとする。なお、便宜上、対象ライブラリa.dllのうち、更新前のメモリ103に記憶されている旧バージョンのファイルa.dllを「旧a.dll」と称し、ダウンロードされてくる新バージョンのファイルa.dllを「新a.dll」と称す。
 同様に、旧a.dllのノードを旧ノード、新a.dllのノードを新ノードと称す。また、ノードのビット数を便宜上6ビットとし、旧a.dllのノードを「010010」とする。また、ハイパーバイザ131は、(A)および(E)では、通常モードであり、(B)~(D)では、アップデートモードである。
 (A)は、ダウンロード前の通常モードでの旧ノードとライブラリとの関係を示している。旧ノードN1のうち先頭ビットは、識別ビットである。識別ビットは、対象となっているライブラリが更新中(アップデートモード)であるか非更新中(通常モード)であるかを識別するビットである。更新中であれば「1」、非更新中であれば「0」である。
 また、通常モードでは、ハイパーバイザ131は、識別ビットをマスクして、残余のビット列を参照対象とする。たとえば、(A)の場合、旧ノードN1のうち2ビット目以降の「10010」で指定された保存領域に旧a.dllが保存されている。したがって、(A)のような通常モード時では、参照対象となる残余のビット列によりライブラリの保存領域を指定することとなる。
 (B)は、通常モードからアップデートモードに移行したときの状態を示している。アップデートモードに移行すると、ハイパーバイザ131は、旧ノードN1の参照対象を識別ビットにまで拡張する。たとえば、旧a.dllの場合、旧ノードN1内の参照対象が「10010」から「010010」に拡張される。
 そして、ハイパーバイザ131は、新ノードN2を生成する。ハイパーバイザ131は、更新対象である旧a.dllの旧ノードN1の残余ビット列「10010」をコピーし、識別ビットを「1」にした新ノードN2「110010」を生成する。この旧ノードN1により指定される保存領域には、新a.dllが保存されることになる。このように、旧ノードN1と新ノードN2は、識別ビットのみ異なるビット列になる。
 (C)は、新a.dllのダウンロードと旧a.dllおよびその旧ノードN1を消去した状態(点線で表記)を示している。新a.dllは、新ノードN2で指定された保存領域に保存される。したがって、旧a.dllは新a.dllによって上書きされない。旧a.dllは、ダウンローダ135によりその旧ノードN1とともに消去される。
 (D)は、アップデートモードの完了状態を示している。(C)において新a.dllのダウンロードが完了しているので、ハイパーバイザ131は、新ノードN2の識別ビットを「1」から「0」に書き換える。そして、参照対象を全ビットから識別ビットを除く残余ビット列に戻すことで、アップデートモードが終了する。
 (E)は、アップデートモードから通常モードに移行された状態を示している。識別ビットがマスクされ残余ビット列が参照対象となっているため、この通常モードでは、(A)と同様、残余ビット列「10010」を指定することで新a.dllを呼び出すことができる。この新a.dllに対し、あらたに更新ファイルが存在する場合、新a.dllを旧a.dllとして(B)以降の処理を実行すればよい。
 このように、通常モードに戻れば、新a.dllは旧a.dllと同じ残余ビット列「10010」で保存領域が指定される。a.dllを呼び出すアプリケーションプログラム136から見れば、通常モード時では、新旧を意識することなく、更新前後において同一ノード「10010」でa.dllを呼び出すことができることとなる。
 なお、上述した例では、識別ビットを先頭の1ビットとしたが、どの位置に識別ビットがあるかをあらかじめ決めておけば、識別ビットを他のビットに設定することとしてもよい。また、ノード内のビットの一部をこのように識別ビットとして割り当てても、残余ビット列で他のファイルを十分指定することができるため、問題はない。
 図3は、プロセステーブル152、リンクテーブル153、およびステータステーブル151の参照関係を示す説明図である。プロセステーブル152は、実行中のプロセスを管理しており、リンクテーブル153はプロセステーブル152中のプロセス毎にリンクしているファイルのノードを管理している。同じアプリケーションプログラム136でもプロセスが異なれば、異なるリンクテーブル153(153-0,153-1)が存在する。各リンクテーブル153-0,153-1で管理するライブラリのノードもプロセスの起動時期とダウンロード完了の前後関係によって異なる。
 ステータステーブル151は、更新対象のライブラリ毎に用意される。ステータステーブル151は、ライブラリのダウンロード処理が終了したか否か、および、各リンクテーブル153中のノードを基にダウンロード処理が終了した後に古いバージョンのライブラリを使用しているプロセスがあるかを識別するためのテーブルである。ハイパーバイザ131は、ステータステーブル151を参照して、ファイルの切替指示をおこなう。
 たとえば、対象となるライブラリにおいて、新しいバージョンのファイルがダウンロード済みで、かつ、古いバージョンのファイルがアプリケーションプログラム136(Appli♯0)により実行中である場合、アプリケーションプログラム136(Appli♯1)が起動されると、ハイパーバイザ131は、新しいバージョンのファイルの呼び出しを指示する。それ以外の組み合わせの場合、古いバージョンのファイルの呼び出しを指示することとなる。
(アップデートモードのシーケンス)
 つぎに、アップデートモード時におけるシーケンスについて図4~図6を用いて説明する。
 図4は、アップデートモードのシーケンス図(その1)である。図4では、更新対象となるライブラリ(旧a.dll)が使用されていない状態でのシーケンスを示している。まず、ダウンローダ135がa.dllの更新の存在を検出すると(ステップS401)、存在通知をハイパーバイザ131に送る(ステップS402)。ハイパーバイザ131は、存在通知を受けると、通常モードからアップデートモードに移行して、図2の(B)に示したように、ノードの参照対象の拡張設定をする(ステップS403)。
 そして、ハイパーバイザ131は、図2の(B)に示したように、旧ノードN1を生成して(ステップS404)、ファイルシステム133に旧ノードN1を設定する。このあと、ハイパーバイザ131は、ダウンローダ135に対してダウンロード開始を通知する(ステップS405)。
 ダウンローダ135は、ダウンロード開始をハイパーバイザ131から通知されると、新a.dllをサーバ106からダウンロードし、新ノードN2で指定された保存領域に新a.dllを保存する(ステップS406)。そして、ダウンローダ135は,ダウンロード完了をハイパーバイザ131およびリンカ134に通知する(ステップS407)。
 ここで、リンカ134はダウンロード完了の通知を受けると、リンクテーブル153を参照して、旧a.dllの使用をチェックする(ステップS408)。リンクテーブル153には現在呼び出されて実行されているライブラリが登録されているため、リンクテーブル153を参照することで、旧a.dllが使用されていないことがわかる。そして、図3の例では、使用されていないため、リンカ134はチェック結果通知(不使用)をハイパーバイザ131に通知する(ステップS409)。
 ハイパーバイザ131は、リンカ134からチェック結果通知(不使用)を受けると、対象ライブラリa.dllの呼出禁止を設定する(ステップS410)。具体的には、たとえば、ハイパーバイザ131は、OS132に対しアプリケーションプログラム136の起動を一時的に禁止する。
 たとえば、OS132のスケジューラに対し、起動しようとするアプリケーションプログラム136をキューイングだけ許可してディスパッチを禁止する。この段階では、旧a.dllと新a.dllがともに存在し、呼び出しを許可すると消去対象である旧a.dllが呼び出されてしまうため、呼出禁止を設定することとなる。
 呼出禁止を設定すると、ハイパーバイザ131は、旧a.dllの消去指示をダウンローダ135に通知する(ステップS411)。消去指示には、旧a.dllの旧ノードN1が含まれている。ダウンローダ135は、ハイパーバイザ131から旧a.dllの消去指示を受けると、旧ノードN1を手がかりにしてファイルシステム133にアクセスし、旧a.dllおよび旧ノードN1をメモリ103から消去する(ステップS412)。そして、ダウンローダ135は、消去完了をハイパーバイザ131に通知する(ステップS413)。
 ハイパーバイザ131は、消去完了の通知を受けると、図2の(D)に示したように、新ノードN2の識別ビットを「1」から「0」に書き換える(ステップS414)。そして、ハイパーバイザ131は、a.dllの呼出禁止を解除する(ステップS415)。具体的には、たとえば、ハイパーバイザ131は、OS132のスケジューラによりキューイングされたアプリケーションプログラム136のディスパッチを許可する。これにより、解除後は、新ファイルであるa.dllが呼び出されることとなる。
 最後に、図2の(E)に示したように、新ノードN2の参照対象を、拡張設定(S403)前の状態に復帰(マスク設定)させることで(ステップS416)、アップデートモードから通常モードに移行することとなる。
 図5は、アップデートモードのシーケンス図(その2)である。図5では、更新対象となるライブラリ(旧a.dll)がアプリケーションプログラム136(Appli#0)により使用されている状態でのシーケンスを示している。なお、図4に示した処理と同一処理については同一ステップ番号を付し、その説明を省略する。
 ステップS408において、リンカ134が旧a.dllの使用チェックをおこなうと、リンクテーブル153に現在呼び出されている旧a.dllが登録されているため、リンカ134はハイパーバイザ131およびファイルシステム138に対し、チェック結果通知(使用中)を送る(ステップS501)。
 ハイパーバイザ131は、リンカ134からチェック結果通知(使用中)を受けると、チェックスレッドを生成する(ステップS502)。プロセステーブル152には,現在実行中のプロセスが登録されているため、生成されたチェックスレッドは、プロセステーブル152を参照して、旧a.dllを使用中のアプリケーションプログラム136(Appli#0)が終了するのをチェックする(ステップS503)。
 チェックスレッドがアプリケーションプログラム136(Appli#0)の終了を検出すると、終了通知をハイパーバイザ131に送る(ステップS504)。ハイパーバイザ131は、終了通知を受けると、a.dllの呼出禁止を設定することとなる(ステップS410)。
 このように、旧a.dllの使用中にアップデートモードに移行した場合でも、OS132やアプリケーションプログラム136(Appli#0)を停止することなく、ライブラリのアップデートを実行することができる。
 図6は、アップデートモードのシーケンス図(その3)である。図6では、更新対象となるライブラリ(旧a.dll)の使用と更新後のライブラリ(新a.dll)の使用が混在する場合のシーケンスである。なお、図4および図5に示した処理と同一処理については同一ステップ番号を付し、その説明を省略する。
 ステップS503において、チェックスレッドによりプロセステーブル152のチェック中において、アプリケーションプログラム136(Appli#1)が起動されてa.dllの呼出を要求すると(ステップS601)、ハイパーバイザ131は、ステータステーブル151をチェックする(ステップS602)。ハイパーバイザ131は、ステータステーブル151参照することで、旧a.dllが実行中か否か、新a.dllがダウンロード済みか否かを特定することができる。
 この場合、旧a.dllが使用中であり、新a.dllがダウンロード済みであるため、ハイパーバイザ131は、ファイルシステム133に対し、呼出対象が新a.dllである旨を通知し(ステップS603)、新a.dllがファイルシステム133から呼び出されることとなる(ステップS604)。これにより、旧a.dllの使用と新a.dllの使用が混在していても、OS132やアプリケーションプログラム136を停止させることなく、アップデート処理を実行することができる。
(ライブラリ更新処理手順)
 つぎに、本実施の形態にかかるライブラリ更新処理手順について図7~図10を用いて説明する。
 図7は、本実施の形態にかかるライブラリ更新処理手順を示すフローチャートである。まず、ハイパーバイザ131は、ダウンローダ135からの更新の存在通知を待ち受け(ステップS701)、更新通知がない場合(ステップS701:No)、ハイパーバイザ131は通常モードによる通常処理を実行する(ステップS702)。一方、更新通知があった場合(ステップS701:Yes)、ハイパーバイザ131は、アップデートモードによるアップデート処理を実行する(ステップS703)。
 図8は、図7に示したアップデート処理の詳細な処理手順を示すフローチャートである。まず、ハイパーバイザ131は、ノードの参照対象の拡張設定する(ステップS801)。つぎに、ハイパーバイザ131は、新a.dllの新ノードN2を生成してファイルシステム133に設定する(ステップS802)。そして、ハイパーバイザ131は、ダウンローダ135に対してダウンロードの開始指示を通知することで(ステップS803)、新a.dllが旧ノードN1で指定された保存領域に保存される。
 そして、ハイパーバイザ131は、旧a.dllが使用中であるか否かを判断する(ステップS804)。使用中である場合(ステップS804:Yes)、ハイパーバイザ131は、チェックスレッドを生成し(ステップS805)、旧a.dllを使用するアプリケーションプログラム136が終了するのをチェックする(ステップS806:No)。旧a.dllを使用するアプリケーションプログラム136が終了した場合(ステップS806:Yes),ステップS807に移行する。
 また、ステップS804において、旧a.dllが使用中でない場合(ステップS804:No)、ハイパーバイザ131は、ライブラリの呼出禁止を設定し(ステップS807)、旧a.dllの消去指示をダウンローダ135に通知する(ステップS808)。そして、ハイパーバイザ131は、ダウンローダ135からの消去通知を待ち受ける(ステップS809:No)。
 消去完了の通知を受けた場合(ステップS809:Yes)、ハイパーバイザ131は、新ノードN2の識別ビットを書き換える(ステップS810)。そして、ハイパーバイザ131は、ライブラリの呼出禁止の解除を設定し(ステップS811)、ノードのマスク設定をすることで、通常モードに戻る(ステップS812)。
 図9は、ハイパーバイザ131によるステータステーブル151の更新処理を示すフローチャートである。まず、ハイパーバイザ131は、ステータステーブル151を初期化する(ステップS901)。そして、ハイパーバイザ131は、旧a.dllが使用中であるか否かを判断し(ステップS902)、使用中である場合(ステップS902:Yes)、使用中フラグFeをFe=1(使用中)にして(ステップS903)、ステップS905に移行する。一方、旧a.dllが使用中でない場合(ステップS902:No)、ハイパーバイザ131は、使用中フラグFeをFe=0(不使用)にして(ステップS904)、ステップS905に移行する。
 また、ステップS905において、ハイパーバイザ131は、新a.dllがダウンロード済みであるか否かを判断する(ステップS905)。ダウンロード済みである場合(ステップS905:Yes)、ハイパーバイザ131は、ダウンロードフラグFdをFd=1(ダウンロード済み)に設定して(ステップS906)、ステップS908に移行する。
 一方、ステップS905において、ダウンロード済みでない場合(ステップS905:No)、ハイパーバイザ131は、ダウンロードフラグFdをFd=0(未ダウンロード)に設定して(ステップS907)、ステップS908に移行する。ステップS908では、ハイパーバイザ131は、アップデートモード終了であるか否かを判断し(ステップS908)、終了していない場合(ステップS908:No)、ステップS902に戻る。一方、終了である場合(ステップS908:Yes)、ステータステーブル151の更新処理を終了する。
 図10は、ハイパーバイザ131によるライブラリの読み出し処理を示すフローチャートである。まず、ハイパーバイザ131は、アプリケーションプログラム136からアクセスイベント(呼出要求)があるのを待ち受ける(ステップS1001:No)。そして、アクセスイベントがあった場合(ステップS1001:Yes)、ハイパーバイザ131は、ステータステーブル151のステータスを判断する(ステップS1002)。ステータスが「11」である場合(ステップS1002:11)、すなわち、旧a.dllが使用中であり、かつ、新a.dllがダウンロード済みである場合、ハイパーバイザ131は、新a.dllを呼出対象に決定して(ステップS1003)、ステップS1005に移行する。
 一方、ステータスが「11」以外である場合(ステップS1002:11以外)、ハイパーバイザ131は、旧a.dllを呼出対象に決定して(ステップS1004)、ステップS1004に移行する。ステップS1005では、ハイパーバイザ131は、呼出対象の呼出指示をファイルシステム133に通知する(ステップS1005)。これにより、ファイルシステム133は、呼出対象のライブラリを、アクセスイベントを要求したアプリケーションプログラム136に引き渡すことで、アプリケーションがライブラリを使用することができる。
 以上説明したように、本実施の形態では、CPU101は、対象ライブラリa.dllに関する新バージョンのファイル(新a.dll)のダウンロードと対象ライブラリa.dllに関する旧バージョンのファイル(旧a.dll)の消去を実行する。この場合、ハイパーバイザ131は、まず、新バージョンのファイル(新a.dll)の存在をCPU101に検出させる。検出されると、ハイパーバイザ131は、旧バージョンのファイル(旧a.dll)の保存領域を指定する第1のノード(旧ノードN1)とは異なる保存領域を指定する第2のノード(新ノードN2)を生成する。
 つぎに、生成された第2のノード(新ノードN2)により指定された保存領域に新バージョンのファイル(新a.dll)がダウンロードされた場合、ハイパーバイザ131は、旧バージョンのファイル(旧a.dll)が使用中であるか否かを判断する。そして、使用中でないと判断された場合、ハイパーバイザ131は、旧バージョンのファイル(旧a.dll)の消去指示を通知する。
 これにより、新バージョンのファイル(新a.dll)の存在の検出後(アップデートモード時)は、新バージョンのファイル(新a.dll)が第2のノード(新ノードN2)で指定された保存領域に保存されるため、旧バージョンのファイル(旧a.dll)は上書きされない。したがって、アップデートモード時に旧バージョンのファイル(旧a.dll)を使用するアプリケーションプログラム136が実行中であっても、OS132やアプリケーションプログラム136を停止することなく、アップデート処理を実行することができる。
 また、旧バージョンのファイル(旧a.dll)が使用されなくなったときに、旧バージョンのファイル(旧a.dll)と旧ノードN1の消去通知をするため、旧バージョンのファイル(旧a.dll)の使用中には消去されない。これにより、アップデートモード時に旧バージョンのファイル(旧a.dll)を使用するアプリケーションプログラム136が実行中であっても、また、旧バージョンのファイル(旧a.dll)の消去中であっても、OS132やアプリケーションプログラム136を停止することなく、アップデート処理を実行することができる。
 また、旧バージョンのファイル(旧a.dll)が使用中である場合、ハイパーバイザ131は、旧バージョンのファイル(旧a.dll)を使用しているプロセスが終了したか否かを判断する。そして、プロセスが終了したと判断された場合、旧バージョンのファイル(旧a.dll)および第1のノード(旧ノードN1)の消去指示を通知する。
 このように、旧バージョンのファイル(旧a.dll)を呼び出しているプロセスを監視することで、旧バージョンのファイル(旧a.dll)が使用されなくなるか否かを確認することができる。すなわち、プロセスが終了すれば、旧バージョンのファイル(旧a.dll)は呼び出されなくなるため、プロセス終了後に旧バージョンのファイル(旧a.dll)を消去しても、OS132やアプリケーションプログラム136を停止することなく、アップデート処理を実行することができる。
 対象ライブラリa.dllの呼出要求があったとき、旧バージョンのファイル(旧a.dll)が使用中でかつ新バージョンのファイル(新a.dll)がダウンロード済みである場合、ハイパーバイザ131は、新バージョンのファイル(新a.dll)を呼出対象に決定する。
 このようなステータスの場合、旧バージョンのファイル(旧a.dll)を呼出対象から外すことで、旧バージョンのファイル(旧a.dll)の消去処理が遅れるのを防止する。また、旧バージョンのファイル(旧a.dll)を呼出対象から外しても、新バージョンのファイル(新a.dll)がダウンロード済みであるため、対象ライブラリa.dllの呼出要求をしたプロセスにとっても最新バージョンを呼び出せるため、効率的である。したがって、このような決定をすることで、OS132やアプリケーションプログラム136を停止することなく、アップデート処理を実行することができる。
 また、旧バージョンのファイル(旧a.dll)が使用中でない場合、旧バージョンのファイル(旧a.dll)および第1のノード(旧ノードN1)の消去指示の通知に先立って、ハイパーバイザ131は、対象ライブラリa.dllの呼出を禁止設定する。そして、旧バージョンのファイル(旧a.dll)および第1のノード(旧ノードN1)が消去された場合、ハイパーバイザ131は、禁止設定を解除する。
 これにより、消去前は、新旧両バージョンのファイルの呼出が禁止され、消去後は、新バージョンのファイル(新a.dll)の呼出が禁止される。そして、呼出禁止が解除されることで、新バージョンのファイル(新a.dll)を使用することができる。したがって、OS132やアプリケーションプログラム136を停止することなく、アップデート処理を実行することができる。
 また、ハイパーバイザ131は、OS132に含まれている各ライブラリの保存領域を指定する各ノードの参照対象を、ノードの一部の指定領域(残余ビット)からノードの全領域に切り替える。また、旧バージョンのファイル(旧a.dll)および第1のノード(旧ノードN1)が消去された場合、各ライブラリの保存領域を指定するノードの参照対象を、ノードの全領域からノードの一部の指定領域(残余ビット)に切り替える。
 そして、ハイパーバイザ131は、第1のノード(旧ノードN1)の一部の指定領域(残余ビット)の値と同一値を第2のノード(新ノードN2)の一部の指定領域(残余ビット)に割り当てる。また、第1のノード(旧ノードN1)の一部の指定領域(残余ビット)以外の残余の領域(識別ビット)の値と異なる値を第2のノード(新ノードN2)の一部の指定領域(残余ビット)以外の残余の領域(識別ビット)の値に割り当てる。
 すなわち、ノードの一部に識別ビットを割り当てて、アップデートモードと通常モードとを識別するようにし、かつ、ノードの残余ビットを新旧ライブラリで同一とした。そして、参照対象をアップデートモードでは、識別ビットを含む全ビットとし、通常モードでは識別ビットを除く残余ビットとして切替自在とした。
 さらに、アップデート完了後は、ノードの参照対象をアップデートモード前の状態、すなわち、識別ビットを除く残余ビットに復帰することで、識別ビットがマスクされる。これにより、通常、対象ライブラリa.dllを呼び出す場合は、残余ビットを手がかりにしてアプリケーションプログラム136は呼出を実行する。
 ここで、残余ビットは、でも新ノードN2でも旧ノードN1でも同じ値であるため、アプリケーションプログラム136からみれば、アップデートの前後において、残余ビットで特定されるノードで指定された保存領域にアクセスすれば、新バージョンのファイル(新a.dll)を呼び出すことができる。したがって、通常モードに悪影響を与えることなく、アプリケーションプログラム136を実行することができる。
 以上のように、更新プログラム、本更新装置、および更新方法は、携帯電話などのネットワークを介したアップデート処理を行う携帯型端末において、適用が可能である。
100 更新装置
131 ハイパーバイザ
133 ファイルシステム
134 リンカ
135 ダウンローダ
136 アプリケーションプログラム
141 カーネル
142 ライブラリ群
151 ステータステーブル
152 プロセステーブル
153 リンクテーブル
N1 旧ノード
N2 新ノード

Claims (8)

  1.  OS内のライブラリ群の中の対象ライブラリに関する新バージョンのファイルのダウンロードと前記対象ライブラリに関する旧バージョンのファイルの消去を実行するプロセッサが、
     前記新バージョンのファイルの存在を検出する検出工程と、
     前記検出工程によって検出された場合、前記旧バージョンのファイルの保存領域を指定する第1のノードとは異なる保存領域を指定する第2のノードを生成する生成工程と、
     前記生成工程によって生成された第2のノードにより指定された保存領域に前記新バージョンのファイルがダウンロードされた場合、前記旧バージョンのファイルが使用中であるか否かを判断する判断工程と、
     前記判断工程によって使用中でないと判断された場合、前記旧バージョンのファイルおよび前記第1のノードの消去指示を通知する通知工程と、
     を実行することを特徴とする更新方法。
  2.  前記判断工程は、
     前記判断工程によって使用中であると判断された場合、前記旧バージョンのファイルを使用しているプロセスが終了したか否かを判断し、
     前記通知工程は、
     前記判断工程によって前記プロセスが終了したと判断された場合、前記旧バージョンのファイルおよび前記第1のノードの消去指示を通知することを特徴とする請求項1に記載の更新方法。
  3.  前記対象ライブラリの呼出要求があった場合、前記旧バージョンのファイルが使用中でかつ前記新バージョンのファイルがダウンロード済みである場合、前記新バージョンのファイルを呼出対象に決定する決定工程を実行し、
     前記通知工程は、
     前記決定工程によって決定された呼出対象を、前記呼出要求をしたプロセスに通知することを特徴とする請求項1または2に記載の更新方法。
  4.  前記旧バージョンのファイルが使用中でない場合、前記旧バージョンのファイルおよび前記第1のノードの消去指示の通知に先立って、前記対象ライブラリの呼出を禁止設定し、前記旧バージョンのファイルおよび前記第1のノードが消去された場合、前記禁止設定を解除する禁止/解除設定工程を実行することを特徴とする請求項1または2に記載の更新方法。
  5.  前記検出工程によって検出された場合、前記OSに含まれている各ライブラリの保存領域を指定する各ノードの参照対象を、前記ノードの一部の指定領域から前記ノードの全領域に切り替える第1の切替工程と、
     前記旧バージョンのファイルおよび前記第1のノードが消去された場合、前記各ライブラリの保存領域を指定するノードの参照対象を、前記ノードの全領域から前記ノードの一部の指定領域に切り替える第2の切替工程と、を実行し、
     前記生成工程は、
     前記第1のノードの前記一部の指定領域の値と同一値を前記第2のノードの前記一部の指定領域に割り当てるとともに、前記第1のノードの前記一部の指定領域以外の残余の領域の値と異なる値を前記第2のノードの前記一部の指定領域以外の残余の領域の値に割り当てることにより、前記第2のノードを生成することを特徴とする請求項1または2に記載の更新方法。
  6.  前記旧バージョンのファイルおよび前記第1のノードが消去された場合、前記第2のノードの前記残余の領域の値を、前記第1のノードの前記残余の領域の値と同一値に書き換える書換工程を実行することを特徴とする請求項5に記載の更新方法。
  7.  OS内のライブラリ群の中の対象ライブラリに関する新バージョンのファイルのダウンロードと前記対象ライブラリに関する旧バージョンのファイルの消去を実行する更新装置であって、
     前記新バージョンのファイルの存在を検出する検出手段と、
     前記検出手段によって検出された場合、前記旧バージョンのファイルの保存領域を指定する第1のノードとは異なる保存領域を指定する第2のノードを生成する生成手段と、
     前記生成手段によって生成された第2のノードにより指定された保存領域に前記新バージョンのファイルがダウンロードされた場合、前記旧バージョンのファイルが使用中であるか否かを判断する判断手段と、
     前記判断手段によって使用中でないと判断された場合、前記旧バージョンのファイルおよび前記第1のノードの消去指示を通知する通知手段と、
     を備えることを特徴とする更新装置。
  8.  OS内のライブラリ群の中の対象ライブラリに関する新バージョンのファイルのダウンロードと前記対象ライブラリに関する旧バージョンのファイルの消去を実行するプロセッサに、
     前記新バージョンのファイルの存在を検出する検出工程と、
     前記検出工程によって検出された場合、前記旧バージョンのファイルの保存領域を指定する第1のノードとは異なる保存領域を指定する第2のノードを生成する生成工程と、
     前記生成工程によって生成された第2のノードにより指定された保存領域に前記新バージョンのファイルがダウンロードされた場合、前記旧バージョンのファイルが使用中であるか否かを判断する判断工程と、
     前記判断工程によって使用中でないと判断された場合、前記旧バージョンのファイルおよび前記第1のノードの消去指示を通知する通知工程と、
     を実行させることを特徴とする更新プログラム。
PCT/JP2010/052794 2010-02-23 2010-02-23 更新方法、更新装置、および更新プログラム WO2011104825A1 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN2010800632393A CN102754082A (zh) 2010-02-23 2010-02-23 更新方法、更新装置、以及更新程序
PCT/JP2010/052794 WO2011104825A1 (ja) 2010-02-23 2010-02-23 更新方法、更新装置、および更新プログラム
JP2012501564A JPWO2011104825A1 (ja) 2010-02-23 2010-02-23 更新方法、更新装置、および更新プログラム
EP10846492.6A EP2541412A4 (en) 2010-02-23 2010-02-23 UPDATE METHOD, UPDATE DEVICE, AND UPDATE PROGRAM
US13/569,659 US20120304162A1 (en) 2010-02-23 2012-08-08 Update method, update apparatus, and computer product

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/052794 WO2011104825A1 (ja) 2010-02-23 2010-02-23 更新方法、更新装置、および更新プログラム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US13/569,659 Continuation US20120304162A1 (en) 2010-02-23 2012-08-08 Update method, update apparatus, and computer product

Publications (1)

Publication Number Publication Date
WO2011104825A1 true WO2011104825A1 (ja) 2011-09-01

Family

ID=44506272

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2010/052794 WO2011104825A1 (ja) 2010-02-23 2010-02-23 更新方法、更新装置、および更新プログラム

Country Status (5)

Country Link
US (1) US20120304162A1 (ja)
EP (1) EP2541412A4 (ja)
JP (1) JPWO2011104825A1 (ja)
CN (1) CN102754082A (ja)
WO (1) WO2011104825A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160003505A (ko) * 2014-07-01 2016-01-11 한국전자통신연구원 동적 모듈, 이를 구비한 동적 업그레이드 장치 및 방법

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014206967A (ja) * 2013-03-18 2014-10-30 株式会社Genusion 記憶装置
CN104699492A (zh) * 2013-12-06 2015-06-10 中兴通讯股份有限公司 一种软件升级方法和装置
DE102015214385A1 (de) * 2015-07-29 2017-02-02 Robert Bosch Gmbh Verfahren und Vorrichtung zum Absichern der Anwendungsprogrammierschnittstelle eines Hypervisors
CN107885516A (zh) * 2016-09-30 2018-04-06 环鸿电子(昆山)有限公司 应用程序更新方法及移动装置
US10572275B2 (en) * 2017-06-15 2020-02-25 Microsoft Technology Licensing, Llc Compatible dictionary layout
US10684881B2 (en) * 2017-11-07 2020-06-16 International Business Machines Corporation Batch processing of computing elements to conditionally delete virtual machine(s)
CN109753319B (zh) * 2018-12-28 2020-01-17 中科寒武纪科技股份有限公司 一种释放动态链接库的装置及相关产品
CN111190628B (zh) * 2019-12-31 2023-10-20 京信网络系统股份有限公司 基站升级方法、装置、设备和存储介质
CN111796941A (zh) * 2020-07-06 2020-10-20 北京字节跳动网络技术有限公司 内存管理方法、装置、计算机设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06110668A (ja) * 1992-09-25 1994-04-22 Fujitsu Ltd 世代付きロードモジュールライブラリの更新処理システム
JPH07319683A (ja) * 1994-05-30 1995-12-08 Nippon Telegr & Teleph Corp <Ntt> 運用中プログラム更新方式
JPH11345114A (ja) * 1998-06-02 1999-12-14 Nec Corp クライアントアプリケーションプログラムの管理方法及びその装置
JP2006004373A (ja) * 2004-06-21 2006-01-05 Sanyo Electric Co Ltd 電気機器管理装置およびソフトウェア更新装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6154878A (en) * 1998-07-21 2000-11-28 Hewlett-Packard Company System and method for on-line replacement of software
US6397385B1 (en) * 1999-07-16 2002-05-28 Excel Switching Corporation Method and apparatus for in service software upgrade for expandable telecommunications system
TW495675B (en) * 2000-09-14 2002-07-21 Acer Ipull Inc System for updating program executable being running and the method thereof
US7346009B2 (en) * 2002-09-30 2008-03-18 Mosaid Technologies, Inc. Dense mode coding scheme
US7389505B2 (en) * 2004-07-30 2008-06-17 Extreme Networks, Inc. Method and apparatus for modifying software

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06110668A (ja) * 1992-09-25 1994-04-22 Fujitsu Ltd 世代付きロードモジュールライブラリの更新処理システム
JPH07319683A (ja) * 1994-05-30 1995-12-08 Nippon Telegr & Teleph Corp <Ntt> 運用中プログラム更新方式
JPH11345114A (ja) * 1998-06-02 1999-12-14 Nec Corp クライアントアプリケーションプログラムの管理方法及びその装置
JP2006004373A (ja) * 2004-06-21 2006-01-05 Sanyo Electric Co Ltd 電気機器管理装置およびソフトウェア更新装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP2541412A4 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160003505A (ko) * 2014-07-01 2016-01-11 한국전자통신연구원 동적 모듈, 이를 구비한 동적 업그레이드 장치 및 방법

Also Published As

Publication number Publication date
EP2541412A4 (en) 2013-04-10
JPWO2011104825A1 (ja) 2013-06-17
EP2541412A1 (en) 2013-01-02
US20120304162A1 (en) 2012-11-29
CN102754082A (zh) 2012-10-24

Similar Documents

Publication Publication Date Title
WO2011104825A1 (ja) 更新方法、更新装置、および更新プログラム
US7703090B2 (en) Patch un-installation
US9483256B2 (en) Virtualized application image patching
US8001086B2 (en) Sharing files among different virtual machine images
JP5655677B2 (ja) ハイパーバイザ置き換え方法および情報処理装置
CN101576828B (zh) 软件版本升级方法及装置、服务器
US9928059B1 (en) Automated deployment of a multi-version application in a network-based computing environment
JP4189436B2 (ja) データ処理制御方法
WO2012100535A1 (zh) 超级内核组件的升级方法和计算机系统
WO2022111097A1 (zh) 一种文件更新方法及装置、设备、存储介质
JPH03278126A (ja) 計算機システム立上げ方式
JP6123626B2 (ja) 処理再開方法、処理再開プログラムおよび情報処理システム
JP2019159830A (ja) 情報処理装置、情報処理方法およびプログラム
WO2015027732A1 (zh) 一种动态补丁函数的方法及装置、存储介质
CN103677937A (zh) 升级软件和运行软件的方法及装置
CN111400256B (zh) 一种应用程序调用资源文件的方法及装置
JP2017126293A (ja) 情報処理装置及びリソース管理方法
JP2011076370A (ja) デプロイシステム
JP5197159B2 (ja) プログラム起動装置及びプログラム起動方法
JP2005092708A (ja) ソフトウェア更新システム及びソフトウェア更新方法並びにコンピュータプログラム
WO2018150820A1 (ja) 情報処理装置
JP6700848B2 (ja) 管理システム、制御方法
JP4937200B2 (ja) イメージ検査装置、os装置及びイメージ検査方法
JP3933055B2 (ja) 動的機能追加方式、および、プログラム
JP2004118753A (ja) オブジェクト共用化プログラム、オブジェクト共用化方法及び情報処理装置

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 201080063239.3

Country of ref document: CN

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 10846492

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2010846492

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 2012501564

Country of ref document: JP

NENP Non-entry into the national phase

Ref country code: DE