JP3437587B2 - オペレーティングシステムのためのリジューム処理方法 - Google Patents

オペレーティングシステムのためのリジューム処理方法

Info

Publication number
JP3437587B2
JP3437587B2 JP13717692A JP13717692A JP3437587B2 JP 3437587 B2 JP3437587 B2 JP 3437587B2 JP 13717692 A JP13717692 A JP 13717692A JP 13717692 A JP13717692 A JP 13717692A JP 3437587 B2 JP3437587 B2 JP 3437587B2
Authority
JP
Japan
Prior art keywords
resume
driver
mode
cpu
computer
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.)
Expired - Lifetime
Application number
JP13717692A
Other languages
English (en)
Other versions
JPH05189075A (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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Publication of JPH05189075A publication Critical patent/JPH05189075A/ja
Application granted granted Critical
Publication of JP3437587B2 publication Critical patent/JP3437587B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4418Suspend and resume; Hibernate and awake
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2200/00Indexing scheme relating to G06F1/04 - G06F1/32
    • G06F2200/16Indexing scheme relating to G06F1/16 - G06F1/18
    • G06F2200/161Indexing scheme relating to constructional details of the monitor
    • G06F2200/1613Supporting arrangements, e.g. for filters or documents associated to a laptop display

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Power Sources (AREA)

Description

【発明の詳細な説明】 【0001】 【産業上の利用分野】この発明はコンピュータシステム
に使用されるリジューム処理制御システムに関し、特に
電源オフ信号に応答してオペレーティングシステムによ
り動作するコンピュータシステムのステータスをセーブ
し、コンピュータシステムの電源をオフにし、次にコン
ピュータシステムの電源をオンにして、コンピュータシ
ステムを元の状態に復帰させる方法に関する。 【0002】 【従来の技術】一般的なコンピュータシステム、例えば
80x86マイクロプロセッサあるいはその同等品を用
いた”IBM互換”のマイクロコンピュータでは、シス
テムの電源がオフになると、マイクロプロセッサに関連
するレジスタの内容やメモリロケーションは通常消失す
る。その後、電源がコンンピュータシステムに投入され
ると、初期化ステップが実行され、システムが初期化状
態になる。この場合、電源がオフになる前にシステム内
に存在していたコンピュータプログラムやデータは再度
ロードしなければならない。 【0003】近年、”リジューム”処理機能がある種の
コンピュータシステム、例えば東芝製のラップトップマ
イクロコンピュータに設けられ、電源オフ時にシステム
の動作状態をセーブし、次に電源がオンになったとき
に、電源オフ時に中断された処理に復帰することが可能
なように構成されている。この機能は、表示装置やディ
スクドライブのような大電力を必要とする装置への電力
を遮断し、コンピュータの低電力ダイナミックメモリへ
電力を供給し続けることにより達成される。この電力消
費保持機能により、バッテリ駆動のラップトップコンピ
ュータのように、限られた電源しか持たないコンピュー
タシステムは、必要な電力消費量を最小に抑えながらシ
ステムの現在の状態を維持することができる。 【0004】例えば、東芝製ラップトップコンピュータ
に見られる内蔵リジューム機能(”オートリジューム”
(登録商標)と呼ばれる)により、ユーザはデータを失
うことなく、コンピュータの電源をオフにし、バッテリ
電力を節約することができる。この機能は、コンピュー
タのリードオンリメモリ(ROM)内の基本入出力シス
テム(BIOS)ルーチンに組み込まれている。このリ
ジューム機能は、すべての必要なレジスタ情報をランダ
ムアクセスメモリ(RAM)にセーブしそのメモリへの
電力を供給しながら、他のコンピュータ装置への電力を
遮断することにより行なわれる。通常の電力に戻ると、
セーブされた情報はレジスタに戻され、システムは元の
状態に戻る。 【0005】この特徴は、バッテリの寿命を延ばすため
にユーザが意図的にシステムの電源を落とす場合に有効
であるが、さらにバッテリ電力がロウバッテリになった
ときに有効である。ロウバッテリになると、システム
は、(例えばビープ音を発生して)バッテリの電力が低
下したことをユーザに知らせる。ユーザが所定時間(約
5分)以内にシステムの電源を落とさなかった場合、コ
ンピュータは自動的にリジュームモードになり、電源を
落とす。通常電力が再度印加されると、BIOSがコン
ピュータを元の状態に復帰させるので、データを消失す
ることもなく、また、プログラムの実行が中断されるこ
ともない。 【0006】 【発明が解決しようとする課題】しかしながら、このよ
うなラップトップコンピュータに現在組み込まれている
リジューム処理のBIOSコードはMS−DOSオペレ
ーティングシステム下でのリジューム処理しかサポート
していない。例えば、米国マイクロソフト社が提供する
マルチタスクオペレーティングシステムであるOS/2
のような異なるオペレーティングシステムで動作させる
と、現在のBIOSリジューム機能では、OS/2で使
用されるある種のレジスタおよびその他のデータを正し
くセーブせず、リジューム処理ができないという問題が
ある。これは、一部には、OS/2オペレーティングシ
ステムが、マルチモード80286マイクロプロセッサ
あるいは80286と互換のある80386や8048
6等のマイクロプロセッサを使用したコンピュータシス
テム上で動作するように設計されているためである。一
方、MS−DOSオペレーティングシステムはシングル
モードの8086/8088マイクロプロセッサ上で動
作するように設計されている。 【0007】従って、そのようなコンピュータでBIO
Sが提供する既存のリジューム処理を利用するには、”
ラッパー”をBIOSに作って、BIOSがリジューム
処理を実行できる状態にコンピュータをする必要があ
る。この発明の目的は、OS/2のような先進のオペレ
ーティングシステムに使用するリジューム処理方法を提
供することである。 【0008】この発明の他の目的は、MS−DOSリジ
ューム処理BIOSルーチンのような既存のリジューム
処理ルーチンと結合した、OS/2のような先進のオペ
レーティングシステムで使用するリジューム処理方法を
提供することである。この発明のさらに他の目的は、既
存のリジューム処理ルーチンの“ラッパー”として機能
するリジューム処理方法を提供することである。 【0009】この発明のさらに他の目的は、既存のリジ
ューム処理ルーチンがコールされる前にオペレーティン
グシステムの動作条件を示すデータをセーブするリジュ
ーム処理方法を提供することである。 【0010】この発明のさらに他の目的は、既存のリジ
ューム処理ルーチンが実行された後にオペレーティング
システムの動作条件を示すデータを復帰(リストア)す
るリジューム処理方法を提供することである。 【0011】この発明のさらに他の目的は、ディスクド
ライブとパラレルプリンタポートを共にアクティブ状態
にしながら機能することのできるリジューム処理方法を
提供することである。 【0012】この発明は、プロテクトモードおよびリア
ルモードで動作可能な中央処理装置(CPU)を有し、
オペレーティングシステムが前記CPUのプロテクトモ
ードで動作しているとき、パワーオフ信号に応答してC
PUの動作条件を示すシステムデータをセーブし、次
に、パワーオン信号に応答してセーブしたデータをリス
トアするリジューム処理方法において、(1)リジュー
ム処理ドライバをロードし、初期化を実行するステップ
と;(2)前記パワーオフ信号に応答して、前記リジュ
ーム処理ドライバにより、前記オペレーティングシステ
ムの動作条件を示す、前記オペレーティングシステムに
関係する第1データ群をセーブするステップと;(3)
前記リジューム処理ドライバにより、前記CPUを前記
プロテクトモードから前記リアルモードに切り替えるス
テップと;(4)リジュームBIOSルーチンにより、
前記CPUの前記リアルモードに関連する第2データ群
をセーブするステップと;(5)前記リジュームBIO
Sルーチンにより、パワーオン信号に応答して、前記ス
テップ(4)でセーブした前記第2データ群をリストア
するステップと;(6)前記リジューム処理ドライバに
より、前記CPUを前記リアルモードから前記プロテク
トモードに切り替えるステップと;(7)前記リジュー
ム処理ドライバにより、前記ステップ(2)でセーブし
た前記第1データ群をリストアするステップとを具備す
ることを特徴とする。 【0013】 【実施例】以下、詳細な説明を行なう前に、以下の用語
について定義する。 【0014】A20ゲート:アドレスライン20をイネ
ーブルまたはディスエーブルするキーボードコントロー
ラ内のゲート。アドレスライン20は、1Mバイト以上
の64Kバイトメモリセグメントをプログラムがアクセ
スする必要があるか否かに応じてMS−DOSによりイ
ネーブルまたはディスエーブルにすることができる。O
S/2では、基本のデバイスドライバは1Mバイトセグ
メント以上にあるので、このアドレスラインをイネーブ
ルにする必要がある。COMドライバ:COMドライバ
は非同期通信ポートドライバである。 【0015】CPU:中央処理装置はコンピュータシス
テムにおける中央制御回路を形成するマイクロプロセッ
サである。この発明では、CPUはプロテクトモードの
ような先進の動作モードで動作できるとともに、OS/
2のような先進のオペレーティングシステムを実行可能
なマイクロプロセッサである。 【0016】ディスクリプタテーブル:ディスクリプタ
テーブルはセレクタを物理メモリアドレスにマッピング
するためのテーブルである。このようなテーブルはイン
テル80286のような先進のマイクロプロセッサに使
用され、コンピュータプログラムが使用するメモリのセ
グメントを定義する。この発明に関連するテーブルはロ
ーカルディスクリプタテーブル(LDT)とグローバル
ディスクリプタテーブル(GDT)の2種類ある。LD
Tは各アクティブプロセスに存在し、そのプロセスによ
り占有または共有されているメモリへのアクセスを可能
にする。GDTはオペレーティングシステムおよびデバ
イスドライバにより使用されるメモリへのアクセスを可
能にする。 【0017】フックまたは割り込みのフッキング:割り
込みのフッキングとはCPUに新しいインタラプトハン
ドラにアクセスするように再指示する行為である。実際
の”フック”は割り込みが起こる前に実行されなければ
ならない。これは一般には、新しいハンドラのアドレス
を割り込みベクタテーブルの適当なロケーションにセッ
トすることにより行なわれる。しかしながら、これは、
オペレーティングシステムのカーネルが常に割り込みベ
クターテーブルを管理し、他のプログラムがテーブルを
変更すると、元のハンドラのアドレスをリストアするマ
イクロプロセッサのインテル80286−互換ラインの
NMI割り込みの場合には、必ずしも可能でない。それ
ゆえ、NMIインタラプトをフックするために、この発
明では、この発明のリジューム処理ドライバを実行させ
るオリジナルハンドラの初めに”ジャンプ”マイクロプ
ロセッサ命令をセットする。 【0018】I/Oチャンネルチェックまたはパリティ
エラー:これは、ハードウエアでI/Oパリティエラー
を検出する拡張ボードにより生じる致命的なシステムエ
ラーである。 【0019】NMI:CPUに対して外部からマスク可
能であるが、CPUは無視することのできない、マスク
不可能な割り込みである。例えば、東芝製T3100S
Xラップトップコンピュータでは、2通りの方法でNM
Iを発生することができる。すなわち、(1)I/Oチ
ャンネルチェックエラーによる方法と、(2)この発明
で述べるパワーダウンリクエストによる方法である。P
IC:プログラマブルインタラプトコントローラはある
時刻においてどのインタラプトをイネーブル/ディスエ
ーブルにするかを制御する回路である。 【0020】リジュームまたはリジューミング:リジュ
ーミングは(メモリを除いて)コンピュータへの電力を
遮断し、コンピュータのソフトウエア状態を保存しなが
ら、後で復帰させる動作である。 【0021】リング:リングは実行プログラムが動作可
能な、80286互換のマイクロプロセッサにより認識
される特権レベルである。OS/2コードは3つのレベ
ル0、2、3のうちの1つで実行可能である。レベル1
は使用されない。現在の特権レベルはどの命令とメモリ
セグメントをアクセス可能かを決定する。 【0022】セレクタ:セレクタは80286互換のマ
イクロプロセッサのような先進のマイクロプロセッサの
プロテクトモードで使用される値であり、セグメントレ
ジスタにロードすることにより、物理的なメモリセグメ
ントを参照することができる。このセレクタはディスク
リプタテーブル(LDTまたはGDT)のインデックス
として使用される。 【0023】タイル:タイルメモリアドレス値はリアル
モードではセグメントとして、またプロテクトモードで
はセレクタとして共に有効である。システムローダはタ
イルされたコードセグメントの例である。 【0024】この発明の好適実施例によれば、(1)N
MI割り込みベクトルをフックするとともに、リジュー
ムBIOSコードラッパーとして動作するようにOS/
2バージョン1.2オペレーティングシステム下で動作
可能なリジュームドライバを作り、(2)フックをリア
ルモードノンマスカブルインタラプト(NMI)に挿入
し、この発明をOS/2のDOS互換ボックス下で動作
可能にするようにシステムローダを変更し、(3)適当
なコンピュータ上にインストールしたときに”CONF
IG.SYS”ファイル中にリジュームドライバロード
ステートメントを配置するためのシステムイニシャライ
ゼーションプロセスを変更し、および(4)ディスク動
作が終了し、ディスクバッファの内容やデータを消失す
ることなく電力を遮断可能であることをリジュームBI
OSに知らせるようにディスクドライバを変更する。後
で詳述するように、これらの要素は、OS/2バージョ
ン1.2の下でリジューム機能を完全に支持するように
記述または変更しなければならないが、記述した変更や
追加はクレームした発明の実現の一例に過ぎず他の種々
の変形例が以下の説明から明かであることは当業者には
容易に理解できる。 【0025】また、上述した要素は、種々のコンピュー
タ言語の1つで書かれたコンピュータプログラムを変更
もしくは書くことにより実現可能であることは、コンピ
ュータプログラミングの分野の当業者には容易に理解で
きる。好適実施例では、80x86互換アセンブラ言語
(機械言語)を用いてこの発明を実現している。これ
は、この発明がデバイスドライバとして実現されている
からである。しかしながら、例えばリジュームドライバ
を実現するときは、他の適当な言語を使用可能である。
以下に述べる実施例の説明では特に断わりが無い限り、
アセンブラ言語を使用するものとする。 【0026】また、マイクロソフトマクロアセンブラバ
ージョン5.10およびマイクロソフトセグメントーイ
クスキュータブルリンカバージョン5.03(共に米国
マイクロソフト社製)を用いてデバイスドライバをアセ
ンブルし、この発明の他のソースコードをリンク可能で
あるが、他社の同様のアセンブラおよびリンカを用いる
ようにしてもよい。 【0027】さらに、上述の要素は、OS/2オペレー
ティングシステムの製造元であるマイクロソフト社製の
バイナリアダプションキット(BAK)および関連する
ソフトウエアツールおよびマニュアルを用いて即チェッ
クし変更する事が可能である。BAKは、この明細書で
述べた変更と追加をどのようにして実現するかについて
のドキュメンテーションを提供するバイナリアダプテー
ションガイド(BAG)を含む。このドキュメンテーシ
ョンに加えて、マイクロソフト社から提供される”アド
バンストOS/2プログラミング”(著者:レイ ダン
カン)のような本がこの発明を実現する上で有効であ
る。 【0028】最後に、この発明のインプリメンテーショ
ンをデバッグする際には、マイクロソフト社のカーネル
デバッガを用いてドライバ内のエラー箇所を見つけるこ
とができる。しかしながら、このデバッガを用いてリア
ルモードのNMI割り込みベクトルをフックすることは
できない。これはデバッガがこのベクトルそのものをフ
ックするためである。それゆえ、リアルモードNMIデ
バッグを行なうには、コードを目視検査するか、コード
中にホルト(HALT)命令を意図的に複数箇所に挿入
して実行経路がある経路を通過したかどうかを調べる必
要がある。 【0029】この発明のリジュームドライバを完全にテ
ストするには、プロテクトモードおよびリアルモードの
両方でI/Oチャンネルチェックエラーを発生させる必
要がある。これはソフトウエアにより発生できないもの
であり、また通常ハードウエアにより発生できないの
で、拡張シャーシを用いてこの機能を実現可能である。
好適実施例では、1本のワイヤ線がA1ラインにはんだ
ずけされた拡張ボードを有した東芝製拡張シャーシをコ
ンピュータの拡張コネクタ(図1の119)に接続して
いる。I/ONMIを任意に発生させるためには、A1
線を単にグラウンドに落とすことにより、I/Oチャン
ネルチェックNMIを迅速に発生させることができる。 【0030】図1は好適実施例において、この発明が動
作可能なマイクロコンピュータのブロック図である。図
1に示すマイクロコンピュータは”東芝T3100SX
あるいはT2000”ラップトップ”コンピュータのよ
うな、インテリジェントパワーサプライ”を有し、OS
/2を実行可能な種々のマイクロコンピュータの1つで
ある。図1に示す構成はコンピュータにより異なるが、
この発明の動作に必要なコンピュータシステムの関連部
分(”インテリジェントパワーサプライ”を含む)は変
わらない。従って、図1は例示に過ぎない。 【0031】図1において、システムバス100はシス
テム構成要素101乃至125に接続されている。中央
処理装置(CPU)101は好適実施例では、OS/2
バージョン1.2オペレーティングシステムを実行可能
なインテル80286互換マイクロプロセッサから成
り、図1のコンピュータシステム全体の機能を制御す
る。好適実施例では、CPU101は後述する図5乃至
図11のフローチャートに示される機能を実行する。さ
らに、CPU101は、後述する電源回路117の要部
を形成する電力制御CPU117Aに対してホストCP
Uとして機能する。 【0032】リードオンリメモリ(ROM)102はR
OMのベーシック入出力システム(BIOS)(明示せ
ず)を含む、固定のコンピュータプログラムおよびそれ
に伴うデータを格納する。好適実施例では、ROM B
IOSはCPU101のリアルモードで動作可能なリジ
ューム処理プログラムを格納する。例えば、東芝社製T
3100SXラップトップコンピュータはCPU101
として80386SXマイクロプロセッサを使用し、8
0386SXがリアルモードのときに動作可能に設計さ
れたリジューム処理プログラムをROM102に格納し
ている。 【0033】ランダムアクセスメモリ(RAM)103
は変更可能なプログラムおよびCPU101により処理
されるデータを格納する。さらに、RAM103は、実
行中のプログラムに対して、リジューム処理が必要かど
うかを示すリジュームモードフラッグを格納する。この
フラッグについては後で詳述する。 【0034】ダイレクトメモリアクセス(DMA)10
4はマイクロコンピュータシステムの種々の構成要素間
のダイレクトメモリアクセスを制御する。プログラマブ
ルインタラプトコントローラ(PIC)105はある時
刻において、どのマイクロプロセッサインタラプトをイ
ネーブルにするかを制御し、CPU101により実行さ
れるコンピュータプログラムにより変更可能である。プ
ログラマブルインターバルタイマ(PIT)106は実
行中のコンピュータプログラムによりセット可能であ
り、指定されたタイムインターバルをカウントダウンす
る。リアルタイムクロック(RTC)107はその日の
現在時刻をCPU101に知らせるためのものであり、
マイクロコンピュータの電源が落ちたときに、その機能
を継続させるための専用電源107A(例えばバッテ
リ)を有する。 【0035】相対的に大きなメモリ容量を有する拡張R
AM108をマイクロコンピュータの本体の専用カード
スロットに介挿可能であり、バックアップ電源VBKが
供給される。リジューム機能データは、バックアップ電
源VBKが供給されたバックアップRAM109に格納
可能である。 【0036】ハードディスクパックはマイクロコンピュ
ータシステム本体の専用収納部に脱着可能に介挿可能で
あり、好適実施例では、3.5インチハードディスクド
ライブ(HDD)110Bとこのドライブへのアクセス
を制御するハードディスクコントローラ(HDC)11
0Aから成る。以下のコントローラは、それぞれ対応す
る装置へのアクセスを制御するとともに、対応する装置
をバス100に接続する。フロッピーディスクコントロ
ーラ(FDC)111Aはフロッピーディスクドライブ
(FDD)111Bおよび/またはオプションの外部フ
ロッピーディスクドライブ(外部FDD)111Cを接
続する。プリンタコントローラ(PRT−CONT)1
12Aはオプションのプリンタ112Bを接続する。ユ
ニバーサルアシンクロナスレシーバトランスミッタ(U
ART)113AはオプションのRS−232Cインタ
ーフェースユニット113Bを接続する。キーボードコ
ントローラ(KBC)114Aはキーボード114Bを
接続する。ディスプレイコントローラ(DISP−CO
NT)115Aはガスプラズマディスプレイ(PDP)
115Bおよびオプションの陰極線管(CRT)115
Dを接続する。 【0037】DISP−CONT115Aはディスプレ
イイメージデータを格納するビデオRAM(VRAM)
115Cに関連している。VRAM115Cにはバック
アップ電源VBKが供給される。 【0038】電源制御インターフェース(PS−IF)
116はシステムバス100を介してCPU101に電
源回路117を接続する。ユーザがスイッチSWをオン
にすることにより電力制御CPU(PC−CPU)11
7Aがマイクロコンピュータシステムの情報を受信する
と、電源制御CPU117Aが電源回路117を制御し
て、PS−IF116を介してノンマスカブルインタラ
プト(NMI)信号をCPU101に送る。さらに、N
MI信号は、メインバッテリ(M−BATT)117B
(後述)により供給される電力がロウレベルになると、
電源回路117により発生可能である。ACアダプタ1
18は商用交流(AC)電力を整流および平滑し、特定
の電圧のDC電力を出力する。ACアダプタ118は、
マイクロコンピュータシステムの各構成要素に電力を供
給する電源回路117に接続される。 【0039】メインバッテリ(M−BATT)117B
は好適実施例では脱着可能なリチャージャブルバッテリ
で構成され、電源回路117に接続される。サブバッテ
リ(S−BATT)117Cは好適実施例では、コンピ
ュータ本体の側面に取り付けられたリチャージャブルバ
ッテリで構成され、2次バッテリとして動作し、電源回
路117に接続される。最後に、拡張コネクタ119は
バス110に接続され拡張回路を構成要素に接続可能に
する。 【0040】図2は、この発明のリジューム処理機能の
全体フローを示す。特に、好適実施例におけるこの発明
の動作の流れは、図2のステップ201乃至207に示
す7つの汎用ステップから成る。以下、これらの7つの
ステップを一般的に述べ、さらに図7乃至図11を参照
して後で詳述する。 【0041】初めにステップ201において、”リジュ
ームNMIが発生した時のアクティブタスク”というの
は、リジューム処理を開始するための信号を受け取った
とき、コンピュータシステムが動作している状態に関連
している。特に、パワーダウンの信号がCPUにより受
信されるとホストCPU(図1の構成要素101)の複
数の動作モードの1つでコンピュータプログラムを動作
可能である。パワーダウン信号は、コンピュータシステ
ムのユーザが電源スイッチ(図1の構成要素SW)を付
勢したときに電源回路(図1の構成要素117)により
発生される。パワーダウン信号はCPU上で発生される
ノンマスカブルインタラプト(NMI)信号である。 【0042】ステップ202において、”リジュームド
ライバ(RESUME$)”はNMIがCPUにより検
出された後に実行されるリジューム処理ドライバであ
る。好適実施例では、リジュームドライバはコンピュー
タが最初にイニシャライズされるときロードされるイン
ストール可能なデバイスドライバである。特に、ドライ
バのファイルネームは”DEVICE=”ステートメン
トを有した”CONFIG.SYS”構成ファイルに配
置され、コンピュータシステムが最初にブートされると
きにロードされる。この発明のリジューム処理ドライバ
はOS/2”ベースドライバ”(例えばBASEDD0
1)の一部としてあるいはOS/2OEMHLPの一部
として実現可能である。しかしながら、現行のOS/2
システムの設計し直しの程度を最小に抑えるために、ま
たこの発明のリジューム処理ドライバはある種のコンピ
ュータで使用されるように設計されているので、この発
明のリジューム処理ドライバは好適実施例によるインス
トール可能なデバイスドライバである。もちろん、当業
者にはこの発明を実現可能な種々の方法を容易に推考可
能である。 【0043】ステップ202において、この発明のリジ
ューム処理ドライバはNMIがCPUにより検出され、
NMIがパワースイッチがオフされたことにより発生さ
れたと判断された後に、実行される。このとき、リジュ
ームドライバはOS/2に関連するある種のデータをコ
ンピュータシステムメモリの適当な領域にセーブするた
めの種々のステップを実行する。この後、リジュームド
ライバは制御をあらかじめ存在するROM BIOSの
リジュームコードに渡す。ROM BIOSリジューム
コードはさらにリジューム処理機能を実行し、メモリを
除いて、コンピュータシステムの各種構成要素に供給さ
れている電力を物理的に遮断する。従って、ステップ2
02に示す、この発明のリジュームドライバは、東芝製
ラップトップのような種々のコンピュータに見られるあ
らかじめ存在する”ラッパー”として作用する。すなわ
ち、リジュームドライバはOS/2オペレーティングシ
ステムに固有のレジスタとデータおよび/またはOS/
2が動作する先進マイクロプロセッサをセーブし、標準
のROM BIOSリジューム処理ルーチンがその機能
を適当に実行可能な状態にコンピュータシステムをセッ
トし、その後種々の構成要件への電力供給を遮断する。 【0044】図2のステップ203の”ROM BIO
Sリジュームコード”は、上述したように、この発明の
リジュームドライバが実行された後実行されるROM
BIOSリジュームコードルーチンである。好適実施例
では、ROM BIOSリジュームコードは、”リアル
モード”で動作しているときに、コンピュータシステム
のCPU(図1の構成要素101)に関連する必要なレ
ジスタおよびデータのすべてをセーブするように設計さ
れている。それゆえ、もしこのモードで動作していない
のであれば、ステップ202のリジュームドライバがス
テップ203のROM BIOSリジュームコードに制
御を渡すまえに、この発明のリジュームドライバはCP
Uをリアルモードにセットする。このプロセスは後で詳
述する。リアルモードに関連するレジスタおよびデータ
をセーブするためにROM BIOSリジュームコード
が必要なステップをすべて実行した後、”コンピュータ
停止その後電源オン”を実行する。好適実施例では、こ
のステップは、コンピュータシステムの状態に関連す
る、以前にセーブしたレジスタおよびデータを格納する
システムメモリを除いてコンピュータシステムのすべて
の構成要素の電源供給を遮断する。CPUの指示によ
り、電源回路(図1の構成要素117)により電源が遮
断される。ユーザが後に電源スイッチ(図1の構成要素
117)を押すと、電源回路は、コンピュータシステム
の種々の構成要素に電力を再び供給し、制御はステップ
205に渡される。 【0045】ステップ205の”ROM BIOSリジ
ュームコード”はステップ203と反対の機能を実行
し、ステップ204で電源が遮断されたとき実行されて
いたステップ203のルーチンと同じROM BIOS
リジュームルーチンである。ステップ205はマイクロ
プロセッサのリアルモードに関連する、以前セーブした
レジスタとデータを復帰(リストア)し、制御をステッ
プ206のリジュームドライバに戻す。上述したよう
に、ステップ205のROM BIOSコードはT31
00SXラップトップコンピュータのような東芝製コン
ピュータに見られるコードから成る。ステップ206
の”リジュームドライバ(RESUME$)”はステッ
プ202と逆の機能を実行し、ステップ202と同じド
ライバにより実行される。ステップ206は以前セーブ
したOS/2に関連するレジスタおよびデータ、並びに
80286互換マイクロプロセッサの関連するモードを
リストアする。ステップ206を終了後、制御はステッ
プ207の”リジュームNMIが発生したときのアクテ
ィブタスク”に制御を渡す。ステップ207はステップ
201でリジューム処理を開始するために電源スイッチ
が最初に押されたとき実行されていたプログラムであ
る。このとき、以前に実行されていたプログラムが再び
実行される。 【0046】上述したように、この発明のリジューム機
能をサポートするために、この発明は必要に応じてノン
マスカブルインタラプト(NMI)(インタラプト2)
を”フック”してコンピュータシステムのユーザが電源
スイッチ(図1の構成要素SW)を押したことを検出す
るためにリジュームデバイスドライバを指し示す必要が
ある。しかしながら、これはNMIインタラプトハンド
ラでは不可能である。これは、システムカーネルが常に
割り込みベクトルテーブルを管理し、他のプログラムが
そのテーブルを書換えようとしたとき元のハンドラのア
ドレスをリストアするためである。この制約を回避する
ために、この発明のリジュームドライバは必要に応じて
OS/2ローダとカーネルコードを”パッチ”し、80
286のリアルモードとプロテクトモードのNMI割り
込みをフックする必要がある。この方法は通常良い技術
とは考えられていないが、ベクトルテーブルを直接変更
不可能なので好適実施例では行なわなければならない。
NMI割り込みの”フック”(例えばパッチ)の詳細に
付いては図3および図4に関連して後述する。将来発表
されるOS/2において割り込みベクトルのエントリを
直接変更可能になれば、ここで述べるパッチ処理は必要
なくなり、ベクトリエントリを直接変更可能となる。 【0047】リアルモードおよびプロテクトモードでの
NMIベクトルの”フック”はこの発明のリジュームド
ライバの初期化コードが行なう。リアルモードNMIベ
クトルは割り込みベクトルテーブル(IVT)内に設け
られ、プロテクトモードNMIベクトルは割り込みディ
スクリプタテーブル(IDT)内に設けられる。上述し
ように、OS/2カーネルは定期的にこれらのテーブル
を管理し、OS/2カーネルがロード後、テーブル内に
セットされた新しい値に書き換える。それゆえ、上述し
たように、IVTおよびIDTで指定した割り込みハン
ドラのロケーションを直接変更するよりも、元のベクト
ルを変えずに残しておき、各ハンドラの第1ステップを
変更して、この発明のリジュームドライバへのジャンプ
機械語命令を実行するように構成している。この方法で
は、実際にこのコードを重ね書きしているので、元のハ
ンドラにジャンプで戻る必要がない。これは、この発明
のリジュームドライバがすべてのNMI発生に対処する
ので可能である。 【0048】以下、リアルモードにおけるNMI割り込
みベクトルとプロテクトモードにおけるNMI割り込み
ベクトルの両方をフックするのに必要なステップについ
て述べる。これらのステップを全体のリジューム初期化
および実行シーケンス中にセットする詳細な説明につい
ては、後述する。 【0049】図3はリアルモードNMIベクトルを”フ
ック”するのに必要なステップを示す。基本的には、O
S/2システムローダ300は次の機能を実行するよう
に変更する必要がある。第1にローダは標準のリジュー
ムROM BIOSを指し示す既存のNMIベクトルを
セーブする必要がある。OS/2カーネルはいかなる変
更をも管理しているので、IVT(構成要素301)の
実際のNMIベクトルは変更できないので、元のハンド
ラの第1ステップは、この発明のリジュームドライバに
対応するアドレスにジャンプするように変更する必要が
ある。しかしながら、もとのハンドラはROM BIO
Sにあり(変更できないので)、次の最良の解決方法は
ローダ自身のリアルモードNMIのIVTエントリを変
更することである。これによりカーネルはこの新しいベ
クトルが正しいベクトルであると考える。しかし、ロー
ドする時点で、リジュームドライバがメモリのどこにロ
ードされるかわからないので、図3に示すように、IV
T NMIベクトル(構成要素301)はローダ内のダ
ミーハンドラを指し示すように設定されている。ダミー
ハンドラは図3の構成要素302Aおよび304に示す
ように5つのNOP(no operation)命令
と、BIOS NMIハンドラへのジャンプ命令により
構成されている。 【0050】従って、ホストコンピュータシステムがこ
の発明のリジューム機能をサポートしているかどうかに
関係無く、リアルモードNMIベクトルはローダに作ら
れたダミーハンドラルーチンを指し示す。次に、コンピ
ュータがこの発明をサポートしていないと判断される
と、この発明のリジュームドライバはロードされず5つ
のNOP命令は残る。その後、リジュームNMIが発生
すると、コンピュータはダミーハンドラにジャンプし、
5つのNOP命令を実行し、もとのROM BIOSリ
ジュームルーチンにジャンプする。 【0051】しかしながら、コンピュータシステムがこ
の発明のOS/2リジュームドライバをサポートしてい
る場合には、リジュームドライバはメモリにロードさ
れ、構成要素302Bおよび303に示すように、NO
P命令がパッチされてこの発明のリジュームドライバへ
のジャンプ命令が実行される。その後、リジュームNM
Iが発生すると、コンピュータはダミーハンドラにジャ
ンプし、次にパッチされたジャンプ命令に続くこの発明
のリジュームドライバへ即ジャンプする。 【0052】プロテクトモードのNMI割り込みベクト
ルをフックするには、リアルモードにおけるNMI割り
込みベクトルをフックするのに必要なステップと類似し
たステップを付加する必要がある。図4はプロテクトモ
ードにおけるNMI割り込みベクトルをフックするのに
必要なステップを示す。初めに、カーネル(図4の構成
要素407)内の元のプロテクトモードのNMIハンド
ラのアドレスをインタラプトディスクリプタテーブル
(IDT)(図4の構成要素401)から得る必要があ
る。このアドレスはコードセグメントを参照するための
もので、このセグメントへのライトアクセスは制限され
る。 【0053】それゆえ、この制約を回避するために、I
DTから得られたコードセレクタをグローバルディスク
リプタテーブル(GDT)(コードディスクリプタ40
2)へのインデックスとして用いて、元のハンドラの物
理メモリアドレスを得る必要がある。これが行なわれる
と、一般的な”Dev_Help”機能(例えば、”D
evHlp_PhysToVirt”)を介して物理ア
ドレスを仮想アドレスに変換可能である。”Dev_H
elp”機能はデバイスドライバとOS/2カーネルと
の間のインターフェースを可能にする。デフォルト値に
より”DevHlp_PhysToVirt”はセレク
タがデータディスクリプタ(構成要素403)を指し示
すようにする。この”Dev_Help”機能とこの機
能を利用するための関連するドキュメンテーションは、
マイクロソフト社のOS/2に関連する開発ソフトウエ
アに含まれており、適当な”INCLUDE”コマンド
によりリジュームドライバコードにその機能を盛り込む
ことが可能である。 【0054】セレクタはデータディスクリプタを指し示
しているので、元のNMIハンドラ(構成要素407)
の第1命令を重ね書きすることが可能である。ファージ
ャンプ命令(構成要素405)はリジュームドライバの
プロテクトモードコードセレクタとNMIハンドラルー
チンのオフセットを用いて、ジャンプ先としてパッチさ
れる。(従って図4の構成要素406にジャンプする)
リアルモードNMIベクトルの”フック”とは反対に、
この場合には、実際には既存コード(NOP命令ではな
い)(構成要素404)へのパッチを行なうので、元の
プロテクトモードハンドラは使用できない。しかしなが
ら、元のハンドラの機能は、NMIが発生したときに、
レジスタダンプを表示し、トラップメッセージを表示
し、最後にシステムを停止するだけなので、問題はな
い。 【0055】上述したOS/2システムローダへの変更
に加えて、この発明のリジューム機能を完全にサポート
するにはOS/2ディスクデバイスドライバを変更する
必要がある。これは、ROM BIOS内の標準リジュ
ームルーチンは、ディスクBIOSがあるレジスタを変
更することを前提として作られているからである。しか
しながら、OS/2バージョン1.2のプロテクトモー
ドでは、ディスクBIOSコードは使用されない。従っ
て、以下に述べるステップを実行するためには、ディス
クドライバを変更しなければならない。以下に述べる好
適実施例によるディスクドライバの変更は相対的に簡単
であり、当業者には、OS/2ディスクドライブコード
の変更は容易である。 【0056】初期化時に、この発明の好適実施例による
ディスクドライバは、この発明のリジューム機能をサポ
ート可能な、例えば東芝製T3100SXラップトップ
コンピュータのようなコンピュータシステム上で走って
いるかどうか判断する。この発明をサポート可能なら、
リジュームフラッグがセットされ、この発明のリジュー
ムドライバが実際にロードされているかどうかに関係な
く次のステップが実行される。なんらかの理由により、
リジュームドライバが実際にロードされていない場合に
は、後で詳述するように悪い影響を及ぼさない。 【0057】ディスクアクセスが行なわれる前に必ず別
のフラッグがセットされ、ディスクアクセスが完了する
とフラッグがクリアされる。従って、リジュームBIO
Sはこのフラッグをチェックすることにより、ハードデ
ィスクドライブ(HDD)が現在アクティブかどうかを
判断することができる。HDDが現在アクティブであれ
ば、リジュームBIOSは電力NMIマスクレジスタの
ビットをセットし、制御をこの発明のリジュームドライ
バに渡す。ディスクアクセスを終了後、リクエストキュ
ーをチェックする前に、ディスクドライバは電力NMI
レジスタのビットをセットする。対応するマスクレジス
タビットがリジュームBIOSによりセットされると、
別のNMIが発生される。しかしながら、今度は、リジ
ュームBIOSはHDDがインアクティブであることを
検出し、ノーマルリジュームBIOSルーチンを実行し
てシステムの電源を遮断する。次に、電源が再度供給さ
れると、ディスクドライバはどこで中断されたかを調べ
る。(すなわち、リクエストキューがあるかどうか調べ
る) 【0058】最後に、この発明を実現するためにOS/
2を変更しなければならない要素として初期化コードが
ある。好適実施例では、この発明のリジュームドライバ
はインストール可能なデバイスドライバから成る。好適
実施例では、このインストール可能なデバイスドライバ
は”RESUMT.SYS”という名前がつけられてい
る。もちろん他の名前をつけてもよい。さらに、この発
明のリジューム機能は、インテリジェントパワーサプラ
イを有し、OS/2バージョン1.2で動作可能な、東
芝製T3100SXのようなコンピュータシステム上で
のみ動作可能である。そのようなコンピュータシステム
が使用される場合にのみ、リジュームドライバがインス
トールされるようにインストレーションコードを変更す
る必要がある。リジュームドライバをインストールする
ためのユーザの手間を最小限にするために、好適実施例
では、インストレーションコードの変更はユーザから見
えるように設計されている。この変更を以下述べる。 【0059】配布されたディスケット上のリジュームド
ライバコードを関連するコンピュータシステムに含める
ようにするには、OS/2開発に関連するBUILD.
CMDおよびMKOS2.CMDコマンドファイルを変
更する必要がある。BUILD.CMDは(1)リジュ
ームサブディレクトリに行き、リジュームドライバコー
ドをアセンブルしてリンクし、(2)バイナリDISK
2サブディレクトリ内の最後のRESUME.SYSフ
ァイルをパックするように変更する必要がある。(DI
SK2が選択されるのは、OS/2バージョン1.2で
は、他のインストール可能なドライバが常駐しているか
らである。もちろん、他のディスクを使用してもよ
い。)MKOS2.CMDはOS/2インストレーショ
ンディスケットを発生する機能を有し、リジュームドラ
イバ(例えばRESUME.SYS)をインストレーシ
ョンDISK2にコピーするように変更する必要があ
る。 【0060】ファイルSYSINST.MSはインスト
レーションディスケットからユーザのハードディスクド
ライブの適当なサブディレトリにコピー(アンパック)
された全ファイルのリストを保持する。このファイルは
初期化時にOS/2インストレーションプログラム(O
S/2バージョン1.2のSYSINST2.EXE)
により使用される。リジュームドライバのバイナリファ
イル名はDISK2のリストに書かれる。 【0061】最後に、SYSINST2.EXEを変更
して(1)適当なコンピュータ(例えば東芝製T310
0SX)が使用されているか、また使用されているなら
(2)リジュームドライバをロードするようにユーザの
CONFIG.SYSを編集する必要がある。OEMH
LP機能81(ヘキサ)(例えばGet Machin
e Type and Mode)を用いてインストー
ルされたマシンを識別することができる。SYSINS
T2.EXEはマシンがリジュームドライバをサポート
可能な場合、次のコマンドをCONFIG.SYSファ
イルにセットするように変更する必要がある。 DEVICE=C: OS2 RESUME.SYS 【0062】好適実施例によれば、この発明のリジュー
ムドライバ自身が、上述したようにリアルモードのNM
IベクトルおよびプロテクトモードのNMIベクトル
を”フック”するように初期化の一部を実行し、NMI
を受信後実行されるデスティネーションアドレスを形成
する。図5乃至図11はリジュームドライバが最初に初
期化され次にNMIの発生により実行されるステップを
示すフローチャートである。これらの図について以下に
述べる。 【0063】図5のステップ501乃至509はリジュ
ームドライバをロードしたとき最初に実行される初期化
ステップを示す。ステップ501はシステム開始時にO
S/2デバイスドライバにより操作されるリジュームド
ライバ(好適実施例では、RESUME.SYS)をロ
ードするプロセス示す。ライン ”DEVICE=
C: OS2 RESUME.SYS”がCONFIG.
SYS ファイルからリードされリジュームコードおよ
びデータがメモリにロードされる。初期化コマンドリク
エストパケットにより初期化ルーチンが実行される。次
に、ドライバ初期化プロシージャが実行され、リジュー
ムドライバの初期化が完了する。 【0064】リジュームドライバの初期化ルーチンは種
々の機能を実行する。初めに、ステップ502はホスト
コンピュータシステムがこの発明のリジューム機能をサ
ポートするタイプのコンピュータシステムかどうか判断
する。この判断は、コンピュータシステムのタイプを示
すコードを含む適当なメモリロケーション(例えば東芝
製コンピュータの場合ROM BIOSアドレス F0
00:FFFA)をリードするとともに、標準ROM
BIOSリジューム機能がサポートされるかどうかを示
す適当なメモリロケーション(例えば東芝製コンピュー
タの場合ROMBIOSアドレス F000:E024
等)を読むことにより行なわれる。特にコンピュータシ
ステムはOS/2オペレーティングシステム(例えば、
80286互換のマイクロプロセッサを有するコンピュ
ータシステムー図1のCPU101)で動作可能でなけ
ればならないので、インテリジェントパワーサプライ回
路(図1の構成要素117)を持つ必要があるととも
に、ROM BIOSに既存のリジューム処理機能を持
つ必要がある。好適実施例では、東芝製T3100SX
あるいはT2000SXラップトップコンピュータがこ
の基準を満足しており、ステップ502ではこれらのマ
シンを具体的に挙げている。しかしながら、インテリジ
ェントパワーサプライを有し、OS/2で動作する他の
コンピュータシステムを用いてこの発明を実現してもよ
い。従って、T3100SXおよびT2000SXは例
示に過ぎない。不適当なコンピュータシステムであると
判断された場合には、ステップ508に示すようにドラ
イバインストレーションメッセージをユーザに表示し、
初期化ステップを完了する。(ステップ509) 【0065】他方適当なコンピュータシステムであると
判断されると、ステップ503に示すように”オートデ
ィスプレイオフ”(これは、OEMHLPへのヘキサ8
8IOCtlコールを介してコール可能である)をサポ
ートするようにOEMHLPが付けれる。これは、好適
実施例では、OEMHLPファイル名(例えばOEMH
LP$)およびそれに付随するOEMHLPデータ(例
えばリアルモードおよびプロテクトモードでのエントリ
ポイントおよびデータセグメント)のオフセットをそれ
ぞれBXレジスタおよびDIレジスタに移動し、その後
適当な”DEv_Help”(例えばDevHlp_a
ttachdd)をコールすることによりOEMHLP
に付加することにより行なわれる。その後、一般的なO
EMHLP入出力制御(IOCtl)リクエストパケッ
トデータをリクエストパケットのためにリザーブされた
メモリロケーションにロードし、割り込みが発生される
毎にこの情報をリロードする必要を無くしている。この
ようなデータはパケット長、パケットコマンド、GIO
カテゴリ、GIOファンクション等を含む。 【0066】ステップ503を実行後、図5のステップ
504が実行される。ステップ504では、80286
互換のマイクロプロセッサアーキテクチャに従って、G
DT自身を指し示すグローバルディスクリプタテーブル
(GDT)メモリセグメントセレクタを作成するととも
に、64Kリミットのダミーセレクタを作成する。GD
Tセレクタはこの発明のリジュームドライバを介してG
DTのディスクリプタをアクセスするのに用いられる。
最後に、後述するようにリアルモードに切り替えるとき
にダミーセレクタが用いられる。 【0067】初めに、2つのセレクタを指し示すセレク
タを”Dev_Help”機能の適当な機能(例えば”
DevHelp_AllocGDTSelecto
r”)を用いて作成する。次に、適当なアドレスをAX
レジスタおよびBXレジスタにロードし、0(64Kリ
ミットの場合)をCXレジスタにロードし、適当なセレ
クタを選択し、”Dev_Help”の適当なファンク
ション(例えば”DevHlp_PhysToGDTS
elector”をコールすることにより、第1セレク
タがGDTを指し示すようにする。最後に第2セレクタ
を同様にして64Kリミットのダミーセレクタを指し示
すようにする。 【0068】2つのセレクタが作られた後、上述したよ
うに、プロテクトモードデータ、コードセレクタ、なら
びにリアルモードセグメント値がステップ505に示す
ようにコードセグメントの上部にセーブされる。この情
報はドライバのコードセグメントに保持される必要があ
る。これは、NMIが発生し、リジュームドライバが実
行されると、DSレジスタは中断されたタスクのデータ
セグメントを指し示しているためである。特に上述のデ
ータをコードセグメントにセーブするために次のステッ
プが実行される。 【0069】(1)GTD上部の物理アドレスが検索さ
れ、”Dev_Help”ファンクション(例えばDe
vHlp_PhysToVirt”)を介して仮想アド
レスに変換される。(2)デイスクリプタタイプは”D
evHlp_PhysToVirt”ファンクションの
デフォルト値であるDATAではなくCODEが設定さ
れる。(3)ディスクリプタのアトリビュートを実行可
能、読みだし可能、一致、およびアクセス可能に設定す
る。(4)CS(コードセグメント)の物理アドレスを
例えば、”DevHlp_PhysToVirt”ファ
ンクションにより仮想アドレスに変換し、DATAセレ
クタを作る。(5)リアルモードデータセグメント、プ
ロテクトモードデータセレクタ、およびプロテクトモー
ドコードセレクタをリジュームドライバCODEセグメ
ント内の前もってリザーブしたメモリロケーション(例
えばCODEセグメントの上部)にコピーする。このと
き、GDTの仮想アドレスは適当な”Dev_Hel
p”ファンクション(例えばDevHlp_UnPhy
sToVirt)を介して物理アドレスに変換される。 【0070】ステップ505が実行された後、ステップ
506に示すようにタイマハンドラがインストールされ
る。ある”Dev_Help”はINIT時に実行でき
ないのでタイマハンドラが必要となる。この制約を回避
するために、上述したプロテクトモードおよびリアルモ
ードのNMIベクトルをフックするのに必要なコードを
有するタイマハンドラが作られる。タイマハンドラはマ
イクロプロセッサの”リング0”特権レベル、すなわち
最高特権レベルで実行される。 【0071】タイマハンドラを作るために、実際のタイ
マハンドラルーチン(後述)のオフセットがレジスタA
Xにセットされ、遅延(例えば1/3秒)がレジスタB
Xにセットされる。つぎに、適当な”Dev_Hel
p”ファンクション(例えばDevHlp_TickC
ount”)がコールされタイマハンドラをインストー
ルする。その後、図6で後述するようにタイマハンドラ
が適当な時間に実行される。 【0072】タイマハンドラがステップ506でインス
トールされるとステップ507が実行される。初めに、
この発明のリジュームコードのどの部分が初期化後廃棄
可能かがOS/2に知らされる。これは初期化後に残っ
たコードセグメントおよびデータセグメント内の最終ア
ドレスに相当するアドレスを適当なメモリロケーション
にロードし、適当なセグメントの終わりを示すポインタ
として使用することにより行なわれる。つぎに、ドライ
バの名前と関連する著作権情報を示すドライバ名および
著作権メッセージを表示可能である。これはもちろんオ
プションであるがリジュームドライバソフトウエアの著
作権を表示するために好適実施例では行なわれる。 【0073】ステップ507が実行されると、初期化プ
ロセスが完了し、ステップ509が実行される。この時
点で残りのシステムの初期化をOS/2により実行可能
であり、最後に標準OS/2の環境が入力され、ユーザ
はコンピュータシステムに対してノーマルオペレーショ
ンを実行することができる。しかしながら、NMIの形
でパワーオフリクエストがインテリジェントパワーサプ
ライ(図1の構成要素117)により受信されると、こ
の発明のリジュームドライバが実行される。メインリジ
ュームドライバルーチンの動作は図7乃至図11を参照
してさらに詳述する。 【0074】図6を参照して、リアルモードベクトルお
よびプロテクトモードベクトルをフックするタイマハン
ドラルーチンを示す。タイマハンドラルーチンは図5の
ステップ506に示すように初期化処理によりインスト
ールされる。適当なときに、タイマハンドラルーチンは
以下に述べるように実行される。 【0075】図6のステップ601はタイマハンドラが
最初にコールされるエントリポイントを示している。こ
れはタイマハンドラが前もってインストールされた後に
起こる。上述したように、タイマハンドラは、好適実施
例では、80286互換マイクロプロセッサの最高特権
レベルに対応する”リング0”で実行される。 【0076】ステップ602はタイマハンドラルーチン
が入力された後、タイマハンドラをデインストールする
プロセスに相当する。デインストールプロセスはタイマ
ハンドラのオフセットアドレスをAXレジスタにロード
して、適当な”Dev_Hlp”機能(例えばDevH
lp_ResetTimer)をコールしてタイマをデ
インストールすることにより行なうことができる。 【0077】その後、リアルモードNMIベクトルを”
フック”してこの発明のリジュームドライバを指し示す
ステップ603が実行される。(図3の説明参照)最初
に、アドレス0:0のリアルモードベクトルテーブルへ
の仮想ポインタが、適当な”Dev_Help”機能
(例えばDevHlp_PhysToVirt)を利用
して得られる。次に、上述した変更したOS/2ローダ
(OS2LDR)で作られたダミーNMIハンドラのア
ドレスがリアルモードベクトルテーブル(INT2ベク
トル)で得られる。その後、ダミーNMIハンドラにも
ともとセットされていた5つのNOP命令がこの発明の
リジュームドライバへのファージャンプ命令と置き換え
られる。例えば、ファージャンプコマンド(EAヘキ
サ)が第1のNOP命令と置き換えられ、リジュームド
ライバのオフセットとセグメントがそれ以降のNOP命
令と置き換えられる。リアルモードベクトルテーブルの
仮想アドレスは、例えば”Dev_Help”ファンク
ションの”DevHelp_UnPhysToVir
t”ファンクションにより物理アドレスに変換される。 【0078】リアルモードNMIベクトルに加えて、図
6のステップ604に示すようにプロテクトモードNM
Iベクトルを同様に”フック”する必要がある。(図4
の上述の説明参照)最初に、インタラプトディスクリタ
テーブル(IDT)の仮想アドレスが、適当な”Dev
_Help”ファンクション(例えば、DevHlp_
PhsToVirt)を使用して得られる。次に、ID
T内に格納された元のNMIベクトルが得られ、あらか
じめリザーブしたメモリロケーションに格納される。も
とのNMIベクトルのアドレスはOS/2カーネル内
(CODEセグメント)を指し示すので、セグメントへ
のライトアクセスは制限される。従って、IDTから得
られるコードセレクタを用いてグローバルディスクリプ
タテーブル(GDT)をインデックスし、もとのハンド
ラの物理メモリアドレスを得ることができる。この値
は、適当な”Dev_Help”ファンクション(例え
ばDevHlp_PhysToVirt)を介して仮想
アドレスに変換され、この仮想アドレスのデフォルト値
によりセレクタはDATAディスクリプタを指し示す。
それゆえ、NMIベクトルを効率良く”フック”するた
めに、もとのハンドラの第1命令を重ね書きすることが
可能である。 【0079】その後、もとのNMIベクトルを指し示
す、以前にセーブされたオフセットを用いて参照される
DATAセグメント(NMIハンドラCODEセグメン
トの別名)のオフセットを決定することができる。結果
として得られた仮想アドレスを用いて、この発明のデバ
イスドライバのファーアドレスへのジャンプを元のプロ
テクトモードハンドラの初めにパッチすることができ
る。例えば、ファージャンプ命令(EAヘキサ)を第1
ロケーションにパッチことができ、デバイスドライバ
(オフセットおよびセレクタ)のアドレスを次のメモリ
ロケーションにパッチすることができる。 【0080】ステップ603と604でリアルモードN
MIベクトルとプロテクトモードNMIベクトルを”フ
ック”した後、ステップ605が実行され、タイマハン
ドラルーチンを抜け出す。このステップが完了すると、
この発明のOS/2リジュームドライバルーチンがイン
ストールされ、コンピュータシステムのユーザは電源ス
イッチをオンすることにNMIがCPUに送られ、前記
リジュームドライバルーチンを使用することができる。
以下、リジュームドライバのメインルーチンを構成する
種々のステップを詳細に述べる。従って、これらのステ
ップは実際のOS/2リジューム処理中であってROM
BIOS内の標準リジュームルーチンが実行される前
に行なわれる。 【0081】図7乃至図11に好適実施例におけるこの
発明のリジュームドライバ機能のフローを示す。これら
のフローチャートにより表わされるルーチンは上述した
ように、元のNMIハンドラに効率よくパッチするファ
ージャンプのデスティネーションルーチンを形成する。
図7乃至図11により表わされるルーチンはBIOSコ
ードの”ラッパー”として効率よく作用する。リジュー
ムNMIの場合には、リジュームドライバは、制御をB
IOSに渡す前に処理を行い、電力が復帰し、BIOS
リジューム機能が完了した後ポスト処理を行なう。コン
ピュータシステムは実際には、リジュームBIOSコー
ドの途中でパワーダウンする。 【0082】I/OチャンネルチェックエラーNMI
(パリティエラー)は、好適実施例では、リジュームN
MI以外に唯一発生することのできる他の種類のNMI
であるが、この場合には、この発明のリジュームドライ
バは前処理を行い、制御をBIOSに渡し、システムを
停止する。このとき、マシンは停止され、ユーザはリセ
ットボタンを押してシステムをリブートする必要があ
る。リジュームドライバに続く実際の実行パスはNMI
の発生に関係なく同じである。 【0083】リジューム処理がアクティブになったこと
を示すCMOSメモリロケーションがセットされると、
図7乃至図11に示すステップはNMI検出後実行され
る。リジュームドライバが最初に入力されると(図7の
ステップ701)、ドライバはステップ702に示すよ
うに最初にすべてのインタラプトを(例えばCLIアセ
ンブリ言語命令により)ディスエーブルにする。これ
は、INT2(例えばNMI)がトラップゲートであり
INTゲートではないので、OS/2に必要である。 【0084】次に、ステップ702に示すようにアセン
ブラ言語プログラムに続いて、すべてのレジスタおよび
フラッグがPUSHタイプのコマンドによりスタックに
セーブされる。次に、DSレジスタが適当な値に(CP
Uモードによりセグメントかセレクタのいずれか)セッ
トされ、リジュームドライバが現在のプログラマブルイ
ンタラプトコントローラ(PIC)マスクをセーブしス
テップ703でPICをディスエーブルにする。 【0085】このとき、CPUがリアルモードで動作し
ているかあるいはプロテクトモードで動作しているかが
ステップ704で判断される。この判断は(例えばSM
SW命令を用いて)マシンステータスワードの適当なビ
ットを調べることにより簡単に行なうことができる。C
PUがリアルモードで動作している場合には、ステップ
708にジャンプする。 【0086】プロテクトモードでNMIが検出されたと
きに生じる処理はリアルモードのときよりも複雑であ
る。これは、リジュームBIOSコードに入るまえにC
PUの動作モードを切り替える必要がある。東芝T31
00SXコンピュータでは、BIOSはリアルモードお
よびプロテクトモードの両方で動作するように設計され
ているが、T3100SXBIOSはプロテクトモード
で動作しているときあるバグを有している。したがって
リアルモードで実行するのが望ましい。 【0087】好適実施例では、80286のプロテクト
モードをリアルモードに切り替える2つの方法がある。
第1に、トリプルフォルトを発生することにより”CP
Uリセット方法”を使用することができる。この方法
は、80286CPUと互換性があるという利点があ
る。他の方法は80386命令を使用した80386C
PUモード切り替えである。この方法は、”CPUリセ
ット方法”とは異なり、リアルモードへ切り替えるとき
にCPU(および全レジスタ)がリセットされないので
望ましい。80386CPUモード切り替え命令は設計
が簡潔になるので、好適実施例ではこの方法が用いられ
る。しかしながら、ホストCPUが80386互換マイ
クロプロセッサではなく80286マイクロプロセッサ
の場合には、”CPUリセット方法”を用いることもで
きる。 【0088】CPUが80286プロテクトモードで動
作しているときは、CPUをリアルモードにするために
ステップ705ー707が実行される。しかしながら、
BIOS中にある種の細工がされているマシンでは、最
初のステップを実行しなければならない。 【0089】例えば、この発明のリジュームドライバが
東芝T3100SXラップトップコンピュータで実行さ
れている場合、BIOSの欠陥により次のステップを最
初に実行しなければならない。(1)MSWのモニタプ
ロセッサ(MP)ビットとタスク切り替えビット(T
S)をクリアして”co−processor not
present exceptions”が発生するの
を防止しなければならない。(2)タスクステートレジ
スタ(TSR)がセーブされ、タスクに”not bu
sy”を付してBIOSコードがハングアップしないよ
うにし、(3)ローカルディスクリプタテーブルレジス
タ(LDTレジスタ)を前もってリザーブしたメモリロ
ケーションにセーブする必要がある。これはBIOSが
上述した(1)乃至(3)の動作を行なわないからであ
る。T3100SXに存在する上述した欠陥および他の
BIOSコードの欠陥は他のマシンでは存在するかも知
れないし存在しないかも知れない。このような結果が他
のマシンで発見された場合には、上述したような適当な
手段を講じる必要がある。 【0090】CPUがプロテクトモードで動作している
場合、リアルモードに切り替えるために次のステップ7
05乃至707を実行する必要がある。初めにステップ
705において、CPUモードをプロテクトモードから
リアルモードに切り替えようとしていることを示すフラ
ッグがセットされる。このフラッグは電力が再び復帰し
たときに、モードをリアルモードからプロテクトモード
に切り替える必要があることを示すために使用される。
さらに、ステップ705において、プロテクトモードに
関連するレジスタすなわちSSおよびSPが前もってリ
ザーブしたメモリロケーションにセーブされる。 【0091】ステップ706において、SSレジスタお
よびSPレジスタはリジュームドライバのデータセグメ
ントのスタックを指し示すように変更される。最後にス
テップ707において、CPUはリアルモードに切り替
えられる。この切り替えを行なうためのステップについ
て以下説明する。以下に述べるステップは、インテル社
から発行されているインテル80386DXプログラマ
ーリファレンスマニュアルのページ14ー4に記載され
ているステップの後に続くステップである。 【0092】第1に現在のコードセグメントリミットを
セーブしてリジュームドライバのコードセグメントリミ
ットを64Kになるようにパッチする。次に、CSレジ
スタに新しいセグメントリミットをロードするように次
の命令へのファージャンプを実行する。これは、好適実
施例では、CSレジスタをスタックにプッシュし、次の
命令のオフセットをプッシュし、RETF命令を実行す
ることによりシミュレーション可能である。RETF命
令はスタックから”戻り”アドレスを引き出すので”リ
ターン”命令が実行された後次の命令が実行される。 【0093】次に、セグメントレジスタに、初期化時に
セットしたダミーセレクタがロードされる。このとき、
インタラプトとNMIがディスエーブルされている。
(インタラプトは以前にディスエーブルされ、NMIは
このルーチンがNMIとして取り扱われることによりデ
ィスエーブルされる。) 【0094】特別の80386命令(CPUが8038
6互換と仮定して)を使用してコントロールレジスタ0
(CR0)のプロテクトモードイネーブルビット(P
E)をクリアしてCPUをリアルモードにすることがで
きる。好適実施例では、マイクロソフトマクロアセンブ
ラ80386命令/マクロを使用して以下の如くプログ
ラミングしている。 MOV EAX,CR0 AND EAX,NOT1 MOV CR0,EAX しかしながら、他の同様の命令を80386互換マシン
に用いて同様の効果を得ることができる。 【0095】PEビットがクリアされると、命令キュー
をクリアして適当な値をCSレジスタに入れるために次
の命令へのファージャンプを即実行する必要がある。
(もちろんリアルモードアドレシングを用いて)。 【0096】次に、IDTにリアルモードインタラプト
ベクトルテーブル(IVT)のベース値とリミット値を
ロードする必要がある。最後に、セグメントレジスタD
S,ES、およびSSにドライバのデータセグメントの
リアルモードアドレスをロードする。このときインタラ
プトは再びイネーブルにならない。これはリジュームド
ライバが中断された処理に戻るまでディスエーブルにし
ておく必要があるからである。 【0097】CPUがもともとリアルモードの場合に
は、ステップ704からステップ708にジャンプし、
CPUがもともとプロテクトモードの場合には、ステッ
プ705乃至707が実行された後ステップ708が実
行される。ステップ708では、好適実施例による東芝
コンピュータで動作している場合、指示フラッグをCL
D命令によりクリアする必要がある。これは、このマシ
ンにおけるリジュームBIOSのバグである。従って、
他のマシンの場合、この命令は必要ないかもしれない。 【0098】図8において、リジュームドライバ実行プ
ロセスが図7から続く。図7のステップが実行された
後、図8のステップ709が実行される。ステップ70
9はフロッピードライブがアクティブかどうか判断する
ステップを含む。この判断は以下の理由により行なう必
要がある。すなわち、リジューム機能がオンのときにフ
ロッピードライブがアクティブで、電力が回復する前に
フロッピードライブのフロッピーディスクをユーザが変
更したような危険な状態から守るために必要となる。も
し上述したことが起きると、コンピュータは、フロッピ
ーディスクが変更されたことがわからず、古いフロッピ
ーの内容にもとずいて、新しいフロッピーに書き込み動
作を行なうことになる。 【0099】それゆえ、ステップ709のリジュームド
ライバはフロッピーモーターステータス(0E5ヘキサ
のビット5)をチェックしてフロッピードライブがアク
ティブかどうか見る。フロッピーモータがアクティブな
らば、フロッピードライブはステップ710でリセット
される。(東芝コンピュータの場合、リジュームBIO
Sはフロッピードライブがアクティブならば働かな
い。)またフロッピードライブがアクティブでない場
合、電力が回復してリジュームBIOS内のIRET命
令が実行されると、リストアすべきシステムフラッグが
スタックにプッシュされる。このとき、ステップ711
が実行されリジュームドライバは、あらかじめセーブし
たこのコードのアドレスを用いてもとのBIOSリジュ
ームコードにジャンプすることができる。もとのBIO
Sリジュームコード標準のリジューム処理機能を実行
し、最後にインテリジェントパワーサプライ(図1の構
成要素117)がステップ712においてコンピュータ
の電力をオフにする。 【0100】ステップ712において、コンピュータの
電力がオフになった後で、コンピュータシステムのユー
ザは、図9のステップ713に示すように、インテリジ
ェントパワーサプライに、コンピュータの電力が回復さ
れることを知らせることができる。ユーザはこのときシ
ステムの電源をオフしたときと同じ電源スイッチ(図1
の構成要素SW)を押して知らせることができる。この
スイッチが押されると、コンピュータは、電源オフ時の
BIOSリジュームコードの実行を再開する。BIOS
リジュームコードは各処理を実行してリアルモードレジ
スタおよびデータをリストアし、リジュームドライバが
BIOSをコールした時点でのこの発明のリジュームド
ライバに制御を渡す。 【0101】BIOSリジュームコードがリジュームド
ライバへ制御を渡した後、リジュームドライバはステッ
プ714を実行する。ステップ714はインタラプトを
(例えばCLI命令により)ディスエーブルするステッ
プを含む。これは、好適実施例では、リジュームBIO
Sがインタラプトをオンにしているからである。さら
に、ステップ714はPICが以前にディスエーブルに
されたときセーブされた状態にPICマスクをするステ
ップを含む。 【0102】CMOSリアルタイムクロック設定は、ス
テップ715に示すようにリジュームドライバによりO
S/2のためにリセットする必要がある。これはBIO
Sがこの機能を行なわないためである。例えば、T31
00SXコンピュータの場合、(1)時間軸周波数は3
2、768KHzに設定され、(2)インタラプトレー
トが31.25msになるようにレート選択ビットが設
定され、(3)周期インタラプト、更新完了インタラプ
ト、および24時間モードインタプリテーションがオン
になる。これを行なうための適当な命令が実行される。 【0103】リジュームBIOSから戻ったときに行な
う必要のある上述のステップに加えて、アドレスライン
20(A20)をステップ716でイネーブルにする必
要がある。これは、好適実施例では、BIOSコードが
A20をディスエーブルにするためである。東芝OS/
2はA20がイネーブル状態で動作する。従って、BI
OSから戻ったときに、ゲートA20をイネーブルにし
てOS/2がノーマルな実行を継続できるようにしてや
る必要がある。ゲートA20はキーボードコントローラ
(KBC)(図1の構成要素114A)を用いてイネー
ブルにすることができる。好適実施例では、KBCはイ
ンテルの8042チップで構成される。8042は80
386CPUに比べて遅いので、KBCでゲートA20
を制御するのは、処理速度の観点から問題がある。ゲー
トA20は、(1)キーボードコントローラの入力バッ
ファ(KBC入力バッファ)が空となり、(2)出力ポ
ートに書き込み要求をだし、(3)KBCがコマンドを
処理するのを待ち、(4)KBCの出力ポートにビット
1をセットしたバイトを送り、(5)ゲートA20がイ
ネーブルになるまで、KBCに”ヌルパルス出力ポー
ト”コマンドを送ることによりA20ゲートが”安定”
するまで待つことによりゲートA20はイネーブルとな
る。なお、詳細については、IBM ATテクニカルリ
ファレンスマニュアル(IBM社)のページ1ー51、
1−53、および1ー55に記載されている。 【0104】ステップ717では、以前にセーブしたス
テータスフラッグにもとずいて、リジューム機能が開始
されたときフロッピードライブがアクティブであったか
どうか判断する。フロッピードライブがアクティブであ
れば、ステップ718でフロッピードライブが再びリセ
ットされる。この結果、OS/2ディスクドライバは何
か(例えばリジュームプロセス)が起きたとことに気付
き、警告ボックスが表示されてユーザに”Floppy
drive not ready”(例えば装置A)
を警告する。フロッピードライブが以前アクティブでな
かったならば、このリセットステップはスキップされ
る。 【0105】図10のステップ719ではCPUがもと
もとプロテクトモードにあったかどうか判断する。これ
は、もとのCPUモードが切り替わったことを示す、以
前セーブしたフラッグをチェックすることにより行なわ
れる。CPUがもともとプロテクトモードであった場
合、ステップ720が実行される。モードが切り替わっ
たことを示すモード切り替えフラッグがクリアされる。
その後、以前にセーブしたIDTレジスタ値とGDTレ
ジスタ値がリストアされる。(例えばLIDT命令およ
びLGDT命令により)さらに、プロテクトモードコー
ドとデータセレクタが検索されMPビットとTSビット
がリストアされPEビットがマシンステータスワードメ
モリロケーションにセットされこの値が実際のマシンス
テータスワードに格納され、CPUをプロテクトモード
に切り替える。最後に、プロテクトモードコードセレク
タと次の命令のオフセットをスタックにプッシュしてR
ET命令を実行することにより、CSレジスタに適当な
プロテクトモードをロードする。 【0106】ステップ721は以前にセーブしたスタッ
クセレクタとポインタをリストアし、プロテクトモード
のDSおよびESレジスタをリストアすることにより行
なわれる。次に、ステップ722はCR0、TSS,お
よびLDTをリストアする。ステップ722は現在のタ
スクに以前セーブしたタスクレジスタ(TR)をロード
してタスクLDTレジスタをリストアする。(リジュー
ムBIOSはセーブしない)つぎに、以前セーブしたコ
ードセグメントリミットドライバのコードディスクリプ
タにパッチする。 【0107】CPUがプロテクトモードに切り替わった
かどうかに関係なく、ステップ723が実行される。ス
テップ723はリジューム後パラレルプリンタポートに
継続的にプリント可能にする。通常OS/2はプリンタ
ハードウエアインタラプトを失う、すなわち、プリンタ
インタラプトはリジューム後は起きない。これを回避す
るために、EOIコマンドをプリンタデバイス(IRQ
7)に送り、IRQ7がイネーブルになる。その後、ス
トローブがハイになり、遅延が生じ、ストローブがロウ
になる。 【0108】ステップ724では、OEMHLPファン
クションIOCtl88(ヘキサ)がコールされ、東芝
コンピュータならびに他のコンピュータ上に見られるオ
ートディスプレイパワーオフカウンタをリセットする。
オートディスプレイオフ機能は通常、所定時間キーボー
ドおよび/またはマウスが操作されないとき、コンピュ
ータのディスプレイを自動的にオフにする。リジューム
モードがイネーブルのときに、パワーダウンリクエスト
が検出されると、次に電力が回復したときに非動作期間
タイマはリセットされない。それゆえ、コンピュータが
リジュームしたときほんのわずかな時間ディスプレイが
オフするかもしれない。これは望ましくない。この発明
の好適実施例では、電力が回復した後、IOCtl88
(ヘキサ)OEMHLPファンクションによりオートデ
ィスプレイパワーオフカウンタがリセットされる。この
ように、リジューム後ディスプレイオフカウンタがリセ
ットする。ステップ724はES:BXにより適当なI
OCtlパケットを指示し、およびOEMHLPをコー
ルすることにより行なうことができる。 【0109】次に、図11のステップ725が実行され
る。このステップは電源が落ちる前にスタックにプッシ
ュしたシステムフラッグおよびレジスタをリストアす
る。ステップ725を実行後、リジュームプロセスが完
了し、ステップ726でリジュームドライバはIRET
命令によりコントロールをOS/2アクティブタスクに
渡す。 【0110】以上の説明からわかるように、T3100
SXあるいはT2000SXでこの発明を具現化する好
適実施例について述べた。しかしながら、コンピュータ
プログラミングおよび/またはコンピュータハードウエ
アデザインの当業者には明かなように、この発明は先進
のマイクロプロセッサ、インテリジェントパワーサプラ
イ、およびマイクロプロセッサの”リアル”モードでの
既存のリジューム処理機能を有するコンピュータシステ
ムであればどのようなコンピュータシステムでも実現で
きる。さらに、上述したステップの順番は、設計上の問
題であり、特に断わり書きが無い限り種々の順番で実行
できる。最後に、この発明の好適実施例はOS/2で動
作するように設計されているが、UNIX等のような他
の先進オペレーティングシステムや、モトローラ680
x0等のような他の先進マイクロプロセッサの場合に
も、この発明の種々のステップにおいて格納および検索
される、オペレーティングシステムおよびマイクロプロ
セッサに関連するデータを変更するだけでリジュームド
ライバを設計できる。 【0111】 【発明の効果】MS−DOSリジューム処理BIOSル
ーチンのような既存のリジューム処理ルーチンと結合し
た、OS/2のような先進のオペレーティングシステム
で使用するリジューム処理方法が得られる。
【図面の簡単な説明】 【図1】この発明のOS/2リジュームデバイスドライ
バが動作可能なコンピュータの全体ブロック図。 【図2】この発明により実行される、7つのジェネラル
ステップを示すフローチャート。 【図3】この発明による、リアルモードノンマスカブル
インタラプト(NMI)ベクトルの”フック”処理を示
すブロック図。 【図4】この発明による、プロテクトモードNMIベク
トルの”フック”処理を示すブロック図。 【図5】この発明の好適実施例による、タイマハンドラ
のインストールを含む、OS/2リジュームデバイスド
ライバをインストールするのに必要な種々のステップを
示すフローチャート。 【図6】この発明の好適実施例において図3および図4
に示すリアルモードおよびプロテクトモードNMIベク
トルを”フック”するのに必要であって、図5のタイム
ハンドラにより実行される種々のステップを示すフロー
チャート。 【図7】この発明のリジュームドライバがコールされた
とき実行される種々のステップを示すフローチャートの
一部。 【図8】この発明のリジュームドライバがコールされた
とき実行される種々のステップを示すフローチャートの
一部。 【図9】この発明のリジュームドライバがコールされた
とき実行される種々のステップを示すフローチャートの
一部。 【図10】この発明のリジュームドライバがコールされ
たとき実行される種々のステップを示すフローチャート
の一部。 【図11】この発明のリジュームドライバがコールされ
たとき実行される種々のステップを示すフローチャート
の残りの部分。 【符号の説明】 101...CPU、102...ROM、10
3...RAM、104...DMAC、105...
PIC、106...PIT、107...RTC、1
08...拡張RAM、109...バックアップRA
M、118...ACアダプタ、110A...HD
C、110B...HDD、111A...FDC,1
11B...FDD、112A...PRTーCON
T、113A...UART、114A...KBC、
114B...キーボード、115A...DISPー
CONT、115B...PDP,115C...VR
AM、117...インテリジェントパワーサプライ、
300...OS/2システムローダ、301...リ
アルモードインタラプトベクトルテーブル、302
A...NOP命令、302B...ファージャンプ命
令、304...BIOS NMIハンドラ、303、
406...リジュームドライバ、401...プロテ
クトモードインタラプトディスクリプタテーブル、40
2...コードディスクリプタ、403...データデ
ィスクリプタ、407...OS/2カーネル
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ジョセフ・エー・マイラック 東京都青梅市末広町2丁目9番地 株式 会社東芝青梅工場内 (56)参考文献 特開 平3−171217(JP,A) 特開 平5−250059(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 1/00 G06F 9/06

Claims (1)

  1. (57)【特許請求の範囲】 【請求項1】プロテクトモードおよびリアルモードで動
    作可能な中央処理装置(CPU)を有し、オペレーティ
    ングシステムが前記CPUのプロテクトモードで動作し
    ているとき、パワーオフ信号に応答してCPUの動作条
    件を示すシステムデータをセーブし、次に、パワーオン
    信号に応答してセーブしたデータをリストアするリジュ
    ーム処理方法において、(1)リジューム処理ドライバをロードし、初期化を実
    行するステップと; (2) 前記パワーオフ信号に応答して、前記リジューム
    処理ドライバにより、前記オペレーティングシステムの
    動作条件を示す、前記オペレーティングシステムに関係
    する第1データ群をセーブするステップと;(3)前記リジューム処理ドライバにより、 前記CPU
    を前記プロテクトモードから前記リアルモードに切り替
    えるステップと;(4)リジュームBIOSルーチンにより、 前記CPU
    の前記リアルモードに関連する第2データ群をセーブす
    るステップと;(5)前記リジュームBIOSルーチンにより、 パワー
    オン信号に応答して、前記ステップ(4)でセーブした
    前記第2データ群をリストアするステップと;(6)前記リジューム処理ドライバにより、 前記CPU
    を前記リアルモードから前記プロテクトモードに切り替
    えるステップと;(7)前記リジューム処理ドライバにより、 前記ステッ
    (2)でセーブした前記第1データ群をリストアする
    ステップとを具備することを特徴とするリジューム処理
    方法。
JP13717692A 1991-05-29 1992-05-28 オペレーティングシステムのためのリジューム処理方法 Expired - Lifetime JP3437587B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/707044 1991-05-29
US07/707,044 US5297282A (en) 1991-05-29 1991-05-29 Resume processing function for the OS/2 operating system

Publications (2)

Publication Number Publication Date
JPH05189075A JPH05189075A (ja) 1993-07-30
JP3437587B2 true JP3437587B2 (ja) 2003-08-18

Family

ID=24840134

Family Applications (1)

Application Number Title Priority Date Filing Date
JP13717692A Expired - Lifetime JP3437587B2 (ja) 1991-05-29 1992-05-28 オペレーティングシステムのためのリジューム処理方法

Country Status (4)

Country Link
US (2) US5297282A (ja)
EP (1) EP0516159B1 (ja)
JP (1) JP3437587B2 (ja)
DE (1) DE69224007T2 (ja)

Families Citing this family (82)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06236284A (ja) * 1991-10-21 1994-08-23 Intel Corp コンピュータシステム処理状態を保存及び復元する方法及びコンピュータシステム
JPH05158664A (ja) * 1991-12-03 1993-06-25 Canon Inc 情報処理装置
US5410713A (en) * 1992-01-02 1995-04-25 Smith Corona/Acer Power-management system for a computer
EP0559221B1 (en) * 1992-03-06 1999-05-12 Microsoft Corporation Method for storing programs
JP2880863B2 (ja) * 1992-10-29 1999-04-12 株式会社東芝 サスペンド制御方法およびシステム
JPH0773046A (ja) * 1992-12-07 1995-03-17 Intel Corp コンピュータシステムで回路をエミュレートする 方法及び装置
JPH06180668A (ja) * 1992-12-11 1994-06-28 Toshiba Corp コンピュータシステム
DE9301336U1 (de) * 1993-02-01 1993-03-18 Siemens Ag, 8000 Muenchen Einrichtung zur Interruptsteuerung
JP3212007B2 (ja) * 1993-04-26 2001-09-25 インターナショナル・ビジネス・マシーンズ・コーポレーション オペレーティング・システム環境の起動方法およびシステム
US5513359A (en) * 1993-07-23 1996-04-30 International Business Machines Corporation Desktop computer having a single-switch suspend/resume function
US5497494A (en) * 1993-07-23 1996-03-05 International Business Machines Corporation Method for saving and restoring the state of a CPU executing code in protected mode
US5548763A (en) * 1993-07-26 1996-08-20 International Business Machines Corporation Desk top computer system having multi-level power management
US5511202A (en) * 1993-07-26 1996-04-23 International Business Machines Corporation Desktop computer system having zero-volt system suspend and control unit for ascertaining interrupt controller base address
WO1995010082A1 (en) * 1993-10-04 1995-04-13 Oakleigh Systems, Inc. An optimized power supply system for computer equipment
US5475822A (en) * 1993-11-15 1995-12-12 Motorola, Inc. Data processing system for resuming instruction execution after an interrupt and method therefor
US5459462A (en) * 1993-12-09 1995-10-17 Onspec Electronic, Inc. Keyboard controller state machine
US5371884A (en) * 1993-12-21 1994-12-06 Taligent, Inc. Processor fault recovery system
US5535400A (en) * 1994-01-28 1996-07-09 Compaq Computer Corporation SCSI disk drive power down apparatus
US5696897A (en) * 1994-01-31 1997-12-09 Sun Microsystems, Inc. Method and apparatus for a multi-layer system quiescent suspend and resume operation
US5555510A (en) * 1994-08-02 1996-09-10 Intel Corporation Automatic computer card insertion and removal algorithm
US5557777A (en) * 1994-09-30 1996-09-17 Apple Computer, Inc. Method and apparatus for system recovery from power loss
US5574920A (en) * 1994-10-25 1996-11-12 Microsoft Corporation Method for controlling power down of a hard disk drive in a computer
US5734904A (en) * 1994-11-14 1998-03-31 Microsoft Corporation Method and system for calling one of a set of routines designed for direct invocation by programs of a second type when invoked by a program of the first type
US6438621B1 (en) 1994-11-14 2002-08-20 Microsoft Corporation In-memory modification of computer programs
AU4467996A (en) * 1994-12-12 1996-07-03 Intel Corporation Cpu-cycle stealing for multi-tasking operating system
KR0174483B1 (ko) * 1994-12-22 1999-04-01 윤종용 키신호 입력에 의한 작업 복구가 가능한 컴퓨터 시스템 및 그 제어방법
US5682550A (en) * 1995-06-07 1997-10-28 International Business Machines Corporation System for restricting user access to default work area settings upon restoration from nonvolatile memory where the settings are independent of the restored state information
US5909576A (en) * 1995-08-16 1999-06-01 International Business Machines Corporation Method and apparatus for using device drivers of a first operating system, under the control of a second operating system
US6327653B1 (en) 1995-11-07 2001-12-04 Samsung Electronics Co., Ltd. Technique for easily changing operating systems of a digital computer system using at least two pushbuttons
KR0180680B1 (ko) * 1995-12-08 1999-05-15 윤종용 중앙처리장치의 리셋장치 및 방법
US5787495A (en) * 1995-12-18 1998-07-28 Integrated Device Technology, Inc. Method and apparatus for selector storing and restoration
US5974552A (en) * 1995-12-29 1999-10-26 Samsung Electronics Co., Ltd. Method and apparatus for executing a scheduled operation after wake up from power off state
US5802350A (en) * 1996-01-18 1998-09-01 International Business Machines Corporation System and method for selecting an interrupt system based upon the operating system of a multiprocessor system
US6678712B1 (en) 1996-01-19 2004-01-13 International Business Machines Corporation Method and system for executing a program under one of a plurality of mutually exclusive operating environments
US5784628A (en) * 1996-03-12 1998-07-21 Microsoft Corporation Method and system for controlling power consumption in a computer system
KR980013092A (ko) 1996-07-29 1998-04-30 김광호 교환시스템의 화일관리장치 및 방법
KR100260028B1 (ko) * 1996-08-13 2000-06-15 윤종용 화일시스템의 정보 복구방법
US6134616A (en) * 1996-10-28 2000-10-17 International Business Machines Corporation Method and apparatus for dynamic re-enumeration and reconfiguration of computer devices after system hibernation
US5787290A (en) * 1996-12-20 1998-07-28 International Business Machines Corporation Adapter with an onboard interrupt controller for controlling a computer system
US5819095A (en) * 1996-12-20 1998-10-06 International Business Machines Corporation Method and apparatus for allowing an interrupt controller on an adapter to control a computer system
US5930495A (en) * 1997-01-13 1999-07-27 International Business Machines Corporation Method and system for processing a first instruction in a first processing environment in response to intiating processing of a second instruction in a emulation environment
US5978912A (en) * 1997-03-20 1999-11-02 Phoenix Technologies Limited Network enhanced BIOS enabling remote management of a computer without a functioning operating system
US7441254B1 (en) 1997-07-09 2008-10-21 International Business Machines Corporation Simulation of memory-mapped I/O
US6076161A (en) * 1997-08-25 2000-06-13 National Semiconductor Corporation Microcontroller mode selection system and method upon reset
US6216187B1 (en) 1997-12-01 2001-04-10 Toshiba America Information Systems, Inc. System for powering down a portable computer in a docking station
US6173417B1 (en) * 1998-04-30 2001-01-09 Intel Corporation Initializing and restarting operating systems
US6167330A (en) * 1998-05-08 2000-12-26 The United States Of America As Represented By The Secretary Of The Air Force Dynamic power management of systems
US6499050B1 (en) * 1998-06-09 2002-12-24 Advanced Micro Devices, Inc. Means used to allow driver software to select most appropriate execution context dynamically
US6275893B1 (en) * 1998-09-14 2001-08-14 Compaq Computer Corporation Method and apparatus for providing seamless hooking and intercepting of selected kernel and HAL exported entry points in an operating system
US6209088B1 (en) 1998-09-21 2001-03-27 Microsoft Corporation Computer hibernation implemented by a computer operating system
US7770016B2 (en) * 1999-07-29 2010-08-03 Intertrust Technologies Corporation Systems and methods for watermarking software and other media
US6519698B1 (en) * 1999-10-06 2003-02-11 Micron Technology, Inc. Method for saving system configuration information to shorten computer system initialization time by checking the state of a chassis intrusion detection circuit
US6418524B1 (en) * 1999-12-28 2002-07-09 Ati International Srl Method and apparatus for dependent segmentation and paging processing
US6636963B1 (en) * 1999-12-30 2003-10-21 Cardiac Pacemakers, Inc. Quick starting for microprocessor-based system by retrieving a target state memory image and a target state data structure from an image storage medium
US7216345B1 (en) * 2000-04-07 2007-05-08 Hall Aluminum Llc Method and apparatus for protectively operating a data/information processing device
US6898697B1 (en) * 2002-03-29 2005-05-24 Advanced Micro Devices, Inc. Efficient method for mode change detection and synchronization
US7360220B2 (en) * 2002-10-31 2008-04-15 Intel Corporation Methods and apparatus for multi-threading using differently coded software segments to perform an algorithm
US7395527B2 (en) 2003-09-30 2008-07-01 International Business Machines Corporation Method and apparatus for counting instruction execution and data accesses
US8103592B2 (en) * 2003-10-08 2012-01-24 Microsoft Corporation First computer process and second computer process proxy-executing code on behalf of first process
US7788496B2 (en) * 2003-10-08 2010-08-31 Microsoft Corporation First computer process and second computer process proxy-executing code on behalf thereof
US7979911B2 (en) 2003-10-08 2011-07-12 Microsoft Corporation First computer process and second computer process proxy-executing code from third computer process on behalf of first process
US7380269B2 (en) * 2003-10-08 2008-05-27 Microsoft Corporation Changing code execution path using kernel mode redirection
US8381037B2 (en) 2003-10-09 2013-02-19 International Business Machines Corporation Method and system for autonomic execution path selection in an application
US7895382B2 (en) 2004-01-14 2011-02-22 International Business Machines Corporation Method and apparatus for qualifying collection of performance monitoring events by types of interrupt when interrupt occurs
US7415705B2 (en) 2004-01-14 2008-08-19 International Business Machines Corporation Autonomic method and apparatus for hardware assist for patching code
CN100416459C (zh) * 2004-10-19 2008-09-03 宁波三维技术有限公司 税控收款机异常断电打印发票无缺陷的方法及装置
US7529921B2 (en) * 2004-12-17 2009-05-05 Cardiac Pacemakers, Inc. Fast initialization of medical device system having multiple operating systems
WO2006069538A1 (fr) * 2004-12-31 2006-07-06 Juhang Zhong Systeme de traitement de donnees avec pluralite de sous-systemes et procede correspondant
US7509530B2 (en) * 2005-01-19 2009-03-24 Sonic Solutions Method and system for use in restoring an active partition
US7673174B2 (en) * 2005-04-06 2010-03-02 University Of Washington Recovering device drivers
US7581051B2 (en) * 2005-05-16 2009-08-25 Microsoft Corporation Method for delivering interrupts to user mode drivers
US20140373144A9 (en) * 2006-05-22 2014-12-18 Alen Capalik System and method for analyzing unauthorized intrusion into a computer network
US8429746B2 (en) 2006-05-22 2013-04-23 Neuraliq, Inc. Decoy network technology with automatic signature generation for intrusion detection and intrusion prevention systems
US20110225434A1 (en) * 2007-10-09 2011-09-15 Masaru Nishikawa Microcomputer controller
US9106697B2 (en) 2010-06-24 2015-08-11 NeurallQ, Inc. System and method for identifying unauthorized activities on a computer system using a data structure model
US8789189B2 (en) 2010-06-24 2014-07-22 NeurallQ, Inc. System and method for sampling forensic data of unauthorized activities using executability states
US8639973B2 (en) * 2010-12-14 2014-01-28 Microsoft Corporation System reset
US9354681B2 (en) * 2013-06-28 2016-05-31 Intel Corporation Protected power management mode in a processor
US20160132317A1 (en) 2014-11-06 2016-05-12 Intertrust Technologies Corporation Secure Application Distribution Systems and Methods
US10104099B2 (en) 2015-01-07 2018-10-16 CounterTack, Inc. System and method for monitoring a computer system using machine interpretable code
US10452561B2 (en) 2016-08-08 2019-10-22 Raytheon Company Central processing unit architecture and methods for high availability systems
JP6748146B2 (ja) 2018-05-17 2020-08-26 ファナック株式会社 制御装置、制御方法及び制御プログラム

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4228496A (en) * 1976-09-07 1980-10-14 Tandem Computers Incorporated Multiprocessor system
GB1545169A (en) * 1977-09-22 1979-05-02 Burroughs Corp Data processor system including data-save controller for protection against loss of volatile memory information during power failure
US4143283A (en) * 1978-01-17 1979-03-06 General Atomic Company Battery backup system
US4432049A (en) * 1978-09-05 1984-02-14 Pern Shaw Programmable mode select by reset
US4234920A (en) * 1978-11-24 1980-11-18 Engineered Systems, Inc. Power failure detection and restart system
US5027273A (en) * 1985-04-10 1991-06-25 Microsoft Corporation Method and operating system for executing programs in a multi-mode microprocessor
US4779187A (en) * 1985-04-10 1988-10-18 Microsoft Corporation Method and operating system for executing programs in a multi-mode microprocessor
US4825358A (en) * 1985-04-10 1989-04-25 Microsoft Corporation Method and operating system for executing programs in a multi-mode microprocessor
US4747040A (en) * 1985-10-09 1988-05-24 American Telephone & Telegraph Company Dual operating system computer
US4709324A (en) * 1985-11-27 1987-11-24 Motorola, Inc. Data processor control unit having an interrupt service using instruction prefetch redirection
US4907150A (en) * 1986-01-17 1990-03-06 International Business Machines Corporation Apparatus and method for suspending and resuming software applications on a computer
US4928237A (en) * 1987-03-27 1990-05-22 International Business Machines Corp. Computer system having mode independent addressing
US5125087A (en) * 1988-11-07 1992-06-23 Microsoft Corporation Method of resetting sequence of access to extended memory disrupted by interrupt processing in 80286 compatible system using code segment register
JPH0327419A (ja) * 1989-06-23 1991-02-05 Toshiba Corp パーソナルコンピュータ
US5175853A (en) * 1990-10-09 1992-12-29 Intel Corporation Transparent system interrupt

Also Published As

Publication number Publication date
EP0516159B1 (en) 1998-01-14
DE69224007T2 (de) 1998-07-02
EP0516159A2 (en) 1992-12-02
DE69224007D1 (de) 1998-02-19
US5297282A (en) 1994-03-22
US5339426A (en) 1994-08-16
EP0516159A3 (en) 1994-09-28
JPH05189075A (ja) 1993-07-30

Similar Documents

Publication Publication Date Title
JP3437587B2 (ja) オペレーティングシステムのためのリジューム処理方法
JP3037826B2 (ja) モード切り替え方法及び装置
US6158000A (en) Shared memory initialization method for system having multiple processor capability
US9372754B2 (en) Restoring from a legacy OS environment to a UEFI pre-boot environment
EP3491519B1 (en) Optimized uefi reboot process
US5021983A (en) Suspend/resume apparatus and method for reducing power consumption in battery powered computers
JP2650675B2 (ja) マルチモードマイクロプロセッサにおいてプログラムを実行する方法及びオペレーティングシステム
US5041964A (en) Low-power, standby mode computer
US5794054A (en) Flash ROM sharing between a processor and a controller
JP3266560B2 (ja) 情報処理システム及びその制御方法
US8234430B2 (en) Apparatus and method with controlled switch method
US6453423B1 (en) Computer remote power on
US7146512B2 (en) Method of activating management mode through a network for monitoring a hardware entity and transmitting the monitored information through the network
US7454547B1 (en) Data exchange between a runtime environment and a computer firmware in a multi-processor computing system
US7360045B2 (en) System and method for backing up data from a quiesced storage device
JPH06187133A (ja) オペレーティングシステムのロードシステム、装置接続検出システム、及びオペレーティングシステムローダ決定方法
US6681336B1 (en) System and method for implementing a user specified processing speed in a computer system and for overriding the user specified processing speed during a startup and shutdown process
JPH06138987A (ja) サスペンド制御方法およびシステム
US7100037B2 (en) Method for reducing BIOS resume time from a sleeping state
US6154846A (en) System for controlling a power saving mode in a computer system
US7231512B2 (en) Technique for reconstituting a pre-boot firmware environment after launch of an operating system
US5963738A (en) Computer system for reading/writing system configuration using I/O instruction
EP1037133A1 (en) Method and apparatus for alternation between instances of operating systems in computer systems
US7484083B1 (en) Method, apparatus, and computer-readable medium for utilizing BIOS boot specification compliant devices within an extensible firmware interface environment
US6282645B1 (en) Computer system for reading/writing system configuration using I/O instruction

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090606

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090606

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100606

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100606

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110606

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120606

Year of fee payment: 9

EXPY Cancellation because of completion of term