JP2013517565A - オペレーティングシステム自動更新手順 - Google Patents

オペレーティングシステム自動更新手順 Download PDF

Info

Publication number
JP2013517565A
JP2013517565A JP2012548998A JP2012548998A JP2013517565A JP 2013517565 A JP2013517565 A JP 2013517565A JP 2012548998 A JP2012548998 A JP 2012548998A JP 2012548998 A JP2012548998 A JP 2012548998A JP 2013517565 A JP2013517565 A JP 2013517565A
Authority
JP
Japan
Prior art keywords
operating system
file
edge
new
update
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
JP2012548998A
Other languages
English (en)
Other versions
JP2013517565A5 (ja
Inventor
デ・ロス・レイエス,アンドリュー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of JP2013517565A publication Critical patent/JP2013517565A/ja
Publication of JP2013517565A5 publication Critical patent/JP2013517565A5/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories

Abstract

本発明は、クライアントデバイス302、306、308、310、312内のオペレーティングシステムの差分更新に関する。デルタ更新ファイル100が、旧インストールパーティションからポートするメモリ326内の新しいインストールパーティションに対して実行される操作の順序付きリストを含む。更新の差分を求め、クライアントデバイスに送信されるデータを圧縮するのに2値差分圧縮アルゴリズムを用いることができる。パーティション内のブロックが、循環して互いに依存する場合がある(S202、S204)。エッジがカットされ、サイクルが切断される。
【選択図】図2

Description

[関連出願の相互参照]
本出願は、2010年1月12日に出願された米国仮出願第61/294,266号の優先権を主張する。この米国仮出願の全体の開示内容は、引用することにより本明細書の一部をなすものとする。
オペレーティングシステム等のソフトウェアパッケージは、新しい特徴を導入し、誤りを訂正し、セキュリティ上の欠陥に対処するために、随時、更新することができる。大きなアプリケーションのファイルサイズのために、更新を有する完全に新しいパッケージを送信しインストールすることは不便又は非効率である場合がある。1つの解決策は、差分更新をクライアントに送信することである。差分更新は、従前のソフトウェアからの特定の変更のみをカバーしている。差分更新が正しく行われない場合、修正されたソフトウェアは、不十分に動作する場合もあるし、全く動作しない場合もある。
本発明は、包括的には、オペレーティングシステムに関する。より詳細には、本発明は、オペレーティングシステムのバージョンの更新に関する。
1つの実施の形態によれば、コンピュータ可読オペレーティングシステムの更新を生成する方法が提供される。該方法は、前記オペレーティングシステムの現バージョンのバージョン番号を特定するステップと、プロセッサを用いて、前記オペレーティングシステムの前記現バージョンを前記オペレーティングシステムの新バージョンに更新する操作の順序付きリストを作成するステップであって、前記プロセッサは、前記オペレーティングシステムの前記新バージョンに対して各通常ファイルにわたり反復を実行して、前記新バージョンに関連付けられた全てのデータブロックの前記順序付きリストを取得する、作成するステップと、前記プロセッサを用いて、差分更新ファイルが実際の更新ファイルであることを示すマジックナンバ指示子と、前記オペレーティングシステムの前記新バージョンを特定する新バージョン番号と、前記操作の順序付きリストを含むプロトコルバッファとを含む前記差分更新ファイルを組み立てるステップとを含む。
一例では、前記順序付きリスト内の1以上の操作は、それぞれ、データのチャンクを示すそれぞれのデータブロブに関連付けられる。ここで、前記差分更新ファイルは、前記それぞれのデータブロブを含むように組み立てられる。別の例では、前記順序付きリスト内の各操作は、クライアントデバイスのパーティションの1以上の特定のデータブロックに適用可能である。前記操作は、前記パーティション内の前記データブロックのうちの少なくとも1つが、前記オペレーティングシステムの前記新バージョンのための前記クライアントデバイスの新しいパーティション内の別のブロックにコピーされることになるコピー操作と、前記データブロックのうちの少なくとも所与の1つがメモリに読み込まれ、前記差分更新ファイルのデータブロブを用いて前記少なくとも1つの所与のデータブロックに対して差分ルーチンが実行される差分操作と、前記差分更新ファイルの選択されたデータブロブが前記新しいパーティション内の指定ブロックに書き込まれるように構成される置換操作と、圧縮されたデータブロブが前記差分更新ファイルに含まれ、前記オペレーティングシステムの前記新バージョンのための前記新しいパーティション内の選択された指定ブロックに書き込まれるように構成される解凍付き置換(replace with uncompression)操作とのうちの1以上のものを含む。
1つの代替形態では、前記順序付きリスト内の各操作は、ファイルオブジェクトに関連付けられ、前記方法は、ファイルオブジェクトごとにグラフ内に頂点を作成するステップと、各ブロックを表すベクトルを作成するステップとを更に含む。1つの変形形態では、前記方法は、各ブロックの前記ベクトルのリーダパラメータ及びライタパラメータを設定するステップと、異なるリーダ及びライタを有するブロックごとに、該ライタから該リーダへのエッジを前記グラフ内に作成するステップとを更に含む。前記エッジは、該エッジに関連付けられたソースファイル操作が開始する前に完了されるファイル操作を指し示す。一例では、各エッジは重みを有し、該重みは、そのエッジに関連付けられた前記グラフ内のブロックの数を特定する。別の例では、前記グラフがサイクルを含む場合、前記方法は、前記サイクルのそれぞれを切断するステップを更に含む。この場合、前記サイクルのうちの所与の1つを切断するステップは、前記所与のサイクルに関連付けられた最小重みのエッジを見つけることと、前記最小重みのエッジをカットすることとを含みうる。ここで、前記最小重みのエッジをカットすることは、エクステントをスクラッチスペースにコピーする操作を表す新しいノードを作成することと、前記最小重みのエッジのソースノードに前記新しいノードを指し示させることとを含みうる。そして、新しいコピー操作が該新しいコピー操作のコンシューマの前に行われることを保証するために、前記最小重みのエッジのデスティネーションノードから新しいエッジを作ることができる。
本発明の別の実施の形態によれば、コンピュータ可読オペレーティングシステムの更新を生成するデバイスが提供される。該デバイスは、前記オペレーティングシステムに関連付けられた差分更新情報を格納するメモリと、前記メモリに結合されたプロセッサとを備える。前記プロセッサは、前記オペレーティングシステムの現バージョンのバージョン番号を特定し、前記オペレーティングシステムの前記新バージョンに対して各通常ファイルにわたり反復を実行して、前記新バージョンに関連付けられた全てのデータブロックの前記順序付きリストを取得することを含めて、前記差分更新情報を用いて、前記オペレーティングシステムの前記現バージョンを前記オペレーティングシステムの新バージョンに更新する操作の順序付きリストを作成し、差分更新ファイルが実際の更新ファイルであることを示すマジックナンバ指示子と、前記オペレーティングシステムの前記新バージョンを特定する新バージョン番号と、前記操作の順序付きリストを含むプロトコルバッファとを含む前記差分更新ファイルを組み立て、前記差分更新ファイルを前記メモリに格納するように構成される。
一例では、前記順序付きリスト内の各操作は、ファイルオブジェクトに関連付けられ、前記プロセッサは、ファイルオブジェクトごとにグラフ内に頂点を作成し、各ブロックを表すベクトルを作成するように更に構成される。一代替形態では、前記プロセッサは、各ブロックの前記ベクトルのリーダパラメータ及びライタパラメータを設定し、異なるリーダ及びライタを有するブロックごとに、該ライタから該リーダへのエッジを前記グラフ内に作成するように更に構成される。前記エッジは、該エッジに関連付けられたソースファイル操作が開始する前に完了されるファイル操作を指し示す。この場合、前記グラフがサイクルを含む場合、前記プロセッサは、前記サイクルのそれぞれを切断するようにオプションで動作可能である。ここで、前記サイクルのうちの所与の1つを切断することは、前記所与のサイクルに関連付けられた最小重みのエッジを見つけることと、前記最小重みのエッジをカットすることとを含みうる。この場合、前記プロセッサは、エクステントをスクラッチスペースにコピーする操作を表す新しいノードを作成し、前記最小重みのエッジのソースノードに前記新しいノードを指し示させることによって前記最小重みのエッジをカットするように動作可能とすることができる。そして、新しいコピー操作が該新しいコピー操作のコンシューマの前に行われることを保証するために、前記最小重みのエッジのデスティネーションノードから新しいエッジを作ることができる。
更なる実施の形態では、有形のコンピュータ可読ストレージ媒体が、コンピュータプログラムのコンピュータ可読命令を格納する。前記命令は、コンピュータによって実行されると、コンピュータ可読オペレーティングシステムの更新を生成する方法を前記コンピュータに実行させる。前記方法は、前記オペレーティングシステムの現バージョンのバージョン番号を特定するステップと、プロセッサを用いて、前記オペレーティングシステムの前記現バージョンを前記オペレーティングシステムの新バージョンに更新する操作の順序付きリストを作成するステップであって、前記プロセッサは、前記オペレーティングシステムの前記新バージョンに対して各通常ファイルにわたり反復を実行して、前記新バージョンに関連付けられた全てのデータブロックの前記順序付きリストを取得する、作成するステップと、前記プロセッサを用いて、差分更新ファイルが実際の更新ファイルであることを示すマジックナンバ指示子と、前記オペレーティングシステムの前記新バージョンを特定する新バージョン番号と、前記操作の順序付きリストを含むプロトコルバッファとを含む前記差分更新ファイルを組み立てるステップとを含む。
一例では、前記順序付きリスト内の各操作は、ファイルオブジェクトに関連付けられ、前記方法は、ファイルオブジェクトごとにグラフ内に頂点を作成するステップと、各ブロックを表すベクトルを作成するステップとを更に含む。この場合、前記方法は、各ブロックの前記ベクトルのリーダパラメータ及びライタパラメータを設定するステップと、異なるリーダ及びライタを有するブロックごとに、該ライタから該リーダへのエッジを前記グラフ内に作成するステップとを更に含みうる。前記エッジは、該エッジに関連付けられたソースファイル操作が開始する前に完了されるファイル操作を指し示す。ここで、前記グラフがサイクルを含む場合、前記方法は、各所与のサイクルに関連付けられた最小重みのエッジを見つけるステップと、各サイクルの前記最小重みのエッジをカットすることとによって前記サイクルのそれぞれを切断するステップとを更に含みうる。前記最小重みのエッジをカットすることは、エクステントをスクラッチスペースにコピーする操作を表す新しいノードを作成することと、前記最小重みのエッジのソースノードに前記新しいノードを指し示させることとを含みうる。そして、新しいコピー操作が該新しいコピー操作のコンシューマの前に行われることを保証するために、前記最小重みのエッジのデスティネーションノードから新しいエッジを作ることができる。
更なる実施の形態では、クライアントデバイスが、オペレーティングシステムの現バージョンを格納するメモリと、前記メモリに結合されたプロセッサとを備える。前記プロセッサは、前記オペレーティングシステムの前記現バージョンの更新に関して遠隔デバイスに要求を送信し、ここで、該要求は、前記オペレーティングシステムの前記現バージョンを特定するバージョン番号を含み、前記遠隔デバイスから差分更新ファイルを受信し、ここで、該差分更新ファイルは、該差分更新ファイルが実際の更新ファイルであることを示すマジックナンバ指示子と、前記オペレーティングシステムの前記新バージョンを特定する新バージョン番号と、操作の順序付きリストを含むプロトコルバッファとを含み、前記マジックナンバを検証し、前記プロトコルバッファから前記操作の順序付きリストを抽出し、前記オペレーティングシステムの前記現バージョンを前記オペレーティングシステムの前記新バージョンに更新するために、前記操作の順序付きリストを実行することによって差分更新を実行するように構成される。
一例では、前記プロセッサは、前記差分更新ファイルが前記クライアントデバイスにストリーミングされている間に、前記メモリに前記差分更新ファイルを保存することなく、前記オペレーティングシステムの前記新バージョンへの前記オペレーティングシステムの前記差分更新を実行するように動作可能である。
本発明の態様によるファイルフォーマットを示す図である。 本発明の態様による、エッジをカットしてサイクルを切断するプロセスである。 本発明の態様による差分更新プロセスを示す図である。 本発明において用いるコンピュータシステムを示す図である。 本発明において用いるコンピュータシステムを示す図である。
本発明の態様、特徴及び利点は、好ましい実施形態の以下の説明及び添付した図を参照して検討すると理解されるであろう。種々な図面における同じ参照符号は、同じ要素又は同様の要素を特定することができる。
オペレーティングシステムの随時異なる特徴が更新される。それらの更新は、あらかじめ規定された更新プロセスを実行するクライアントコンピュータに送信することができる。これは、クライアントに対するファイルの消去、変更及び/又は追加を伴うことができる。1つのプロセスでは、更新は、オペレーティングシステムプロバイダによって準備される。これは、差分更新ファイルを作成することを含みうる。差分更新ファイルは、どのような変更を行う必要があるかをクライアントに示す。そして、差分更新ファイルは、更新される各クライアントに送信される。クライアントは、望ましくは、ファイル内の操作を順次実行して更新を行う。
オペレーティングシステムを含むパーティションは、1以上のブロックとして構成することができ、各ブロックは、ファイル情報又はブックキーピング情報を含む。各ブロックは、例えば4kバイトとすることができるが、本発明は、これに限定されるものでもなければ、どの特定のブロックサイズにも限定されるものでもない。オペレーティングシステム自体は、コンピュータプロセッサ上で実行されるプログラム(例えば命令)及びデータを含み、コンピュータハードウェアリソースを管理し、様々なアプリケーションソフトウェアの効率的な実行のための共通のサービスを提供する。オペレーティングシステムを更新するとき、新しいパーティションを作成することができる。この新しいパーティションは、オペレーティングシステムの旧バージョンで事前にポピュレートされる。その結果得られた(ルートファイルシステムを包含する)インストールパーティション上の各ディスクブロックは、望ましくは、オペレーティングシステムベンダが(例えば、ベリファイドブートの場合)サーバ上で署名を受けることができるように、オペレーティングシステムベンダによって正確に(ビット単位で)指定される。
更新は可能な限り小さいことが望ましい。1つのシナリオでは、リブートすることなく、多くのデルタ(差分)更新をインストールすることができるように、更新は所定の位置に適用される。したがって、ユーザがバージョンNにブートされ、N+1がリリースされた場合、ユーザ(クライアント)は、N→N+1に更新されたものをダウンロードし、その更新されたものをインストールする。そして、N+2が登場したときでも、ユーザは依然としてN+1にブートされる。そして、ユーザは、N+1→N+2更新をダウンロードし、その更新をN+1上の所定の位置にインストールする。
一例では、クライアントは、更新サーバと連絡をとり、現在のインストールパーティション上にインストールされているシステムのバージョン番号を提供する。サーバは、クライアントにダウンロードされる増分(デルタ)更新をクライアントに提供する。デルタ更新ファイルは、インストールパーティションを旧(既存)バージョンから新バージョンにする、インストールパーティションに対して実行する操作の順序付きリストを含む。
望ましくは、更新ファイルは、クライアントによって実行される操作の順序付きリストである。各操作は、パーティションの特定のブロックに対して作用する。各操作は、デルタファイルの内部のオプションのデータ「ブロブ(blob)」を含みうる。用語「ブロブ」とは、バイトの任意の集まりを有することができる大きなデータチャンクを示す。「Copy(コピー)」、「Diff(ディフ)」、「Replace(置換)」及び「Replace with Uncompression(解凍付き置換)」を含む数タイプのインストール操作がある。Copyでは、現在のインストールパーティション内のブロックのうちの幾つかが新しいインストールパーティション内の他のブロックにコピーされる。Diffの場合、幾つかのブロックがメモリ内に読み込まれ、付属のデータブロブを用いて2値差分ルーチンが実行される。その結果は、新しいインストールパーティション内の指定ブロックに書き込まれる。Replaceの場合、付属のデータブロブが新しいインストールパーティション内の指定ブロックに書き込まれる。圧縮プロセスも実行することができ、圧縮プロセスにおいて、圧縮データブロブがクライアントに送信されて解凍され、その結果が新しいインストールパーティション内の指定ブロックに書き込まれる。この圧縮プロセスでは、Gzip、Bzip2又は別の圧縮アルゴリズムを用いることができる。
1つのシナリオでは、旧ファイルがインストールパーティションであることがパッチプログラムに指示される。プログラムにパーティション全体をメモリに読み込ませるのではなく、ファイルをメモリ内に入れるためにいずれのブロックを読み出すべきかがパッチプログラムに指示される。そして、パッチ操作がメモリ内で実行される。最後に、その結果は、デバイスの開始時ではないが、新しいインストールパーティションに直接書き込まれる。その代わり、プログラムは、いずれのブロックに結果を書き込むのかを伝えられる。
デルタ/差分更新ファイルは、以下の議論に従って生成することができる。更新ファイルフォーマットは、図1のファイルフォーマット100に示されるようにすることができる。具体的には、フォーマットは、好ましくは、ファイルが実際に更新ファイルであることを示す「マジックナンバ」指示子又はサニティチェックを含む。一例では、マジックナンバは、「CrAU」等の短いフレーズの2値バージョンを含む4バイトを含む。次はバージョン番号であり、その後に、プロトコルバッファオフセット及び長さが続き、これらのそれぞれは8バイトとすることができる。プロトコルバッファそのものが次に続く。プロトコルバッファは、クライアントが順に実行する一連の命令である。次に、1以上のデータブロブが提供され、その後に、ファイル終端(EOF)指示子が続く。順序はこの図に示されるようにすることができるが、所望の場合には、様々な構成要素を異なる順序にすることができる。
1つのシナリオでは、「エクステント」の概念が用いられる。エクステントはディスクブロックの連続した範囲である。例えば、ブロック{10,11,12,13,14,15,17,18}を指定するのではなく、{(10,6),(17,2)}(エクステントのリスト)を指定する方が簡単な場合がある。デルタ更新を生成する一例示のプロセスは、以下のとおりである。
このマニフェスト(manifest)は、インストール操作のリストを示す。入力エクステントは、読み出されるブロックを示す。出力エクステントは、書き込まれるブロックを示す。
デルタ更新を生成するために、新しいファイルシステムに対して各通常ファイルにわたり反復が実行され、新しいファイルシステムが有する全てのデータブロックの順序付きリストが取得される。これは、以下のフォーマットを有するファイル構造に格納される。
最終的に、各ファイルオブジェクトは、プロトコルバッファ内のInstallOperation(インストール操作)メッセージに変換されることになる。ファイルごとに、該ファイルを圧縮する最適な方法を規定することが望ましい。4つのケースが存在する。1つのケースでは、ファイルは変化していない。他の3つのケースでは、ファイルは変化している。1つのシナリオでは、Bzip2又は別の圧縮アルゴリズムを用いて、変化したファイルを最小サイズに圧縮することができる。別のシナリオでは、ファイルは変化しており、最小サイズに解凍される。第3のシナリオでは、ファイルは変化しており、最小のものをbinary−diff(バイナリディフ)する。ファイルが新しい場合、これは、該ファイルがオペレーティングシステムの旧バージョンには存在しなかったことを意味するが、これらのケースのうちの2つのみが当てはまる。データは、全て送信することもできるし、圧縮して全て送信することもできる。
本発明の1つの態様によれば、ファイルオブジェクトごとにグラフに頂点が作成される。グラフとともに、ベクトルがインストールパーティション内の各ブロックを表すのに作成される。
その後、プロセスは、各ファイルオブジェクト内の各ブロックを通過する。ブロックごとに、リーダパラメータ及びライタパラメータがブロックのベクトルについて設定される。
次に、反復がブロックのアレイを通して実行される。異なるリーダ及びライタ(ともに非ヌルである)を有するブロックごとに、エッジ(矢印)がライタからリーダへのグラフに作成される。(有向)グラフ内のエッジは、該エッジのソースファイル操作が開始する前に完了しなければならないファイル操作を指し示す。したがって、このプロセスは、異なるファイル操作によってブロックの読み出し及び書き込みの双方が行われる場合、該ブロックが書き込まれる前に読み出されることを確実にするように試みる。エッジはグラフ内のブロックを表し、したがって、エッジの重みはブロック数である。
このとき、結果は、サイクルを備えたグラフを有する可能性がある。サイクルは切断されるべきである。サイクルは、「Finding all the Elementary Circuits of a Directed Graph」(SIAM J. Comput., vol. 4 no. 1, March 1975)に述べられているようなDonald B. Johnsonの回路発見アルゴリズムを用いて見つけることができる。この文献の開示内容全体は、引用することにより本明細書の一部をなすものとする。サイクルは、「Tarjan's Strongly Connected Components Algorithm」(David Eppstein, Ed., Wikipedia)に述べられているようなTarjanのアルゴリズムを用いて見つけることもできる。この文献の開示内容全体は、引用することにより本明細書の一部をなすものとする。サイクルごとに、最小重みのエッジが見つけられカットされる。エッジは以下のようにカットすることができる。先ず、幾つかのエクステントをスクラッチスペースにコピーする操作を表す新しいノードを作成する。次に、エッジのソースノードに新しいノードを指し示させる。ここで、カットされたエッジのデスティネーションノードから新しいノードへのエッジを作成して、新しいコピー操作がコピーのコンシューマの前に行われることを強制することができる。好ましくは、エッジがカットされることによって表されるブロックからではなく、スクラッチスペースから読み出すように、カットされたエッジのデスティネーションノードを修正する。
エッジをカットしてサイクルを切断する一例は、図2のプロセス200に示される。矢印は、指し示される側の操作が指し示す側の操作の前に行われる必要があり、指し示す側の操作が、指し示される側によって必要とされるデータを上書きするので、その順序で行われることを必要とすることを示す。この図に示すように、S202において、操作Aが、ブロック3を読み出し、ブロック4を書き込む。そして、S204において、操作Bが、ブロック4を読み出し、ブロック10を書き込む。サイクルは、AとBとの間のエッジ(矢印206)をカットすることによって切断される。これは、tempブロックTを用いることによって行うことができる。したがって、図示するように、S208において、操作Aが、ブロック3を読み出し、ブロック4を書き込む。S210において、操作Cが、ブロック4を読み出し、ブロックTを書き込む。そして、S212において、操作B’が、ブロックTを読み出し、ブロック10を書き込む。サイクルが切断されると、トポロジカルソートを用いて全てのノードを順序付けることができる。それは、全てのファイルデータブロックのインストールをカバーしている。
一例では、B’−>C−>A−>Tempにように、エッジを選んでカットすることが可能である。この場合、Temp操作は、ブロックAをtempエリアにコピーする。BはB’に修正され、次に、B’はtempエリアから読み出される。一方、第2のエッジ(例えば、C−>A)が切断される場合、その結果は、B’−>C−>Temp2及びA’−>Tempとなる。この結果、2つの完全に独立したグラフが得られ、操作の最終的な順序は以下のように配列することができる。
Temp2(クライアントはこれを最初に実行する)

B’
Temp
A’(クライアントはこれを最後に実行する)
しかしながら、この場合、B’は、Temp操作によって書き込まれたデータを読み出すが、TempはB’の後に行われる。これは、A−>Bがエッジをカットされたときに行われたグラフ変換が、TempがB’の前に行われなければならないことを特に明確に指定していなかったことから起こる場合がある。この状況を回避するために、別のエッジが、これを明示的にするために追加される。その結果は以下のようになる。
A−>B−>C−>A(オリジナル)
A−>Bをカットして以下を取得する:
B’−>C−>A−>Temp<−B’
次に、C−>Aをカットして以下を取得する:
B’−>C'−>Temp2<−A−>Temp<−B’
次に、操作の最終的な順序がグラフに基づいて選ばれ、操作は正しい順序で行われる。
例示のプロセスが図3に示されている。ステージ1において、ディスクイメージがスキャンされる。ブロックインデックス(0〜7)は、異なるイメージ(例えば、「sh」、「foo」、「bar」及び「dog」)に関連付けることができる。新しいイメージは、同じブロック又は異なるブロックに関連付けることができる。したがって、ここでは、「foo」は、ブロック4の代わりにブロック2及び3に関連付けることができる。「sh」は、ブロック2及び3の代わりにブロック4及び5に関連付けることができる。「bar」は、ブロック5の代わりにブロック6に関連付けることができる。そして、新しいイメージ「cat」は、ブロック7に関連付けることができる。
ステージ2において、ファイル操作が作成される。これは、新しいパーティション上のファイルに対応する。この後に、ブロックベクトルが続く。ブロックベクトルは順序付きリストであり、ブロックベクトルにおいて、各要素は、所与のブロックのファイル操作を含む。各イメージは、1以上のソースブロック及び1以上のデスティネーションブロックを有することができる。したがって、「foo」のソースブロックはブロック4であり、「foo」のデスティネーションブロックは、「dst:(2,2)」として示され、これは、最初のブロックがブロック2であり、2つのブロックが割り当てられていることを示している。この部分は、各イメージをクライアントにどのように提供することができるのかも示している。したがって、foo及びbarは、bsdiff等の2値差分アルゴリズムを用いて提供することができ、shは、単にコピーのみすることができ、catは、圧縮なしで全体を送信することができる。Bsdiffは2つのファイル間の差分を計算する既知のアルゴリズムである。
ステージ3に示すように、エッジ重み(例えば、1又は2)がブロック数に等しいグラフが作成される。ステージ4において、サイクルが切断される。望ましくは、サイクル(複数の場合もあり)は、各サイクルにおける最小重みエッジをカットすることによってカットされる。したがって、この例では、shからfooへの矢印(重み1を有する)を含むサイクルが切断され、修正されたfoo(foo’)が得られる。そして、ステージ5において、トポロジカルソートの結果得られた最終的な順序が示される。これは、クライアント上で実行される順序である。
クライアントは、ファイルデータを設定した後、残りのデータをアンジップして全て非ファイルデータブロックにする最終的なInstallOperationを用いて非ファイルデータブロックに上書きする。一般的な例では、これは、約2メガバイトの圧縮データである。このデータに対してデルタ圧縮プロセスを実行することが実現可能な場合がある。
(全ての操作をリストする)プロトコルバッファは、ファイルの先頭に現れるので、更新をディスクに保存する必要はない。更新は、サーバからのストリーミング中に適用することができる。更新がOSベンダによって署名されることを確実にすることが望ましい。システムは、更新の適用を開始することができ、デルタ更新シグネチャの検証後になるまで、更新をブート可能にマーキングしないことができる。
ここに提示した実施形態は、実際に最良の圧縮比を与えることがわかっている。これによって、オペレーティングシステムベンダは、将来の代替的な圧縮方式を用いることも可能になる。例えば、Googleによって開発された1つのプロセスはCourgetteであり、これは、bsdiffに取って代わることができる。
別の可能な解決策は、パーティション全体をデルタ圧縮することである。しかしながら、bsdiffは、そのメモリ要件が高すぎるために、このシナリオでは動作することができない。パッチ中、bsdiffは、オリジナルのファイル及び新しいファイルを格納するのに十分なメモリを必要とし、このメモリは1ギガバイトを超える場合がある。別のデルタ圧縮プログラムであるXdeltaは、スライディングウィンドウを用いる。テストにおいて、このXdeltaは、圧縮が不十分な結果となった(例えば、数百メガバイト)。更なる代替形態はrdiffを用いることであり、rdiffは、変更されたブロックのみをデルタファイルに格納することによって動作する。rdiffは、ブロックを整列する必要がないように、スライディングウィンドウを用いる。パーティション全体のrdiffデルタは、テストされると、104メガバイトであった。これは、上述した手順に従って用いることができるおよそ10メガバイトを優に超えている。
今後、ファイルレベルにおいて、rdiffスタイル(すなわち、rsyncスタイル)のデルタ圧縮を用いることが可能な場合がある。これは、今後、bsdiffとともに用いることができる。
本発明の態様による更新手順は、以下の例示のコンピュータシステムを用いて実施することができる。図4Aは、本発明において単独で用いることもできるし、ネットワークされた構成で用いることもできる様々なコンピューティングデバイスを示すコンピュータシステムの概略図を示している。例えば、この図は、複数のコンピュータ302、304、306及び308と、移動電話310及びPDA312等のポータブル電子デバイス等の他のタイプのデバイスとを有するコンピュータネットワーク300を示している。しかしながら、本発明は、そのように限定されるものではなく、ネットブック及びパッド型ハンドヘルドコンピュータ(図示せず)を含む他のデバイスも用いることができる。そのようなデバイスは、ローカル接続若しくは直接接続314を介して相互接続することができ、及び/又はLAN、WAN、インターネット等の通信ネットワーク316を介して結合することができる。通信ネットワーク316は、有線又は無線とすることができる。
各デバイスは、例えば、1以上の処理デバイスを含むことがあり、キーボード318及びマウス320等のユーザ入力、並びに/又はペン入力、ジョイスティック、ボタン、タッチスクリーン等の様々な他のタイプの入力デバイスに加えて、例えば、CRT、LCD、プラズマスクリーンモニタ、TV、プロジェクタ等を含みうるディスプレイ322を有することができる。各コンピュータ302、304、306及び308は、パーソナルコンピュータやサーバ等でありうる。単なる例として、コンピュータ302及び306は、パーソナルコンピュータとすることができる一方、コンピュータ304はサーバとすることができ、コンピュータ308はラップトップとすることができる。
図4Bに示すように、コンピュータ302及び304等の各コンピュータは、プロセッサ324、メモリ/ストレージ326及びコンピュータ内に通常存在する他の構成要素を含む。例えば、メモリ/ストレージ326は、プロセッサ324によってアクセス可能な情報を格納する。この情報は、プロセッサ324が実行することができる命令328と、プロセッサが検索、操作又は格納することができるデータ330とを含む。サーバにおける命令328は、1以上のクライアントデバイスによってインストールされる差分更新を作成する操作を含みうる。そして、クライアントデバイスにおける命令は、差分更新を実行する操作を含みうる。
データは、クライアントデバイスに対するサービスのためにデータベースに保持された1以上の差分更新を含みうる。メモリ/ストレージは、ハードドライブやROMやRAMやCD−ROMやフラッシュメモリや書き込み可能メモリ又は読み出し専用メモリ等の、プロセッサによってアクセス可能な情報を格納可能な任意のタイプのもの又は任意のデバイスでありうる。プロセッサ324は、Intel Corporation又はAdvanced Micro Devices社からのプロセッサ等の、任意の個数の既知のプロセッサを含みうる。代替的には、プロセッサは、ASIC又は他の処理デバイス等の、操作を実行する専用コントローラでありうる。
命令328は、プロセッサ(複数の場合もあり)によって直接的(マシンコード等)又は間接的(スクリプト等)に実行される任意の一組の命令を含みうる。その点について、用語「命令」、「ステップ」及び「プログラム」とは、本明細書では交換可能に用いることができる。命令は、オブジェクトコード又はソースコードのモジュール等、任意のコンピュータ言語又はフォーマットにより格納することができる。本発明による機能、方法及び命令のルーチンは、以下により詳細に説明される。
データ330は、命令328に従って、プロセッサ324が検索、格納又は修正することができる。データは、データ集合体として格納することができる。例えば、本発明は、どの特定のデータ構造によっても限定されないが、データは、コンピュータレジスタ、複数の異なるフィールド及びレコードを有するテーブルとしてリレーショナルデータベース、XML文書としてウェブページキャッシュ等に格納することができる。
データは、限定するものではないが2値、ASCII又はUnicode等の任意のコンピュータ可読フォーマットにフォーマットすることもできる。その上、データは、説明文、独自のコード、ポインタ、他のメモリ(他のネットワークロケーションを含む)に格納されたデータへの参照子、又は関連データを計算するのに或る機能によって用いられる情報等、関連情報を特定するのに十分な任意の情報を含むことがある。さらに、所与のアイテムは、1以上のファイル、データベース、ウェブキャッシュに格納されたデータセット等を含みうる。データのサイズ及び内容に応じて、該データの一部ずつを別々に格納又は別の方法により保持することもできる。
プロセッサ324及びメモリ326は、図4Bでは、同じブロック内に存在するものとして機能的に示されているが、プロセッサ及びメモリは、実際には、同じ物理ハウジング又は物理ロケーション内に格納されることもあるし格納されないこともある複数のプロセッサ及びメモリを含みうることが理解されるであろう。例えば、命令及びデータの幾つか又は全ては、着脱可能なCD−ROM、DVD−ROM又はフラッシュドライブ、及び読み出し専用コンピュータチップ内の他のものに格納することができる。命令及びデータの幾つか又は全ては、プロセッサから物理的に遠隔ではあるが、それでもプロセッサによってアクセス可能なロケーションに格納することができる。同様に、プロセッサは、実際には、並列に動作することもあるし動作しないこともあるプロセッサの集合体を含みうる。データは、分散させることができ、ハードドライブ等の複数のメモリ326にわたって格納することができる。
1つの態様では、サーバ304は、1以上のクライアントコンピュータ302、306及び/又は308、並びに移動電話310及びPDA312等のデバイスと通信することができる。各クライアントコンピュータ又は他のクライアントデバイスは、プロセッサ、メモリ及び命令、並びに1以上のユーザ入力デバイス318、320及びディスプレイ322等のユーザ出力デバイスを用いてサーバ304と同様に構成することができる。各クライアントコンピュータは、中央処理装置(「CPU」)、ディスプレイ、CD−ROMドライブ若しくはDVDドライブ、ハードドライブ、マウス、キーボード、タッチスクリーン、スピーカ、マイク、モデム及び/又は(電話やケーブル等の)ルータ、並びにこれらの要素を互いに接続するのに用いられる構成要素の全て等の、パーソナルコンピュータにおいて通常見られる全ての構成要素を有する、人による使用を対象とした汎用コンピュータとすることができる。
サーバ304、ユーザコンピュータ及び他のデバイスは、ネットワーク316を介する等により、他のコンピュータと直接通信及び間接通信が可能である。図4A及び図4Bには少数のコンピューティングデバイスしか示されていないが、一般的なシステムは、各異なるコンピュータがネットワークの異なるノードに存在する、多数の接続されたサーバ及びクライアントを含むことができることが理解されるべきである。ネットワーク316、及び介在するノードは、1以上の企業に独自の通信プロトコル、Ethernet(登録商標)、WiFi、Bluetooth(登録商標)又はTCP/IPを用いるインターネット、イントラネット、仮想プライベートネットワーク、ワイドエリアネットワーク、ローカルネットワーク、プライベートネットワークを含む様々な構成及びプロトコルを備えうる。
任意の介在するノードを含むネットワークにわたる通信は、モデム(例えば、ダイヤルアップ又はケーブル)、ネットワークインタフェース及び無線インタフェース等、他のコンピュータへのデータの送信及び他のコンピュータからのデータの送信が可能な任意のデバイスによって容易にすることができる。サーバ304はウェブサーバでありうる。上述したように、情報が送信又は受信されると、或る利点が得られるが、本発明の他の態様は、情報のどの特定の送信方法にも限定されるものではない。例えば、幾つかの態様では、情報は、ディスク、テープ、CD−ROM等の媒体を介して送信することもできるし、ダイヤルアップモデムを介して2つのコンピュータシステム間で直接送信することもできる。他の態様では、或る情報は、非電子フォーマットで送信することができ、システム内に手動で入力することができる。
その上、本明細書で説明したシステム及び方法によるコンピュータ及びユーザデバイスは、命令の処理と、人間及び他のコンピュータへのデータの送信と、人間及び他のコンピュータからのデータの送信とが可能な任意のデバイスを含みうる。他のコンピュータは、ローカルストレージ機能のないネットワークコンピュータと、PDA312等のモデム付きPDAと、移動電話310等のインターネット対応無線電話と、ネットブックと、パッド型ハンドヘルドコンピュータとを含む。
図4Aに示すように、ネットワーク300は、クライアントデバイスに差分更新をサービス提供する更新データベース332も含みうる。更新データベースは、サーバ304に直接的又は間接的に結合することができる。一代替形態では、更新データベース332は、サーバ304の一部とすることもできるし、別の方法でサーバ304に論理的に関連付けることもできる。
本明細書では、本発明を特定の実施形態に関して説明してきたが、これらの実施形態は本発明の原理及び用途の単なる例示にすぎないことが理解されるべきである。したがって、例示の実施形態に対して多数の修正を行うことができること、及び添付の特許請求の範囲によって規定される本発明の趣旨及び範囲から逸脱することなく他の構成を考案することができることが理解されるべきである。例えば、或る実施形態はオペレーティングシステムについて示されているが、本発明の態様による差分更新は、他のソフトウェアパッケージ、アプリケーション及びサービスとともに用いることができる。さらに、特定のプロセスが添付図面において特定の順序で示されているが、そのような順序が本明細書において明白に述べられていない限り、そのようなプロセスは、どの特定の順序にも限定されるものではなく、異なる順序で又は並列に実行することができる。そして、特に別段に指定がない限り、追加のプロセスを追加することもできるし、他のプロセスを省くこともできる。
本発明は、限定するものではないが、コンピュータシステム操作と、そのようなコンピュータシステムのアプリケーションの更新とを含む幅広い産業上の利用可能性を享有する。

Claims (25)

  1. コンピュータ可読オペレーティングシステムの更新を生成する方法であって、
    前記オペレーティングシステムの現バージョンのバージョン番号を特定するステップと、
    プロセッサを用いて、前記オペレーティングシステムの前記現バージョンを前記オペレーティングシステムの新バージョンに更新する操作の順序付きリストを作成するステップであって、前記プロセッサは、前記オペレーティングシステムの前記新バージョンに対して各通常ファイルにわたり反復を実行して、前記新バージョンに関連付けられた全てのデータブロックの前記順序付きリストを取得する、作成するステップと、
    前記プロセッサを用いて、差分更新ファイルが実際の更新ファイルであることを示すマジックナンバ指示子と、前記オペレーティングシステムの前記新バージョンを特定する新バージョン番号と、前記操作の順序付きリストを含むプロトコルバッファとを含む前記差分更新ファイルを組み立てるステップと
    を含んでなる、コンピュータ可読オペレーティングシステムの更新を生成する方法。
  2. 前記順序付きリスト内の1以上の操作は、データのチャンクを示すそれぞれのデータブロブにそれぞれ関連付けられ、前記差分更新ファイルは、前記それぞれのデータブロブを含むように組み立てられるものである、請求項1に記載の方法。
  3. 前記順序付きリスト内の前記各操作は、クライアントデバイスのパーティションの1以上の特定のデータブロックに適用可能であり、前記操作は、前記パーティション内の前記データブロックのうちの少なくとも1つが、前記オペレーティングシステムの前記新バージョンのための前記クライアントデバイスの新しいパーティション内の別のブロックにコピーされることになるコピー操作と、前記データブロックのうちの少なくとも所与の1つがメモリに読み込まれ、前記差分更新ファイルのデータブロブを用いて前記少なくとも1つの所与のデータブロックに対して差分ルーチンが実行される差分操作と、前記差分更新ファイルの選択されたデータブロブが前記新しいパーティション内の指定ブロックに書き込まれるように構成される置換操作と、圧縮されたデータブロブが前記差分更新ファイルに含まれ、前記オペレーティングシステムの前記新バージョンのための前記新しいパーティション内の選択された指定ブロックに書き込まれるように構成される解凍付き置換操作とのうちの1以上のものを含む、請求項1又は2に記載の方法。
  4. 前記順序付きリスト内の前記各操作は、ファイルオブジェクトに関連付けられており、前記方法は、
    前記ファイルオブジェクトごとにグラフ内に頂点を作成することと、
    前記各ブロックを表すベクトルを作成することと、
    を更に含む、請求項1〜3のいずれか1項に記載の方法。
  5. 前記各ブロックの前記ベクトルのリーダパラメータ及びライタパラメータを設定するステップと、
    異なるリーダ及びライタを有する前記ブロックごとに、該ライタから該リーダへのエッジを前記グラフ内に作成するステップであって、前記エッジは、該エッジに関連付けられたソースファイル操作が開始する前に完了されるファイル操作を指し示すものである、作成するステップと
    を更に含む、請求項4に記載の方法。
  6. 前記各エッジは重みを有し、該重みは、そのエッジに関連付けられた前記グラフ内のブロックの数を特定する、請求項5に記載の方法。
  7. 前記グラフがサイクルを含む場合、前記方法は、
    前記サイクルのそれぞれを切断するステップを更に含む、請求項5又は6に記載の方法。
  8. 前記サイクルのうちの所与の1つを切断するステップは、
    前記所与のサイクルに関連付けられた最小重みのエッジを見つけることと、
    前記最小重みのエッジをカットすることと
    を含むものである、請求項7に記載の方法。
  9. 前記最小重みのエッジをカットすることは、
    エクステントをスクラッチスペースにコピーする操作を表す新しいノードを作成することと、
    前記最小重みのエッジのソースノードに前記新しいノードを指し示させることと
    を含むものである、請求項8に記載の方法。
  10. 新しいコピー操作が該新しいコピー操作のコンシューマの前に行われることを保証するために、前記最小重みのエッジのデスティネーションノードから新しいエッジが作られるものである、請求項9に記載の方法。
  11. コンピュータ可読オペレーティングシステムの更新を生成するデバイスであって、
    前記オペレーティングシステムに関連付けられた差分更新情報を格納するメモリと、
    前記メモリに結合されたプロセッサであって、
    前記オペレーティングシステムの現バージョンのバージョン番号を特定し、
    前記オペレーティングシステムの前記新バージョンに対して各通常ファイルにわたり反復を実行して、前記新バージョンに関連付けられた全てのデータブロックの前記順序付きリストを取得することを含めて、前記差分更新情報を用いて、前記オペレーティングシステムの前記現バージョンを前記オペレーティングシステムの新バージョンに更新する操作の順序付きリストを作成し、
    差分更新ファイルが実際の更新ファイルであることを示すマジックナンバ指示子と、前記オペレーティングシステムの前記新バージョンを特定する新バージョン番号と、前記操作の順序付きリストを含むプロトコルバッファとを含む前記差分更新ファイルを組み立て、
    前記差分更新ファイルを前記メモリに格納する、ように構成されるプロセッサと
    を備えてなる、コンピュータ可読オペレーティングシステムの更新を生成するデバイス。
  12. 前記順序付きリスト内の前記各操作は、ファイルオブジェクトに関連付けられ、前記プロセッサは、
    前記ファイルオブジェクトごとにグラフ内に頂点を作成し、
    前記各ブロックを表すベクトルを作成する、
    ように更に構成される、請求項11に記載のデバイス。
  13. 前記プロセッサは、
    前記各ブロックの前記ベクトルのリーダパラメータ及びライタパラメータを設定し、
    異なるリーダ及びライタを有する前記ブロックごとに、該ライタから該リーダへのエッジを前記グラフ内に作成し、ここで、前記エッジは、該エッジに関連付けられたソースファイル操作が開始する前に完了されるファイル操作を指し示す、
    ように更に構成される、請求項12に記載のデバイス。
  14. 前記グラフがサイクルを含む場合、前記プロセッサは、前記サイクルのそれぞれを切断するように更に動作可能である、請求項13に記載のデバイス。
  15. 前記サイクルのうちの所与の1つを切断することは、
    前記所与のサイクルに関連付けられた最小重みのエッジを見つけることと、
    前記最小重みのエッジをカットすることと
    を含むものである、請求項14に記載のデバイス。
  16. 前記プロセッサは、
    エクステントをスクラッチスペースにコピーする操作を表す新しいノードを作成し、
    前記最小重みのエッジのソースノードに前記新しいノードを指し示させる、
    ことによって、前記最小重みのエッジをカットするように動作可能である、請求項15に記載のデバイス。
  17. 新しいコピー操作が該新しいコピー操作のコンシューマの前に行われることを保証するために、前記最小重みのエッジのデスティネーションノードから新しいエッジが作られる、請求項16に記載のデバイス。
  18. コンピュータプログラムのコンピュータ可読命令が格納される有形のコンピュータ可読ストレージ媒体であって、前記命令は、コンピュータによって実行されると、コンピュータ可読オペレーティングシステムの更新を生成する手順を前記コンピュータに実行させ、前記手順は、
    前記オペレーティングシステムの現バージョンのバージョン番号を特定する手順と、
    プロセッサを用いて、前記オペレーティングシステムの前記現バージョンを前記オペレーティングシステムの新バージョンに更新する操作の順序付きリストを作成する手順であって、前記プロセッサは、前記オペレーティングシステムの前記新バージョンに対して各通常ファイルにわたり反復を実行して、前記新バージョンに関連付けられた全てのデータブロックの前記順序付きリストを取得する、作成する手順と、
    前記プロセッサを用いて、差分更新ファイルが実際の更新ファイルであることを示すマジックナンバ指示子と、前記オペレーティングシステムの前記新バージョンを特定する新バージョン番号と、前記操作の順序付きリストを含むプロトコルバッファとを含む前記差分更新ファイルを組み立てる手順と
    を含んでなる、コンピュータプログラムのコンピュータ可読命令が格納される有形のコンピュータ可読ストレージ媒体。
  19. 前記順序付きリスト内の前記各操作は、ファイルオブジェクトに関連付けられており、
    前記ファイルオブジェクトごとにグラフ内に頂点を作成する手順と、
    前記各ブロックを表すベクトルを作成する手順と
    を更に含む、請求項18に記載のストレージ媒体。
  20. 前記各ブロックの前記ベクトルのリーダパラメータ及びライタパラメータを設定する手順と、
    異なるリーダ及びライタを有する前記ブロックごとに、該ライタから該リーダへのエッジを前記グラフ内に作成する手順であって、前記エッジは、該エッジに関連付けられたソースファイル操作が開始する前に完了されるファイル操作を指し示す、作成する手順と
    を更に含む、請求項19に記載のストレージ媒体。
  21. 前記グラフがサイクルを含む場合には、
    各所与のサイクルに関連付けられた最小重みのエッジを見つけることと、
    前記各サイクルの前記最小重みのエッジをカットすることと
    によって前記サイクルのそれぞれを切断する手順を更に含む、請求項20に記載のストレージ媒体。
  22. 前記最小重みのエッジをカットすることは、
    エクステントをスクラッチスペースにコピーする操作を表す新しいノードを作成することと、
    前記最小重みのエッジのソースノードに前記新しいノードを指し示させることと
    を含むものである、請求項21に記載のストレージ媒体。
  23. 新しいコピー操作が該新しいコピー操作のコンシューマの前に行われることを保証するために、前記最小重みのエッジのデスティネーションノードから新しいエッジが作られる、請求項22に記載のストレージ媒体。
  24. オペレーティングシステムの現バージョンを格納するメモリと、
    前記メモリに結合されたプロセッサと
    を備えてなる、クライアントデバイスであって、
    前記プロセッサは、
    前記オペレーティングシステムの前記現バージョンの更新に関して遠隔デバイスに要求を送信し、ここで、該要求は、前記オペレーティングシステムの前記現バージョンを特定するバージョン番号を含み、
    前記遠隔デバイスから差分更新ファイルを受信し、ここで、該差分更新ファイルは、該差分更新ファイルが実際の更新ファイルであることを示すマジックナンバ指示子と、前記オペレーティングシステムの前記新バージョンを特定する新バージョン番号と、操作の順序付きリストを含むプロトコルバッファとを含み、
    前記マジックナンバを検証し、
    前記プロトコルバッファから前記操作の順序付きリストを抽出し、
    前記オペレーティングシステムの前記現バージョンを前記オペレーティングシステムの前記新バージョンに更新するために、前記操作の順序付きリストを実行することによって差分更新を実行する、
    ように構成されている、クライアントデバイス。
  25. 前記プロセッサは、前記差分更新ファイルが前記クライアントデバイスにストリーミングされている間に、前記メモリに前記差分更新ファイルを保存することなく、前記オペレーティングシステムの前記新バージョンへの前記オペレーティングシステムの前記差分更新を実行するように動作可能である、請求項24に記載のクライアントデバイス。
JP2012548998A 2010-01-12 2011-01-11 オペレーティングシステム自動更新手順 Pending JP2013517565A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US29426610P 2010-01-12 2010-01-12
US61/294,266 2010-01-12
PCT/US2011/020790 WO2011088022A2 (en) 2010-01-12 2011-01-11 Operating system auto-update procedure

Publications (2)

Publication Number Publication Date
JP2013517565A true JP2013517565A (ja) 2013-05-16
JP2013517565A5 JP2013517565A5 (ja) 2014-02-27

Family

ID=44259514

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012548998A Pending JP2013517565A (ja) 2010-01-12 2011-01-11 オペレーティングシステム自動更新手順

Country Status (7)

Country Link
US (1) US20110173601A1 (ja)
EP (1) EP2524307B1 (ja)
JP (1) JP2013517565A (ja)
KR (1) KR101735719B1 (ja)
AU (1) AU2011205480B2 (ja)
CA (1) CA2786613A1 (ja)
WO (1) WO2011088022A2 (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8479188B2 (en) * 2010-07-08 2013-07-02 Microsoft Corporation Binary code change vulnerability prioritization
US8566175B1 (en) 2011-04-04 2013-10-22 Google Inc. Common purchasing user interface
US9386114B2 (en) * 2011-12-28 2016-07-05 Google Inc. Systems and methods for accessing an update server
US9021457B2 (en) * 2013-01-22 2015-04-28 Apple Inc. Method and system for dynamically resizing enclosed storage device partitions
CN103473099B (zh) * 2013-09-13 2017-02-01 惠州Tcl移动通信有限公司 一种移动终端的软件升级方法和系统
US9996339B2 (en) 2014-06-04 2018-06-12 Microsoft Technology Licensing, Llc Enhanced updating for digital content
US9798740B2 (en) * 2014-12-29 2017-10-24 Here Global B.V. Updates for navigational map data organized in lists
EP3252605B1 (en) * 2015-01-26 2022-04-06 Hitachi Astemo, Ltd. Vehicle-mounted control device, program writing device, program generating device and program
US11334605B2 (en) 2015-06-04 2022-05-17 Here Global B.V. Incremental update of compressed navigational databases
US10860310B2 (en) 2015-09-30 2020-12-08 Apple Inc. Software updating
US20180081666A1 (en) * 2016-03-11 2018-03-22 Oleksii Surdu Reliable and Secure Firmware Update for Internet of Things (IoT) Devices
EP3279811B1 (en) 2016-08-04 2023-10-04 HERE Global B.V. Reducing size of update package data for navigation databases
CN106775808A (zh) * 2016-11-15 2017-05-31 中国电子科技集团公司第二十八研究所 基于远程校验算法的c/s架构软件自动更新升级方法
US10963450B2 (en) 2017-01-25 2021-03-30 Apple Inc. Optimizing offline map data updates
DK201870700A1 (en) * 2018-06-20 2020-01-14 Aptiv Technologies Limited OVER-THE-AIR (OTA) MOBILITY SERVICES PLATFORM
PL3617875T3 (pl) * 2018-08-27 2021-11-08 Ovh Sposób ulepszonej zautomatyzowanej aktualizacji oprogramowania przy zastosowaniu urządzenia sieciowego
KR102088164B1 (ko) * 2019-08-27 2020-03-12 루나 주식회사 소프트웨어 업데이트를 위한 신구 데이터간의 차분 생성 방법 및 그 장치
KR102088167B1 (ko) * 2019-08-27 2020-03-12 루나 주식회사 소프트웨어 업데이트 에이전트 장치 및 이를 통한 패치방법
CN110750291B (zh) * 2019-10-30 2023-06-23 苏州科达科技股份有限公司 边缘设备算法更新方法、系统、设备及存储介质
CN112988208B (zh) * 2019-12-18 2023-06-30 腾讯科技(深圳)有限公司 数据更新方法、装置、设备及存储介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002014833A (ja) * 2000-06-30 2002-01-18 Konica Corp フラッシュメモリの書き換え方式、制御装置、画像形成装置及びプログラム更新方式
JP2002108801A (ja) * 2000-09-29 2002-04-12 Ricoh Co Ltd 情報処理装置、画像読取装置、画像形成装置、画像データ記憶方法及びdma転送方法
JP2004514214A (ja) * 2000-11-17 2004-05-13 ビットフォン コーポレイション 情報をアップデートおよび配布するシステムおよび方法
JP2004227520A (ja) * 2003-01-27 2004-08-12 Mitsubishi Electric Corp 新旧プログラム書換情報生成装置及び新旧プログラム書換情報生成方法及びプログラム及びプログラムを記録したコンピュータ読み取り可能な記録媒体
JP2004326287A (ja) * 2003-04-23 2004-11-18 Mitsubishi Electric Corp プログラム遠隔更新システム
JP2005525641A (ja) * 2002-05-13 2005-08-25 イノパス・ソフトウェアー・インコーポレーテッド バイト・レベルのファイル相違検出および更新アルゴリズム
JP2008519360A (ja) * 2004-11-08 2008-06-05 イノパス・ソフトウェアー・インコーポレーテッド 圧縮リード・オンリ・メモリ・ファイル・システム(crmfs)画像の更新
JP2009536395A (ja) * 2006-06-19 2009-10-08 サムスン エレクトロニクス カンパニー リミテッド Otaが可能な端末の情報アップグレードシステム及び方法{informationupgradesystemandmethodforota−capabledevice}
JP2009277062A (ja) * 2008-05-15 2009-11-26 Mitsubishi Electric Corp データ書き換えシステム及び新版データ作成装置及び差分データ作成装置及び新版データ作成プログラム及び差分データ作成プログラム

Family Cites Families (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5473772A (en) * 1991-04-02 1995-12-05 International Business Machines Corporation Automatic update of static and dynamic files at a remote network node in response to calls issued by or for application programs
US5117349A (en) * 1990-03-27 1992-05-26 Sun Microsystems, Inc. User extensible, language sensitive database system
JP2601987B2 (ja) * 1992-11-13 1997-04-23 インターナショナル・ビジネス・マシーンズ・コーポレイション パーソナル通信装置
US5649200A (en) * 1993-01-08 1997-07-15 Atria Software, Inc. Dynamic rule-based version control system
JPH09270793A (ja) * 1996-04-03 1997-10-14 Sony Corp 通信制御方法
US7136903B1 (en) * 1996-11-22 2006-11-14 Mangosoft Intellectual Property, Inc. Internet-based shared file service with native PC client access and semantics and distributed access control
US6018747A (en) * 1997-11-26 2000-01-25 International Business Machines Corporation Method for generating and reconstructing in-place delta files
US6282698B1 (en) * 1998-02-09 2001-08-28 Lucent Technologies Inc. Detecting similarities in Java sources from bytecodes
US6453312B1 (en) * 1998-10-14 2002-09-17 Unisys Corporation System and method for developing a selectably-expandable concept-based search
US6226792B1 (en) * 1998-10-14 2001-05-01 Unisys Corporation Object management system supporting the use of application domain knowledge mapped to technology domain knowledge
US6785882B1 (en) * 1999-05-24 2004-08-31 Unisys Corporation Process-driven tool interface for an object management system
US6789251B1 (en) * 1999-07-28 2004-09-07 Unisys Corporation System and method for managing a suite of data management tools
US6549916B1 (en) * 1999-08-05 2003-04-15 Oracle Corporation Event notification system tied to a file system
US6553362B2 (en) * 2000-07-14 2003-04-22 Hewlett-Packard Development Company, L.P. Case-reduced verification condition generation system and method using weakest precondition operator expressed using strongest postcondition operators
US20020083183A1 (en) * 2000-11-06 2002-06-27 Sanjay Pujare Conventionally coded application conversion system for streamed delivery and execution
US20020156863A1 (en) * 2001-04-23 2002-10-24 Luosheng Peng Apparatus and methods for managing caches on a gateway
US7516441B2 (en) * 2001-06-04 2009-04-07 Microsoft Corporation Method and system for program editing and debugging in a common language runtime environment
US7761535B2 (en) * 2001-09-28 2010-07-20 Siebel Systems, Inc. Method and system for server synchronization with a computing device
US6895463B2 (en) * 2001-10-30 2005-05-17 Pioneer Digital Technologies, Inc. Method and apparatus for efficiently running an execution image using volatile and non-volatile memory
US7275105B2 (en) * 2002-01-16 2007-09-25 Laszlo Systems, Inc. Enabling online and offline operation
FR2835329A1 (fr) * 2002-01-30 2003-08-01 Koninkl Philips Electronics Nv Procede de traitement de fichiers binaires de programmes
JP4202673B2 (ja) * 2002-04-26 2008-12-24 株式会社東芝 システムlsi開発環境生成方法及びそのプログラム
US7210010B2 (en) * 2002-09-30 2007-04-24 Insignia Solutions Plc Efficient system and method for updating a memory device
US20040176877A1 (en) * 2003-03-05 2004-09-09 Scott Hesse Building automation system and method
US7197632B2 (en) * 2003-04-29 2007-03-27 International Business Machines Corporation Storage system and cluster maintenance
US20050010916A1 (en) * 2003-05-24 2005-01-13 Hagen David A. System for providing software application updates to multiple clients on a network
US7810088B2 (en) * 2003-06-20 2010-10-05 Samsung Electronics Co., Ltd. Apparatus and method for performing a fail-safe over-the-air software update in a mobile station
US20040261071A1 (en) * 2003-06-23 2004-12-23 Macronix International Co., Ltd. Peer version control system
ATE479145T1 (de) * 2003-07-07 2010-09-15 Red Bend Ltd Verfahren und system zum aktualisieren von versionen von in einer speichereinrichtung gespeichertem inhalt
US7600225B2 (en) * 2003-07-21 2009-10-06 Microsoft Corporation System and method for intra-package delta compression of data
US7568195B2 (en) * 2003-12-16 2009-07-28 Microsoft Corporation Determining a maximal set of dependent software updates valid for installation
US7313720B1 (en) * 2004-02-12 2007-12-25 Network Appliance, Inc. Technique for increasing the number of persistent consistency point images in a file system
US8453138B2 (en) * 2004-04-13 2013-05-28 Red Bend Ltd. Method and apparatus for generating an update package
US8108429B2 (en) * 2004-05-07 2012-01-31 Quest Software, Inc. System for moving real-time data events across a plurality of devices in a network for simultaneous data protection, replication, and access services
US8595713B2 (en) * 2004-07-08 2013-11-26 Andrew Llc Radio base station and a method of operating a radio base station
US7661102B2 (en) * 2004-08-20 2010-02-09 Smith Micro Software, Inc. Method for reducing binary image update package sizes
JP4828816B2 (ja) * 2004-10-25 2011-11-30 株式会社東芝 メモリカード、半導体装置、及びメモリカードの制御方法
US7809764B2 (en) * 2004-11-01 2010-10-05 Microsoft Corporation Method and apparatus for preserving dependancies during data transfer and replication
US20060130047A1 (en) * 2004-11-30 2006-06-15 Microsoft Corporation System and apparatus for software versioning
CA2648428C (en) * 2006-04-07 2017-11-21 Data Storage Group Data compression and storage techniques
US7665081B1 (en) * 2006-05-06 2010-02-16 Kaspersky Lab, Zao System and method for difference-based software updating
US7836442B2 (en) * 2007-03-15 2010-11-16 Lenovo (Singapore) Pte. Ltd. Out-of-band patch management system
US8131723B2 (en) * 2007-03-30 2012-03-06 Quest Software, Inc. Recovering a file system to any point-in-time in the past with guaranteed structure, content consistency and integrity
US7822963B2 (en) * 2007-06-05 2010-10-26 Hewlett-Packard Development Company, L.P. Remote computer operating system upgrade
US8407688B2 (en) * 2007-11-27 2013-03-26 Managelq, Inc. Methods and apparatus for storing and transmitting historical configuration data associated with information technology assets
US8689203B2 (en) * 2008-02-19 2014-04-01 Microsoft Corporation Software update techniques based on ascertained identities
US8301588B2 (en) * 2008-03-07 2012-10-30 Microsoft Corporation Data storage for file updates
US9372784B2 (en) * 2009-02-20 2016-06-21 International Business Machines Corporation Test system configuration method and system
US20100281474A1 (en) * 2009-04-30 2010-11-04 Eason Patrick C Firmware updating

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002014833A (ja) * 2000-06-30 2002-01-18 Konica Corp フラッシュメモリの書き換え方式、制御装置、画像形成装置及びプログラム更新方式
JP2002108801A (ja) * 2000-09-29 2002-04-12 Ricoh Co Ltd 情報処理装置、画像読取装置、画像形成装置、画像データ記憶方法及びdma転送方法
JP2004514214A (ja) * 2000-11-17 2004-05-13 ビットフォン コーポレイション 情報をアップデートおよび配布するシステムおよび方法
JP2005525641A (ja) * 2002-05-13 2005-08-25 イノパス・ソフトウェアー・インコーポレーテッド バイト・レベルのファイル相違検出および更新アルゴリズム
JP2004227520A (ja) * 2003-01-27 2004-08-12 Mitsubishi Electric Corp 新旧プログラム書換情報生成装置及び新旧プログラム書換情報生成方法及びプログラム及びプログラムを記録したコンピュータ読み取り可能な記録媒体
JP2004326287A (ja) * 2003-04-23 2004-11-18 Mitsubishi Electric Corp プログラム遠隔更新システム
JP2008519360A (ja) * 2004-11-08 2008-06-05 イノパス・ソフトウェアー・インコーポレーテッド 圧縮リード・オンリ・メモリ・ファイル・システム(crmfs)画像の更新
JP2009536395A (ja) * 2006-06-19 2009-10-08 サムスン エレクトロニクス カンパニー リミテッド Otaが可能な端末の情報アップグレードシステム及び方法{informationupgradesystemandmethodforota−capabledevice}
JP2009536396A (ja) * 2006-06-19 2009-10-08 サムスン エレクトロニクス カンパニー リミテッド OTA(Over−the−air)が可能な携帯装置のためのプログラムアップグレード方法およびシステム
JP2009277062A (ja) * 2008-05-15 2009-11-26 Mitsubishi Electric Corp データ書き換えシステム及び新版データ作成装置及び差分データ作成装置及び新版データ作成プログラム及び差分データ作成プログラム

Also Published As

Publication number Publication date
KR20120125292A (ko) 2012-11-14
WO2011088022A3 (en) 2011-11-10
AU2011205480A1 (en) 2012-08-02
CA2786613A1 (en) 2011-07-21
EP2524307A4 (en) 2014-04-09
US20110173601A1 (en) 2011-07-14
WO2011088022A2 (en) 2011-07-21
KR101735719B1 (ko) 2017-05-15
AU2011205480B2 (en) 2015-02-05
EP2524307B1 (en) 2016-11-02
EP2524307A2 (en) 2012-11-21

Similar Documents

Publication Publication Date Title
AU2011205480B2 (en) Operating system auto-update procedure
US7716414B2 (en) Method for updating a mobile device using an update package obtained from a remote server
US8245217B2 (en) Management of software and operating system updates required for the process of creating a virtual machine facsimile of an existing physical or virtual machine
US9021462B2 (en) Systems and methods for provisioning equipment
JP5007046B2 (ja) コンポーネントベースのソフトウェア・プロダクトの保守
US9823915B1 (en) Software container format
CN102521081B (zh) 修复遭破坏的软件
US20140033188A1 (en) System updates from cloud blob storage using vhd differentials
JP2005044360A (ja) データのパッケージ内デルタ圧縮(intra−packetdeltacompression)のためのシステムおよび方法
KR20030071750A (ko) 정보의 업데이트 및 분산 시스템 및 방법
JP2005182784A (ja) インストールするのに有効な依存ソフトウェア更新の最大の群の判定
WO2020015191A1 (zh) 业务规则的发布管理方法、电子装置及可读存储介质
US11816458B2 (en) Method and system for packaging infrastructure as code
US20140359077A1 (en) Method and apparatus for transmitting symbol files
CN115509582A (zh) 应用程序发布方法、装置、设备及存储介质
WO2022156277A1 (zh) 一种应用程序安装方法、装置、计算设备及可读存储介质
CN109800005B (zh) 一种客户端热更新方法及装置
US8549049B2 (en) Systems and methods for updating an application on a mobile information device
WO2017036197A1 (zh) 一种网元模型管理方法及装置
JP7116292B2 (ja) 情報処理装置、情報処理システムおよびプログラム
CN116244186A (zh) 一种操作系统测试管理方法、装置与计算设备
JP7222428B2 (ja) 検証情報作成システム、検証情報作成方法、および、検証情報作成プログラム
US11256602B2 (en) Source code file retrieval
JP2015103134A (ja) 情報処理装置、情報処理方法およびプログラム
JP5626922B2 (ja) データ管理装置、データ管理方法、及びプログラム

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140107

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140107

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140911

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140924

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141120

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20150410