(57)【特許請求の範囲】
【請求項１】
オペレーティングシステムと、
前記オペレーティングシステムの一部を修正する修正機能と、前記修正履歴を変更領域管理テーブルに保存するテーブル生成機能とを有する動的パッチ制御手段と、
前記変更領域管理テーブル及び前記オペレーティングシステムが記憶される第１の記憶領域と、前記オペレーティングシステムにより有効とされる第２の記憶領域とを有する記憶手段と、
前記第１の記憶領域に記憶された前記オペレーティングシステムを再実行することで高速再起動させる高速再起動制御手段とを有し、
前記オペレーティングシステムは、前記オペレーティングシステムの起動時に前記第１の記憶領域を有効とし、
前記動的パッチ制御手段は、前記動的パッチ制御手段の起動時に前記第２の記憶領域を有効とし、前記修正機能により前記オペレーティングシステムの一部である変更前情報を第１の変更後情報に修正し、前記第１の変更後情報によりアドレスが指定される第２の変更後情報を前記第２の記憶領域に記録すると共に、前記テーブル生成機能により前記変更領域管理テーブルに少なくとも前記変更前情報を記録し、
前記高速再起動制御手段が前記高速再起動を行う直前又は高速再起動時に、前記変更領域管理テーブルが参照され、前記オペレーティングシステムの前記第１の変更後情報が前記変更前情報に変更される
情報処理装置。
【請求項２】
前記高速再起動制御手段は、前記高速再起動の際、前記動的パッチ制御手段を起動し、
前記動的パッチ制御手段は、前記第２の記憶領域が有効とされると、前記修正機能により前記オペレーティングシステムの前記変更前情報を前記第１の変更後情報に修正する
請求項１記載の情報処理装置。
【請求項３】
前記動的パッチ制御手段は、前記テーブル生成機能により、前記変更領域管理テーブルに前記第１の変更後情報をさらに記録し、
前記高速再起動制御手段は、前記高速再起動の際、前記第２の記憶領域が有効とされると、前記変更領域管理テーブルを参照して、前記オペレーティングシステムの前記変更前情報を前記第１の変更後情報に修正する
請求項１記載の情報処理装置。
【請求項４】
前記動的パッチ制御手段は、前記テーブル生成機能により、前記変更領域管理テーブルに、前記変更前情報が記録されていたアドレスを特定するアドレス情報をさらに記録し、
前記高速再起動制御手段が前記高速再起動を行う直前又は高速再起動時に、前記変更領域管理テーブルが参照され、前記アドレス情報により特定されるアドレスに記録されている前記第１の変更後情報が前記変更前情報に変更される
請求項１乃至３のいずれか１項記載の情報処理装置。
【請求項５】
第１の記憶領域に記録されたオペレーティングシステムの一部を修正する動的パッチ制御手段により、前記オペレーティングシステムの一部である変更前情報を第１の変更後情報に修正すると共に、前記第１の変更後情報によりアドレスが指定される第２の変更後情報を第２の記憶領域に記録する修正ステップと、
前記第１の記憶領域に記録された変更領域管理テーブルに、少なくとも前記変更前情報を登録するテーブル生成ステップと、
前記オペレーティングシステムを再実行することで高速再起動させる高速再起動ステップと、
前記高速再起動を行う直前又は高速再起動時に、前記変更領域管理テーブルを参照し、前記オペレーティングシステムの前記第１の変更後情報を前記変更前情報に変更する変更ステップとを有し、
前記第１の記憶領域は、前記オペレーティングシステムの起動時に有効とされる領域であって、
前記第２の記憶領域は、前記動的パッチ制御手段の起動時に有効とされる領域である
情報処理方法。
【請求項６】
前記高速再起動ステップでは、前記高速再起動の際、前記修正ステップを実行し、
前記修正ステップでは、前記オペレーティングシステムの前記変更前情報を前記第１の変更後情報に修正する
請求項５記載の情報処理方法。
【請求項７】
前記テーブル生成ステップでは、前記変更領域管理テーブルに前記第１の変更後情報をさらに記録し、
前記高速再起動ステップでは、前記高速再起動の際、前記第２の記憶領域を有効とし、前記変更領域管理テーブルを参照して、前記オペレーティングシステムの前記変更前情報を前記第１の変更後情報に修正する
請求項５記載の情報処理方法。
【請求項８】
コンピュータに、
第１の記憶領域に記録されたオペレーティングシステムの一部を修正する動的パッチ制御手段により、前記オペレーティングシステムの一部である変更前情報を第１の変更後情報に修正すると共に、前記第１の変更後情報によりアドレスが指定される第２の変更後情報を第２の記憶領域に記録する修正ステップと、
前記第１の記憶領域に記録された変更領域管理テーブルに、少なくとも前記変更前情報を登録するテーブル生成ステップと、
前記オペレーティングシステムを再実行することで高速再起動させる高速再起動ステップと、
前記高速再起動を行う直前又は高速再起動時に、前記変更領域管理テーブルを参照し、前記オペレーティングシステムの前記第１の変更後情報を前記変更前情報に変更する変更ステップとを実行させるプログラムであって、
前記第１の記憶領域は、前記オペレーティングシステムの起動時に有効とされる領域であって、
前記第２の記憶領域は、前記動的パッチ制御手段の起動時に有効とされる領域である
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置に関し、特にオペレーティングシステムの高速再起動を行う情報処理装置に関する。
【背景技術】
【０００２】
オペレーティングシステムを主記憶装置（メモリ）にロードし、オペレーティングシステムを実行することにより動作する情報処理装置が広く知られている。このオペレーティングシステムに内在する不具合を修正したり、またオペレーティングシステムに機能を追加したりするために、オペレーティングシステムの動作中であっても、オペレーティングシステムのコードやデータを変更、追加したい場合がある。特許文献１には、計算機システムの動作中に動的パッチプログラムを実行することにより、該プログラムによってオペレーティングシステムのコードやデータを変更、追加する方法が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平０９−０６２５００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、メモリに既にロードされているオペレーティングシステムのイメージを再利用することによる再起動（高速再起動）を行う情報処理装置においては、動的パッチプログラムにより変更、追加されたコードやデータを、高速再起動の際、オペレーティングシステムが参照できないという問題が生じることがあった。例えば、機器組込用オペレーティングシステム等においては該高速再起動を行うことが多く、問題となりうる。かかる問題が発生する理由を図１０及び図１１を用いて説明する。
【０００５】
図１０に示すように、動的パッチプログラムは、オペレーティングシステムのコードやデータを新たなコードやデータに修正する場合、オペレーティングシステムの該当箇所を単に上書きする場合と、該当箇所だけでなく他の領域にも記録する場合がある。以下、他の領域に記録されたコードやデータを、追加コードという。例えば、該当箇所のサイズより新たなコードやデータのサイズのほうが大きい場合、動的パッチプログラムは他の領域に追加コードを記録する。他の領域に追加コードを記録した場合、オペレーティングシステムの該当箇所には、その追加コードが記録されたアドレスを参照先として指定するコードやデータが記載されることとなる。
【０００６】
図１１に示すように、一般に、情報処理装置のメモリには、オペレーティングシステムが起動する際に有効とされオペレーティングシステムにより使用される記憶領域４０１と、オペレーティングシステム以外のプログラム、例えば動的パッチプログラムがメモリにロードされる際にはじめて有効とされ動的パッチプログラムにより使用される記憶領域４０２とが定義される。そのため、動的パッチプログラムが追加コードを記録する場合は、動的パッチプログラムが使用できる記憶領域４０２に追加コードを記録し、修正前のコードやデータの位置には、追加コードへの参照（追加コードのアドレス情報）を含むコードやデータを記載することになる。
【０００７】
この場合に高速再起動を行うと、上述の問題が発生する。すなわち、オペレーティングシステムは再起動する前に一旦シャットダウンする必要があるが、この際、動的パッチプログラムがメモリからアンロードされ、第２の記憶領域３２が無効となる。このとき、メモリ上のイメージは消去されることがないため、追加コードはメモリ上に存在し続ける。しかしながら、オペレーティングシステムは無効な記憶領域４０２を参照できず、追加コードも読み出すことができない状態となる。この状態は、オペレーティングシステムが高速再起動した後も、動的パッチプログラムがメモリに再びロードされるまでの間継続する。すなわち、この間にオペレーティングシステムが記憶領域４０２への参照を含むコードやデータを実行しようとしても、記憶領域４０２から追加コードを読み出すことができないため、例外エラーが発生することとなる。
【０００８】
本発明は、かかる問題を解決するためになされたものであり、動的パッチを適用した状態でもオペレーティングシステムの高速再起動を実行することが可能な情報処理装置、情報処理方法及びプログラムを提供することにある。
【課題を解決するための手段】
【０００９】
本発明にかかる情報処理装置は、オペレーティングシステムと、前記オペレーティングシステムの一部を修正する修正機能と、前記修正履歴を変更領域管理テーブルに保存するテーブル生成機能とを有する動的パッチ制御手段と、前記変更領域管理テーブル及び前記オペレーティングシステムが記憶される第１の記憶領域と、前記オペレーティングシステムにより有効とされる第２の記憶領域とを有する記憶手段と、前記第１の記憶領域に記憶された前記オペレーティングシステムを再実行することで高速再起動させる高速再起動制御手段とを有し、前記オペレーティングシステムは起動時に前記第１の記憶領域を有効とし、前記動的パッチ制御手段は、前記第２の記憶領域が有効とされると、前記修正機能により前記オペレーティングシステムの一部である変更前情報を第１の変更後情報に修正し、前記第１の変更後情報によりアドレスが指定される第２の変更後情報を前記第２の記憶領域に記録すると共に、前記テーブル生成機能により前記変更領域管理テーブルに少なくとも前記変更前情報を記録し、前記高速再起動制御手段が前記高速再起動を行う直前又は高速再起動時に、前記変更領域管理テーブルが参照され、前記オペレーティングシステムの前記第１の変更後情報が前記変更前情報に変更されるものである。
【００１０】
本発明にかかる情報処理方法は、第１の記憶領域に記録されたオペレーティングシステムの一部を修正する動的パッチ制御手段により、前記オペレーティングシステムの一部である変更前情報を第１の変更後情報に修正すると共に、前記第１の変更後情報によりアドレスが指定される第２の変更後情報を第２の記憶領域に記録する修正ステップと、前記第１の記憶領域に記録された変更領域管理テーブルに、少なくとも前記変更前情報を登録するテーブル生成ステップと、前記オペレーティングシステムを再実行することで高速再起動させる高速再起動ステップと、前記高速再起動を行う直前又は高速再起動時に、前記変更領域管理テーブルを参照し、前記オペレーティングシステムの前記第１の変更後情報を前記変更前情報に変更する変更ステップとを有するものである。
【００１１】
本発明にかかるプログラムは、コンピュータに、第１の記憶領域に記録されたオペレーティングシステムの一部を修正する動的パッチ制御手段により、前記オペレーティングシステムの一部である変更前情報を第１の変更後情報に修正すると共に、前記第１の変更後情報によりアドレスが指定される第２の変更後情報を第２の記憶領域に記録する修正ステップと、前記第１の記憶領域に記録された変更領域管理テーブルに、少なくとも前記変更前情報を登録するテーブル生成ステップと、前記オペレーティングシステムを再実行することで高速再起動させる高速再起動ステップと、前記高速再起動を行う直前又は高速再起動時に、前記変更領域管理テーブルを参照し、前記オペレーティングシステムの前記第１の変更後情報を前記変更前情報に変更する変更ステップとを実行させるものである。
【発明の効果】
【００１２】
本発明により、動的パッチを適用した状態でもオペレーティングシステムの高速再起動を実行することが可能な情報処理装置、情報処理方法及びプログラムを提供することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施の形態１にかかる構成図である。
【図２】本発明の実施の形態１における変更領域管理テーブルの構成図である。
【図３】本発明の実施の形態１における動的パッチ制御手段の処理を示すシーケンス図である。
【図４】本発明の実施の形態１における高速再起動制御手段の処理を示すシーケンス図である。
【図５】本発明の実施の形態１における記憶部の状態を示す図である。
【図６】本発明の実施の形態１における記憶部の状態を示す図である。
【図７】本発明の実施の形態２における変更領域管理テーブルの構成図である。
【図８】本発明の実施の形態２における高速再起動制御手段の処理を示すシーケンス図である。
【図９】本発明の実施の形態２における記憶部の状態を示す図である。
【図１０】従来の問題点を説明するための図である。
【図１１】従来の問題点を説明するための図である。
【発明を実施するための形態】
【００１４】
実施の形態１
図１は本発明の実施の形態１にかかる情報処理装置の構成図である。情報処理装置１００は、動的パッチ制御部１、高速再起動制御部２及び記憶部３を有する。
【００１５】
記憶部３は、典型的にはＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等によりアクセスされるメモリであり、例えばＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を用いて構成される。本実施の形態においては、記憶部３は、第１の記憶領域３１と第２の記憶領域３２とを含んでいる。第１の記憶領域３１はオペレーティングシステム３１１の起動の際に有効とされる記憶領域である。典型的には仮想記憶領域であり、オペレーティングシステムが、起動の際、オペレーティングシステムが使用するための領域を定義する。第１の記憶領域３１には、オペレーティングシステム３１１と変更領域記憶テーブル３１２とが保持されている。第２の記憶領域３２はアプリケーションプログラム、本実施の形態においては後述の動的パッチプログラムの起動の際に有効とされる記憶領域である。典型的には仮想記憶領域であり、オペレーティングシステムがアプリケーションプログラムをメモリにロードする際、アプリケーションプログラムに使用させるために領域を定義する。
【００１６】
動的パッチ制御部１は、オペレーティングシステム３１１の一部を修正する処理、具体的には、オペレーティングシステム３１１の動作中にオペレーティングシステム３１１のコードやデータの変更、追加を行う処理を実行する。以下、この処理を動的パッチ処理という。動的パッチ処理は、一般的にはオペレーティングシステムに内在する不具合の修正や、オペレーティングシステムへの機能の追加を目的として行われる。動的パッチ処理は、典型的には動的パッチプログラムを用いて実行される。この動的パッチプログラムはアプリケーションプログラム、すなわちオペレーティングシステム上で動作するプログラムである。以下、本実施の形態においては、動的パッチ制御部１を動的パッチプログラムとして説明する。
【００１７】
動的パッチプログラムは、オペレーティングシステムの一部を修正する修正機能、すなわち動的パッチ処理を行う機能と、この修正履歴を変更領域管理テーブルに保存するテーブル生成機能とを備えるプログラムである。動的パッチプログラムは、実行に先立ちメモリにロードされる。このとき、典型的には、オペレーティングシステム３１１により動的パッチプログラムが使用するための仮想記憶領域すなわち第２の記憶領域３２が定義される。すなわち、第２の記憶領域３２は、オペレーティングシステム３１１により有効とされる。その後、動的パッチプログラムが実行を開始する。本実施例では、動的パッチプログラムは、はじめにテーブル生成処理を実行した後、動的パッチ処理を実行する。これらの処理の内容を以下に説明する。
【００１８】
まず、動的パッチプログラムの修正機能による動的パッチ処理の内容をさらに詳しく例示する。動的パッチプログラムは、第１の記憶領域３１内に展開されているオペレーティングシステム３１１のコードやデータのうち、どの部分を変更すべきかに関する情報すなわち変更前情報と、どのようなコードやデータに変更すべきかに関する情報すなわち変更後情報との組み合わせを予め一又は複数保有している。動的パッチプログラムは、かかる組み合わせのすべてについて以下の処理を行う。
【００１９】
変更後情報のサイズが変更前情報のサイズ以下であれば、動的パッチプログラムは、オペレーティングシステム３１１のコードやデータうち、変更前情報に該当する部分を変更後情報で上書きすることにより、オペレーティングシステム３１１を修正することができる。
【００２０】
一方、変更後情報のサイズが変更前情報のサイズを超える場合には、動的パッチプログラムは上述のような上書きによる修正を行うことができない。この場合、動的パッチプログラムは、第１の変更後情報と第２の変更後情報とからなる変更後情報を使用する。第１の変更後情報とは変更前情報以下のサイズを有するコードやデータであり、第２の変更後情報を読み出すためのコードやデータを含んでいる。すなわち、第１の変更後情報のコードやデータには、第２の変更後情報が記憶される記憶領域を示すアドレス（以下、参照アドレス）が含まれているので、オペレーティングシステム３１１は、参照アドレスに記録されている情報を読み出すことによって、第２の変更後情報を読み出すことができる。
【００２１】
動的パッチプログラムは、第１の変更後情報で変更前情報を上書きするとともに、第２の変更後情報を第２の記憶領域３２に記録する。第２の記憶領域３２とは、オペレーティングシステム３１１が展開している第１の記憶領域３１の外部に定義される、動的パッチプログラムが使用するための記憶領域である。このとき、第１の変更後情報には、参照アドレスとして、第２の変更後情報が記憶されている第２の記憶領域３１内のアドレスが含まれている。そのため、修正されたオペレーションシステム３１１は、第１の変更後情報を実行すると、参照アドレスを介して第２の変更後情報を読み出して修正後のプログラムを実行することができる。
【００２２】
つぎに、動的パッチプログラムのテーブル生成機能によるテーブル生成処理の内容を示す。動的パッチプログラムは、はじめに、自身が保有するすべての変更後情報の内容を順に検査する。もし変更後情報に参照アドレスが含まれている場合、すなわち参照アドレスを含む第１の変更後情報によって変更前情報を上書きする場合、動的パッチプログラムは、図２に示す変更領域管理テーブル３１２にレコード、すなわち１件分のデータを格納するための領域を作成し、そのレコードに少なくとも変更前情報を記録する。望ましくは、変更前情報が記録されていた領域を示すアドレス情報、具体的にはアドレス及びサイズをさらに記録する。すべての変更後情報の検査が終了し、変更領域管理テーブル３１２への登録が終了すると、テーブル生成処理は終了する。
【００２３】
本実施例の動的パッチプログラムは、テーブル生成処理が終了すると、上述の動的パッチ処理を実行する。すなわち、変更前情報を単に変更後情報で上書きするか、参照アドレスを含む第１の変更後情報で上書きするとともに第２の記憶領域３２に第２の変更後情報を記録する。このようにして、動的パッチプログラムは、動作中のオペレーティングシステム３１１のコードやデータの修正を終了する。
【００２４】
なお、本実施の形態においては、テーブル生成処理を実施してから動的パッチ処理を実施するものとして説明するが、動的パッチ処理を実施した後、テーブル生成処理を実施してもよいことは勿論である。また、動的パッチ処理を実行しながら、テーブルを生成してもよい。
【００２５】
高速再起動制御部２は、メモリに既にロードされているオペレーティングシステム３１１のコードやデータすなわちイメージを再利用して行われる再起動処理（高速再起動処理）を実行する。高速再起動処理は、例えばダウンタイムを最小化したい情報処理装置において、通常の再起動処理に代わって用いられる再起動処理である。通常のオペレーティングシステムの再起動処理は、動作中のオペレーティングシステムがシャットダウンした後、ブートローダが２次記憶部からオペレーティングシステムのコードやデータを読み出し、これらをメモリに展開し、実行することにより実現される。一方、高速再起動処理においては、ブートローダは第２次記憶からオペレーティングシステムを読み出すことなく、前回の起動によって既にメモリ上に展開されているオペレーティングシステム３１１のイメージを実行する。このため、高速再起動処理では、通常の再起動処理に比べ短時間で再起動を行うことが可能である。なお、いずれの場合でも、オペレーティングシステム３１１は、再起動の際に、オペレーティングシステム３１１が使用するための第１の記憶領域３１を有効化する。
【００２６】
加えて、高速再起動制御部２は、オペレーティングシステム３１１の起動が完了する前に、変更領域管理テーブル３１２を参照し、全てのレコードについて以下の処理を行う。高速再起動制御部２は、変更領域管理テーブル３１２に記録されているすべての変更前情報を、動的パッチ制御部１が動的パッチ処理を実行する前に変更前情報が記録されていた領域に書き戻す。具体的には、変更領域管理テーブル３１２に変更前情報のアドレス及びサイズが記録されているならば、高速再起動制御部２は、第１の記憶領域３１内であって、このアドレス及びサイズにより特定される領域に変更前情報を書き込む。これにより、参照アドレスを含む変更後情報が、参照アドレスを含まない変更前情報に一旦書き戻される。
【００２７】
この時点では、オペレーティングシステム３１１は第１の記憶領域３１以外を有効化していないため、第１の記憶領域３１以外の参照アドレスを含む第１の変更後情報を実行すると、この参照アドレスの情報を読み出すことができず、例外エラーが発生する。これに対し、本実施の形態においては、変更領域管理テーブル３１２を参照し、参照アドレスを含む第１の変更後情報を参照アドレスを含まない変更前情報に書き戻すことにより、例外エラーの発生を未然に防ぐことが可能となる。
【００２８】
その後、高速再起動制御部２は、動的パッチプログラムに動的パッチ処理を再度実行させる。動的パッチプログラムがメモリにロードされると、動的パッチプログラムが使用するための記憶領域すなわち第２の記憶領域３２が有効化される。これにより、オペレーティングシステム３１１が第２の記憶領域３２に記録されている第２の変更後情報を読み出すことが可能となる。つづいて、動的パッチプログラムは動的パッチ処理を実行する。すなわち、変更前情報を単に変更後情報で上書きするか、参照アドレスを含む第１の変更後情報で上書きするとともに第２の記憶領域３２に第２の変更後情報を記録する。なお、高速再起動後の処理においては、動的パッチプログラムはテーブル生成処理を省略するものとしてよい。
【００２９】
かかる処理により、高速再起動制御部２は、オペレーティングシステム３１１を高速再起動処理前の状態に復元することができる。
【００３０】
次に、図３に示すフローチャート、図５及び図２を用いて、動的パッチ制御部１（動的パッチプログラム）が行うテーブル生成処理及び動的パッチ処理のフローを説明する。
【００３１】
まず、動的パッチプログラムがメモリにロードされると、動的パッチプログラムが使用するための仮想記憶領域すなわち第２の記憶領域３２が定義される。このときの記憶部３の状態を図５に示す（Ｆ１）。その後、動的パッチプログラムが実行を開始する（ステップＳ１）。
【００３２】
はじめに、動的パッチプログラムはテーブル生成処理を行う。動的パッチプログラムは、変更前情報と変更後情報との組み合わせを予め一又は複数保有している。かかる組み合わせのすべてについて、動的パッチプログラムは以下のステップＳ３及びステップＳ４に示す処理を行う（ステップＳ２）。動的パッチプログラムは、変更後情報が参照アドレスを含んでいるか、すなわち第１の変更後情報と第２の変更後情報とからなる変更後情報であるか否かを検査する（ステップＳ３）。参照アドレスを含んでいる場合、動的パッチプログラムは、変更領域管理テーブル３１２に変更前情報を記録する。また、変更前情報が記録されていた領域のアドレス及びサイズをさらに記録する（ステップＳ４）。このときの変更領域管理テーブル３１２の状態を図２に示す。すべての組み合わせについて上記の処理を行ったなら、ステップＳ６に移行する（ステップＳ５）。
【００３３】
つづいて、動的パッチプログラムは動的パッチ処理を行う。動的パッチプログラムは、動作中のオペレーティングシステム３１１のコードやデータを修正する。具体的には、変更後情報が参照アドレスを含まない場合、動的パッチプログラムは、変更後情報で変更前情報を単に上書きする。このときの記憶部３の状態を図５に示す（Ｆ２）。一方、変更後情報が参照アドレスを含む場合、すなわち第１の変更後情報及び第２の変更号情報から構成されている場合は、第１の変更後情報で変更前情報を上書きし、第２の記憶領域３２にも第２の変更後情報を記録する（ステップＳ６）。このときの記憶部３の状態を図５に示す（Ｆ３）。
【００３４】
次に、図４に示すフローチャート及び図６を用いて高速再起動制御部２による処理フローを説明する。
【００３５】
まず、高速再起動制御部２は、メモリに既にロードされているオペレーティングシステム３１１のイメージを再利用して、高速再起動処理を実行する。具体的には、高速再起動制御部２は、２次記憶からオペレーティングシステムを読み出すことなく、前回の起動時に既にメモリ上に展開されたオペレーティングシステム３１１のイメージを、ブートローダに再実行させる。かかる高速再起動においては、再起動前のメモリイメージは失われず、そのまま保持される。しかしながら、オペレーティングシステム３１１は再起動の際、第１の記憶領域３１のみを有効化するので、再起動直後の時点では、オペレーティングシステム３１１は第１の記憶領域３１以外の記憶領域、例えば第２の記憶領域３２の内容を参照することはできない（ステップＳ７）。このときの記憶部３の状態を図６に示す（Ｆ４）。
【００３６】
つづいて、高速再起動制御部２は、変更領域管理テーブル３１２を参照し、すべてのレコードについて、以下のステップＳ９に示す処理を行う（ステップＳ８）。高速再起動制御部２は、変更領域管理テーブル３１２に含まれる変更前情報を、そのアドレス及びサイズ情報に基づきオペレーティングシステム３１１に書き戻す。具体的には、高速再起動制御部２は、第１の記憶領域３１のそのアドレス及びサイズにより特定される領域に変更前情報を書き込む（ステップＳ９）。このときの記憶部３の状態を図６に示す（Ｆ５）。すべてのレコードについて上記の処理を行ったなら、ステップＳ１１に移行する（ステップＳ１０）。
【００３７】
さらに、高速再起動制御部２は、オペレーティングシステム３１１の起動にかかる所定の初期化処理を実施した後（ステップＳ１１）、動的パッチ制御部１に動的パッチ処理を再度実行させる（ステップＳ１２）。動的パッチ制御部１が動的パッチプログラムを再度メモリにロードすると、この時点より、オペレーティングシステム３１１は第２の記憶領域３２のコードやデータを参照することが可能となる。この後、高速再起動制御部２は動的パッチプログラムに動的パッチ処理を実行させる。動的パッチプログラムは、変更前情報を単に変更後情報で上書きするか、参照アドレスを含む第１の変更後情報で上書きするとともに第２の記憶領域３２に第２の変更後情報を記録する。これにより、ステップＳ９において一旦書き戻された変更前情報が再度変更後情報に変更される。すなわち、オペレーティングシステム３１１は、高速再起動を行う前の状態に復帰する。このときの記憶部３の状態を図６に示す（Ｆ６）。
【００３８】
このような一連の処理により、オペレーティングシステム３１１に適用した動的パッチがオペレーティングシステム３１１が展開する記憶領域３１以外を参照するものであったとしても、例外エラーを発生させることなく、オペレーティングシステム３１１の高速再起動を実行することができる。
【００３９】
実施の形態２
次に、本発明の実施の形態２にかかる構成について説明する。実施の形態２は、実施の形態１と同様、図１に示す要素により構成される。ただし、本実施の形態は、変更領域管理テーブル３１２に第１の変更後情報がさらに記録される点が上述の実施の形態１と異なる。かかる変更領域管理テーブル３１２を図７に示す。
【００４０】
まず、かかる変更領域管理テーブル３１２を用いる場合の、動的パッチ制御部１による処理フローを説明する。
【００４１】
本実施の形態についても、図３に示したフローチャート、図５及び図７を用いて説明する。ステップＳ１からステップＳ３にかかる処理は、実施の形態１と同様であるので説明を省略する。ステップＳ４において、動的パッチプログラムは、変更後情報が参照アドレスを含む場合、すなわち第１の変更後情報と第２の変更後情報とからなる変更後情報である場合、変更領域管理テーブル３１２に、変更前情報と第１の変更後情報とを少なくとも記録する。また、変更前情報が記録されている第１の記憶領域３１内の領域のアドレス及びサイズをさらに記録する（ステップＳ１０３）。このときの変更領域管理テーブル３１２の状態を図７に示す。以下、ステップＳ５からステップＳ６にかかる処理については、実施の形態１と同様である。
【００４２】
次に、図８に示すフローチャート及び図９を用いて、かかる変更領域管理テーブル３１２を用いる場合の、高速再起動制御部２による処理フローを説明する。
【００４３】
ステップＳ７からステップＳ１１にかかる処理は、実施の形態１と同様であるので説明を省略する。その後、高速再起動制御部２は、動的パッチプログラムの初期化処理を実施する。すなわち、高速再起動制御部２は、オペレーティングシステム３１１によって動的パッチプログラムをメモリにロードする。この際、オペレーティングシステム３１１が第２の記憶領域３２を有効化する。この時点より、第１の記憶領域３１に展開するオペレーティングシステム３１１は第２の記憶領域３２のコードやデータを参照することが可能となる（ステップＳ１３）。このときの記憶部３の状態を図９に示す（Ｆ７）。
【００４４】
つづいて、高速再起動制御部２は、変更領域管理テーブル３１２を参照し、全てのレコードについて、以下のステップＳ１５に示す処理を行う（ステップＳ１４）。高速再起動制御部２は、レコードに含まれる変更後情報を、オペレーティングシステム３１１のコードやデータ中の、以前変更後情報が記録されていた領域に書き戻す。具体的には、レコードにアドレス及びサイズにかかる情報が記録されているならば、高速再起動制御部２は、第１の記憶領域３１内のそのアドレス及びサイズにより特定される領域に変更後情報を書き込む（ステップＳ１５）。すべてのレコードについて上記の処理を行ったなら、処理を終了する（ステップＳ１６）。これにより、ステップＳ９において一旦書き戻された変更前情報は再度変更後情報に変更される。すなわち、オペレーティングシステム３１１は高速再起動を行う前の状態に復帰する。このときの記憶部３の状態を図９に示す（Ｆ８）。
【００４５】
実施の形態２にかかる高速再起動制御部２によれば、実施の形態１のように動的パッチプログラムを実行せずに高速再起動前の状態を復元できるため、より短時間で高速再起動処理を完了することができる。
【００４６】
その他の実施の形態
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【００４７】
例えば、実施の形態１及び２において、高速再起動制御部２は、オペレーティングシステム３１１の高速再起動後に変更前情報の書き戻し（ステップＳ９）を行っているが（図４及び図８参照）、オペレーティングシステム３１１のシャットダウン前に変更前情報の書き戻しを行っておき、かかる後に高速再起動を行うこととしてもよい。
【００４８】
また、実施の形態１及び２において、動的パッチ制御部１は、変更後情報が参照アドレスを含んでいる場合に、変更領域管理テーブル３１２に少なくとも変更後情報に対応する変更前情報を記録し、高速再起動制御部２は、高速再起動の際、変更領域管理テーブル３１２を参照して、オペレーティングシステム３１１の一部である変更後情報を変更前情報に変更することとしているが、動的パッチ制御部１は、すべての場合に、変更領域管理テーブル３１２に変更前情報及び変更後情報を記録し、高速再起動制御部２は、高速再起動の際、変更領域管理テーブル３１２を参照して、変更後情報が第２の記憶領域３２への参照を含んでいる場合に、オペレーティングシステムの一部である変更後情報を、変更後情報に対応する変更前情報に変更することとしてもよい。
【００４９】
なお、オペレーティングシステム３１１の一部である変更後情報を、変更後情報に対応する変更前情報に変更するのは、高速再起動制御部２であってもよく、オペレーティングシステム３１１の一部の機能により読み出された専用のプログラムが行ってもよい。また、オペレーティングシステム３１１は、変更前情報に書き戻される前であっても一部の機能を起動させることができ、これを使用して、オペレーティングシステム３１１自身が行ってもよい。
【００５０】
さらに、本発明の構成要素は、各々必ずしも単一の機器に実装されている必要はなく、例えばネットワークにより接続された複数の機器に分散されて実装されているものであってよい。例えば、サーバに複数台のクライアントが接続されており、各クライアントが同じオペレーティングシステムを使用している場合において、サーバに共通の変更領域管理テーブル３１２を保存しておき、クライアントがその変更領域管理テーブル３１２を各々参照するよう構成してもよい。また、サーバに設けられた動的パッチ制御部１が、ネットワークを介して各クライアントのオペレーティングシステムを修正することとしてもよい。
【００５１】
上記実施の形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【００５２】
（付記１）
オペレーティングシステムと、
前記オペレーティングシステムの一部を修正する修正機能と、前記修正履歴を変更領域管理テーブルに保存するテーブル生成機能とを有する動的パッチ制御手段と、
前記変更領域管理テーブル及び前記オペレーティングシステムが記憶される第１の記憶領域と、前記オペレーティングシステムにより有効とされる第２の記憶領域とを有する記憶手段と、
前記第１の記憶領域に記憶された前記オペレーティングシステムを再実行することで高速再起動させる高速再起動制御手段とを有し、
前記オペレーティングシステムは起動時に前記第１の記憶領域を有効とし、
前記動的パッチ制御手段は、前記第２の記憶領域が有効とされると、前記修正機能により前記オペレーティングシステムの一部である変更前情報を第１の変更後情報に修正し、前記第１の変更後情報によりアドレスが指定される第２の変更後情報を前記第２の記憶領域に記録すると共に、前記テーブル生成機能により前記変更領域管理テーブルに少なくとも前記変更前情報を記録し、
前記高速再起動制御手段が前記高速再起動を行う直前又は高速再起動時に、前記変更領域管理テーブルが参照され、前記オペレーティングシステムの前記第１の変更後情報が前記変更前情報に変更される
情報処理装置。
【００５３】
（付記２）
前記高速再起動制御手段は、前記高速再起動の際、前記動的パッチ制御手段を起動し、
前記動的パッチ制御手段は、前記第２の記憶領域が有効とされると、前記修正機能により前記オペレーティングシステムの前記変更前情報を前記第１の変更後情報に修正する
付記１記載の情報処理装置。
【００５４】
（付記３）
前記動的パッチ制御手段は、前記テーブル生成機能により、前記変更領域管理テーブルに前記第１の変更後情報をさらに記録し、
前記高速再起動制御手段は、前記高速再起動の際、前記第２の記憶領域が有効とされると、前記変更領域管理テーブルを参照して、前記オペレーティングシステムの前記変更前情報を前記第１の変更後情報に修正する
付記１記載の情報処理装置。
【００５５】
（付記４）
前記動的パッチ制御手段は、前記テーブル生成機能により、前記変更領域管理テーブルに、前記変更前情報が記録されていたアドレスを特定するアドレス情報をさらに記録し、
前記高速再起動制御手段が前記高速再起動を行う直前又は高速再起動時に、前記変更領域管理テーブルが参照され、前記アドレス情報により特定されるアドレスに記録されている前記第１の変更後情報が前記変更前情報に変更される
付記１乃至３のいずれか１項記載の情報処理装置。
【００５６】
（付記５）
第１の記憶領域に記録されたオペレーティングシステムの一部を修正する動的パッチ制御手段により、前記オペレーティングシステムの一部である変更前情報を第１の変更後情報に修正すると共に、前記第１の変更後情報によりアドレスが指定される第２の変更後情報を第２の記憶領域に記録する修正ステップと、
前記第１の記憶領域に記録された変更領域管理テーブルに、少なくとも前記変更前情報を登録するテーブル生成ステップと、
前記オペレーティングシステムを再実行することで高速再起動させる高速再起動ステップと、
前記高速再起動を行う直前又は高速再起動時に、前記変更領域管理テーブルを参照し、前記オペレーティングシステムの前記第１の変更後情報を前記変更前情報に変更する変更ステップとを有する、
情報処理方法。
【００５７】
（付記６）
前記第１の記憶領域は、前記オペレーティングシステムの起動時に有効とされる領域であって、
前記第２の記憶領域は、前記動的パッチ制御手段の起動時に有効とされる領域である、
付記５記載の情報処理方法。
【００５８】
（付記７）
前記高速再起動ステップでは、前記高速再起動の際、前記修正ステップを実行し、
前記修正ステップでは、前記オペレーティングシステムの前記変更前情報を前記第１の変更後情報に変更する
付記６記載の情報処理方法。
【００５９】
（付記８）
前記テーブル生成ステップでは、前記変更領域管理テーブルに前記第１の変更後情報をさらに記録し、
前記高速再起動ステップでは、前記高速再起動の際、前記第２の記憶領域を有効とし、前記変更領域管理テーブルを参照して、前記オペレーティングシステムの前記変更前情報を前記第１の変更後情報に修正する
付記６記載の情報処理方法。
【００６０】
（付記９）
前記テーブル生成ステップでは、前記変更領域管理テーブルに前記変更前情報が記録されていたアドレスを特定するアドレス情報をさらに記録し、
前記変更ステップでは、前記高速再起動を行う直前又は高速再起動時に、前記変更領域管理テーブルを参照し、前記アドレス情報により特定されるアドレスに記録されている前記第１の変更後情報を前記変更前情報に変更する
付記６乃至８のいずれか１項記載の情報処理方法。
【００６１】
（付記１０）
コンピュータに、
第１の記憶領域に記録されたオペレーティングシステムの一部を修正する動的パッチ制御手段により、前記オペレーティングシステムの一部である変更前情報を第１の変更後情報に修正すると共に、前記第１の変更後情報によりアドレスが指定される第２の変更後情報を第２の記憶領域に記録する修正ステップと、
前記第１の記憶領域に記録された変更領域管理テーブルに、少なくとも前記変更前情報を登録するテーブル生成ステップと、
前記オペレーティングシステムを再実行することで高速再起動させる高速再起動ステップと、
前記高速再起動を行う直前又は高速再起動時に、前記変更領域管理テーブルを参照し、前記オペレーティングシステムの前記第１の変更後情報を前記変更前情報に変更する変更ステップとを実行させる、
プログラム。
【００６２】
（付記１１）
前記第１の記憶領域は、前記オペレーティングシステムの起動時に有効とされる領域であって、
前記第２の記憶領域は、前記動的パッチ制御手段の起動時に有効とされる領域である、
付記１０記載のプログラム。
【００６３】
（付記１２）
前記高速再起動ステップでは、前記高速再起動の際、前記修正ステップを実行し、
前記修正ステップでは、前記オペレーティングシステムの前記変更前情報を前記第１の変更後情報に変更する
付記１１記載のプログラム。
【００６４】
（付記１３）
前記テーブル生成ステップでは、前記変更領域管理テーブルに前記第１の変更後情報をさらに記録し、
前記高速再起動ステップでは、前記高速再起動の際、前記第２の記憶領域を有効とし、前記変更領域管理テーブルを参照して、前記オペレーティングシステムの前記変更前情報を前記第１の変更後情報に修正する
付記１１記載のプログラム。
【００６５】
（付記１４）
前記テーブル生成ステップでは、前記変更領域管理テーブルに前記変更前情報が記録されていたアドレスを特定するアドレス情報をさらに記録し、
前記変更ステップでは、前記高速再起動を行う直前又は高速再起動時に、前記変更領域管理テーブルを参照し、前記アドレス情報により特定されるアドレスに記録されている前記第１の変更後情報を前記変更前情報に変更する
付記１１乃至１３のいずれか１項記載のプログラム。
【符号の説明】
【００６６】
１      動的パッチ制御部
２      高速再起動制御部
３      記憶部
３１    第１の記憶領域
３２    第２の記憶領域
３１１  オペレーティングシステム
３１２  変更領域記憶テーブル
【図１】
0005668518.tif 000002
【図２】
0005668518.tif 000003
【図３】
0005668518.tif 000004
【図４】
0005668518.tif 000005
【図５】
0005668518.tif 000006
【図６】
0005668518.tif 000007
【図７】
0005668518.tif 000008
【図８】
0005668518.tif 000009
【図９】
0005668518.tif 000010
【図１０】
0005668518.tif 000011
【図１１】
0005668518.tif 000012