(57)【要約】      （修正有）【課題】コンピュータのオペレーティング・システム（ＯＳ）をブートする前、またはＯＳの障害が起こった後に、ネットワークを介してコンピュータと通信する方法およびシステムについて開示する。【解決手段】ネットワーク機能拡張ＢＩＯＳ（６００）でマルチタスキング・カーネルが実施される。ＮＩＣデバイス・ドライバ内の外部参照が決定され、ネットワーク機能拡張ＢＩＯＳによって実行される参照サービスとなる。ＯＳをロードする前、またはＯＳの障害が起こった後に、ネットワークを介してコンピュータに結合されたワークステーションを使用してコンピュータ上のステータスにアクセスしそれを設定する。【効果】マルチタスキング・カーネルは、従来型のＢＩＯＳ（５００）と同時に操作することができる。コンピュータはさらに、ＰＯＳＴ障害またはＯＳのクラッシュが起こった場合にワークステーションに警告する手段を備えることもできる。【選択図】図４
2007172634.tif 000002
【特許請求の範囲】
【請求項１】
中央演算処理装置（ＣＰＵ）と、該コンピュータをネットワークと結合するネットワーク・インタフェースとを含むコンピュータを操作する方法であって、
ＣＰＵシステム立上げ時に該ＣＰＵ上で初期立上げソフトウェアを自動的に実行する段階、
該ネットワーク・インタフェースを介して該コンピュータ・ネットワークに結合されたワークステーションと通信するためのプロトコルをサポートするネットワーク機能拡張ソフトウェアを、該立上げソフトウェアの少なくとも第１の部分が完了したときに該ＣＰＵ上にロードし実行する段階、および
該ＣＰＵ上で実行されるユーザ・レベル・アプリケーション・ソフトウェア・プログラムからアクセスできるオペレーティング・システム・ソフトウェアを、該ネットワーク機能拡張ソフトウェアをロードした後に該ＣＰＵ上にロードし実行する段階を含む方法。
【請求項２】
ネットワーク・インタフェースがネットワーク・インタフェース・カード（ＮＩＣ）を備え、該ネットワークと通信するためのプロトコルが、該ＮＩＣ用のドライバをサポートするネットワーク・プロトコル・スタックを備える請求項１記載の方法。
【請求項３】
ネットワーク・プロトコル・スタックが、ＯＤＩ仕様の少なくともサブセットを満たすネットワーク・ドライバ層をサポートする、請求項２記載の方法。
【請求項４】
ネットワーク・プロトコル・スタックが、ＮＤＩＳ仕様の少なくともサブセットを満たすネットワーク・ドライバ層をサポートする、請求項２記載の方法。
【請求項５】
ネットワーク・インタフェースが、ＣＰＵを介して結合されたモデムを備え、該ネットワークと通信するためのプロトコルが該ネットワークとのモデム・インタフェースをサポートする、請求項１記載の方法。
【請求項６】
ネットワークに結合されたワークステーションに該ネットワーク・インタフェースを介してＣＰＵシステム立上げの通知を送信する段階をさらに含む、請求項１記載の方法。
【請求項７】
ネットワーク・インタフェースがＮＩＣを備え、通知が、該ネットワークを介してＳＮＭＰ警告メッセージを送信することを含む、請求項６記載の方法。
【請求項８】
ＳＮＭＰ警告メッセージが、ＣＰＵシステム・リセットの原因の識別をさらに含む、請求項７記載の方法。
【請求項９】
ネットワーク・インタフェースがＮＩＣを備え、オペレーティング・システムがロードされたことを示すＳＮＭＰ警告メッセージを送信する段階をさらに含む、請求項６記載の方法。
【請求項１０】
ネットワークに接続されたリモート・ワークステーションとのネットワーク接続が該ネットワーク機能拡張ソフトウェアによって確立されないかぎり、オペレーティング・システム・ソフトウェアが実行されない、請求項１記載の方法。
【請求項１１】
立上げソフトウェアの第２の部分をリモート・ワークステーションからネットワークを介してダウンロードする付加的段階を含み、オペレーティング・ソフトウェアが、立上げソフトウェアの第２の部分がダウンロードされ実行されるまで実行されない、請求項１０記載の方法。
【請求項１２】
ネットワーク機能拡張ソフトウェアが、複数のソフトウェア・スレッドをＣＰＵ上でマルチタスク化する、請求項１記載の方法。
【請求項１３】
ＣＰＵが、実モードと保護モードとを含む少なくとも２つのモードで動作し、ネットワーク機能拡張ソフトウェアが、複数のソフトウェア・スレッドを該ＣＰＵの該保護モードで実行する、請求項１２記載の方法。
【請求項１４】
立上げソフトウェアがＣＰＵの実モードで実行される、請求項１３記載の方法。
【請求項１５】
ＣＰＵがネットワーク機能拡張ソフトウェアの実行を開始した後で立上げソフトウェアの第２の部分を実行する段階をさらに含み、該ＣＰＵが該ネットワーク機能拡張ソフトウェアの実行を開始した後で、該立上げソフトウェアと該ネットワーク機能拡張ソフトウェアが該ＣＰＵの制御を共有する、請求項１４記載の方法。
【請求項１６】
ネットワーク機能拡張ソフトウェアが、ＣＰＵの実モードと保護モードとの切換えを制御する、請求項１５記載の方法。
【請求項１７】
ネットワーク機能拡張ソフトウェアが、コンピュータ・ネットワークに結合されたリモート・ワークステーションがコンピュータにアクセスすることを可能にする、請求項１記載の方法。
【請求項１８】
ネットワーク機能拡張ソフトウェア内のマルチタスク化スレッドが、リモート・ワークステーションがＣＰＵを制御することを可能にする、請求項１７記載の方法。
【請求項１９】
ネットワーク機能拡張ソフトウェアが、通常はコンピュータ上のビデオ・コントローラに向けて送られる出力を、ネットワーク・インタフェースを介してリモート・ワークステーションに転送する、請求項１７記載の方法。
【請求項２０】
リモート・ワークステーションから、コンピュータのＣＰＵ上で実行されるＲＰＣサーバ・ルーチンへのリモート・プロシージャ・コール（ＲＰＣ）を生成する段階をさらに含み、該リモート・プロシージャ・コールの結果として該リモート・ワークステーションに返すデータが得られるまで、該ＲＰＣサーバ・ルーチンがそれ自体の実行を妨げる、請求項１８記載の方法。
【請求項２１】
リモート・ワークステーションが、コンピュータに接続されたキーボード上に入力されたキーストロークの効果をシミュレートするメッセージを入力することを、該ネットワーク機能拡張ソフトウェアが可能にする、請求項１７記載の方法。
【請求項２２】
メッセージが、コンピュータのＣＰＵ上で実行されるリモート・プロシージャ・コール（ＲＰＣ）サーバによって受信され、該ＲＰＣが、該コンピュータに結合されたキーボード・コントローラに該メッセージを挿入する、請求項２１記載の方法。
【請求項２３】
リモート・ワークステーションが、ＣＰＵ上で実行される立上げソフトウェアから報告されるメッセージおよびシステム・エラーを表示する、請求項１７記載の方法。
【請求項２４】
コンピュータが、所定のエラー条件が生じたときに自動的に診断状態に入る段階をさらに含み、該診断状態がオペレーティング・システム・ソフトウェアのロードを妨げる、請求項１記載の方法。
【請求項２５】
コンピュータが診断状態に入り、それによってオペレーティング・システム・ソフトウェアがロードされなくなる段階をさらに含み、付加的ソフトウェア・プログラムをリモート・ワークステーションからコンピュータ・ネットワークを介して該コンピュータにダウンロードする段階をさらに含み、該付加的ソフトウェア・プログラムが該ＣＰＵ上で実行される、請求項１７記載の方法。
【請求項２６】
リモート・ワークステーションが、ＣＰＵ上で実行される立上げソフトウェア内の電源オン・システム試験（ＰＯＳＴ）ルーチンを制御する段階をさらに実行することができる、請求項１７記載の方法。
【請求項２７】
リモート・ワークステーションが、コンピュータを、オペレーティング・システムがロードされるのを妨げる診断状態に強制的に入らせることができ、
それによって、ネットワーク機能拡張ソフトウェアを該リモート・ワークステーションとのさらなる通信に使用することができる、請求項１７記載の方法。
【請求項２８】
リモート・ワークステーションが、ＣＰＵにローカルに結合された直接アクセス記憶装置からデータを読み取らせる段階をさらに含み、該データが、該コンピュータから該リモート・ワークステーションへとさらに伝送される、請求項１７記載の方法。
【請求項２９】
リモート・ワークステーションがコンピュータにデータを伝送する段階をさらに含み、該データが、ＣＰＵにローカルに結合された直接アクセス記憶装置に書き込まれる、請求項１７記載の方法。
【請求項３０】
立上げソフトウェアまたはネットワーク機能拡張ソフトウェアをリモート・ワークステーションから該コンピュータ部分にダウンロードする段階をさらに含み、
それによって、次にシステム立上げが行われる際に、このような立上げソフトウェアおよびネットワーク機能拡張ソフトウェアが実行される、請求項１記載の方法。
【請求項３１】
コンピュータ上でＲＰＣサーバを実行する段階をさらに含み、それによって、該ネットワークに結合されたリモート・ワークステーション上で実行されるＲＰＣクライアントが、該コンピュータ上でリモート・プロシージャ・コールを実行することができる、請求項１記載の方法。
【請求項３２】
立上げソフトウェアが、該立上げソフトウェアの第１の部分の一部としての最初のＰＯＳＴ部分と、ＰＯＳＴの残りの部分とを含み、
該ＣＰＵが該ネットワーク機能拡張ソフトウェアをロードする前に、該最初のＰＯＳＴを実行する段階と、
該ネットワーク機能拡張ソフトウェアをロードした後でＰＯＳＴの残りの部分を実行する段階とをさらに含む、請求項１記載の方法。
【請求項３３】
ネットワーク機能拡張ソフトウェアが、該ネットワークから受信されたメッセージを認証する段階をさらに含む、請求項１記載の方法。
【請求項３４】
メッセージ認証が秘密鍵を使用して行われる、請求項３３記載の方法。
【請求項３５】
ＣＰＵが、保護モードを含む少なくとも２つのモードで動作し、
該ネットワーク機能拡張ソフトウェアおよび該オペレーティング・システム・ソフトウェアを保護モードで実行する段階と、
該オペレーティング・システム・ソフトウェアがロードされた時点で該ネットワーク機能拡張ソフトウェアの実行を終了する段階とをさらに含む、請求項１記載の方法。
【請求項３６】
オペレーティング・システム・ソフトウェアがロードされた後で、該ネットワーク機能拡張ソフトウェアの一部をメモリに保持する段階をさらに含む、請求項１記載の方法。
【請求項３７】
中央演算処理装置（ＣＰＵ）と、該コンピュータをネットワークと結合するネットワーク・インタフェースとを含むコンピュータを操作する方法であって、該ＣＰＵが、実モードと保護モードとを含む少なくとも２つのモードで操作され、
該コンピュータの電源オン・システム試験を実行する第１の基礎入出力システム（ＢＩＯＳ）を実モードで該ＣＰＵ上で実行する段階、
該第１のＢＩＯＳの一部が実行された後、ネットワーク・プロトコル・スタックをサポートする第２のＢＩＯＳを保護モードで該ＣＰＵ上で実行する段階、および
該ＣＰＵ上で実行されるユーザ・レベル・アプリケーション・ソフトウェア・プログラムをサポートするオペレーティング・システム・ソフトウェアを、該第２のＢＩＯＳの一部が実行された後に保護モードで該ＣＰＵ上で実行する段階を含む方法。
【請求項３８】
コンピュータ・ネットワークに結合されたワークステーションと通信することのできるネットワーク機能拡張コンピュータであって、
中央演算処理装置（ＣＰＵ）と、
該ＣＰＵに結合され、該コンピュータを該コンピュータ・ネットワークと結合するネットワーク・インタフェースと、
該ＣＰＵに結合された非揮発性メモリと、
ＣＰＵシステム立上げ時に該ＣＰＵによって自動的に実行され、少なくとも第１の部分が該非揮発性メモリに記憶される初期立上げソフトウェア・プログラムと、
該立上げソフトウェアの該少なくとも第１の部分が完了したときに該ＣＰＵ上で実行され、該ネットワーク・インタフェースを介して該コンピュータ・ネットワークに結合された該ワークステーションと通信するためのプロトコルをサポートするネットワーク機能拡張ソフトウェアと、
該ＣＰＵ上で実行され、ユーザ・レベル・アプリケーション・ソフトウェア・プログラムからアクセス可能であり、該ネットワーク機能拡張ソフトウェアがロードされた後で該ＣＰＵ上でロードされるオペレーティング・システム・ソフトウェアとを備えるネットワーク機能拡張コンピュータ。
【請求項３９】
ネットワーク・インタフェースが、ＣＰＵからアクセスできるデバイス・ドライバ・プログラムを備えるネットワーク・インタフェース・カード（ＮＩＣ）であり、該ネットワークと通信するためのプロトコルが、該デバイス・ドライバ・プログラムとのインタフェースをとるネットワーク・プロトコル・スタックを備える請求項３８記載のネットワーク機能拡張コンピュータ。
【請求項４０】
デバイス・ドライバ・プログラムがＯＤＩドライバ仕様を実質的に満たし、ネットワーク・プロトコル・スタックが、該デバイス・ドライバ・プログラムとのインタフェースをとるためにＯＤＩリンク・サポート層プロトコルの少なくともサブセットを与える、請求項３９記載のネットワーク機能拡張コンピュータ。
【請求項４１】
デバイス・ドライバ・プログラムがＮＤＩＳドライバ仕様を実質的に満たし、ネットワーク・プロトコル・スタックが、該デバイス・ドライバ・プログラムとのインタフェースをとるためにＮＤＩＳプロトコルの少なくとも第２のサブセットを与える、請求項３９記載のネットワーク機能拡張コンピュータ。
【請求項４２】
ネットワーク・インタフェースが、ＣＰＵと結合されたモデムであり、該ネットワークと通信するためのプロトコルが該ネットワークとのモデム・インタフェースをサポートする、請求項３８記載のネットワーク機能拡張コンピュータ。
【請求項４３】
ネットワークに結合されたワークステーションにネットワーク・インタフェースを介してＣＰＵシステム立上げの通知を送信するプログラム・セグメントをさらに備え、該通知が、オペレーティング・システムの実行よりも前に送信される、請求項３８記載のネットワーク機能拡張コンピュータ。
【請求項４４】
ネットワーク・インタフェースがＮＩＣであり、通知がＳＮＭＰ警告メッセージを含む、請求項４３記載のネットワーク機能拡張コンピュータ。
【請求項４５】
ネットワークに接続されたリモート・ワークステーションとのネットワーク接続が該ネットワーク機能拡張ソフトウェアによって確立されるまで、該オペレーティング・システム・ソフトウェアの実行を妨げる手段をさらに備える、請求項３８記載のネットワーク機能拡張コンピュータ。
【請求項４６】
立上げソフトウェアの第２の部分をリモート・ワークステーションからネットワークを介してダウンロードする手段をさらに備え、オペレーティング・ソフトウェアが、該立上げソフトウェアの該第２の部分がダウンロードされるまで実行されない、請求項３８記載のネットワーク機能拡張コンピュータ。
【請求項４７】
ネットワーク機能拡張ソフトウェアが、
マルチタスキング・カーネルと、
ＣＰＵ上の該マルチタスキング・カーネル内で実行される複数のソフトウェア・スレッドとを備える、請求項３８記載のネットワーク機能拡張コンピュータ。
【請求項４８】
ＣＰＵが、実モードと保護モードとを含む少なくとも２つのモードで動作し、マルチタスキング・カーネルが、該ＣＰＵ保護モードで動作するカーネルを備える、請求項４７記載のネットワーク機能拡張コンピュータ。
【請求項４９】
立上げソフトウェアが、ＣＰＵの実モードで実行される、請求項４８記載のネットワーク機能拡張コンピュータ。
【請求項５０】
ＣＰＵがネットワーク機能拡張ソフトウェアの実行を開始した後で、立上げソフトウェアとマルチタスキング・カーネルとが該ＣＰＵの制御を共有する、請求項４９記載のネットワーク機能拡張コンピュータ。
【請求項５１】
コンピュータ・ネットワークとのインタフェースをとることのできるコンピュータであって、
実モードおよび保護モードを含む少なくとも２つのモードを実現する中央演算処理装置（ＣＰＵ）と、
該コンピュータを該コンピュータ・ネットワークと結合するネットワーク・インタフェースと、
該ＣＰＵと結合された非揮発性メモリと、
該ＣＰＵがシステム・リセット時に第１の基本入出力システム（ＢＩＯＳ）を呼び出すように、少なくとも一部が該非揮発性メモリに記憶され、さらに、該コンピュータの電源オン・システム試験を実行する、第１の基本入出力システム（ＢＩＯＳ）と、
該第１のＢＩＯＳの一部が実行された後に保護モードで該ＣＰＵ上で実行され、ネットワーク・プロトコル・スタックをサポートする、第２のＢＩＯＳと、
該第２のＢＩＯＳの一部が実行された後に保護モードで該ＣＰＵ上で実行され、該ＣＰＵ上で実行されるユーザ・レベル・アプリケーション・ソフトウェア・プログラムをサポートするオペレーティング・システムとを備えるコンピュータ。
【請求項５２】
少なくとも１つのコンピュータをリモートに管理するシステムであって、
コンピュータ・ネットワークと、
該コンピュータ・ネットワークに結合され、アプリケーション・ソフトウェアを実行するワークステーションとを備え、
コンピュータが、
該コンピュータを該コンピュータ・ネットワークと結合するネットワーク・インタフェースと、
中央演算処理装置（ＣＰＵ）と、
ＣＰＵシステム・リセット時に自動的に実行される初期立上げソフトウェア・プログラムと、
該立上げソフトウェアの該少なくとも第１の部分が実行されるときに該ＣＰＵ上で実行されるように構成され、該ネットワーク・インタフェースを介して該ワークステーションと通信するためのプロトコルをサポートするネットワーク機能拡張ソフトウェアと、
該ＣＰＵ上で実行され、ユーザ・レベル・アプリケーション・ソフトウェア・プログラムからアクセス可能であり、該ＣＰＵ上にロードされるオペレーティング・システム・ソフトウェアとを備えるシステム。
【請求項５３】
リモート・ワークステーションがＣＰＵにアクセスしそれを制御する手段をさらに備える、請求項５２記載のシステム。
【請求項５４】
リモート・ワークステーションが、コンピュータに接続されたキーボード上に入力されたキーストロークの効果をシミュレートするメッセージを入力する手段をさらに備える、請求項５３記載のシステム。
【請求項５５】
コンピュータが、オペレーティング・システム・ソフトウェアがロードされるのを妨げる診断状態に入ることができ、該システムが、付加的ソフトウェア・プログラムをリモート・ワークステーションから該コンピュータにダウンロードする手段をさらに備え、該付加的ソフトウェア・プログラムがＣＰＵ上で実行される、請求項５３記載のシステム。
【請求項５６】
リモート・ワークステーションが、ＣＰＵ上で実行される立上げソフトウェア内の電源オン・システム試験（ＰＯＳＴ）ルーチンを制御する手段を備える、請求項５３記載のシステム。
【請求項５７】
システム管理ＲＡＭ（ＳＭＲＡＭ）と、事象カウンタに対して周期的に第１の調整を施すオペレーティング・システムとを有するコンピュータ・システム用の障害回復方法であって、  
周期的な間隔でシステム管理割込み（ＳＭＩ）を生成する段階と、
該事象カウンタに対して第２の調整を施す割込みサービス・ルーチンを、該ＳＭＩに応答して実行する段階と、
該事象カウンタが所定の限界に達したことに応答してシステム・ステータス情報を収集する段階とを含む方法。
【請求項５８】
ネットワークを介して該コンピュータ・システムに結合されたリモート・ワークステーションに、収集された情報を伝送する段階をさらに含む、請求項５７記載の障害回復方法。
【請求項５９】
収集された情報の伝送が、ネットワークを介してコンピュータと結合されたワークステーションと通信するためのプロトコルを与える保護モード・カーネルによって実行される、請求項５８記載の障害回復方法。
【請求項６０】
コンピュータ・システムに障害が起こった場合にデータを収集することのできるコンピュータであって、
中央演算処理装置（ＣＰＵ）と、
該ＣＰＵと結合され、コンピュータ・システム・ステータス・データを記憶するランダム・アクセス・メモリと、
該ＣＰＵ上で実行され、該ＣＰＵ上で実行されるユーザ・レベル・アプリケーション・ソフトウェアからアクセス可能であるオペレーティング・システムと、
該ＣＰＵに結合されたシステム管理ＲＡＭ（ＳＭＲＡＭ）と、
該コンピュータ・システム障害を検出するように構成されたクラッシュ検出機構と、
該ＳＭＲＡＭに記憶され、該クラッシュ検出機構による該コンピュータ・システム障害の該検出に応答して該ＣＰＵ上で実行されるように構成され、該コンピュータ・システム・ステータス・データの少なくとも第１の部分を記憶するデータ収集ルーチンとを備えるコンピュータ。
【請求項６１】
ランダム・アクセス・メモリが、ビデオ・コントローラ上に物理的に位置するメモリを備え、該コンピュータ・システム・ステータス・データがビデオ・コントローラ・レジスタ・データを含む、請求項６０記載のコンピュータ。
【請求項６２】
コンピュータ・ネットワーク上のワークステーションと結合されたリモート直接アクセス記憶装置からオペレーティング・システムをブートすることのできるコンピュータであって、
データ・アクセスを要求するＢＩＯＳディスク・サービス割込みを行う中央プログラミング・ユニット（ＣＰＵ）と、
非揮発性メモリと、
該コンピュータを該コンピュータ・ネットワークと結合するネットワーク・インタフェースと、
少なくとも一部が、該非揮発性メモリ内に記憶され、該ＣＰＵがシステム立上げ時に該立上げソフトウェアを呼び出すように該コンピュータ内で構成され、該ＢＩＯＳディスク・サービス割込みを使用して該オペレーティング・システムをブートストラップするオペレーティング・システム・ブートストラップ・プログラムを含む立上げソフトウェアと、
少なくとも一部が、該立上げソフトウェアの少なくとも一部が実行されてから該オペレーティング・システム・ブートストラップ・プログラムが実行されるまでの間に該ＣＰＵによって実行され、該ワークステーションと通信するためのプロトコル・スタックをサポートし、該ＢＩＯＳディスク・サービス割込みを取り込み該ワークステーションから要求されたデータにアクセスするように該ＢＩＯＳディスク・サービス割込みの出力先を変更するネットワーク機能拡張カーネルとを備えるコンピュータ。
【請求項６３】
コンピュータ・ネットワークと結合されたワークステーションからオペレーティング・システムをブートすることのできるコンピュータであって、
データ・アクセスを要求するＢＩＯＳディスク・サービス割込みを行う中央プログラミング・ユニット（ＣＰＵ）と、
非揮発性メモリと、
該コンピュータを該コンピュータ・ネットワークと結合するネットワーク・インタフェース・カード（ＮＩＣ）と、
少なくとも一部が、該非揮発性メモリ内に記憶され、該ＣＰＵがシステム立上げ時に該立上げソフトウェアを呼び出すように該コンピュータ内で構成され、該ＢＩＯＳディスク・サービス割込みを使用して該オペレーティング・システムをブートストラップするオペレーティング・システム・ブートストラップ・プログラムを含む立上げソフトウェアと、
該ＮＩＣを介して該ワークステーションと通信するためのプロトコル・スタックをサポートし、該オペレーティング・システム・ブートストラップ・プログラムが実行される前に実行され、該ＮＩＣを介して該ワークステーションからデータにアクセスする第１のディスク出力先変更スレッドを実行し、該ＢＩＯＳディスク・サービス割込みの出力先が、該ディスク出力先変更スレッドに変更される、ネットワーク・マルチタスキング・カーネルとを備え、
それによって、該オペレーティング・システムが、該ディスク出力先変更スレッドを介して該ワークステーションからブートストラップされるコンピュータ。
【請求項６４】
実モードおよび保護モードを実現するＣＰＵを有し、さらにタイマ割込みを行うコンピュータ上で、実モード・オペレーティング・システムと保護モードカーネルとを同時に実行する方法であって、
（ａ）実モードで実行されるジャンプ・プログラムへの該タイマ割り込みをベクトル化し、
該ジャンプ・プログラムが、実行されたときに、実モード・オペレーティング・システムの現在の状態を保存し、保護モード・カーネルの状態を回復し該ＣＰＵを保護モードに切り換えるコードの部分にＣＰＵの制御を転送する段階、
（ｂ）該保護モード・カーネルの一部を実行する段階、
（ｃ）該ＣＰＵを実モードに切り換え、保護モード・カーネルの現在の状態を保存する段階、
（ｄ）該実モード・オペレーティング・システムを該保存された状態に回復する段階、および
（ｅ）該タイマ割込みによって割り込まれるまで該実モード・オペレーティング・システムを実行する段階を含み、
それによって、該実モード・オペレーティング・システムが、該タイマ割込みによって割込まれるまで実行され、その時点で、該保護モード・カーネルが、保存された状態および所与のＣＰＵ制御に回復される方法。
【請求項６５】
保護モード・カーネルがマルチタスキング・カーネルである、請求項６４記載の実モード・オペレーティング・システムと保護モードカーネルとを同時に実行する方法。
【請求項６６】
保護モード・カーネルが、スレッドを実行する３２ビット・マルチタスキング・カーネルであり、該保護モード・カーネル上でスレッドが実行されていないときに、該保護モード・カーネルが該ＣＰＵの制御を該実モード・オペレーティング・システムに転送する、請求項６５記載の、実モード・オペレーティング・システムと保護モードカーネルとを同時に実行する方法。
【請求項６７】
ネットワーク・プロトコル・スタックが、非揮発性メモリに記憶されているソフトウェアによって実施される、請求項３記載の方法。
【請求項６８】
ネットワーク・プロトコル・スタックが、非揮発性メモリに記憶されているソフトウェアによって実施される、請求項４記載の方法。
【請求項６９】
実モードおよび保護モードを含む少なくとも２つのモードで動作する中央演算処理装置（ＣＰＵ）を含むコンピュータを操作する方法であって、
最初の部分および後続の部分を有し、該コンピュータの電源オン・システム試験を実行する第１の基本入出力システム（ＢＩＯＳ）を、実モードで該ＣＰＵ上にロードし実行する段階、および
該第１のＢＩＯＳの該最初の部分が実行された後で該ＣＰＵの第２のＢＩＯＳを保護モードでロードし実行する段階を含み、
該第２のＢＩＯＳと該第１のＢＩＯＳの該後続の部分とが同時に実行されているように見えるように、該第２のＢＩＯＳと該第１のＢＩＯＳの該後続の部分とが、該ＣＰＵ上の交互の部分で実行される方法。
【請求項７０】
コンピュータがさらに、タイマ割込みを行い、該第２のＢＩＯＳと該第１のＢＩＯＳの該後続の部分とを同時に実行する段階が、
（ａ）実モードで実行されるジャンプ・プログラムへの該タイマ割り込みをベクトル化し、
該ジャンプ・プログラムが、実行されたときに、実モードの第１のＢＩＯＳの現在の状態を保存し、保護モードの第２のＢＩＯＳの状態を回復し該ＣＰＵを保護モードに切り換えるコードの部分にＣＰＵの制御を転送する段階、
（ｂ）該保護モードの第２のＢＩＯＳの一部を実行する段階、
（ｃ）該ＣＰＵを実モードに切り換え、保護モードの第２のＢＩＯＳの現在の状態を保存する段階、
（ｄ）該実モードの第１のＢＩＯＳを該保存された状態に回復する段階、および
（ｅ）該タイマ割込みによって割り込まれるまで該実モードの第１のＢＩＯＳを実行する段階を含み、
それによって、該実モードの第１のＢＩＯＳが、該タイマ割込みによって割込まれるまで実行され、その時点で、該保護モードの第２のＢＩＯＳが、保存された状態および所与のＣＰＵ制御に回復される方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、全般的には、コンピュータ上で機能するオペレーティング・システムの助けなしにネットワークを介してコンピュータのリモート管理を可能にする方法およびシステムに関し、詳細には、コンピュータ上で実行されるオペレーティング・システムの助けなしにリモート・アクセスおよびメンテナンスに対処するようにコンピュータのＢＩＯＳを機能拡張する方法およびシステムに関する。
【背景技術】
【０００２】
オペレーティング・システムの障害を生じさせるシステム・エラーは、依然としてコンピュータ業界の主要な問題である。このようなエラーは、ハードウェア障害、ユーザ・エラー、およびその他の理由で起こりうる。このような障害によって、特にネットワーク化デスクトップ・コンピュータまたはネットワーク・システム・サーバの場合には、コンピュータ資源が広範囲に使用不能になり、ユーザ・ダウンタイムのために顕著な経済的損失が生じうる。
【０００３】
現在の所、オペレーティング・システムをクラッシュさせるこのようなシステム・エラーを完全になくす効果的なプロセスは存在しない。多くの場合、再発するクラッシュを回避するには、オペレーティング・システムをリブートする前に、クラッシュを生じさせる動作の事後分析診断を行うしかない。しかし、障害の起こったコンピュータにアクセスしそれを分析するのは物理的に困難であり、かつ多くの場合、システムを利用可能にする際には時間が最も重要であるので、多くのユーザは、クラッシュを生じさせた問題を分析せずに単にオペレーティング・システムをリブートしている。
【０００４】
このようなアクセスが必要になる１つの例は、ネットワーク・サーバで起こる。このようなネットワーク・サーバは多くの場合、企業の効率にとって重要であるが、事後分析を実行するのに必要なキーボードやコンピュータ・ディスプレイなどのある種のハードウェアなしに構成することができる。したがって、ネットワーク・オペレータは、問題の適切な診断を行わずにネットワーク・サーバを単に急いでリブートすることが多い。
【０００５】
コンピュータをリモートに分析し管理する際の問題は、システム管理者がいくつかのコンピュータをリモートに維持する必要のあるワイド・エリア・ネットワークまたはローカル・エリア・ネットワークの場合にも起こる。通常の動作では、リモート・コンピュータ上で実行されるオペレーティング・システムは、システム管理者が、リモート・コンピュータ上の様々なパラメータにアクセスしそれらを修正することを可能にする。しかし、オペレーティング・システムがクラッシュした場合、現行のシステムでは、管理者がリモート・コンピュータにアクセスする、またはそれを診断するための手段は提供されていない。さらに、現行のシステムでは通常、管理者は、リモート・コンピュータ上にオペレーティング・システムをロードする前にリモート・コンピュータにアクセスすることはできない。たとえば、特許文献１は、障害の起こったコンピュータが、コンピュータのハード・ディスク上の二次パーティションに記憶されている縮小オペレーティング・システムをロードした後に、障害の起こったコンピュータへのダイヤルアップ・アクセスを可能にする障害回復機能を請求している。バークハート（Ｂｕｒｃｋｈａｒｔｔ）特許のシステムは、一次オペレーティング・システム障害を示すシステム・タイムアウトを検出手段が検出すると、二次オペレーティング・システムを含む二次パーティションをブート・オフする。
【０００６】
以下の発明の背景では、ＩＢＭ互換パーソナル・コンピュータ（「ＰＣ」）の典型的な構造および立上げ手順について説明するが、この概念は一般に、様々なコンピュータ・システムに適用することができる。システム・リセット時に、電源オン・システム試験または電源オン自己試験（ＰＯＳＴ）として知られるコンピュータの基本入出力システム（ＢＩＯＳ）の一部にＣＰＵ制御が渡される。システム・リセットおよびシステム立上げという用語は、本明細書では、同意語であり、システム立上げ、リブート、システム・リセット、またはコンピュータの最初のプログラム・ロード動作の初期設定もしくは再初期設定を開始させるその他の動作を含むものとする。
【０００７】
ＰＯＳＴは通常、読取り専用メモリ（ＲＯＭ）に記憶され、システム・タイマ、システムＤＭＡ（直接メモリ・アクセス）コントローラ、システム・メモリ・コントローラ、システム入出力装置、およびビデオ・ハードウェアなどの標準システム構成要素を初期設定するために使用される。ＰＯＳＴは、初期設定ルーチンの一部として、割込みベクトルのテーブル用のデフォルト値を設定する。このようなデフォルト値は、ＲＯＭ  ＢＩＯＳ内の標準割込みハンドラを指し示すが、カスタマイズされた割込みハンドラにアクセスするように修正することができる。ＰＯＳＴは、信頼性試験も実行し、メモリやシステム・タイマなどのシステム・ハードウェアが正しく機能していることを確認する。システム初期設定および診断の後で、ＰＯＳＴは、システム内のオプションのハードウェア・カード（アダプタ）上の非揮発性メモリ上に位置するファームウェアについてシステムを調査する。これは、特定のアドレス空間で、所与のシグネーチャを有するメモリを走査することによって行われる。シグネーチャが見つかった場合、制御がファームウェアに渡され、次いでファームウェアが、それが存在する装置を所期設定する。
【０００８】
ハードウェア初期設定が実行された後、ＰＯＳＴは、ブート装置、通常はハード・ディスクまたはディスケット・ドライブの所定の位置から得たデータ・ブロックをメモリに読み込み、そのデータ・ブロック内のプログラムに制御を渡す。このプログラムは、ブートストラップ・ローダとして知られており、次いでより大きなプログラムをメモリにロードする。このより大きなプログラムがメモリに適切にロードされた場合、ブート・プログラムはこのプログラムに制御を渡す。次いで、オペレーティング・システムが初期設定され、ＣＰＵの制御を得る。後述のように、ある種のディスクレス・ワークステーションまたはメディアレス・ワークステーション上では、ネットワーク・インタフェース・カード上に位置するアダプタ・ファームウェアは、オペレーティング・システムをブートストラップするために使用されるポインタを再経路指定し、接続されたネットワークからオペレーティング・システムをダウンロードする。
【０００９】
ＢＩＯＳはさらに、コンピュータおよびその周辺構成要素とのインタフェースをとる１組のルーチンまたは割込みハンドラを備える。ＢＩＯＳ割込みハンドラは、ハードウェア割込みまたはソフトウェア割込みを使用することによってアクセスされる。これらの割込みハンドラのアドレスは割込みベクトル・テーブル内に記憶される。上記で指摘したように、このベクトル・テーブルは、カスタマイズされた割込みハンドラを指し示すように修正することができる。ＢＩＯＳは、非特許文献１に全般的に記載されている。
【００１０】
ＢＩＯＳインタフェース・ルーチンはＭＳ−ＤＯＳ（登録商標）オペレーティング・システムによって使用されていたが、Ｍｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎ（「Ｍｉｃｒｏｓｏｆｔ」）から市販されているＷｉｎｄｏｗｓ−９５（登録商標）など現代のオペレーティング・システムは、ＢＩＯＳインタフェース・ルーチンを広範囲には使用していない。一般に、Ｗｉｎｄｏｗ−９５およびその他の現代のオペレーティング・システムは、周辺ハードウェア構成要素と通信する際に、このような周辺ハードウェア構成要素の特定の種類およびモデルに特有のデバイス・ドライバを利用する。デバイス・ドライバは一様なインタフェースを実現し、汎用ソフトウェアは、このインタフェースを介して周辺構成要素と対話することができる。このようなデバイス・ドライバは、既存のＢＩＯＳ割込みハンドラに代わるか、または他の場合には実行されない追加の機能を実行することができる。したがって、アプリケーション・ソフトウェアは、各ハードウェア装置の細部と対話する必要がなくなる。
【００１１】
ＭＳ−ＤＯＳ２．０以降のＭＳ−ＤＯＳリリースや、Ｗｉｎｄｏｗｓ３．１１までのＷｉｎｄｏｗｓのリリースを含め、多くのオペレーティング・システムは、オペレーティング・システムをブートアップする際に、インストール可能なデバイス・ドライバをディスクからロードする能力を含む。ユーザは、ＣＯＮＦＩＧ．ＳＹＳファイルにコマンドＤＥＶＩＣＥ＝ｄｅｖｉｃｅ＿ｆｉｌｅを含めることによって、インストール可能なデバイス・ドライバをＭＳ−ＤＯＳオペレーティング・システムにロードすることができる。次いで、ＭＳ−ＤＯＳは各デバイス・ドライバ・ファイルを読み取り、そのデバイス・ドライバをメモリにロードする。Ｗｉｎｄｏｗｓ−９５は、ＢＩＯＳのＰＣＩ（周辺構成要素相互接続）機能およびプラグ・アンド・プレイ機能を使用して周辺ハードウェア構成要素を検出し、設置されている周辺ハードウェア構成要素に適切なドライバを自動的にロードする能力を有する。
【００１２】
インストール可能なデバイス・ドライバを使用すると、ネットワーク・インタフェース・カード（ＮＩＣ）などの周辺ハードウェア構成要素を取り扱う上で高度な融通性が得られるが、現在までの所、ソフトウェア・ドライバをロードし必要なサポート機能を実行するときには、障害の起こったコンピュータ上で実行されるオペレーティング・システムに依存している。オペレーティング・システムがブートしないか、またはオペレーティング・システムを再ロードする前に事後分析診断を行う必要がある場合、ＮＩＣ用のソフトウェア・ドライバはロードされず、したがって、管理者は、ＮＩＣを介して動作するソフトウェアを使用してシステムにリモートにアクセスすることができない。したがって、オペレーティング・システムがブートストラップされる前に使用することができ、オペレーティング・システム・サポートに依存しない、インストール可能なＮＩＣデバイス・ドライバを使用する方法およびシステムが必要である。オペレーティング・システムは、本明細書では、ユーザ・レベル・プログラムの実行を制御し、資源割付け、スケジューリング、入出力制御、およびデータ管理などのサービスをユーザ・レベル・プログラムに対して実行する、システム・レベル・ソフトウェアを意味する。このようなオペレーティング・システムの例には、Ｍｉｃｒｏｓｏｆｔ社から市販されているＭＳ−ＤＯＳ（登録商標）、Ｗｉｎｄｏｗｓ−９５（登録商標）、Ｗｉｎｄｏｗｓ−ＮＴ（登録商標）や、Ａｐｐｌｅ  Ｃｏｍｐｕｔｅｒ社から市販されているＭａｃＯＳ（登録商標）や、Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓを含むいくつかのベンダから市販されている様々なバージョンのＵｎｉｘ（登録商標）がある。Ｗｉｎｄｏｗｓ−ＮＴなど現代のオペレーティング・システムは多くの場合、保護モード・カーネルまたはベース・システムをオペレーティング・システムのコアに含む。
【００１３】
コンピュータ・システムのリモート管理の主要な問題は、いくつかのベンダから数百の異なるネットワーク・インタフェース・カード・タイプが市販されており、各カード・タイプが異なるようにプログラムされ、固有のデバイス・ドライバを使用することである。これらの各カード・タイプ用の新しいデバイス・ドライバの開発はコストがかかり、信頼性を損なう恐れがある。したがって、本発明の目的は、ネットワーク機能拡張ＢＩＯＳを使用して、既存のオペレーティング・システム用に開発された標準ＮＩＣデバイス・ドライバを使用し、したがって、市販の各ネットワーク・インタフェース・カード・タイプごとのカスタマイズされたデバイス・ドライバ・ソフトウェアを必要としない。
【００１４】
この目的は、あるオペレーティング・システム・ベンダによって定義された標準インタフェースを使用することによって実施される。オペレーティング・システム・ベンダは、ほぼ無制限な種類のネットワーク・カード・タイプをサポートするために、ネットワーク・インタフェース・カード・デバイス・ドライバによって使用すべき標準インタフェースを定義している。これによって、オペレーティング・システムは、標準インタフェースに従うドライバ・ソフトウェアを供給するＮＩＣをサポートすることができる。ノベル社（Ｎｏｖｅｌｌ）（「Ｎｏｖｅｌｌ」）は、１つのそのような標準、すなわちオープン・データリンク・インタフェース（ＯＤＩ）を定義している。ＯＤＩ標準に従って書かれたドライバは、Ｎｏｖｅｌｌから市販されているＮｅｔｗａｒｅ（登録商標）よって使用することができる。Ｍｉｃｒｏｓｏｆｔは、第２の標準、すなわちネットワーク・ドライバ・インタフェース仕様（ＮＤＩＳ）を定義している。ＮＤＩＳに従って書かれたドライバはＭｉｃｒｏｓｏｆｔオペレーティング・システム（たとえば、Ｗｉｎｄｏｗｓ  ＮＴ（登録商標））によって使用することができる。また、ＵＮＩＸ（登録商標）オペレーティング・システムの各バージョンには他の標準を使用することができる。
【００１５】
【特許文献１】バークハート（Ｂｕｒｃｋｈａｒｔｔ）らの米国特許第５，３９０，３２４号（「Ｂｕｒｃｋｈａｒｔｔ特許」）
【非特許文献１】Ｐ．Ｎｏｒｔｏｎ著「Ｔｈｅ  Ｐｅｔｅｒ  Ｎｏｒｔｏｎ  ＰＣ  ＰＲＯＧＲＡＭＭＥＲ’Ｓ  ＢＩＢＬＥ」Ｍｉｃｒｏｓｏｆｔ  Ｐｒｅｓｓ（１９９３年）
【発明の開示】
【００１６】
発明の概要
上記に列挙した目的の他に、本発明の目的は、コンピュータのオペレーティング・システムを使用する必要なしに、ネットワークに結合されたコンピュータと通信する方法およびシステムを提供することである。
【００１７】
本発明の他の目的は、コンピュータのオペレーティング・システムをブートストラップする前に、ネットワークに結合されたコンピュータと通信する方法およびシステムを提供することである。本発明のさらに別の目的は、コンピュータ上の必要な追加のソフトウェアと、ネットワーク機能拡張ＢＩＯＳを備える第１のコンピュータから離れた位置にある第２のコンピュータ上で実行することができるソフトウェアとを提供することである。この場合、第２のコンピュータ自体は、このようなネットワーク機能拡張ＢＩＯＳを備えていなくても、２つのコンピュータの間でのコマンドおよび情報の転送を可能にすることができる。
【００１８】
本発明は、コンピュータのオペレーティング・システムをブートする前か、またはオペレーティング・システムの障害の後に、ネットワークを介してコンピュータと通信する方法およびシステムを目的とする。第１のコンピュータを設けられたネットワーク機能拡張ＢＩＯＳでネットワーキング・アプリケーション・プログラム・インタフェース（ＡＰＩ）が実施される。このコンピュータは好ましくは、ＮＩＣカードおよびＮＩＣデバイス・ドライバ・ファイルを備える。通常は、オペレーティング・システムの各要素によって実行されるサービスに対するＮＩＣデバイス・ドライバ内の外部参照が、この場合は、ネットワーク機能拡張ＢＩＯＳのＡＰＩによって実行されるサービスの参照となる。ネットワークを介して第１のコンピュータに結合された第２のコンピュータは、オペレーティング・システムをロードする前か、またはオペレーティング・システム障害の後にコマンド、状況、およびデータを転送することができる。第１のコンピュータは、ＰＯＳＴ障害またはオペレーティング・システム・クラッシュの場合に第２のコンピュータに警告する手段をさらに備えることができる。
【００１９】
詳細な説明
次に、本発明の好ましい態様について引き続き図面を参照しながら説明する。
図１は、システム・アーキテクチャの好ましい態様の全体図を示す。サーバ・コンピュータ１００は、ネットワーク３００を介して管理ワークステーション２００に物理的に接続される。ネットワーク３００は、ノベル社（Ｎｏｖｅｌｌ）のＮｅｔＷａｒｅ（登録商標）を含むいくつかの市販のローカル・エリア・ネットワークまたはワイド・エリア・ネットワークのうちの任意のネットワークでよい。「ネットワーク」または「コンピュータ・ネットワーク」という用語は、本明細書では一般に、一群の２つ以上の接続されたコンピュータとして定義されるものとし、２つのコンピュータは、メッセージまたはデータを交換できるときに「接続されている」ものとする。したがって、たとえば、接続技法、ネットワーク・トポロジ、およびネットワーク・プロトコルは、それぞれ異なるものでよく、たとえば、前述のＬＡＮネットワークおよびＷＡＮネットワークだけでなく、シリアル・インタフェースまたはパラレル・インタフェースおよびケーブルを介して直接接続された２つのコンピュータ、公衆交換電話網上のモデム接続を介し、いわゆる「従来型の電話サービス」などを介して直接接続された２つのコンピュータ、公衆電話網上のＩＳＤＮ接続を介して接続された２つのコンピュータ、またはインタネットを介して結合された２つのコンピュータを制限なしに含む。ネットワーク３００にデスクトップ・コンピュータ４００を接続することもできる。図のサーバ・コンピュータおよびデスクトップ・コンピュータは例示的なものであり、それぞれ、多数のこのようなコンピュータのうちの１つでよい。
【００２０】
次に、図２を参照すると、本発明を実施することのできるコンピュータ４００が示されている。図２に示し本明細書で説明するコンピュータ４００は例示的なものであり、本発明から逸脱せずに修正することができる。さらに、図１のコンピュータ４００はデスクトップ・コンピュータとして図示されているが、本明細書では、コンピュータの語が、（図１に４００として示された）デスクトップ・コンピュータおよび（図１に１００として示された）サーバ・コンピュータ、または自動テラー・マシン、ＰＯＳ端末装置、もしくはベンディング・マシンなどの埋込みシステム（図示せず）を制限なしに含むことが理解される。
【００２１】
システム・バス１０５は、コンピュータ４００の各構成要素の基礎を形成する。システム・バス１０５には中央演算処理装置（ＣＰＵ）１１０およびシステム・ランダム・アクセス・メモリ（ＲＡＭ）１２０が接続される。ＣＰＵは好ましくは、当技術分野で一般に知られているように、実モードと保護モードの少なくとも２つのモードで動作する。非揮発性メモリ１２５は、好ましくはフラッシュＲＯＭの形であり、システム・バス１０５に接続される。非揮発性メモリ１２５は、コンピュータ４００への電力が遮断されているか、またはコンピュータ４００がリセットされているときには状態を変更しない。ユーザ入出力は、ビジュアル・ディスプレイ・ユニット１３０、ビデオ・コントローラ１３５、キーボード１４０、およびキーボード・コントローラ１４５を介して実行することができる。ＣＰＵ１１０およびＲＡＭ１２０と、ビデオ・コントローラ１３５は、任意選択で独立のローカル・バス（図示せず）を介して結合することができる。大容量記憶装置は、フロッピィ・ディスク・ドライバ１５０および関連するフロッピィ・ディスク・コントローラ１５５、ならびに／またはハード・ディスク・ドライバ１６０および関連するハード・ディスク・コントローラ１６１を含むことができる。後述のウォッチドッグ・タイマ機構を実施する本発明の一態様では、コンピュータ４００は、システム管理ＲＡＭ（ＳＭＲＡＭ）１２１、外部タイマ１２２、およびチップセット外部ロジック１２３も含む。好ましくは、タイマ１２２はチップセット・ロジック１２３内で実施される。上記で指摘したように、図２の説明は例示的なものであり、本発明から逸脱せずに、当業者に明らかないくつかの方法で修正することができる。たとえば、本発明は、フロッピィ・ディスク・ドライバ１５０やハード・ディスク・ドライバ１６０を有さないディスクレス・ワークステーション上で実施することができる。
【００２２】
コンピュータ４００は好ましくは、ネットワーク・アダプタとしても知られるネットワーク・インタフェース・カード（ＮＩＣ）１７０も含む。ＮＩＣ１７０は、コンピュータ内の１組のシステム回路スロット１６５を介してシステム・バス１０５に接続することが好ましい。スロット１６５は好ましくは、ＩｎｔｅｌのＰＣＩ標準などの業界標準を満たす。または、システム回路スロットを使用せずにＮＩＣ１７０を直接的にシステム・バス１０５に結合することもできる。
【００２３】
または、コンピュータ４００は、ＮＩＣ１７０の代わりに、もしくはＮＩＣ１７０と共に、モデムを使用することができる。このようなモデムは、システム・バス１０５もしくは１組のシステム回路スロット１６５のうちの１つに接続できる内部モデム１９０、および／またはシステム・バス１０６に接続されたシリアル・インタフェース１７５に通常接続される外部モデム１８０でよい。任意選択で、コンピュータ４００をケーブル接続を介してワークステーション２００に直接ネットワーク化し、シリアル・インタフェース１７５またはパラレル・インタフェース（図示せず）と直接ネットワーク化することができる。
【００２４】
次に図３Ａおよび図３Ｂを参照すると、従来型のＢＩＯＳ部５００の構成要素モジュールと、本発明によって作製されたコンピュータのＢＩＯＳのネットワーク機能拡張ＢＩＯＳ部６００の構成要素モジュールが示されている。従来型のＢＩＯＳ部５００は、最初のＰＯＳＴ５１０と、残りのＰＯＳＴ５２０と、エラー情報および状況情報を表示するために内部のＢＩＯＳ内で使用されるカーソル位置や書込み文字などの表示サービス５３０と、ハードウェア試験ルーチンなどのＰＯＳＴ時サービス５４０と、割込み１０Ｈビデオ出力サービスや割込み１３Ｈディスク・アクセス・サービスなどの実行時サービス５５０と、イネーブラ・コード５６０とからなる。イネーブラ・コード５６０は、ネットワーク機能拡張ＢＩＯＳ６００を検出しロードし、ネットワーク機能拡張ＢＩＯＳ６００初期設定エントリ・ポイントに制御を与える能力を、従来型のＢＩＯＳ５００に与える。イネーブラ・コードはさらに、従来型のＢＩＯＳ５００とネットワーク機能拡張ＢＩＯＳ６００との間の協働マルチタスキングを可能にするルーチンを含む。最初のＰＯＳＴ５１０と残りのＰＯＳＴ５２０との間の分割は実際的なものであり、ＰＯＳＴは、ＰＯＳＴディスパッチャ・ルーチン５０５の制御下で実行される多数のルーチンに分割される。最初のＰＯＳＴ５１０は好ましくは、１組のＰＯＳＴルーチンであり、ネットワーク機能拡張ＢＩＯＳ６００を初期設定することを可能にできるようにコンピュータを構成するのに必要である。後述のように、最初のＰＯＳＴ５１０は好ましくは、メモリ・コントローラをプログラムする動作、メモリのサイズを決定する動作、メモリを試験する動作、ＰＣＩバスが存在する場合にそれにアクセスできるようにチップセットを初期設定する動作、割込みコントローラを初期設定し試験する動作、ネットワーク・アダプタ用の割込みを構成する動作、およびＶＧＡコントローラが存在する場合にそれを初期設定する動作を含む。最初のＰＯＳＴ５１０は任意選択で、他のチップセット・レジスタをプログラムすることができる。最初のＰＯＳＴルーチン５１０は非揮発性メモリ１２５に記憶することが好ましい。
【００２５】
ネットワーク機能拡張ＢＩＯＳ６００は、従来型のＢＩＯＳ部５００の構成要素の他に、初期設定部６１０、カーネル・ディスパッチャ６２１を組み込んだ３２ビット保護モード・カーネル６２０と、ローダ６３０とを備えている。ネットワーク機能拡張ＢＩＯＳ６００は、従来型のＢＩＯＳ部５００の他に、カーネルによって実行されるサービスを利用するプロトコル・スタック６４０をさらに備えている。現代のオペレーティング・システムは通常、それ自体の保護モード・カーネルを含むので、ネットワーク機能拡張ＢＩＯＳ６００は通常、オペレーティング・システムがブートする際に終了するが、本発明の変形態様は、ネットワーク機能拡張ＢＩＯＳ６００の少なくとも一部がメモリに残ることを可能にする。この常駐部分は、後述のウォッチドッグ検出機構とのインタフェースをとるために使用される。
【００２６】
次に図４を参照するとわかるように、システム立上げ時（４１０）に、ＣＰＵ制御が最初のＰＯＳＴ５１０へルーチンに渡される（４１１）。最初のＰＯＳＴ５１０は、メモリ・コントローラ、割込みコントローラ、システム・バス・コントローラ、およびその他のチップセット・レジスタをプログラムする動作などシステムの動作に必要な予備タスクを実行する。この動作は、ネットワーク機能拡張されないＢＩＯＳの動作と同一である。
【００２７】
次いで、制御は、ネットワーク機能拡張ＢＩＯＳインストール検査ルーチン、すなわち、図３のイネーブラ５６０の一部に渡される（４１２）。インストール検査ルーチンは非揮発性メモリ１２５を順次走査し、ネットワーク機能拡張ＢＩＯＳ６００コードの開始位置を示すシグネーチャであることが知られているデータ・シーケンスを探す。インストール検査ルーチンが、そのようなシグネーチャは存在しないと判定（４３９）した場合、残りのＰＯＳＴルーチン５２０が実行され（４１３）、制御が、オペレーティング・システムから供給されるブートストラップ・ルーチンに渡される（４１４）。前述のように、ブートストラップ・ルーチンがオペレーティング・システムをロードし（４３２）、このオペレーティング・システムにＣＰＵ制御を渡す（４１５）。
【００２８】
ネットワーク機能拡張ＢＩＯＳ６００の開始位置を示すシグネーチャが見つかった場合、リロケーション・ルーチン４１６がネットワーク機能拡張ＢＩＯＳ６００を非揮発性メモリ１２５からＲＡＭ１２０内にコピーし、ＣＰＵ制御が、ネットワーク機能拡張ＢＩＯＳ６００コードの初期設定ルーチン６１０に渡される。このルーチンは、シグネーチャの開始位置から既知のオフセットだけ離れた位置にある。従来型のＢＩＯＳ５００は通常、実モードで動作するので、ネットワーク機能拡張ＢＩＯＳ初期設定ルーチン６１０は、ＣＰＵを保護モードに切り換え、３２ビット・カーネル６２０、およびプロトコル・スタック６４０の各構成要素を初期設定する。
【００２９】
図４に示すように、ネットワーク機能拡張ＢＩＯＳカーネル６２０を好ましくはマルチスレッド化する、すなわち、どのタスクが最高優先順位を有するかに応じて、ＣＰＵ制御を１つのタスクから別のタスクに切り換えることによって、複数のタスクの見掛け上の同時実行をサポートする。タスクは、何らかの外部事象を待つか、または実行を完了するために依存する他のタスクを待つ場合には、実行を妨げることができる。タスク同士の間の協働を助けるために、カーネルは、当業者によく知られている信号機能、セマフォ機能、および相互排除機能用の関数を供給する。様々なタスクの間のＣＰＵ制御の切換えは、カーネル・ディスパッチャ６２１によって行われる。
【００３０】
ネットワーク・プロトコル・スタック６４０、および管理ワークステーション２００アプリケーションとの通信に関する様々な機能をサポートするために、この時点で、ネットワーク機能拡張ＢＩＯＳ初期設定ルーチン６１０によっていくつかのスレッドが開始される。これらのスレッドは好ましくは、３２ビット保護モード・コードであり、これらについては、以下でその特徴をさらに説明する際に論じる。
【００３１】
次に、従来型のＢＩＯＳ５００と、本発明の第１の態様で使用されるネットワーク機能拡張ＢＩＯＳ６００とが相互に動作する方法について説明する。この相互動作方法の詳細は、本発明の原則に影響を与えずに修正することができる。
図８を参照すると、従来型のＢＩＯＳコードからネットワーク機能拡張ＢＩＯＳ６００への最初の遷移が、その後で行われる相互動作切換え反復プロセスと同様に、詳しく示されている。ＢＩＯＳはその状態８０５を記憶し、すなわち、すべてのＣＰＵレジスタおよびフラグをメモリ・データ領域に記憶する。次いで、ネットワーク機能拡張ＢＩＯＳ６００コードおよびデータが圧縮され再配置され（８１０）、ＣＰＵ制御がこのコードのエントリ・ポイントへ転送される（８１５）。カーネルおよびネットワーク・プロトコル・スタックが初期設定される（８２０）。プロセッサが実モードに戻され（８２５）、従来型のＢＩＯＳサービス・ルーチンが呼び出され、カーネル・モード・スイッチ・エントリ・ポイントのアドレスにＢＩＯＳを登録する（８３０）。このルーチンは、ＢＩＯＳモード・スイッチ・エントリ・ポイントのアドレスを返す（８３５）。
【００３２】
次いで、従来型のＢＩＯＳと３２ビット・カーネル・スレッドが交互に実行される反復状態８００に入る。カーネルはその状態を記憶し（８４０）、すなわち、すべてのＣＰＵレジスタおよびフラグをメモリ・データ領域に記憶する。次いで、ＢＩＯＳモード・スイッチ・エントリ・ポイントへのジャンプが実行される（８４５）。すでに保存されているＢＩＯＳ状態が回復され（８５０）、従来型のＢＩＯＳコードが実行される。ＣＰＵ制御が従来型のＢＩＯＳ部５００のＰＯＳＴディスパッチャ・ルーチン５０５に渡される（８５５）。ＰＯＳＴディスパッチャ・ルーチンは、現在のＢＩＯＳ  ＰＯＳＴルーチンが完了するまで、または割込みなどの外部事象を待つために中断するまで実行し続けるか、またはプログラムされた時間遅延の終了時までこのルーチンを実行し続ける。メモリ試験などある種のＰＯＳＴタスクは時間がかかり、このようなタスク内で、従来型のＢＩＯＳは３２ビット・カーネル６２０への制御を一定の間隔で生成する。この時点で、ＢＩＯＳが再びその状態を保存し（８６０）、カーネル・モード・スイッチ・エントリ・ポイントへのジャンプが行われる（８６５）。カーネルが、保存されている状態を回復し（８７０）、再び保護モードに入り（８７５）、次いでカーネル・ディスパッチャ６２１が、妨害されていないすべてのスレッドをスケジューリングする。実行する準備のできているスレッドがなく、言い換えれば、システムが「アイドル状態」であるとカーネル・ディスパッチャ６２１が判定した場合、カーネルが再び実モード８８５に入り、カーネルがその状態を保存した点（８４０）からプロセスが反復される。
【００３３】
カーネル６２０は好ましくは、ＢＩＯＳ  ＰＯＳＴルーチンが割込みを待っており、その結果として制御を生成した場合、３２ビット・カーネル・タスク中に割込みが行われたときに、この割込みがＢＩＯＳタスクに反映されるように、割込みの処理を実施する。この逆も真であり、ＢＩＯＳタスクの実行中に行われる、３２ビット・カーネル・スレッド用の割込みを、３２ビット・カーネル・スレッドに反映しなければならない。割込みの反映の管理は、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ  Ｖｉｒｔｕａｌデバイス・ドライバ（ＶｘＤ）の知識を有する者にはよく知られている。プロセッサ・モード遷移の実行は、Ｉｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎから刊行されているマイクロプロセッサ・マニュアルに記載されている。他のドライバ・タイプおよびマイクロプロセッサ・アーキテクチャ用の同様な解決策は、当業者には本明細書の開示に照らして明らかである。
【００３４】
従来型のＢＩＯＳタスクと３２ビット・ネットワーク機能拡張ＢＩＯＳタスクを交互に実行することの効果として、ネットワーク機能拡張ＢＩＯＳスレッドと現在の従来型のＢＩＯＳ  ＰＯＳＴタスクは同時に実行されているように見える。図４に戻ると、初期設定４１７の後に２つの実行経路があり、セッション・キー（後述）の後の複数の実行経路が交換されている（４２２）ことがわかる。概念的には、これらのタスクおよびスレッドは同時に動作する。図４の点線は、スレッド４２３ないし４２７の同時実行を示す。
【００３５】
本発明の好ましい態様について、本明細書では、「タスク」の語を全般的に、ＰＯＳＴディスパッチャによって順次実行される従来型のＢＩＯＳからの実モード・ルーチンのシーケンスを表わす語として使用して説明する。一度にアクティブになるのはこれらのタスクのうちの１つだけである。 「スレッド」の語は、本明細書では全般的に、カーネル・ディスパッチャ６２１によってスケジューリングされる３２ビット保護モード・コードを表わす語として使用される。このようなスレッドは概念的には、互いに、かつ単一の従来型のＢＩＯＳ  ＰＯＳＴタスクと同時に実行される。しかし、当業者には、本発明がタスクとスレッドとの間の特定の違いに限らないことが明らかであると思われる。
【００３６】
図４を参照するとわかるように、従来型のＢＩＯＳ部５００は引き続き、残りのＰＯＳＴルーチン５２０を実行する。次に、ネットワーク機能拡張ＢＩＯＳ６００がネットワーク通信の使用を「同時に」開始する。ネットワーク・プロトコル・スタック動作については後で詳しく説明する。この節では、行われるトランザクションの概要を与える。ネットワーク機能拡張ＢＩＯＳ６００はまず、ネットワーク３００上に警告パケットを発行し（４１９）、データ接続をオープンする準備をする。ネットワーク機能拡張ＢＩＯＳ６００は。所定の期間にわたって管理ワークステーション２００からの応答を待つ。後で発行することのできるこの警告パケットのフォーマットは好ましくは、ＳＮＭＰ（簡易ネットワーク管理プロトコル）パケットである。ＳＮＭＰは、ＴＣＰ／ＩＰ（トランスミッション制御プロトコル／インタネット・プロトコル）内の標準プロトコルであり、一般にＴＣＰ／ＩＰネットワーク上のノードを管理し監視するために使用される。ＳＮＭＰおよびＴＣＰ／ＩＰは、当技術分野でよく知られており、たとえば、Ｊ．Ｍａｒｔｉｎ著「ＴＣＰ／ＩＰ  Ｎｅｔｗｏｒｋｉｎｇ」、ＰＴＲ  Ｐｒｅｎｔｉｃｅ  Ｈａｌｌ（１９９４年）に記載されている。この場合、ネットワークに接続されたコンピュータ上で実行される、ヒュレット・パッカード社（Ｈｅｗｌｅｔｔ−Ｐａｃｋａｒｄ）から市販されているＨＰ  ＯｐｅｎＶｉｅｗ（登録商標）などのサード・パーティ管理ソフトウェアは、管理ワークステーションの応答がない場合でもこのような警告をログし表示することができる。他のプロトコルの使用法は、当業者には容易に明らかであると思われる。
【００３７】
構成可能な期間、好ましくは５秒程度が経過しても管理ワークステーション２００から応答がない場合、異なる管理ワークステーションへの接続を試みるようにネットワーク機能拡張ＢＩＯＳ６００を構成するか、またはネットワーク機能拡張ＢＩＯＳ６００の動作を終了することができる。後者の場合、従来型のＢＩＯＳ部５００はＰＯＳＴを通常の方法で完了する。ＰＯＳＴエラーが起こっていない場合、従来型のＢＩＯＳ部５００は、ネットワーク（３００）上にブートストラップ警告パケットを発行し（４３１）、ＣＰＵ制御をＢＩＯＳブートストラップ・ルーチンへ転送し（４１４）、したがってブート・セクタ・コードへ転送し（４３２）、したがってオペレーティング・システムへ転送する（４１５）。残りのＰＯＳＴ５２０ルーチンは、エラーを検出した場合（４３８）、このエラーが重大なエラーであるかどうかを判定する（４３７）。残りのＰＯＳＴ５２０ルーチンが非重大エラーを検出した場合、従来型のＢＩＯＳ部５００はネットワーク３００上に非重大エラー警告を発行し（４３４）、処理を継続する。残りのＰＯＳＴ５２０ルーチンは、重大なエラーを検出した場合、ネットワーク３００上に致命的エラー警告を発行し（４３５）、診断モードに入る（４３６）。
【００３８】
管理ワークステーション２００から応答を受け取った場合、メッセージの内容と、許可された管理ワークステーション２００アプリケーションおよびネットワーク機能拡張ＢＩＯＳ６００を含むコンピュータ４００のみが知るべきである秘密鍵とに基づいてハッシュ関数を計算することなどによって、この応答を認証する（４２１）ことが好ましい。この応答は、ワークステーションの応答の一部として送信されるメッセージ認証コードと比較される。正しい認証コードを含む応答を生成することのできるのは、許可された管理ワークステーションだけである。
【００３９】
ワークステーション２００とネットワーク機能拡張ＢＩＯＳ６００との間のさらなる通信は、乱数に基づいて秘密鍵を使用してセッション鍵を交換する（４２２）ことなどによって認証することが好ましい。Ｓｔｅｉｎｅｒ「Ａｐｐｌｉｅｄ  Ｃｒｙｐｔｏｇｒａｐｈｙ」に記載されたＤｉｆｆｉｅ−Ｈｅｌｌｍａｎなど、周知の鍵交換機構のうちの１つを使用することができる。Ｈｅｌｌｍａｎ等の米国特許第４２００７７０号も参照されたい。セッションの残りの部分に関するすべての以後のネットワーク応答は、交換された鍵を使用してメッセージ認証コードを計算するために必要な応答である。
【００４０】
セッション鍵が交換された後、管理ワークステーションによって関数をサポートするために必要な追加のサービスを実行するために他のスレッドが作成される。リモート・コンソール機構を実現するために、キーボード出力先変更スレッド４２３が開始され、このスレッドは、管理ステーション２００アプリケーションから送信された走査コードを受け入れ、通常は診断用に設計された機構を使用してキーボード・コントローラ１４５の出力バッファにこのコードを入力する。次いで、この走査コードが、コンピュータ４００の通常の割込みサービス・ルーチンによって読み取られ、この効果は、キーボード１４０上のキーを押した場合と同じである。キー監視ルーチン４３０は、受け取ったすべてのキーストロークまたはキーボード１４０で入力されたすべてのキーストロークを調べる。ある種のキーは、特殊な診断モードに入る動作や、特定の種類のリブート動作を実行する動作など特殊な動作を実行する命令として解釈される。
【００４１】
画面出力先変更スレッド４２４は、ＢＩＯＳ画面表示割込み１０ＨおよびＢＩＯＳ表示サービス出力を遮断することによって画面へのすべての出力を取り込む。この出力はバッファされ、管理ワークステーション・アプリケーションが未処理の画面データの転送を要求したときに管理ワークステーション・アプリケーションにこの出力が周期的に送信される。画面出力先変更スレッド４２４およびキーボード出力先変更スレッド４２３については、以下でアプリケーション・プロトコル層に関して詳しく説明する。
【００４２】
ディスク出力先変更スレッド４２５は、フロッピィ・ディスク・ドライブへのアクセスの変更をサポートするオプションを実現する。このような構成では、ＢＩＯＳソフトウェア・ディスク・サービス割込み（Ｉｎｔｅｌ８０ｘ８６上の割込み１３Ｈ）が妨げられ、フロッピィ・ディスク・ドライブ（通常はＡ：ドライブ）へのすべての参照がバッファされ、管理ワークステーション２００アプリケーションが未処理のディスク動作を転送することを要求したときに管理ワークステーション２００アプリケーションにこれらの参照が周期的に送信される。これらの参照を実行するときに、管理ワークステーション・アプリケーションは、それ自体のフロッピィ・ディスク、そのハード・ディスク上のファイル、またはネットワーク上の他の位置にある他のコンピュータ上に位置するドライブ上のファイルにアクセスする。ＢＩＯＳディスク出力先変更スレッド４２５の動作は、出力先の変更されたディスク動作が行われ、かつネットワーク３００を介してデータまたは結果コードが返されるまで中断される。転送されたデータは、割込み１３Ｈ動作の結果として呼出し側アプリケーションまたはオペレーティング・システム機能に返される。
【００４３】
フロッピィ・ディスク、または他のコンピュータ上に常駐するファイルからオペレーティング・システムをブートストラップする能力を有するネットワーク機能拡張ＢＩＯＳを備えるコンピュータを、前述のディスク出力先変更機構を使用して提供することができる。このことは、ディスク・ファイルシステム全体に障害が起こったコンピュータ上の障害を診断する際に特に有用であり、ディスクレス・ワークステーション・コンピュータを作製するために利用することもできる。上記で本発明の背景を参照して説明したように、この機能は、すでに、特定のネットワーク・カードに特有の「ブートＲＯＭ」を有するネットワーク・カードをインストールすることによってＰＣ互換コンピュータ上で使用することができ、追加のコストで得ることができる。本発明によれば、リモート・ドライブからリブートしリモート・ドライブにアクセスするこの機能は、ネットワーク機能拡張ＢＩＯＳ６００の汎用機能であり、ＯＤＩドライバやＮＤＩＳドライバなどの標準ドライバを使用することのできる広範囲のネットワーク・カードと共に動作する。
【００４４】
ローダ・サービス・スレッド４２６は、管理ワークステーション２００アプリケーションに、モジュール・ローダ６３０とのインタフェースを実現する。管理ワークステーション２００は、ＲＡＭにロードされ、追加の遷移ネットワーク機能拡張ＢＩＯＳスレッドとして実行されるコードおよびデータを含むメッセージを、モジュール・ローダ６３０に送信することができる。
【００４５】
非同期コマンド・スレッド４２７は、たとえば、ＢＩＯＳデータの転送を要求する非同期コマンドや、特殊な診断モードに入るための非同期コマンドや、特定のリブート動作を実行するための非同期コマンドをネットワーク機能拡張ＢＩＯＳ６００に発行するために使用することのできる管理ワークステーション２００とのインタフェースを実現する。
【００４６】
前述のすべてのスレッドは、ネットワーク機能拡張ＢＩＯＳ６００がアクティブである間ずっと、一般にはＰＯＳＴが完了するまで、実行され続ける。上記で指摘したように、管理ワークステーション２００からの介入がなく、かつＰＯＳＴエラーがない場合、ＰＯＳＴが首尾良く完了したことを示す警告が送信される（４３１）。
【００４７】
ネットワーク機能拡張ＢＩＯＳ６００はさらに、タイマ・チック割込み（８０ｘ８６マイクロプロセッサ上の割込み０８Ｈ）用のＢＩＯＳ自体の割込みハンドラをインストールすることができる。タイマ・チック割込みベクトルは、図８のステップ８６０を実施する手続きへ向けて送られ、それによって、現在の実モード・コードが、その状態を保存し、ネットワーク機能拡張ＢＩＯＳ６００にジャンプする。これにより、ＭＳ−ＤＯＳなどある種の実モード・オペレーティング・システムがロードされ実行されている間、ネットワーク機能拡張ＢＩＯＳ６００は引き続き一定の間隔でＣＰＵ制御を得ることができる。ＢＩＯＳ画面表示割込み１０Ｈが、前述のリモート・コンソール機構の一部として出力先をハンドラに変更されている可能性があり、この機構が所定の位置に残ることに留意されたい。
【００４８】
ロードされるオペレーティング・システムが、ＮｅｔＷａｒｅやＷｉｎｄｏｗｓ−ＮＴなどの保護モードオペレーティング・システムである場合、このオペレーティング・システムは、プロセッサを保護モードに切り換え、前述のタイマ・チック割込みおよび画面表示割込みを含む割込みベクトルを再配置し、ＣＰＵ１１０の制御を引き継ぎ、ネットワーク機能拡張ＢＩＯＳは、クラッシュ回復機能を除いて、機能を停止する。
【００４９】
保護モード・メモリ・マネージャのないＭＳ−ＤＯＳなどの実モード・オペレーティング・システムをロードする場合、ネットワーク管理ＢＩＯＳコードは拡張メモリに残る。割込みベクトルを再プログラムする際、ＭＳ−ＤＯＳは、まず割込み処理ルーチンが実行され、次いで、ＭＳ−ＤＯＳブートストラップが開始されたときにベクトルが指していたルーチンが実行されるように、既存のベクトルを連鎖させる。この結果、このようなオペレーティング・システムが実行されているときに、リモート・コンソール機構を含むネットワーク機能拡張ＢＩＯＳ６００のすべての機能を引き続き使用することができる。
当業者には、ＰＯＳＴ時に、またはＤＯＳ環境で、カーネル・ディスパッチャの制御下で実行できる追加のスレッドを追加できることが、本明細書に含まれる開示に基づいて明らかであると思われる。
【００５０】
ネットワーク・プロトコル層
次に、図５を参照して、ＢＩＯＳ内でネットワーク・インタフェースを実現する好ましい方法について説明する。
一般に、ネットワーク・サポートはソフトウェア層に分割される。たとえば、国際標準機関は、ネットワーキング・サポート用の７層モデルを定義している。区分内の各層は、その「下の」層によって実行されるサービスを使用することができ、かつ「上の」層に対してサービスを実行する。
【００５１】
ネットワーク・ドライバ層７２４は１番下のソフトウェア層である。この下の層はネットワーキング・ハードウェア自体、すなわちネットワーク・コントローラ・インタフェース７２５である。ネットワーク・ドライバ層７２４は、その上のネットワーキング・プロトコル層７２２に対してサービスを実行する。
【００５２】
ネットワーキング・プロトコル層７２２は、それ自体が論理的に各層に分割され、各層では、上位プロトコルが動作することを可能にするために下位プロトコルが使用される。たとえば、供給や供給シーケンスを保証せずにパケット・データを供給するコネクションレス・データグラム・プロトコル（たとえば、低信頼性データグラム・プロトコル（ＵＤＰ）、図６の７３２）は、保証された順序付けされたデータ供給をサポートする上位プロトコル（たとえば、トランスミッション制御プロトコル（ＴＣＰ））によって使用される。本発明の好ましい態様は、コネクションレス・データグラム・プロトコルのみを実施し、非揮発性ＲＡＭ空間を節約する。ＵＤＰ７３２はＩＰデータグラムまたはパケットをＩＰ層７３３（図６）に渡す。ＩＰ層７３３の機能は、ネットワーク３００のトポロジおよび物理特性を透過的にすることである。
モデル内の最上位層はアプリケーション層７２１であり、プロトコル層７２２によって実行されるサービスを使用して、ネットワークを介してデータを転送する。
【００５３】
ネットワーク・ドライバ層
ネットワーク・ドライバ層７２４は、ネットワーキング・プロトコル層７２２をネットワーク・カード・ハードウェア７２５と結合する。ネットワーク・ドライバ層７２４は標準インタフェース仕様に従って実施することが好ましい。上記で指摘したように、特に、２つの可能な仕様はＯＤＩとＮＤＩＳである。本明細書で説明する実施形態は、ＯＤＩ標準に従って書かれたドライバの使用法を詳述する実施形態である。当業者には、ＮＤＩＳ標準やＵＮＩＸ（登録商標）標準など他の標準に従って開発されたドライバの使用をサポートするネットワーク機能拡張ＢＩＯＳを実施するか、または場合によっては、複数の標準をサポートすることが自明であると思われる。
【００５４】
次に、図６を参照して、ネットワーク・プロトコル・スタックの好ましい態様について説明する。ＯＤＩ仕様は、ネットワーク・デバイス・ドライバを上位層から分離するインタフェースを定義する。リンク・サポート層（ＬＳＬ）７３４は、プロトコル・スタックの上位層とネットワーク・ドライバの両方に対して登録サービスおよびバッファ割付けサービスを実行する。ネットワーク・デバイス・ドライバの構成要素は、全体として多重リンク・インタフェース・ドライバ（ＭＬＩＤ）と呼ばれている。ＭＬＩＤ７３８自体は、メディア・サポート・モジュール（ＭＳＭ）７３５、トポロジ特有モジュール（ＴＳＭ）７３６、およびハードウェア特有モジュール（ＨＳＭ）７３７の３つの構成要素に分離することができる。ＭＳＭルーチン７３５は、すべてのドライバに共通であり、ネットワーク・ドライバ層７２４とネットワーク機能拡張ＢＩＯＳとのインタフェースをサポートする。ＴＳＭルーチン７３６は、イーサネット（登録商標）やトークン・リングなど特定のネットワーキング技法用のドライバに共通である。ＨＳＭルーチン７３７は、特定の各ＮＩＣ１７０に特有のルーチンである。ＨＳＭルーチン７３７は、ＮＩＣ初期設定、電源投入、シャットダウン、リセット、パケット送受信、およびタイムアウトを処理しなければならない。
【００５５】
ネットワーク・カード・ドライバの開発を容易にするために、多数のＴＳＭルーチンおよびＭＳＭルーチンに共通するコードの多くが識別され、サード・パーティ開発業者により、ドライバによって使用することのできる市販の１組のルーチンとして開発されている。これらのルーチンは、ＢＩＯＳに取りこまれ、オペレーティング・システムのサポートましに実行されるように移植することができる。これらのＴＳＭルーチンおよびＭＳＭルーチンは、ＨＳＭドライバ７３７によって依存される。定義上、ＯＤＩ準拠ＨＳＭデバイス・ドライバは、指定されたサービスのみを使用しなければならない。したがって、これらのＴＳＭサービスおよびＭＳＭサービスを供給するネットワーク機能拡張ＢＩＯＳ６００は、オペレーティング・システムの助けなしにＯＤＩ準拠ＨＳＭデバイス・ドライバをサポートすることができる。
ネットワーク機能拡張ＢＩＯＳ６００でのＭＳＭルーチンおよびＴＳＭルーチンの実施は、前述のように、小さなマルチタスキング・カーネルを追加することによって行うことが好ましい。
【００５６】
ネットワーク機能拡張ＢＩＯＳ６００は好ましくは、ＬＳＬルーチン、ＭＳＭルーチン、およびＴＳＭルーチンを実施するが、これらのルーチンの機能のうちの多くは、非揮発性ＲＡＭ１２５を節約するために省略することができる。好ましくは、非揮発性ＲＡＭ１２５にこれらのルーチンが記憶される。このようにして、ネットワーク機能拡張ＢＩＯＳ６００は、オペレーティング・システムから与えられるのと同様な環境をネットワーキング・インタフェース・カード１７０に与え、既存の標準に準拠したデバイス・ドライバが、修正なしに本明細書の目的のために機能することを可能にする。最適な最小の１組のルーチンは、様々な製造業者から市販されているいくつかの異なるＯＤＩドライバを検査し、ネットワーク機能拡張ＢＩＯＳによってサポートされるアプリケーション・レベル・サービスにどのルーチンが必要であるかを判定することによって決定される。本発明者によって現在理解されている、ＮＥ２０００、Ｉｎｔｅｌ  ＥｔｈｅｒＥｘｐｒｅｓｓ、および３Ｃｏｍ  ９０ｘ用の好ましい１組のインポート関数を以下の表１にリストする。
【００５７】
【表１】
2007172634.tif 000003
【００５８】
プロトコル層
ネットワーク機能拡張ＢＩＯＳ６００は、アプリケーション開発を容易にするために、好ましくは様々なプロトコル層のうちのいくつかを実施する。必要な下位プロトコルを有する、ＮｅｔＷａｒｅ（登録商標）ベースのネットワーク上で共通なインタネット・パケット・エクスチェンジ／シーケンスト・パケット・エクスチェンジ（ＩＰＸ／ＳＰＸ）と、インタネット制御メッセージ・プロトコル（ＩＣＭＰ）などのサポート・プロトコルを有するトランスミッション制御プロトコル／インタネット・プロトコル（ＴＣＰ／ＩＰ）プロトコル・ファミリの２つのプロトコル・ファミリを実施することが好ましい。しかし、非揮発性ＲＡＭが重要である場合、実施形態ではこの機能のうちのいくらかまたはすべてを省略することができる。たとえば、ネットワーク機能拡張ＢＩＯＳ６００は、ＩＰＸのみを実施することができ、パケット供給を保証しＩＰＸ上で実施されるＳＰＸは実施しなくてもよい。
【００５９】
ＲＰＣ層
アプリケーション開発をさらに容易にするために、リモート手続き呼出し（ＲＰＣ）７３１（図６）の機能を実行するプロトコル層を実施することが好ましい。これは、たとえば、Ｎｅｌｓｏｎ  Ｂ．Ｊ．、Ｂｉｒｒｅｌｌ  Ａ．Ｄ．著「Ｉｍｐｌｅｍｅｎｔｉｎｇ  Ｒｅｍｏｔｅ  Ｐｒｏｃｅｄｕｒｅ  Ｃａｌｌｓ」（ＡＣＭ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍｓ、２（１）、１９８４年２）月に記載されたＲＰＣの機能のサブセットである。図７に示すように、ネットワーク機能拡張ＢＩＯＳ６００内にＲＰＣサーバ７５１が設けられ、管理ワークステーション２００アプリケーション内にＲＰＣクライアント７５２が設けられる。この場合、管理ワークステーション２００上のアプリケーション・プログラムは簡単なファンクション・コール７５３を含むことができる。このファンクション・コールのパラメータは、下位ネットワーク・プロトコルを使用し、ネットワーク３００を介して、ネットワーク機能拡張ＢＩＯＳ６００を有するコンピュータ４００に渡される（７５４）。次いで、ネットワーク機能拡張コンピュータ４００上のサービス・ルーチン７５５によってＲＰＣ関数が実行され、その結果が管理ワークステーションに返される（７５６）。クライアント呼出し手続き７５３およびサーバ被呼手続きはそれぞれ、呼出し側スタブまたは被呼スタブに干渉する（図示せず）。これによって、アプリケーション・プログラムがネットワーク機能拡張ＢＩＯＳ６００と対話することのできる簡単な方法が実現される。好ましくは、ネットワーク機能拡張コンピュータ４００は、前述のようなメッセージ認証コード・プロトコルを使用してＲＰＣ要求を認証する。
ＲＰＣ機構は、サーバ管理ハードウェアからデータにアクセスすることや、製造試験時に診断コードをロードすることなどの機能拡張サービスをＯＥＭが実施するための手段も実現する。
【００６０】
アプリケーション層
アプリケーション層７２１は、管理者がリモートにアクセスすることのできる様々なアプリケーション・サービスを含む。
これらのアプリケーションは好ましくは、画面およびキーボードのネットワーク３００への出力先変更を含み、ローカル・キーボード１４０およびビデオ表示ユニット１３０を使用せずにネットワークを介してアプリケーションを制御することを可能にする。この場合、リモート・コンソール機構がＰＯＳＴから報告されるメッセージツおよびエラーを観測することを可能にすることや、ＢＩＯＳセットアップ画面またはその他のＢＩＯＳ構成方法を使用してＢＩＯＳによって制御されるパラメータの表示および変更を可能にすることなど、リモート・コンソール機構上のいくつかの機能が容易になる。
【００６１】
ネットワーク３００を介した画面およびキーボードの出力先変更は、スレッド４２３および４２４（図４）ならびに前述のＲＰＣ機構を使用して行うことができる。キーボードの出力先変更は、ワークステーション２００のキーストロークを取り込み、ＲＰＣ呼出しを行い、キーストロークに対応する走査コードをワークステーション２００からコンピュータ４００へ転送することによって行われる。次いで、ネットワーク機能拡張ＢＩＯＳ６００に組み込まれたサービス・スレッド４２３は、ローカル・キーボードから受信された走査コードの効果をシミュレートする。他の方法としては、キーボード・コントローラ回路１４５に特殊コマンドを送信し、キーボード・コントローラ回路１４５が、転送された走査コードをキーボード・コントローラ回路出力バッファに挿入することによって、このシミュレーションを行うことができる。
【００６２】
ネットワーク機能拡張ＢＩＯＳ６００からワークステーション２００へのデータ転送が必要であり、かつ前述のＲＰＣ機構では一般に、この転送をコンピュータ４００から開始することができないので、画面の出力先変更はより複雑である。したがって、ワークステーション２００アプリケーション・プログラムで、ＲＰＣ関数が呼び出され、ＲＰＣ関数がネットワークを介して要求を転送し、次いで、この要求が、コンピュータ４００上のＢＩＯＳのネットワーク・インタフェースに組み込まれたサービス・ルーチンを活動化し、このルーチンが、画面データをワークステーション２００に送り返す準備ができるまでそれぞれの画面出力先変更スレッドの実行を妨げる。上記で指摘したように、画面データを待っている間に他の動作を継続することを可能にするために、サービスをマルチスレッド化することが好ましい。サービス・ルーチンは、ＢＩＯＳ画面表示サービス割込みをフックすることによって画面データを取り込むことができ、または画面に文字を出力するＢＩＯＳ表示サービス・コードにサービス・ルーチンを直接リンクすることができる。画面データが得られると、このデータがメモリ内のバッファに配置され、これによって、ＲＰＣサーバのサービス・スレッドが解放される。画面データを含むネットワーク・パケットが送信される。このため、ＲＰＣクライアント・スレッドが解放され、最初のファンクション・コールの結果として、画面データが管理ワークステーション・アプリケーションに返される。
【００６３】
好ましい層化アーキテクチャ、および特にＲＰＣ関数を利用する他の可能なアプリケーションは診断ルーチンを含む。このルーチンは、試験コマンドを発行し、ネットワークを使用してワークステーション２００上に結果を表示することによって、ネットワーク機能拡張コンピュータ４００を試験することを可能にする。
当業者には、好ましい層化アーキテクチャを利用することのできる他のアプリケーションが明らかであると思われる。
【００６４】
バイナリ互換性
ネットワーク・アダプタ製造業者は通常、オペレーティング・システム特有のデバイス・ドライバを含むファイルに各ネットワーク・アダプタを供給する。このようなオペレーティング・システム用に開発されたネットワーク・ドライバを使用するには、ネットワーク機能拡張ＢＩＯＳ６００が、ドライバ・ファイルに含まれるバイナリ画像を使用しなければならない。ＯＤＩ標準の下では、ドライバ画像はＮｅｔｗａｒｅロード可能モジュール（ＮＬＭ）ファイル・フォーマットである。ＯＤＩ標準をサポートするネットワーク・アダプタ製造業者から供給されるドライバは、ＯＤＩ仕様のＨＳＭ部分を実施する。ロード・プロセスは、このフォーマットを変換し、ドライバを非揮発性メモリにロードする。ロード・プロセスでは、外部ルーチンへのデバイス・ドライバ参照およびそのエントリ・ポイントを処理する必要がある。ＮＬＭフォーマットは、それが含むコードの動作をサポートするのに必要な外部ルーチンに関する情報を含む。この情報はアドレス・テーブルの形であり、このテーブルから、外部ルーチンと、外部ルーチンの名前として解釈できる対応する参照とを呼び出さなければならない。ロード・プロセス中には、必要なルーチンがメモリ内に配置され、このような外部ルーチンを参照する必要のあるＮＬＭコード内の場所が修正される。このプロセスは当業者によく知られており、当業者からは通常「リンキング」と呼ばれている。
【００６５】
本発明の一態様では、独立のオペレーティング・システム・ベースのユーティリティが、ＮＩＣ製造業者から供給されたドライバ・ファイルを読み取り、ドライバ内の外部記号の参照を処理し、バイナリ・ファイルを出力する。次いで、このファイルは非揮発性メモリにロードされる。本発明の代替態様では、ＢＩＯＳコードによってドライバ・ファイルが直接、非揮発性メモリにロードされる。ネットワーク機能拡張ＢＩＯＳ６００は、システム立上げ時にドライバ・ファイル内の外部参照を処理する。上記で指摘したように、製造業者のデバイス・ドライバによって参照される外部ルーチンはネットワーク機能拡張ＢＩＯＳ内で実施され、オペレーティング・システムへのアクセスが不要になる。
【００６６】
ドライバ・バイナリ・ファイルは、実際のドライバ・コードおよびデータだけでなく、いくつかのテーブルも含む。これらのテーブルには以下のものが含まれる。
・様々な他のテーブルの位置および性質を記述したファイル・ヘッダ
・ドライバ・コード部のイメージ
・ドライバ・データ部のイメージ
・他のモジュールから供給すべき記号の名前および使用位置（重要なテーブル）
・ドライバから供給され他のモジュールによって使用することのできる記号の名前および位置
・ドライバがロードされる最終アドレスに基づいて、ドライバ・コードおよびドライバ・データのイメージを固定することを可能にするテーブル。このテーブルを通常、「フィックスアップ」テーブルと呼ぶ。
ドライバ・ロード・コード（ネットワーク機能拡張ＢＩＯＳ６００の一部、またはオペレーティング・システム・ベースの独立のユーティリティ内のドライバ・ロード・コード））は、これらのテーブル内の情報を使用して、他のモジュールへの参照を処理し、最終ロード・アドレスに基づいてドライバ・イメージを固定する。
【００６７】
ＮＩＣではなくモデムを用いた動作
上記で指摘したように、ＮＩＣを使用するネットワーク接続が不可能である場合は、代替策としてモデム接続を使用することが望ましい。この方法は、ＯＤＩアプリケーションのＭＬＩＤ部分を実施し、コンピュータ１７５のシリアル・インタフェースを介し、したがって外部モデム１８０を介してリモート・コンピュータとデータを送受信するように構成された（図２）、ソフトウェア・モジュールを作成することによって実現することが好ましい。または、内部モデム１９０を使用することができる。このソフトウェア・モジュールは、ＨＳＭの代替策として、前述の方法によって、非揮発性メモリにリンクしインストールすることができる。
別の実施形態では、プロトコル・スタックのＵＤＰ層と同じＡＰＩを実現するようにモデム・サポート用のソフトウェア・モジュールを設計することが好ましい。この場合、ＵＤＰとプロトコル・スタックのすべての下位層とをコンピュータの非揮発性記憶装置から省略することができる。
【００６８】
オペレーティング・システムの障害の検出および処理
オペレーティング・システム９０１（図９）の障害は、いくつかの既知の技法のうちのどれかを介するか、または後述の新規のウォッチドッグ機構を介して検出することができる。
オペレーティング・システムの多くの障害の結果として、オペレーティング・システム自体が障害を検出し、エラー・ルーチンを実行する制御障害モードに入る。オペレーティング・システム・コードまたはドキュメンテーションを調べ、このようなエラー・ルーチンの実行経路を決定することができる。システム・レベル特権を有するデバイス・ドライバを使用することによって、この目的のためにメモリに保持されているネットワーク機能拡張ＢＩＯＳ６００の部分に制御を強制的に転送させるようにエラー・ルーチンを修正することが可能である。ネットワーク機能拡張ＢＩＯＳは好ましくは、アプリケーション・プログラム・インタフェース（ＡＰＩ）、またはオペレーティング・システムが制御障害モードに入るときにアドレスする簡単なエラー・ルーチン・エントリ・ポイントも実現する。これは、オペレーティング・システムにエラー・ハンドラ・ルーチンを外部コードに向けて送るよう命令するときに使用できるＡＰＩをオペレーティング・システムが組み込んでいる場合に有用である。
【００６９】
オペレーティング・システムの障害を検出する他の技法には、ウォッチドッグ・タイマ手段の使用が含まれる。ウォッチドッグ・タイマ手段の一例は、Ｂｕｒｃｋｈａｒｔｔ特許に記載されており、オペレーティング・システムの制御下で実行されるプログラムと共に動作する。オペレーティング・システムは、通常の動作中にタイマを周期的に再トリガする。Ｂｕｒｋｈａｒｔｔ特許に記載されたタイマの期間が、プログラムがこのタイマを再トリガすることなしに満了した場合、オペレーティング・システムに障害が起こったものと仮定される。タイマの出力は、プロセッサのリセット・ピンに直接または間接的に接続され、システムをリセットさせる。これによって、障害の原因に関する有用な情報が収集されるのが妨げられる。
【００７０】
次に、図９を参照するとわかるように、本発明の好ましいウォッチドッグ・タイマ機構（後述）は、このような制限を解消し、ネットワーク機能拡張ＢＩＯＳのデータベース転送方法を使用可能にするという点でネットワーク機能拡張ＢＩＯＳと併用するのに好ましい。障害診断に有用な情報を取り込み、障害のあるコンピュータから離れた位置にあるシステム・マネージャに送信することができる。このことは、このウォッチドッグ機構がコンピュータを直ちにリセットすることがなく、最初にある種の予備的データ収集動作を実行しておくことを可能にするということによって、従来技術と区別される。マイクロプロセッサのシステム・マネージャ・モード（ＳＭＭ）が利用される。ネットワーク機能拡張ＢＩＯＳによってシステム管理ＲＡＭ（ＳＭＲＡＭ）１２１（図２）にデータ収集ルーチン９２０がインストールされる。このデータ収集９２０ルーチンは、前述のいくつかのステップのうちの任意のステップの間、たとえば、図８のカーネル初期設定ステップ８２０の間にインストールすることができる。ＳＭＲＡＭ１２１にアクセスできるのは、システム管理割込み（ＳＭＩ）が行われているときだけである。ＳＭＭ、ＳＭＲＡＭ、およびＳＭＩは、Ｉｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎから得られるマイクロプロセッサ・マニュアルに記載されている。ＳＭＩは、チップセット１２３外部ＳＭＩピンに接続された外部タイマ１２２（図２）によって生成することができる。チップセット１２３は、この信号を送出しマイクロプロセッサＳＭＩピンに渡す前に、論理ＯＲ関数（図示せず）を使用して、この信号をＳＭＩの内部資源と組み合わせる。
【００７１】
または、チップセットは、電源管理用に設計された内部タイマ、または周期的ＳＭＩの供給源としてプログラムすることのできるスペア・タイマを含むことができる。このような内部タイマを使用する実施形態が好ましいのは、追加のハードウェアを設ける必要がないからである。タイマは、プログラムされた間隔でＳＭＩ９０５を生成する。各タイマ事象で、ＳＭＲＡＭに記憶されている事象カウンタが増分される（９１０）。事象カウンタが所定の値に達した場合（９１５）、オペレーティング・システムはクラッシュしており、データ収集が開始される。事象カウンタが所定の値に達していない場合、ＳＭＩサービスは終了する（９３５）。オペレーティング・システム９０１制御タスクの下で実行されるプログラムは、カウンタを周期的に減分するか、またはゼロにし、カウンタが所定の値に達するのを防止する。
【００７２】
ウォッチドッグ機能の実施形態の詳細は必然的に、この機能がどんなハードウェア・プラットフォーム上に装備されているかに応じて異なる。カウントが異なるように処理される他の同等な実施形態も可能である。
ＳＭＲＡＭ内のウォッチドッグ機構の実施形態の詳細にかかわらず、同じオペレーティング・システムを実行する任意のコンピュータ上のウォッチドッグ・プログラムをリセットするように同じプログラムを実行できることが望ましい。したがって、従来型のＢＩＯＳ５００は好ましくは、ウォッチドッグをイネーブルし、ウォッチドッグをディスエーブルし、タイムアウト期間を設定し、かつＳＭＩ事象の現在のカウントをリセットするＡＰＩを実現する。Ｐｈｏｅｎｉｘ  Ｔｅｃｈｎｏｌｏｇｉｅｓから発行され（１９９３年、５月２４日）、引用によって本明細書に組み入れられた「Ｓｔａｎｄａｒｄ  ＢＩＯＳ  ３２−ｂｉｔ  Ｓｅｒｖｉｃｅ  Ｐｒｏｐｏｓａｌ，Ｒｅｖ．０．４」に記載されたように、ＢＩＯＳ  ３２ビット・サービス・ディレクトリを介してアクセスされるサービスとしてこのＡＰＩを実施することが好ましい。オペレーティング・システムの制御下で実行されるプログラムは、カーネル・アクセス権を有するデバイス・ドライバを使用してＢＩＯＳ  ３２ビット・サービスにアクセスすることができる。
【００７３】
この好ましいウォッチドッグ・タイマ法によってオペレーティング・システムのクラッシュが検出されたときには、以後の診断のためにクラッシュ状態に関する情報を保存する様々なステップ９２０を実行することができる。これらのステップの例には、コンピュータのいくらかまたはすべてのメモリを、コア・ダンプと呼ばれることの多いディスク記憶媒体上の予約領域にコピーすることと、画面メモリおよびビデオ・コントローラ・レジスタの状態、したがって、オペレーティング・システムによってそのエラー・ルーチンに表示された診断情報を保存することが含まれる。当業者には、収集すると有用な他のデータが明らかであると思われる。
【００７４】
証拠を保存するすべてのこのようなステップが実行された後で、システムをリセットすることができる（９３０）。このリセットでは、ＣＭＯＳメモリに記憶されている特殊なシャットダウン・コードまたはその他の同等な手段を使用して、リセットがクラッシュの結果であることを、従来型のＢＩＯＳのＰＯＳＴ時にこのＢＩＯＳに伝える。このことはコンソール上に表示することができ、ネットワーク機能拡張ＢＩＯＳは、このように構成されている場合、このようなクラッシュの結果として自動的に特殊診断モードに入ることができる。クラッシュが起こったことと、任意選択でクラッシュに関する何らかの情報とを伝えるＳＮＭＰ警告を、ネットワーク３００を介して他のコンピュータに送信することができる。この場合、このコンピュータから離れた位置にあるシステム・マネージャは、このコンピュータのオペレーティング・システムの再ロードを試みる前に、ネットワーク機能拡張ＢＩＯＳの伝送機構を利用するアプリケーションを使用してマネージャ自体のコンピュータに診断情報を転送するオプションを有する。
【００７５】
特殊診断状態
上記で指摘したように、ＢＩＯＳは好ましくは、特殊診断状態を含み、これによって、オペレーティング・システムのロードが抑制され、コンピュータは、図４のオペレーティング・システム４１４がロードされる前に次の介入が開始されるのを待つ。これによって、システムをリブートさせたエラーを診断することができる。リモート・コンソール機構を使用して、コンピュータを強制的にこの特殊診断状態にすることができる。これは、前述のように、リモート・プロシージャ・コールを使用することによって実施することができる。コンピュータである種の障害条件が起こった場合に、自動的に特殊診断状態に入ることができるように、ネットワーク機能拡張ＢＩＯＳを構成することもできる。
【００７６】
ネットワーク機能拡張コンピュータが特殊診断状態である間に、いくつかの有用な機能、たとえば、ネットワーク機能拡張コンピュータ４００をリセットさせ、このコンピュータにＰＯＳＴルーチンを再実行させることや、ネットワーク機能拡張コンピュータ４００上のハード・ディスク１６０からデータを読み取らせネットワーク３００を介してリモート・コンソールに転送させることや、ネットワーク３００を介してリモート・ワークステーション２００からネットワーク機能拡張コンピュータ４００にデータを転送させ、コンピュータ４００上のハード・ディスク記憶装置１６０に書き込ませることなどを実行するように、リモート・ワークステーション２００上のリモート・コンソールをネットワーク機能拡張コンピュータ４００と共にプログラムすることができる。 リモート・コンソールはさらに、ＣＭＯＳ設定、ＤＭＩ、ＥＳＣＤ、ＢＩＯＳエラー・ログなどＢＩＯＳに保持されているデータをネットワーク３００を介してリモート・ワークステーション２００に転送させるか、またはリモート・ワークステーションから転送し、ネットワーク機能拡張コンピュータ４００内の適切な記憶装置で修正させることができる。 
【００７７】
ＢＩＯＳは、ＢＩＯＳ自体の一部をリモートにロードして、ネットワーク３００上のサーバ１００など他のコンピュータからＢＩＯＳの通常の機能の一部をダウンロードすることを可能にし、それによって、ＢＩＯＳコードを記憶するためにコンピュータ上で必要となる非揮発性記憶域の量を削減することもできる。ＰＯＳＴコードなどＢＩＯＳの通常の機能の基本的な部分を第２のコンピュータ１００からダウンロードしなければならない場合、コンピュータ４００は、ネットワーク３００との適切な接続がないかぎり機能しない。ネットワーク接続はコード化することが好ましいので、コンピュータがネットワークとの適切な接続がないかぎり機能しない場合、コンピュータが盗まれてネットワーク接続から取り外された場合には、もはやＰＯＳＴの実行を完了しなくなり、それによって使用不能になる。このことは、盗難に対するかなりの抑止力として働く。
また、リモート・コンソールは、ネットワーク３００を介してデータを転送させ、従来型のＢＩＯＳおよびネットワーク機能拡張ＢＩＯＳを保持するために使用される非揮発性メモリ装置１２５にこのデータを書き込ませ、それによって、第１のコンピュータが次にリセットされるときに新しいバージョンの構成が使用されるようにＢＩＯＳの一部を更新することができる。
【００７８】
他の様々な修正態様が明らかであり、かつ本発明の範囲および趣旨から逸脱せずに当業者によって容易に作成できることが理解されると思われる。たとえば、図１の参照符号４００で示すようにデスクトップ・コンピュータであるネットワーク機能拡張コンピュータを参照したが、このコンピュータは、図１の参照符号１００として示すサーバでもよい。したがって、請求の範囲は、本明細書に記載された説明および例示に限るものではなく、当業者によって均等物とみなされる特徴を含め、本発明に存在する特許可能な新規性のすべての特徴を包含する範囲として解釈されるものである。
【図面の簡単な説明】
【００７９】
本発明をより完全に理解していただくために、添付の図面と共に以下の詳細な説明を参照する。
【図１】図１は、本発明を実施するための、サーバ・コンピュータ、デスクトップ・コンピュータ、ネットワーク化管理ワークステーション、およびネットワークを含む例示的なシステム・アーキテクチャの機能ブロック図である。
【図２】図２は、本発明を実施するための、コンピュータ・システム構成要素を含む例示的なコンピュータ・システムの機能ブロック図である。
【図３Ａ】図３Ａは、本発明に従って作成されたＢＩＯＳの一部の主要な機能構成要素を示す、コンピュータの従来型のＢＩＯＳ部の機能ブロック図である。
【図３Ｂ】図３Ｂは、本発明に係る主要な機能構成要素を示す、コンピュータのネットワーク化機能拡張ＢＩＯＳ部の機能ブロック図である。
【図４】図４Ａは、本発明の好ましい態様によるリモート・アクセス用に構成されたコンピュータ上に含まれるソフトウェアを示すフローチャートである。図４Ｂは、図４Ａの続きを示す図である。
【図５】図５は、本発明に係るネットワーク・インタフェース構成要素の各層の機能ブロック図である。
【図６】図６は、本発明の好ましい態様によるネットワーク化機能拡張ＢＩＯＳによって実施されるネットワーク・プロトコル・スタックの機能ブロック図である。
【図７】図７は、本発明によって実施されるＲＰＣ機能の機能モデルを示す。
【図８Ａ】図８Ａは、ＢＩＯＳの各モードの間の遷移を処理する本発明に係る機構の機能ブロック図である。
【図８Ｂ】図８Ｂは、図８Ａの続きを示す図である。
【図９】図９は、本発明に係るウォッチドッグ・タイマ機構の機能ブロック図である。
【図１】
2007172634.tif 000004
【図２】
2007172634.tif 000005
【図３Ａ】
2007172634.tif 000006
【図３Ｂ】
2007172634.tif 000007
【図４】
2007172634.tif 000008
【図５】
2007172634.tif 000009
【図６】
2007172634.tif 000010
【図７】
2007172634.tif 000011
【図８Ａ】
2007172634.tif 000012
【図８Ｂ】
2007172634.tif 000013
【図９】
2007172634.tif 000014
【手続補正書】
【提出日】平成19年2月5日(2007.2.5)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
中央演算処理装置（ＣＰＵ）と、該コンピュータをネットワークと結合するネットワーク・インタフェースとを含むコンピュータを操作する方法であって、
ＣＰＵシステム立上げ時に該ＣＰＵ上で初期立上げソフトウェアを自動的に実行する段階、
該ネットワーク・インタフェースを介して該コンピュータ・ネットワークに結合されたワークステーションと通信するためのプロトコルをサポートするネットワーク機能拡張ソフトウェアを、該立上げソフトウェアの少なくとも第１の部分が完了したときに該ＣＰＵ上にロードし実行する段階、および
該ＣＰＵ上で実行されるユーザ・レベル・アプリケーション・ソフトウェア・プログラムからアクセスできるオペレーティング・システム・ソフトウェアを、該ネットワーク機能拡張ソフトウェアをロードした後に該ＣＰＵ上にロードし実行する段階を含む方法。