(57)【特許請求の範囲】
【請求項１】
コンピュータシステム全体の障害を回避する方法であって、
特定のコンフィギュレーションに適合する、生成されたオペレーティングシステムのイメージを、前記コンピュータがその記憶手段に記憶する工程と、
前記コンピュータがプログラムの障害を検知する工程と、
該プログラムの障害の検知時に、他のプログラムのコンフィギュレーション状態を復帰させるためのイメージを、前記コンピュータが前記記憶手段からシステムメモリにロードする工程と、
を含むことを特徴とする方法。
【請求項２】
請求項１に記載のコンピュータシステム全体の障害を回避する方法であって、
システムコンフィギュレーションの修正を識別するために、前記コンピュタが自動的にイメージを更新する工程を含むことを特徴とする方法。
【請求項３】
請求項１に記載のコンピュータシステム全体の障害を回避する方法であって、
保護されたモードにおいて、前記コンピュータが前記記憶手段から前記イメージをロードする工程を含むことを特徴とする方法。
【請求項４】
請求項３に記載のコンピュータシステム全体の障害を回避する方法であって、
システム・マネージメント・モードにおいて、前記コンピュータが前記記憶手段から前記イメージをロードする工程を含むことを特徴とする方法。
【請求項５】
請求項１に記載のコンピュータシステム全体の障害を回避する方法であって、
各種のプログラム障害の処理方法についての提供された情報を、プログラム障害が検出された際に前記コンピュータがチェックする工程を含むことを特徴とする方法。
【請求項６】
請求項１に記載のコンピュータシステム全体の障害を回避する方法であって、
前記コンピュータが仮想デバイスドライバを作動させる工程と、
前記コンピュータが前記イメージをシステムメモリに転送する工程と、
プログラム障害後にカーネルから制御権を引き継ぐために、前記コンピュータが監視プログラムを作動させる工程と
を含むことを特徴とする方法。
【請求項７】
請求項１に記載のコンピュータシステム全体の障害を回避する方法であって、
前記コンピュータシステムの製造過程でオペレーティングシステムのイメージを前記記憶手段に記憶する工程を含むことを特徴とする方法。
【請求項８】
請求項１に記載のコンピュータシステム全体の障害を回避する方法であって、
前記コンピュータが、前記イメージと共に仮想デバイスドライバを前記記憶手段に記憶する工程を含むことを特徴とする方法。
【請求項９】
コンピュータにおけるオペレーティングシステムの迅速な起動を可能にする方法であって、
特定のコンフィギュレーションに適応したオペレーティングシステムのイメージと、前記イメージを操作するための仮想デバイスドライバとを、前記コンピュータがその記憶手段に記憶する工程と、
オペレーティングシステムを迅速に起動したい際に、仮想デバイスドライバと、あるプログラムのコンフィギュレーション状態を復帰させるためのイメージとを、前記コンピュータが前記記憶手段からシステムメモリにロードする工程と
を含むことを特徴とする方法。
【請求項１０】
請求項９に記載のオペレーティングシステムの迅速な起動を可能にする方法であって、前記コンピュータが監視プログラムを作動させる工程を含むことを特徴とする方法。
【請求項１１】
請求項９に記載のオペレーティングシステムの迅速な起動を可能にする方法であって、システム・マネージメント・モードにおいて前記コンピュータが前記仮想デバイスドライバを作動させる工程を含むことを特徴とする方法。
【請求項１２】
請求項９に記載のオペレーティングシステムの迅速な起動を可能にする方法であって、前記システムコンフィギュレーションの修正を前記コンピュータがチェックする工程と、前記イメージを用いた当該修正の内容を前記コンピュータが前記記憶手段に記憶する工程とを含むことを特徴とする方法。
【請求項１３】
請求項１２に記載のオペレーティングシステムの迅速な起動を可能にする方法であって、前記システムコンフィギュレーションにおける変更をチェックするために前記仮想デバイスドライバを前記コンピュータが使用する工程と、当該システムコンフィグレーションの変更内容を前記コンピュータが前記記憶手段に記憶する工程とを含むことを特徴とする方法。
【請求項１４】
コンピュータにおけるオペレーティングシステムの迅速な起動を可能にする方法であって、
オペレーティングシステムのために生成された第１の組のコンフィギュレーションを前記コンピュータがその記憶手段に記憶する工程と、
オペレーティングシステムの起動が要求された際に、前記第１の組と異なり、あるプログラムのコンフィギュレーション状態を復帰させるための情報を含む第２の組のコンフィギュレーションを前記コンピュータが自動的に認識する工程と、
第２の組のコンフィギュレーションについての情報をイメージとして前記コンピュータが前記記憶手段に自動的に記憶する工程と、
オペレーティングシステムの起動が要求された際に、第２の組のコンフィギュレーションについての情報を含む前記イメージを前記コンピュータがシステムメモリに転送する工程と
を含むことを特徴とする方法。
【請求項１５】
請求項１４に記載のオペレーティングシステムの迅速な起動を可能にする方法であって、保護されたモードにおいて第２の組のコンフィギュレーションについての情報を、前記コンピュータが転送する工程を含むことを特徴とする方法。
【請求項１６】
請求項１５に記載のオペレーティングシステムの迅速な起動を可能にする方法であって、システム・マネージメント・モードにおいて前記コンピュータが転送を行う工程を含むことを特徴とする方法。
【請求項１７】
請求項１４に記載のオペレーティングシステムの迅速な起動を可能にする方法であって、現用のオペレーティングシステムにおいて、前記コンピュータが、監視プログラムを使用して新規機能を実行する工程を含むことを特徴とする方法。
【請求項１８】
請求項１７に記載のオペレーティングシステムの迅速な起動を可能にする方法であって、システムコンフィギュレーションにおける変更をチェックし、当該コンフィギュレーションの設定を配置するために、前記コンピュータが仮想デバイスドライバを使用し、これらの設定をイメージとして前記コンピュータが前記記憶手段に記憶する工程を含むことを特徴とする方法。
【請求項１９】
コンピュータに命じて、特定のコンフィギュレーションに適応したオペレーティングシステムのイメージであって、あるプログラムのコンフィギュレーション状態を復帰させるための情報を含むイメージを生成させる命令コードと、
コンピュータに命じて、前記イメージを操作するための仮想デバイスドライバをコンピュータに生成させる命令コードと、
コンピュータに命じて、前記イメージ及び前記仮想デバイスドライバを記憶させる命令コードと、
コンピュータに命じて、オペレーティングシステムを迅速に起動したい際に、前記仮想デバイスドライバ及び前記イメージをシステムメモリにロードさせる命令コードと
を含んでなる、システム全体の障害を回避するプログラムを記憶したことを特徴とするコンピュータで読み出し可能な記憶媒体。
【請求項２０】
コンピュータに命じて、オペレーティングシステムのための第１の組のコンフィギュレーションを生成させる命令コードと、
コンピュータに命じて、前記第１の組のコンフィギュレーションを記憶させる命令コードと、
コンピュータに命じて、オペレーティングシステムの起動が要求された際に、前記第１の組と異なり、あるプログラムのコンフィギュレーション状態を復帰させるための情報を含む第２の組のコンフィギュレーションを自動的に認識させる命令コードと、
コンピュータに命じて、前記第２の組のコンフィギュレーションについての情報を自動的に記憶させる命令コードと、
コンピュータに命じて、オペレーティングシステムの起動が要求された際に、前記第２の組のコンフィギュレーションについての情報をシステムメモリに転送させる命令コードと
を含んでなる、システム全体の障害を回避するプログラムを記憶したことを特徴とするコンピュータで読み出し可能な記憶媒体。
【請求項２１】
コンピュータに命じて、特定のコンフィギュレーションに適応したオペレーティングシステムのイメージを生成させる命令コードと、
コンピュータに命じて、前記イメージを記憶させる命令コードと、
コンピュータに命じて、プログラムの障害を検知させる命令コードと、
コンピュータに命じて、該プログラムの障害の検知時に、他のプログラムのコンフィギュレーション状態を復帰させるための前記イメージをシステムメモリにロードさせる命令コードと
を含んでなる、システム全体の障害を回避するプログラムを記憶したことを特徴とするコンピュータで読み出し可能な記憶媒体。
【発明の詳細な説明】
【０００１】
本発明は、一般にオペレーティングシステムに係り、特に、例えば最初の電源起動あるいはクラッシュ後の、オペレーティングシステムの起動及び再起動に関する。
【０００２】
コンピュータシステムの最初の起動時、基本入出力システムまたは「ＢＩＯＳ」が作動を始める。ＢＩＯＳは、打鍵キーの変換方法、スクリーン上への文字の配列方法、他のデバイスとの通信方法といった、パーソナルコンピュータの多くの重要機能を制御する。ＢＩＯＳは、特に、ユーザがコンピュータを起動する毎に、自己診断をコンピュータに指示する。このために、ＢＩＯＳは、パワーオン自己診断（ｐｏｗｅｒ ｏｎ ｓｅｌｆ ｔｅｓｔ）または「ＰＯＳＴ」を使用する。
【０００３】
パーソナルコンピュータが起動すると、一般的には、起動初期において、「リアルモード」と呼ばれる状態に遷移する。コンピュータはＢＩＯＳコードをジャンプ先とするジャンプ命令を含むプログラム命令を記憶する特定メモリ領域にアクセスする。ＢＩＯＳは、まず、システムを構成するコンポーネントを動作させるようにシステムマイクロプロセッサに命令する。そして、これらのコンポーネントが正常に動作しているか否かを決定する。次に、すでにインストール済みの拡張ボードがチェックされ、その後に、マイクロプロセッサが実際のブートアップ・シーケンスを開始する。ブートアップ・シーケンスの間、ＢＩＯＳコードは、システムフロッピ、ハードディスクまたはＣＤ−ＲＯＭの第１セクタの読み出し方法をマイクロプロセッサに指示するコード領域へのジャンプをマイクロプロセッサに指示できる。マイクロプロセッサはこのとき、コンピュータを実際に起動するためのオペレーティングシステムをロードする。
【０００４】
ウィンドウズ（商標）オペレーティングシステムは、おそらく、パーソナルコンピュータで最も広く使用されているオペレーティングシステムである。ウィンドウズ（商標）オペレーティングシステムは、異なるコンピュータシステムに適用できる点で「オープン」システムであり、与えられた任意のコンピュータシステム上のハードウェア変更に適応できる。少なくとも、一部、そのオープン性に起因して、ウィンドウズ（商標）オペレーティングシステムが起動する際にかなり長い時間がかかってしまう。ユーザによっては、このような遅れは苦痛であり、ときにはこの起動処理がシステムの動作を邪魔することもある。
【０００５】
例えば、セットトップ・コンピュータは、アナログ及びディジタル両方のテレビジョン機能を統括するテレビジョンシステムと連動でき、かつ、インターネットのようなコンピュータ機能と連動できるコンピュータである。このため、セットトップ・コンピュータのユーザは、これらのコンピュータを通常の電気製品と同様のものとみなしていると思われ、自分のテレビ画面へのエラーメッセージの表示や起動時の遅延を許容するつもりはないだろう。例えば、ユーザは、ピクチャ・ウィズイン・ピクチャシステムにおいて、ウィンドウズ（商標）オペレーティングシステム上でゲームを実行すると同時に、テレビを観るかもしれない。もし、ゲームがクラッシュした場合、通常のテレビ鑑賞を邪魔してしまうエラーメッセージが画面上に表示され、かつ、少なくとも短時間、テレビ画像がコンピュータクラッシュによって影響を受けてしまう。
【０００６】
おおよそすべてのケースにおいて、プログラム動作の迅速な起動はユーザにとって有益である。このことは、少なくとも３つのエリアにおいて発生する。第１に、コンピュータの電源がオンされたとき、できるだけ迅速に動作が開始されることが望ましい。第２に、プログラム・エラーまたはクラッシュが発生したとき、コンピュータができるだけ迅速にリスタートできることが望ましい。同様に、コンピュータ動作中に様々な事象が発生したとき、原因の特定や解決処理を避けて単純にコンピュータのリスタートを望むユーザもいる。
【０００７】
現行のコンピュータシステムは、コンピュータシステムの起動を高速化するための幾つかの機能を備えている。例えば、ＰＯＳＴルーティンの全部または一部をバイパスする機能であるファストオンを用いることが知られている。同様に、幾つかのラップトップコンピュータは、サスペンド／レジューム機能を備えている。希望時に、ユーザはサスペンドボタンを押してコンピュータのすべての設定を記憶させることができる。サスペンド後にコンピュータの電源がオンされたとき、コンピュータは、サスペンド処理が実行されていたことを認識し、直ちにレジューム処理を実行してサスペンド実行以前の状態にコンピュータを正確に復帰させる。さらに加えて、コンピュータシステムを決してリブートしなくてよいように「常時オン」モードで動作するようなコンピュータシステムもある。例えば、ウィンドウズ（商標）９８は、決してオフしないコンピュータシステムを模擬するアドバンスト・コンフィギュレーション・アンド・パワーインタフェース（ＡＣＰＩ）機能を備えている。パーソナル・データ・アシスタント（ＰＤＡ）といったシンプルなコンピュータシステムは、コンピュータを迅速に起動するためにリアルタイム・オペレーティングシステム（ＲＴＯＳ）として知られているものが使用されている。
【０００８】
上記のいずれの技術もプログラムがクラッシュした際の助けにはならない。上記各ケースにおいて、起動処理の少なくともかなりの部分は、クラッシュ後に再実行されなければいけない。上記のことは、かなりの遅延を引き起こす結果となり、かつ、システムユーザに対してシームレス状態の実現の妨げとなっている。以上説明したように、例えば、特にオープン・オペレーティングシステムを用いたシステムの電源オン時またはクラッシュ後に、オペレーティングシステムがもっと迅速な起動及びリスタートを実行できる方法へのニーズが継続して存在する。同様に、セットトップ型のパーソナルコンピュータのような特別なコンピュータシステムとの接続時、通常のコンピュータ動作をユーザから見えないようにすることが望ましい。
【０００９】
本発明の目的とするところは、特定のコンフィギュレーションに適合したオペレーティングシステムのためのイメージを生成することを含むシステムの誤動作または障害を回避する方法を提供する点にある。このイメージは記憶される。プログラム障害の発見時、このイメージはシステムメモリにロードされる。
【００１０】
図１を参照すると、ハードディスクドライブ１０は、ウィンドウズ（商標）オペレーティングシステムのようなオペレーティングシステム用の多くのファイルを記憶できる。代表的なファイル１２は、ユーザファイル、レジストリファイル及びその他のオペレーティングシステム用のファイルである。スペシャル・ディスク・パーテーション１４により、新規なベースイメージ１６及びベースオペレーティングシステムイメージ１８用の領域を提供することができる。
【００１１】
ベースオペレーティングシステムのイメージ１８には、元々のコンピュータ製造の工場側であらかじめロードされている仮想イメージを記憶させることができる。当該イメージは、既定のハードウェアセット及びソフトウェアコンフィギュレーションパラメータを備えたベースコンピュータシステム向けのシステムコンフィギュレーションを取得している。これらのパラメータは、特定のコンピュータに適合しているもので、そのコンピュータはもとのコンフィギュレーションのままでよく、あるいは、これらのパラメータは、そのコンピュータの実際のコンフィギュレーションに正確に対応していなくてもいてもいい仮想コンフィギュレーションのセットであってもよい。ベースオペレーティングシステムイメージ１８は、例えば、初期レジスタ設定、デバイス設定、ベース・メモリページ・ファイルなどを含むことができる。すなわち、専用のアプリケーション及びユーザシェルを含む実行時に、メモリにロードされるすべてのものを含んでいる。
【００１２】
基本的に、上記イメージは、実効的なまたは擬似的なコンピュータ・コンフィギュレーションを操作するために、ウィンドウズ（商標）オペレーティングシステムのようなオペレーティングシステムにとって必須のパラメータすべてを含んでいる。上記イメージは、あらかじめ定義された基本的なコンピュータ・コンフィギュレーションのための、オペレーティングシステムによるブートアップ・シーケンスの実行中に使用されるレジスタ及びメモリについての情報に関係している。このようにして、上記イメージは、コンフィギュレーションのスナップショットに類推されるように、実効的に、あらかじめ定義された特性を用いたブートアップ後のオペレーティングシステムの仮想イメージとなる。イメージ１８は、ブートアップ後の実効的なまたは擬似的なベースマシンのメモリ及びレジスタについての情報を含んでいる。
【００１３】
起動時、スペシャル・ディスク・パーテーション１４に含まれた情報は、ブロック２０に示すように、システムメモリ２２に転送される。このように、ベース・コンフィギュレーション用にファンクションが実質上実行されないので、平時のオペレーティングシステムのブートアップ・シーケンスを必要としない。その結果、オペレーティングシステムの操作をさらに迅速に始動できる。
【００１４】
特に、ウィンドウズ（商標）オペレーティングシステムのようなオープン・オペレーティングシステムを用いる場合、調べたり記憶しなければならないコンフィギュレーションの数が非常に多いため、ブートアップ時間はかなり長くなる可能性がある。図示実施例では、仮想イメージに関連するファイルは比較的大きなファイルである。例えば、多種類のハードウェア及びソフトウェア・コンフィギュレーション・セッティングを有するシステムにおいては、上記イメージは、比較的大きなデータを持っていることがある。それゆえ、ファイルをエンコードするために、非常に高速に読み込める非常に低位のファンクションを用いることが望ましい。このようにして、ウィンドウズ（商標）オペレーティングシステムのようなシステムに要する起動時間は、ハードディスクからの現状の転送レートを用いても、分オーダから数秒のオーダに減少される。
【００１５】
図示実施例の操作例は、ディスプレイ画面内の一つのテレビ画面でビデオゲームとテレビチューナを操作するセットトップ・コンピュータを含むことができる。システムのリスタートが必要な場合、移行は切れ目なく発生することが望ましい。すなわち、ビデオゲームまたはテレビ画像のいずれにおいても、ユーザが気が付くような変化を伴うことないシステムリスタートが望ましい。
【００１６】
オペレーティングシステムのイメージをシステムメモリに転送し、かつ、現在のセッティングを取得することにより、両ディスプレイを維持できる。現在のセッティングの情報は、アプリケーション（例えば、ビデオゲーム、ゲームのスコア、テレビチューナ及びテレビチャネル設定）を含んでいてもよい。
【００１７】
このイメージは、コンピュータ用のオープン・オペレーティングシステムをリスタートするのに要するよりも非常に短時間でロードされうる。イメージを実行するためにソフトウェア及びイメージを転送することにより、ユーザの予想を大きく裏切ることなく、システムをリスタートさせることができる。
【００１８】
再び図１を参照すると、スペシャル・ディスク・パーテーション１４はまた、新規ベースイメージ１６を含んでいる。コンピュータのソフトウェアまたはハードウェア・コンフィギュレーションの変更後に、イメージ１６を記憶することができる。コンピュータシステムは、オペレーティングシステムのリスタートまたは再イニシャライズが必要となったときに随時、新しいソフトウェア及びハードウェア・コンフィギュレーションを考慮しながらオペレーティングシステムが迅速に再イニシャライズできるように、メモリスペース１６におけるこれらの変更を自動的に記憶できるようにしてもよい。
【００１９】
この手法は、現行のオープン・オペレーティングシステムに使用されているものとはかなり異なる。これらのシステムはオープンシステムであるため、システムがリスタートされたり再始動される毎にセッティング及びコンフィギュレーションをすべて照会することで起動する。このためある程度時間は要するものの、異なる環境用にそれぞれ異なるオペレーティングシステムを用意する必要なしがないように非常に多数の変数を考慮できるようになっている。図１に示す手法は、基本的にこれと反対の作用を行う。本手法は、初期仮想イメージを記録し、そしてその後に、必要に応じてこのイメージの再調整を行う。図１に示す手法は、実際には、ベース・コンフィギュレーションを仮定し、精巧なブートアップ・シーケンスの必要性を回避し、かつ、コンピュータシステムが変化するのに合わせてイメージを変更する。
【００２０】
図２に示す高速起動プログラムのフロー例は、ブロック１２０に示すように、オープン・オペレーティングシステムを提供することで始動する。その後、ブロック１２２及び１２４に示すようにベースイメージがここに記述されたように生成されて記録される。システムがブートされた後に（ブロック１２６）、イメージはメモリにロードされる（ブロック１２８）。次に、ブロック１３０に示すように、制御権がオペレーティングシステムに移る。
【００２１】
模範的なコンピュータシステム２３は、図３に示すように、システムメモリ２２に接続されたプロセッサ２４を含んでいる。プロセッサ２４及びシステムメモリ２２は、ブリッジ２６によってバス２８に接続されていてもよい。バス２８は、ペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）バスを含むコンピュータシステムに用いられている任意の現用のバスでよい。本実施例に示すように、テレビチューナやモニタのようなビデオデバイス３０は、バス２８に接続されていてもよい。第２ブリッジ３２もまた、バス２８ともう１つのバス３４の間に接続されている。バス３４は、現用のエクステンド・インダストリー・システム・アーキテクチャ（ＥＩＳＡ）バスまたは任意の現用のバスでよい。本実施例に示すように、入力／出力インタフェース３６は、バス３４に接続されるとともに、マウス４０及びキーボード３８に事前に接続されている。同様に、インタフェース４２は、事前に記述されたファイル１２，１６及び１８を保持するハードドライブ１０に接続されている。
【００２２】
その他のコンピュータシステムは、セットトップ・コンピュータを使用可能にするシステムを含むイメージ１６及び１８を用いて起動または再起動できる。これらのデバイスは、上記の汎用のコンフィギュレーションを同じコンフィギュレーションを持つことができるが、例えば、さらにビデオ機能３０を与えるデバイスを備えていてもよい。セットトップ・コンピュータは、インターネット接続用のモデムを備え、キーボード、フロッピ、ＣＤ−ＲＯＭなどの所望の周辺機器を接続するために、ユニバーサル・シリアル・バス（ＵＳＢ）のようなバスを使用できる。これらセットトップ・コンピュータは、通常モニタとしてテレビを用いる。
【００２３】
図４を参照すると、ベースイメージ１８は、仮想デバイス・ドライバ（ＶｘＤ）１０２、アプリケーション・プログラム・インタフェース（ＡＰＩ）１００、及びＶｘＤ及びエグゼクティブ（監視プログラム）１０２を含んでいる。ＶｘＤ用のＡＰＩ１００は、例えば、ウィンドウズ（登録商標）３２ビットオペレーティングシステムに提供されているデバイスＩ／ＯコントロールＡＰＩであってもよい。ＡＰＩ１００は、ＶｘＤ１０２がベースイメージ１８または新規ベースイメージ１６を生成する際に、ＶｘＤ１０２を起動する。
【００２４】
専用アプリケーション（ｄｅｄｉｃａｔｅｄ ａｐｐｌｉｃａｔｉｏｎ）１０６は、有利には、クラッシュ後でさえも切れ目なく実行されるクリティカル・アプリケーションである。例えば、セットトップ・コンピュータにおいて、ディジタルテレビ機能を受け持つアプリケーションプログラムは、たとえゲームのようなウィンドウズ（商標）アプリケーションでクラッシュした時であってもディジタルテレビ画面上でクラッシュにユーザが気が付かないように、切れ目なく動作することが望ましい。専用アプリケーション１０６は、イメージ１６または１８、ＡＰＩ１００、及びＶｘＤ及びエグゼクティブ１０２とともにロードされていてもよい。
【００２５】
仮想マシンマネージャ（ＶＭＭ）１０４は、３２ビットウィンドウズ（商標）オペレーティングシステム上で有効なマネージャである。ＶｘＤ１０２は、ＶＭＭ１０４アプリケーション・ステータス情報を照会することができる。例えば、ＶｘＤ１０２は、クラッシュが発生したか否かを判断するためにＶＭＭ１０４を使用できる。ＶＭＭコマンドはクラッシュが発生したことを示すので、一般保護違反またはプログラム・エラー表示が発行されたか否かの判断に使用できる。
【００２６】
レジストリ１１２は、ウィンドウズ（商標）レジストリのようなステータス・データベースである。レジストリ１１２は、ベースイメージ１６または１８の一部ではなく、ハードウェア及びソフトウェアのコンフィギュレーションに関する最新の情報を提供する。レジストリ１１２は、クラッシュ直前に存在していたすべての設定を（クラッシュ後に）システムに戻すためにイメージ１８によって使用される。換言すれば、システムが復帰されたとき、専用アプリケーション１０６によってレジストリ１１２から取得した情報を用いて、最新の設定が呼び出される。例えば、セットトップ・コンピュータ用のアプリケーションにおいて、クラッシュ発生時に視聴されていたテレビチャネルは、レジストリ１１２から取得できる。
【００２７】
シェアード・メモリ１１０は、ベースイメージ１８がシステム・マネージメント・モード（ＳＭＭ）メモリ１０８とデータ交信することを可能にする。図４に示すように、ＳＭＭは、保護されたシステム・マネージメント空間内で動作する。当該空間は、リング０に位置し、強力に保護されている。それゆえ、ＶｘＤ及びエグゼクティブ１０２は、ＳＭＭメモリ１０８に直接はアクセスできない。シェアード・メモリ１１０は、ＶｘＤ１０２によってアクセス可能である。シェアード・メモリ１１０は、有利には、ウィンドウズ（商標）オペレーティングシステムのようなオペレーティングシステムに認知されていないものとすることができる。シェアード・メモリ１１０はオペレーティングシステムにマッピングされていなければ、オペレーティングシステムはシェアード・メモリ１１０にアクセスできない。しかしながら、システム・マネージメント・モード・メモリ１０８とＶｘＤ及びエグゼクティブ１０２の間でデータ交信することを可能にするために、ＶｘＤ１０２はメモリ１１０にアクセスできる。
【００２８】
ブロック１３２に示すように、図５に示す、システムの障害を回避するための一プログラムが始動して、ベース・コンフィギュレーションのイメージを生成する。このイメージは記録される（ブロック１３４）。プログラムの障害が検出されると（ブロック１３６）、イメージがロードされる（ブロック１３８）。
【００２９】
図６を参照すると、ベースイメージ１６または１８は、エグゼクティブ１０２によって生成される。ＶｘＤ及びエグゼクティブ１０２は、専用アプリケーション及びユーザシェルがロードされかつウェイクアップ信号をＶｘＤ  ＡＰＩ１００に要求する準備ができた位置で呼び出せる。上記イメージは、数個のシステムファイルとともに、プロセッサ及びデバイスのハードウェアレジスタを含むマシンの完全なメモリ状態を含んでいてもよい。当該イメージはコンピュータの製造工場で生成できるが、新規なイメージは、例えば、システムコンフィギュレーションが変更されたとき、同じＶｘＤを呼び出すことによって生成できる。
【００３０】
例えばクラッシュ後に上記イメージを回復したい場合、ＳＭＭは、このイメージをシステムメモリ２２にロードし、かつ、ブロック１０８に示すようにＶｘＤ１０２に制御権を渡す。ＶｘＤ１０２は、当該回復処理を遂行し、次に、呼び出されたＡＰＩ１００へのエントリから復帰する。専用アプリケーション１０６は、このとき使用できる状態にあり、かつ、継続実行が可能である。これらはそれぞれ、矢印”Ａ”に示すように、ＡＰＩ１００を介してＶｘＤ及びエグゼクティブ１０２に問い合わせ、それらが動作しているかを知り、それらのコンフィギュレーション状態を復帰させる。このように、クラッシュ前と同じ状態において仮想的にインタラプトされていないように見えるため、ユーザにとって、専用アプリケーションは、切れ目なく動作しているように見える。
【００３１】
実際、ＶｘＤは、ウィンドウズ（商標）オペレーティングシステムのカーネルレベルの機能を補強または拡張できる。もちろん、オペレーティングシステムのカーネルにアクセス可能ならば、これと同様な機能は、オペレーティングシステムのカーネル内にも書き込むことができる。ＶｘＤを使用することで、所望の機能を現オペレーティングシステムのカーネルに加えることができる。
【００３２】
図７に示すように、ある例では、ＤＯＳ（Ｄｉｓｋ  Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）のブートアップが完了した後に、オペレーティングシステムの起動にかかる仮想イメージを使い始めることができる。望ましくは、基本的でない様々な処理を除くことで、簡略化されたＤＯＳのブートアップ・シーケンスが起動される。例えば、ＰＯＳＴルーティンの全体または一部は省略可能である。ブロック５０に示すように、起動シーケンスは、リアルモードにおける迅速なＤＯＳブートアップを伴って始動する。ブロック５２では、ブートアップ・シーケンスは、保護モードにスイッチし、かつ、ＤＯＳのブートアップシーケンスが継続される。
【００３３】
ブロック５４では、オペレーティングシステム起動シーケンスが始動する。最初に、ステップ５６に示すように、シーケンスはシステム・マネージメント・モード（ＳＭＭ）にスイッチされる。システム・マネージメント・モードは高度にプロテクトされたアドレス空間において動作するので、システム・マネージメント・モードを使用することが望ましい。多くの比較的重大なシステムエラーにも拘わらず、さらに、ＳＭＭは動作を継続する。
【００３４】
次に、オペレーティングシステム起動シーケンスは、ステップ５８に示すように、オペレーティングシステムが初めて起動されたか否かを判定するチェックを行う。もし初めての起動であると判断した場合、オペレーティングシステムが初めて起動されたのではないことを次回にシステムが認知できるように、ファースト・タイム・ロード・フラグが変更される（ブロック６０参照）。
【００３５】
オペレーティングシステムのロードが初回でない場合、コンピュータのコンフィギュレーションのベース・コンフィギュレーションからの何らかの変更があったかを判断するために、ブロック６２でチェックがコンフィギュレーション・データベースにおいて実行される。この機能の一実現手法は、システムがリブートしたあらゆるときにフラグをセットすることである。ブロック６２のチェックでは、新規のベースイメージを生成すべきであることを示唆するようなリブートが発生したことをフラグが示しているか否かを判断する。もし、フラグがセットされていない場合は、フローは下方へジャンプし、エグゼクティブ１０２は起動する（ブロック６８）。変更がなされた場合は、新しいベースイメージがブロック６４に示すように生成され、ブロック６６に示すように記憶される。記憶されたイメージは、その後システムメモリ２２に転送され（ブロック６７）、エグゼクティブが起動する（ブロック６８）。
【００３６】
リアルタイム・エグゼクティブ１０２は、スケジュリングを実行し、プログラムをロードしてこれらのプログラムを一緒に実行する。リアルタイム・エグゼクティブ１０２は、リアルタイム・オペレーティングシステム（ＲＴＯＳ）の全機能ではなくその中の幾つかの機能を含んでいる。ＲＴＯＳでは、例えば、外部デバイスの管理も行う。ＲＴＯＳは１つのエグゼクティブを含んでいる。
【００３７】
リアルタイム・エグゼクティブ１０２は、さらに明示的な他の動作下のリングＯにおいて動作する。リアルタイム・エグゼクティブ１０２はあらかじめプログラムされているので、リアルタイム・エグゼクティブ１０２は、リアルタイム・エグゼクティブ１０２に記述されている機能に影響を受けないオペレーティングシステムのカーネルの拡張を許可する。しかしながら、エグゼクティブ機能は、新規のオペレーティングシステムを開発する際に、カーネルに組み込むことができる。このときエグゼクティブは、スペシャル・ディスク・パーテーション１４を用いてオペレーティングシステム機能を実行する。
【００３８】
仮想イメージを準備することは、起動だけでなく、オペレーティングシステムの再起動が必要となる様々な環境において有効である。最も重要なことは、プログラム・エラーまたはクラッシュである。クラッシュは、ハードウェアまたはソフトウェアの問題によって引き起こされるプログラム・エラーである。プログラムは、例外処理、無限ループ、競合条件、リソース不足、またはメモリ違反の発生時にクラッシュする可能性がある。
【００３９】
通常、アプリケーションがクラッシュしたとき、ユーザはシステムの電源を切り、問題を解消することを期待してシステムをリスタートする。同時に、与えられた状況をユーザが処理できない場合、ユーザは、コンピュータシステムを単にリスタートする可能性がある。いずれのケースでも、仮想イメージを用いることで、連続状態でこれらの問題を迅速かつ効果的に解消することができる。実際に起こったことをユーザがほとんどまたは全く評価しないといった点で、かつ、いかなる修正行為も実際行わなくて良いといった点で、シームレスを実現した問題解決策といえる。
【００４０】
上記のプログラムを実行するための模範的なソフトウェアプログラムは、図８に示すように、ベース・システム・コンフィギュレーションのイメージを生成するステップを含んでいる（ブロック１４０）。次に、ブロック１４２に示すように、仮想デバイスドライバが生成され、ブロック１４０で生成されたイメージ及びブロック１４２で生成された仮想デバイスドライバが、ブロック１４４に示すように、記憶される。もし、迅速な起動が必要な場合は、ブロック１４６及び１４８に示すように、イメージ及び仮想デバイスドライバがロードされる。
【００４１】
図９を参照すると、カーネルは、ブロック７０でクラッシュが存在するか否かを決定する。もし、カーネルが動作状態にあり、かつクラッシュが存在すると決定したとき、カーネルは、ブロック７２に示すように、修正動作を実行できる。もし、カーネルが動作状態にない、またはクラッシュが検出されていないとき、システム・マネージメント・モードがクラッシュを検出したか否かを決定するために、ブロック７４のチェックが実行される。
【００４２】
システム・マネージメント・モードは、多数かつ異種のクラッシュ状況をモニタし、多種の異なる障害をルーティンとして検出する。システム障害の他の検出手段は、上記の各種の手段と同様に、心拍モニタ、ウォッチドッグタイマ、及びクラッシュ・ディテクタとして使用できる。各ケースにおいて、システムは、ハング、バスの操作不足、またはクラッシュにかかる幾つかの他のシステムの不足といった幾つかの障害の兆候を検出する。
【００４３】
ブロック７４の判定処理でクラッシュが検出された場合、システム・マネージメント・モードまたはその他の方法を用いて、アプリケーションを単に閉じることで問題を解決できるか否かを判定するためのチェックをブロック７６の判定処理において行う。アプリケーションを単に閉じることで問題を解決できると判定した場合、アプリケーションはブロック７２の処理で単に閉じられる。システム・マネージメント・モードまたはその他のクラッシュ検出手段は、発生する各種の障害についての情報を提供するキャッシュを備えていてもよい。当該キャッシュは、ハードディスクドライブ１０に記憶できるが、これらの障害を処理する最適な方法についての情報を提供する。もし、障害がアプリケーションを単に閉じることで問題を解決できるものであるときは、通常当該処理を開始することが望ましい。もし、アプリケーションを単に閉じることで問題を解決できないことを、記憶されたキャッシュ情報が示唆しているときは、上記エグゼクティブが実行されるべきか否かを決定するために、ブロック７８の判定処理でチェックが実行される。仮想イメージを使用することで問題を解決できるか否かを判定するために、再度、キャッシュがチェックされる。仮想イメージを使用することで問題を解決できないと判定したときは、フローはリセットの判定８０に移動し、システムは通常の方法でリセットされる。もし、仮想イメージを使用することで問題を解決できることをキャッシュの情報が示しているときは、ブロック８２に示すようにＶｘＤイメージが起動される。その後、仮想イメージはブロック８４で呼び出され、ブロック８６においてエグゼクティブが処理を引き継ぐ。エグゼクティブは、変更されたシステムコンフィギュレーションに適応させるために、事前に定義されている仮想イメージを用いて、初期にシステムにロードされていた状態、または以前に記述された状態にシステムを持っていく。
【００４４】
このようにして、ベースの仮想イメージまたはベースイメージは、オペレーティングシステムの起動処理を促すとともに、クラッシュ処理のための有効なツールを提供する。さらに加えて、多くのアプリケーションにおいては、仮想イメージは、ユーザに継ぎ目のない処理の実行を実感させるような方法で、セットトップ・コンピュータを含む通常のコンピュータを調整する。すなわち、ユーザは起動を含む時間的な遅れに全く気づくことはなく、また、ほとんどすべてのクラッシュ後において、ユーザは幾つかの不都合な状況から実効的に保護される。例えば、セットトップ・コンピュータにおいて、クラッシュは迅速に処置されるので、通常のテレビ画像に影響を与えないようにできる。
【００４５】
なお、本発明が上記各実施例に限定されず、本発明の技術思想の範囲内において、上記各実施例は適宜変更され得ることは明らかである。また上記構成部材の数、位置、形状等は上記各実施例に限定されず、本発明を実施する上で好適な数、位置、形状等にすることができる。
【図面の簡単な説明】
【図１】本発明の一実施例のブロック図である。
【図２】第１の起動プログラムのフローチャートである。
【図３】図１に示す本発明の一実施例を適用したコンピュータシステムを示すブロック図である。
【図４】図１に示すベースオペレーティングシステムのさらに詳細なブロック図である。
【図５】システムの障害を回避するためのプログラムのフローチャートである。
【図６】ベースイメージが生成されて使用される方法を説明したフローチャートである。
【図７】本発明の一実施例にかかるオペレーティングシステムの起動処理を説明したフローチャートである。
【図８】図２に示すプログラムの他の実施例を説明したフローチャートである。
【図９】クラッシュ後の本発明の一実施例の動作を説明したフローチャートである。
【図１】
0003598272.tif 000002
【図２】
0003598272.tif 000003
【図３】
0003598272.tif 000004
【図４】
0003598272.tif 000005
【図５】
0003598272.tif 000006
【図６】
0003598272.tif 000007
【図７】
0003598272.tif 000008
【図８】
0003598272.tif 000009
【図９】
0003598272.tif 000010