(57)【特許請求の範囲】
【請求項１】
フレーム・バッファ記憶装置中にあってウインドウの保持される不可視部分用に用いられる一時記憶域にして、図形アクセラレータによって
制御される一時記憶域に対して、第１のプロセスからの直接的な図形アクセスを可能にする方法であって、前記図形アクセラレータには第１のプロセスに対応する第１の状態または第２のプロセスに対応する第２の状態を記憶することができ、
ウインドウの保持される不可視部分が最初に前記フレーム・バッファ記憶装置の余剰部分に存在することを示す、前記一時記憶域用の第１の共用メモリ・ファイルを、システム記憶装置内に確立するステップを備え、前記第１の共用メモリ・ファイルには共用領域が前記第１のプロセスによって使用されていることを示す記憶が含まれており、
前記ウインドウの不可視部分用に第２の共用メモリ・ファイルを、前記システム記憶装置内に確立するステップを備え、
前記図形アクセラレータに前記第２のプロセスに対応する前記第２の状態が記憶されていて、前記図形アクセラレータへのアクセスが前記第１のプロセスによって試みられると常に、ページフォルトを生成し、且つ、前記第１のプロセス以外のプロセスによる前記第１および第２の共用メモリ・ファイルの使用を排除するステップを備え、
前記ページフォルトに応答してデバイス・ドライバを呼び出して、前記図形アクセラレータに記憶されているコンテキストを、前記第２の状態から、前記図形アクセラレータにアクセスしようとしている前記第１のプロセスに対応する前記第１の状態に切り換える、デバイス・ドライバの呼び出しステップを備えている
ことを特徴とする、直接的な図形アクセスを可能にする方法。
【請求項２】
フレーム・バッファ記憶装置中にあってウインドウの保持される不可視部分用に用いられる一時記憶域にして、図形アクセラレータによって制御される一時記憶域に対して、第１のプロセスからの直接的な図形アクセスを可能にする方法であって、前記図形アクセラレータには第１のプロセスに対応する第１の状態または第２のプロセスに対応する第２の状態を記憶することができ、
不可視部分を含むウインドウの可視部分用に第１の共用メモリ・ファイルを、システム記憶装置内に確立するステップを備え、前記第１の共用メモリ・ファイルには、あるプログラムにより前記ウインドウが使用されているときは他のプログラムによる前記ウインドウの使用を排除するロックが設けられており、
前記ウインドウの不可視部分用に第２の共用メモリ・ファイルを、前記システム記憶装置内に確立するステップを備え、その第２の共用メモリ・ファイルは、前記第１の共用メモリ・ファイルにおける、他のプログラムによる前記ウインドウの使用を排除する前記ロックに従うものであり、
前記第２の共用メモリ・ファイルには、前記ウインドウの不可視部分が最初に前記フレーム・バッファ記憶装置の余剰部分に存在することを示す手段を含め、且つ、共用領域がプロセスによって使用されていることを示すフラッグないしロックを含めておき、
前記図形アクセラレータに前記第２のプロセスに対応する前記第２の状態が記憶されていて、前記図形アクセラレータへのアクセスが前記第１のプロセスによって試みられると常に、ページフォルトを生成するステップを備え、
前記ページフォルトに応答してデバイス・ドライバを呼び出して、前記図形アクセラレータがフリーになると、前記図形アクセラレータに記憶されているコンテキストを、前記第２の状態から、前記図形アクセラレータにアクセスしようとしている前記第１のプロセスに対応する前記第１の状態に切り換える、デバイス・ドライバを呼び出すステップを備えている
ことを特徴とする、直接的な図形アクセスを可能にする方法。
【請求項３】
フレーム・バッファ記憶装置中にあってウインドウの保持される不可視部分用に用いられる一時記憶域にして、図形アクセラレータによって制御される一時記憶域に対して、第１のプロセスからの直接的な図形アクセスを可能にする装置であって、前記図形アクセラレータには第１のプロセスに対応する第１の状態および第２のプロセスに対応する第２の状態を記憶することができ、
不可視保持部分を含むであろうウインドウの可視部分用に第１の共用メモリ・ファイルを、システム記憶装置内に確立する手段を備え、
前記第１の共用メモリ・ファイルには、あるプログラムにより前記ウインドウが使用されているときは他のプログラムによる前記ウインドウの使用を排除する手段が設けられ、
前記ウインドウの不可視部分用に第２の共用メモリ・ファイルを、前記フレーム・バッファ記憶装置の余剰部分または前記システム記憶装置内に確立する手段を備え、その第２の共用メモリ・ファイルは、前記第１の共用メモリ・ファイルにおける他のプログラムによる前記ウインドウの使用を排除する前記手段に従うものであり、
前記第２の共用メモリ・ファイルには、前記ウインドウの不可視部分が前記フレーム・バッファ記憶装置の余剰部分に存在するのか、前記システム記憶装置内に存在するのかを示す手段が含まれ、且つ、プロセッサによる共用メモリ領域の使用を示す手段が含まれており、
前記第１の共用メモリ・ファイルおよび前記第２の共用メモリ・ファイルを、図形アクセラレータへのアクセスを有する各プログラムの仮想アドレス・スペースへとマッピングする手段を備え、
前記第２のプロセスに対応する状態が図形アクセラレータに記憶されていて、前記第１のプロセスによって図形アクセラレータへのアクセスが試みられると常に、ページフォルトを生成する手段を備え、
前記第２のプロセスに対応する前記第２の状態が図形アクセラレータに記憶されているときに生成された前記ページフォルトに応答して、前記図形アクセラレータがフリーになると、前記図形アクセラレータに記憶されているコンテキストを、図形アクセラレータへのアクセスを試みた前記第１のプロセスに対応する前記第１の状態へと切り換える手段を備える、
ことを特徴とする直接的な図形アクセスを可能にする装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明はディスプレー記憶装置に関し、特に直接的な図形アクセスが可能であるようにして、オフ・スクリーン・ピクセル・データを記憶するためにディスプレー記憶装置の利用をすることに関する。
【０００２】
【従来の技術】
コンピュータはその最も簡単な様式では、データを単一のプログラムからデータを記憶するフレーム・バッファに書き込んで、データが出力ディスプレーへと書き込まれることができるようにされる。この単一プログラムのデータが出力ディスプレー全体をカバーする。出力ディスプレー上に一時に一つ以上のプログラムをディスプレーしたい場合は、コンピュータ・システムは、何らかの方法で各プログラムをディスプレーできる複数のウインドウ（スクリーンの異なる部分）を付与し、情報を各プログラムから適正なウインドウに向け、各々の適正部分が提示されるように異なるウインドウの重複に注意を払うことが必要である。
【０００３】
上記のタスクの全てが各個のプログラムによって実行される場合は、異なるプログラムが互いに干渉しないようにプログラム相互間で大量のチェックが行われなければならない。このことによってシステムの動作速度が遅くなり、設計が貧弱なソフトウェアの場合はシステムの動作を歪めることがある。このため、より先進的なコンピュータ・システムでは、ディスプレーされる情報を制御するため、フレーム・バッファへの書き込み動作全体を担うウインドウ・システムのプログラムを設計している。ウインドウ・システムはディスプレー全体を制御する。このウインドウ・システムは、個々のアプリケーション・プログラムから情報をディスプレーする要求を受け、これらの要求をシステム記憶装置に記憶し、異なるプログラムをディスプレーできるウインドウを選択し、アプリケーション・プログラムによって付与され、主記憶装置に記憶された要求をフレーム・バッファへの本文（テキスト）及び図形出力へと変換し、ウインドウの重複を制御し、要求に応じてウインドウのカバーされた部分のデータを記憶しておくことにより後に検索できるようにし、多くのプログラムを単一の出力ディスプレー装置でディスプレーするのに必要な全ての動作を実行する。このことによってプログラムがその出力を提示する際に正しく動作することが保証され、アプリケーション・プログラマがディスプレー目的で多くの手順を書き込む必要がなくなる。
【０００４】
ウインドウは一般に出力ディスプレー上の可変サイズの方形ピクセルとして表される。一つのウインドウが別のウインドウと重複すると、重複されたウインドウからのピクセル部分は出力ディスプレー上では見えなくなる。重複されたウインドウの不可視（目視不能）部分が出力ディスプレー上のウインドウの重複状態の変化によって再び可視（目視可能）状態になると、このウインドウのそれまで不可視（目視不能）であったピクセル領域は修復されなければならない。場合によってはプログラムがこのウインドウに対して新たに露出された領域を修復する出力を送ることが可能である。別の場合には、通常は修復の複雑さにより、ウインドウ・システムが、出力の流れからそれまでにピクセル領域に現れたピクセルを覚えており、ピクセルを必要として保持し、修復するように処理し、もってプログラムが修復動作を無視できるようにする。ある種のウインドウ・システムはこの処理を保持されるウインドウ（リテインド・ウインドウ）と呼ばれる機構で支援する。ウインドウの損傷領域を修復することにわずらわされたくないアプリケーション・プログラムはこの機構をウインドウ・システムに要求する。
【０００５】
ウインドウ・システムがこれらの動作の全てを実行するように設計されている場合でも、それらを利用するにはある種の困難さが伴う。例えば、ウインドウ・システムが支援しないある種の図形処理がある場合がある。更に、このようなウインドウ・システムのプログラムを実行するコンピュータ・システムは、フレーム・バッファに直接書き込みを行うプログラムのように迅速には、情報のディスプレー動作を行わない。必要なオーバヘッドを備えたウインドウ・システムのプログラムは出力ディスプレーを毎秒１０回しか変更し得ないことがあり、一方、ライブ・ビデオ・ディスプレーは観察者に対して歪みが見えないように動作を描写するには毎秒６０回ディスプレーされることを要求する。
【０００６】
図形処理の動作全体を加速するため、多くの図形ディスプレー機能のためにする中央処理装置の使用を少なくして図形情報のディスプレーを加速する種々の図形アクセラレータが設計されてきた。コンピュータ・システムによっては各個のアプリケーション・プログラムからのデータがウインドウ・システムをバイパスすることができ、図形アクセラレータに直接書き込まれることによって、出力ディスプレー上での図形画像の描写を大幅に加速するものがある。極めて迅速な図形プログラムでは、描写を加速するためにこの機能を利用している。しかし、ウインドウ・システムのプログラムは、ディスプレー上でのウインドウ領域の割当てと処理を制御するため、且つ極めて迅速な描写を必要としない別のアプリケーション・プログラム用の図形画像の描写を制御するために、多重タスクの環境で利用されている。その結果、２つの別個のプロセス（処理手順）、すなわちウインドウ・システムによるウインドウの配置と運動の制御と、アプリケーション・プログラムによるウインドウ用のデータの供給とが、（アプリケーション・プログラムが直接的に図形アクセスを行うウインドウ用の）図形アクセラレータのハードウェアを共用しなければならない。
【０００７】
コンピュータ・システムで実行されている多重のプロセス（処理手順）が、適正に動作するために、実行されているプロセス（処理手順）の状態に関する情報（プロセス（処理手順）の状態を定義するデータ、一般には単に“状態”と呼ばれる）を記憶するハードウェアの一部を共用したい場合は、異なるプロセス（処理手順）が特定のハードウェアを利用したい場合ごとに何らかの手段によってハードウェアの状態が変更されなければならない。すなわち、目下実行されているプロセス（処理手順）は、停止した時点からの処理を継続できるように、プロセスの再開の際にハードウェア内で復元可能であるように、その状態が保存されなければならない。更に、実行されるべきプロセス（処理手順）は、適正に実行されるようにハードウェア内でその状態が復元されなければならない。この動作は一般に状態の保存と復元、もしくは文脈の切り換え（コンテキスト・スイッチ）と呼ばれている。
【０００８】
伝統的には、プロセス（処理手順）はハードウェアの特定の部分の独占的な利用を要求し、これを一定期間独占的に利用する。この独占的な利用を確保するため、プロセス（処理手順）はオペレーティング・システムへ呼出しを行う（システム・コール）。オペレーティング・システムは多くの点検を実施し、最終的には文脈の切り換えを達成するものと想定される。このような呼出しには多くの時間を要し、中央処理装置が他の機能を果たせなくなる。コンピュータが単一のアプリケーション・プログラムを実行している場合は、このような呼出しは頻繁には行われないので所要時間は決定的に重要ではない。しかし、同時に多数の異なるアプリケーション・プログラムを多重タスクとして実行するコンピュータ・システムの場合は、文脈の切り換えを達成するためのアプリケーション・プログラムからのシステムの伝統的な呼出し手順を極めて頻繁に利用しなければならず、システム動作の速度が大幅に遅くなる原因になる。
【０００９】
一般に多数の文脈切り換えを必要とする複数個のプロセッサ（例えば中央処理装置及び浮動点プロセッサ）を使用しているシステムでは、オペレーティング・システムには、文脈の切り換えのためにプロセス（処理手順）によってシステム・コール（呼出し）を行う必要性をなくし、ひいてはそれに必要な時間を短縮するスケジューリング機能が、備えられてきた。しかし、このような自動的な文脈切り換え機構は一般に、システム内の他のハードウェアを利用するためには活用できなかった。
【００１０】
出力ディスプレー上の複数個のウインドウに多重のアプリケーション・プログラムの結果を同時にディスプレーする場合のように極めて大量のデータの伝送をプロセス（処理手順）が必要とする場合は、極めて広範囲の文脈切り換え（コンテキスト・スイッチ）が必要である。例えば、図形アクセラレータは出力ディスプレー上のウインドウに同時にディスプレーされる別個のアプリケーション・プログラムに関する状態を記憶する。この状態は、個々のウインドウの位置、アプリケーション・プログラムによって使用されるカラー・モード、及びプログラムによってディスプレーされるべき結果が二重バッファリングされているかどうか、及びその他の多数の要素を描写する。このプロセス（処理手順）の実行時には同時にウインドウ・システムの動作に必要な状態が図形アクセラレータに記憶される。
【００１１】
多重タスク環境では通常は、プロセス（処理手順）の実行中の時間全体にわたってソフトウェアが必要とする全てのハードウェア資源の独占的な利用を要求するか、それがハードウェアを必要とするごとにハードウェアを明示的に要求するように、ソフトウェアが書かれなければならない。限定されたハードウェア資源の最大限の共用を可能にするために、良好に書かれたソフトウェアは一般に、共用ハードウェアへの独占的なアクセス権を保持する時間を限定している。しかし、明示的なアクセス要求は一般に時間を費やすので、多くのソフトウェアは、アクセス要求があるにしてもどの様な種類のアクセスが実際に要求されているかを知ることなく、比較的トップレベルのコードでアクセス要求を行う。多重タスク・システムでは、プロセス（処理手順）による中央処理装置の利用ごとに図形アクセラレータへのアクセス要求が促されるならば、中央処理装置と時分割している異なるプロセス（処理手順）による無数の要求によって、図形ハードウェアが必ずしも要求されていない場合でも常時文脈の切り換えがなされるであろう。これらの要求の各々がオペレーティング・システムへの呼出しを要求するならば、多重ウインドウの実際のディスプレー速度はアクセス要求の処理のオーバヘッドのみに起因して劇的に遅くなる。異なるアプリケーション・プログラムによる図形アクセラレータの実際の利用の度にしかアプリケーション・プログラムによってシステム・コール（呼出し）が要求されない場合でも、要求によって多くの時間が無駄になる。
【００１２】
最近になって、アプリケーション・プログラムによるシステム・コール（呼出）を必要とせずに、複数のプロセス（処理手順）が中央処理装置と数学的コープロセッサに加えてハードウェア・デバイスを利用できる文脈切り換え機構が提案されている。本出願の出願人に譲渡されている１９８９年９月２８日出願のＤ．ローゼンタール他の米国特許出願番号第０７／４１３，９７６号「デバイスの文脈切り換えの方法と装置」はこのようなシステムを開示している。この発明の教示によれば、プロセス（処理手順）によるハードウェア・デバイスの利用要求とこれに付随する文脈の切り換えは、システム・コール（呼出し）から、ハードウェアとオペレーティング・システム内に既に組み込まれ、最適化されたソフトウェアの双方から構成されたシステムの仮想記憶域管理部分へと移行している。デバイス上で動作していないプロセス（処理手順）によるデバイスを利用しようとする試みだけでページフォルトがトリガされ、そのページフォルトはシステムの仮想記憶域管理部分によって自動的に処理されて、文脈の切り換えが達成される。記憶域管理機能は文脈切り換えを効率よく実行するように既に準備されている。
【００１３】
アプリケーション・プログラムから明示的なアクセス要求を除去することによって文脈切り換えに含まれるオーバヘッドの量が劇的に減少する。記憶域管理装置は特定のハードウェア部分に関してデバイス・ドライバ（励振器）を呼び出す。デバイス・ドライバ（励振器）は自動動作として文脈切り換えを行うように準備されている。好ましい実施例では、プロセス（処理手順）が特定のハードウェア・デバイスを実際にはアクセスしない場合は、デバイスの文脈切り換えは決してなされない。図形アクセラレータと共に使用する場合は、プロセス（処理手順）は行われる文脈切り換えを縮減し、図形アクセラレータ・ハードウェアを用いて複数のアプリケーション・プログラムを多重ウインドウに提示する際に生ずる文脈切り換えの速度を加速するように機能する。この新規の発明は同時に実行される多重図形アプリケーション・プログラム用の直接的な図形アクセス支援に必要な文脈切り換えを大幅に加速するものである。
【００１４】
しかし、最近になってディスプレーと関連するオフスクリーン・データを記憶するためにフレーム・バッファ記憶装置の余剰部分を利用する新規の方法が開発されている。例えば、オフスクリーン記憶装置に別のウインドウの部分によってカバーされた図形ウインドウ内の第２のデータ表現を記憶することが有用である場合が多い。この第２の表現によって別のウインドウ部分によりカバーされたウインドウ不可視部分内のピクセル・データ用の一時記憶（“保持される（リテインド）ウインドウ”と呼ばれる）が提供される。このピクセル・データは、覆っているウインドウがカバー位置から除去されると、スクリーンに復元できるように保存される。このオフスクリーンの保持されるウインドウをディスプレー・ハードウェア内に記憶することができれば、システム記憶装置内にデータを記憶するのに必要な時間を大幅に節減できる。アプリケーション・プログラム用に二重バッファリングを行うディスプレー・システムでは二重バッファリングが利用されない期間中、相当量の未使用のフレーム・バッファ記憶装置部分がある。前記の最近の発明がなされる以前は、この目的でディスプレー記憶装置を利用するには、オフスクリーン記憶装置の割当てに時間が掛かり過ぎた。１９９１年６月１７日付け出願され、本発明の出願人に譲渡されているマッキンタイヤ他の米国特許出願番号第７１６６７１号「オフスクリーン・ディスプレー記憶装置の割当て方法」は、このオフスクリーン・ディスプレー記憶装置を利用する方法を詳細に開示している。
【００１５】
一般的には、ウインドウ・システムは保持されるウインドウのピクセル・データの記憶と更新を制御する。しかし、アプリケーション・プログラムにより直接的な図形アクセスがなされる場合には、ウインドウ・システムは、ピクセル・データを制御せず、従って、ウインドウの不可視（目視不能）部分内のデータの更新を、ウインドウの可視（目視可能）部分に対してアプリケーション・プログラムによって成される更新に対応するように、行うことができない。その結果、ウインドウがカバーされなくなると古くなったピクセル・データが供給されることがある。アプリケーション・プログラムを呼び出す必要なくウインドウのカバーされた部分を更新するには、直接的図形アクセスを利用するアプリケーション・プログラムが、可視（目視可能）部分について書き込むと同時にオフスクリーン記憶装置に書き込み可能であることが必要である。このことは特に、古い出力を覚えて復元する能力を備えないアプリケーション・プログラムの場合に当てはまる。この二重の書込みアクセスは前述の最初の特許出願に開示されている機構によっては不可能である。
【００１６】
アプリケーション・プログラムにとってフレーム・バッファ内のオフスクリーン記憶装置を直接的に図形アクセスすることが有用であるが、ディスプレー上で実行されている任意のアプリケーション・プログラムについて二重バッファリングが必要である場合は、この二重バッファリング用にオフスクリーン用のフレーム・バッファのスペースを供与しなければならない。このような場合は、フレーム・バッファの（二重バッファリング用には目下使用されていない）余剰スペース内に記憶された保持されるウインドウ又は同様のオフスクリーン・データは全てシステム記憶装置へと待避されなければならない。その結果、データがシステム記憶装置に記憶されている場合は、アプリケーション・プログラムもウインドウの保持される不可視部分に直接的な図形アクセスを行う必要があろう。更に、ウインドウ・システムはオフスクリーン・データがフレーム・バッファに記憶されているにせよ、システム記憶装置に記憶されているにせよ、その移動を制御するので、アプリケーション・プログラムとウインドウ・システムの双方がフレーム・バッファ又はシステム記憶装置内の保持されるウインドウのデータを処理できなければならない。従ってオフスクリーン又はシステム記憶装置の何れかのピクセル・データに共用してアクセスする機構を必要とするだけではなく、オフスクリーン記憶装置内にある場合はアクセスの同期化と、図形ハードウェアの文脈切り換えを確実にする方法が必要である。
【００１７】
【発明が解決しようとする課題】
従って、本発明の課題はフレーム・バッファ記憶装置内のオフスクリーン・データの記憶に使用されるハードウェアの文脈切り換え（コンテキスト・スイッチ）を実行するためにシステム・コール（呼出し）の必要をなくすることである。
【００１８】
本発明の別の課題はフレーム・バッファの余剰部分の記憶域に記憶されたオフスクリーン・データ用の状態の文脈切り換えを自動化することである。
【００１９】
本発明の付加的な課題はフレーム・バッファの余剰記憶域、又はシステム記憶装置の何れに記憶されている場合でもオフスクリーン・データ用の状態の文脈切り換えを自動化することである。
【００２０】
【課題を解決するための手段】
本発明の前記の課題及びその他の課題は、保持されるウインドウ部分用に使用され、図形アクセラレータによって制御されるフレーム・バッファ記憶装置の一時記憶域へのアプリケーション・プログラムによる直接的な図形アクセスを可能にする方法であって、ウインドウ領域の保持される部分が最初にフレーム・バッファ記憶装置の余剰部分内に存在することを示す一時記憶域用のシステム記憶装置内に共用メモリ・ファイル、この共用メモリ・ファイルは処理に際して共用記憶域が使用されることを示す記憶装置を有している、を確立する段階と、アクセスを試みるプロセスとは別のプロセス（処理手順）の状態が図形アクセラレータに記憶されている場合に図形アクセラレータへのアクセスが試みられるごとにページフォルトを作成する段階と、ページフォルトに応答してデバイス・ドライバを呼び出して図形アクセラレータに記憶された文脈をアクセスを試みるプロセス（処理手順）の文脈へと切り換える段階と、を有する方法によって解決される。
【００２１】
本発明の前記の、及びその他の課題と特徴は添付図面を参照した本発明の以下の詳細な説明によってより明解に理解されよう。図中同一の素子には同一の参照符号が付されている。
【００２２】
【表記方法と用語】
以下の詳細な説明の部分の中にはコンピュータ記憶装置内のデータ・ビットでの動作を記号的表現で説明している部分がある。これらの説明と表現はデータ処理の分野の専門家がその研究の本質を他の専門家に最も有効に伝達するために用いられる手段である。処理動作とは、物理量の物理的処理を必要とする動作である。必ずとは限らないが通常は、これらの物理量は記憶、伝送、結合、比較及びその他の処理が可能である電気又は磁気信号の形式をとっている。場合によっては、主として一般に用いられているという理由から、これらの信号をビット、数値、要素、記号、文字、用語、数字等で表すことが便利であることが実証されている。しかし、これらの用語及びそれに類する用語は全て適宜の物理量に関連するものであり、これらの物理量に付与された便利なラベルの役割を果たすものに過ぎないことを留意されたい。
【００２３】
更に、実行される処理は人間のオペレータによって行われる知的な演算に関連する加算又は比較のような用語で呼ばれる場合が多い。しかし、多くの場合は本発明の部分を構成する本明細書で説明するどの演算も人間のオペレータによるこのような能力は必要なく、望まれるものでもない。本発明の動作を実行する有用な機械には汎用のディジタル・コンピュータ又はこれに類する装置が含まれている。いずれの場合も、コンピュータを操作する操作方法と計算自体の方法との区別に留意されたい。本発明は電気的又はその他の（例えば機械的、化学的）物理信号を処理して別の必要な物理信号を生成するための方法と装置に関するものである。
【００２４】
【実施例】
本発明は異なるコンピュータ動作システムを実行する多くのコンピュータ・システムの何れにも応用できるが、理解を用意にするため、以下の説明ではユニックス・オペレーティング・システムの文脈で説明することにする。更に、出力ディスプレー上の複数個のウインドウのディスプレーを制御する機構はＸウインドウ・システム又はこれと同類のウインドウ管理システムの文脈で説明する。
【００２５】
既に指摘したように、前記の第１の特許出願の発明は、特に図形アクセラレータを使用したプロセス（処理手順）間の文脈の切り換え（コンテキスト・スイッチ）速度を加速して、図形のアプリケーション・プログラムが、ウインドウ・システムのプログラムによって制御されるディスプレー内のウインドウに対して、直接的に図形アクセスを行うことができるように考案されたものである。前記発明は図形アクセラレータを目下使用していないプログラムがハードウェアの当該部分にアクセスを試みるごとに、システム・コール（呼出し）をする必要なく自動的に文脈の切り換えとアクセスの同期化を行えるようにするものである。アクセスを試みているプログラムは直接的図形アクセスを試みるアプリケーション・プログラムの一つであることもでき、又はウインドウ・システムのプログラムであってもよい。
【００２６】
ハードウェアへのアクセスを求めるプログラムは最初に２つのプログラム間で共用されている記憶装置のページ（ロック・ページと呼ばれる）に書き込む。このロック・ページはハードウェア又は共用記憶域の使用につきプログラムへ独占的なアクセス権を付与するために利用される。プログラムがアプリケーション・プログラムである場合は、時限的な期間の経過後にこの独占的な使用は終了する。つまり、前記期間の経過前にアプリケーション・プログラムがデバイスを明示的に解放しない場合は、デバイスは解放される。デバイス（図形アクセラレータ）が別のプログラムによって目下ロックされていない場合は、このプログラムは直ちに実行を開始する。デバイスが別のプログラムによって目下ロックされている場合は、プログラムが共用された記憶域ロック・ページに書き込みを試みると、ページフォルトが誘発される。オペレーティング・システム内の仮想記憶域管理ソフトウェアは記憶域のこのページを特別のページとして認識し、ページフォルトを処理するためにデバイス・ドライバ（励振器）を呼び出す。そこでデバイス・ドライバ（励振器）は、デバイスを目下ロックしているプログラムが明示的にこれを解放し、又は使用期間が経過するまで、ロックアウトされたプログラムを休止させる。プログラムがウインドウ・システムのプログラムであった場合は、共用された記憶域のページに関する任意の状態情報（例えばその位置、サイズ及びクリップの形状）が確実に更新されたことをプログラムが確認するまでロックは解除されない。
【００２７】
アプリケーション・プログラムが共用されたメモリ・ファイルを首尾よくロックすると、当該アプリケーション・プログラムが必要とする任意の状態情報が更新されており、図形ハードウェアを使用する権利を当該アプリケーション・プログラムが有するものと見なすことができる。新たなロックを有するプログラムが図形ハードウェアを使用する最後のプログラムではなかった場合は、ハードウェアに対する最初のアクセスによって別のページフォルトが誘発され、その結果デバイス・ドライバが別個に呼び出され、ドライバは図形ハードウェアにプログラムの期待する文脈をロードし、それによってプログラムはハードウェアを独占的に使用できると認識できる。次に、プログラムは図形ハードウェアの使用が終了するまで進行し、そこでロック動作と同様の動作で共用された記憶域のページのロックを解除する。
【００２８】
デバイス・ドライバはオペレーティング・システムの一部であるが、それ自体、ある種の処理動作（例えばピクセル・アクセスの同期化又はデバイスの文脈切り換え）がなされると呼び出されるように仮想記憶域管理システムと符合している。このように、デバイス・ドライバは、アプリケーション・プログラム又はウインドウ・システム・プログラムによるシステム・コールの要求を短絡し、それによって共用記憶域又はデバイスに対するアクセスの同期化又は文脈の切り換えの必要の度に、文脈切り換え（コンテキスト・スイッチ）の速度を速める。前記の特許出願に開示されている好ましい実施例の一つでは、前記発明はプログラムが実際に図形アクセラレータを必要とする場合に限って文脈切り換えを起動するように機能することによって、コンピュータ・システムの動作速度を大幅に高める。前記発明はウインドウ・システム・プログラムとアプリケーション・プログラムの双方が図形アクセラレータにアクセスするのに必要な極めて迅速な文脈切り換えを可能にすることによって、アプリケーション・プログラムが視覚的ディスプレー上のピクセルへのアクセスを付与する。
【００２９】
前述のとおり、ユニックス・オペレーティング・システムではアプリケーション・プログラムは、複数の（同時に動作して結果が出力ディスプレー上のウインドウ内に同時にディスプレーされる）プログラムの一つとして実行される。複数のウインドウ内の複数のアプリケーション・プログラムを提示した出力ディスプレーが図１に示されている。これらのウインドウの一つの部分がカバーされる場合は、カバーされた部分のデータが一時記憶域に保持されて、カバーしているウインドウが除去されたときに再度ディスプレーされるようにすることが望ましい。ウインドウ・システムは一般にこのような動作を達成するように準備されている。その他の理由と並んで上記の理由から、多くのアプリケーション・プログラムは、ウインドウ・システムのプログラムが保持されるウインドウを作成することを要求する。しかし、前述の発明はアプリケーション・プログラムがウインドウの可視部分にアクセスするために利用することができるものの、ウインドウ・システムは前記発明を利用して記憶域の保持されるウインドウ部分内のデータにアクセスできる唯一のプログラムである。このように、ウインドウ・システムを利用する場合はアプリケーション・プログラムは、ディスプレーされているウインドウの可視部分に直接的に図形アクセスが可能であったとしても、ウインドウ領域の保持される部分へのアクセスはできない。その結果、直接的な図形アクセスが可能であるアプリケーション・プログラムはそのウインドウの可視部分のピクセルを急速に更新できるものの、ウインドウの任意のカバー部分内のピクセルを更新するにはウインドウ・システム・プログラムに依存しなければならない。
【００３０】
本発明によってアプリケーション・プログラムはデータがオフスクリーンのフレーム・バッファ記憶装置にある場合も、システム記憶装置にある場合もウインドウ・スペースの保持される部分への直接的な図形アクセスすることが可能になる。
【００３１】
アプリケーション・プログラムが開始されると、オペレーティング・システムは一般にプログラムに所定量の仮想記憶アドレス・スペースを割り当てる。この仮想記憶スペースが図２に示されている。一般に、アプリケーション・プログラムは、プログラム命令コード及びプログラム・データでもって、アプリケーション・プログラムが利用できる仮想ドレス・スペースの僅かな部分を占める。アプリケーション・プログラムは、特定のハードウェア・デバイスを使用したい場合、オペレーティング・システムに対して、使用したい特定のデバイスに対応するファイル・システム内の特定のファイルを開くように求める（これによってハードウェア・デバイスの使用が要求される）。デバイスがシステムに付属し、そのプログラム用に利用できる場合は、オペレーティング・システムはアプリケーション・プログラムにファイル記述子を戻して当該のデバイス用の識別子を付与する。そこでプログラムはこの記述子を利用してデバイスを照会し、オペレーティング・システムに対してアプリケーション・プログラム用に残されている未使用の仮想記憶アドレスの一部を割当て、特定のハードウェア・デバイスと関連するレジスタと記憶装置を前記の仮想記憶アドレスのスペースにマッピングすることを要求する。それによってアプリケーション・プログラムがハードウェア・デバイスをアドレス指定できる一組の仮想アドレスが付与される。
【００３２】
同様にして、ウインドウ・システムは、図形アクセラレータ（ハードウェア・デバイス）を使用したい場合は、オペレーティング・システムに対してデバイスの使用を可能にする特定のファイルを開くように要求し、オペレーティング・システムからデバイスの記述子を受理し、その仮想記憶スペースの一部を図形アクセラレータ内のレジスタ及び記憶アドレス用に残しておく。それによってウインドウ・システムが図形アクセラレータをアドレス指定可能である第２の一組の仮想アドレスが付与される。
【００３３】
アプリケーション・プログラムによる図形アクセラレータへの直接的なアクセスなしで、ウインドウ・システムが出力ディスプレーを制御するためだけに使用される場合は、ウインドウ・システムに割り当てられた仮想記憶スペースへの図形アクセラレータの前記マッピングを介して、ウインドウ・システムだけが図形アクセラレータにアクセスできる。次に各々のアプリケーション・プログラムがそのデータをウインドウ・システムに供給し、このウインドウ・システムは代表的には、割り当てられた特定のウインドウに前記データを伝送する準備ができるまで、このデータをシステム記憶装置に置く。この種類の動作では、ウインドウ・システムだけが、図形アクセラレータ及前記マッピングを介して、図形アクセラレータにアクセスできる。この種類の動作では、ウインドウ・システムだけが図形アクセラレータ及びフレーム・バッファ記憶装置にアクセスするので、プログラムが出力ディスプレーのウインドウ内にデータをディスプレーするにはコンテキスト・スイッチング（文脈の切り換え）は必要ない。
【００３４】
しかし、アプリケーション・プログラム（代表的には図形プログラム）が直接的に図形アクセラレータにアクセスし、且つウインドウを確立し、これを移動させるためにウインドウ・システムを利用したい場合は、アプリケーション・プログラムとウインドウ・システムの双方がデバイスにアクセスできなければならない。それで、頻繁な同期化と文脈の切り換えが必要となる。このことにより、異なる仮想アドレスを使用している２つのプログラムが図形ディスプレーの符合のために同じ物理的アドレスにアクセスすることが必要である。更に、ウインドウのサイズ、位置及び重複を管理しているウインドウ・システムが直接的な図形アクセスを利用してこれらの情報の変化を適時にアプリケーション・プログラムに通信できることが必要である。このことを達成するため、２つのプログラムは互いに干渉しないように何らかの方法で相互に通信しなければならない。これは双方のプログラムがアクセスできる記憶装置の共用記憶域を使用することによって達成される。
【００３５】
可視ウインドウへの直接的な図形アクセスを行うことを望むアプリケーション・プログラムが開始されると、当該プログラムは、ウインドウ・システムに対して、直接アクセスできるウインドウを作成したいこと及びウインドウは共用されるべきであることを信号で伝達する。次にウインドウ・システムはシステム記憶装置内に共用されたメモリ・ファイルを作成し、ウインドウ・システムおよびアプリケーションの双方のプログラムはこのファイルを開き、それぞれの仮想記憶アドレス・スペースへと記憶域を割当てる。次にこの共用されたメモリ・ファイルは同期機構と、ウインドウ・システムからアプリケーション・プログラムへと情報を適時に通信する方法として、これらの目的専用に使用される。共用メモリ・ファイルにはロック・ページと、少なくとも一つの状態ページとが含まれる。状態ページは、アプリケーション・プログラムとウインドウ・システムの双方から理解できる共通のデータ構造を含んでいる。このデータ構造はウインドウの状態を示すための種々の標識（フラッグ）と情報を有している。例えば、データ構造は、ウインドウがフレーム・バッファ記憶装置のどの位置にあるかをその座標によって示し、又、目下どのプログラムがウインドウを制御しているかを告げる。各プログラムは更に、図２に示すように、フレーム・バッファを別個にそれぞれの仮想記憶アドレス・スペースにマッピングするので、図形アクセラレータのレジスタを用いては達成できない動作の場合に、フレーム・バッファ記憶装置へのアクセスを直接得ることができる。
【００３６】
いくつかのウインドウ・システムを使用することによって得られる利点の一つはウインドウの保持機構である。ウインドウの保持される部分には可視ウインドウの任意のカバーされた部分のデータのコピーが含まれている。ウインドウの保持される部分は代表的にはシステム記憶装置内に記憶される。可視ウインドウが図１に示すようにディスプレー上の第２のウインドウによってカバーされている場合は、ウインドウの保持される部分はカバーされた部分に送られる最後のデータのコピーを保存するために利用され、カバーを外された場合はウインドウを復元することができる。前述したように機能する従来の形式のウインドウ・システムでは、ウインドウ・システム・プログラムだけがこの保持されるウインドウのデータにアクセスすることができた。その結果、アプリケーション・プログラムによる直接的な図形アクセスを介して可視ウインドウのカバー部分にデータが供給される場合は、アプリケーション・プログラムはウインドウの保持される部分にアクセスできないので、データは損逸してしまう。アプリケーション・プログラムがウインドウの更新を担っているので、ウインドウ・システム・プログラムはウインドウのカバー部分の更新が必要かどうかは知りえない。その結果、ウインドウのカバーが外されると、ウインドウは古いデータをディスプレーすることになる。一般に極めて迅速な図形プログラムだけが直接的な図形アクセス機構を使用しているので、これらの図形プログラムは、特定のアプリケーション・プログラムによってプロセッサの制御の獲得時点で可視状態になったウインドウ部分への新たなデータの書き込みが可能になるまでは、カバーを外される度に歪んだウインドウをディスプレーする場合が多かった。
【００３７】
ディスプレーと関連したオフスクリーン・データを記憶するために余剰のフレーム・バッファ記憶装置部分を利用するように開発された前述の新規の方法によって、ウインドウの保持される部分を極めて利便に記憶できる大量の記憶域が得られる。例えば、アプリケーション・プログラム用に二重バッファリングを実行するディスプレー・システムは二重バッファリングが実施されていない期間中は、相当量の未使用のフレーム・バッファ記憶域（すなわち余剰の部分）をもたらす。この記憶域を保持されるウインドウの支援と、同様のディスプレー関連データ用に利用できれば、図形処理動作の速度を大幅に加速することができる。この情報はディスプレー・ハードウェア内に局所的に記憶することができるので、システム記憶装置内に情報を記憶し、これを更新するために通常は必要である時間を大幅に節減できる。しかし、ウインドウの保持される部分をアプリケーション・プログラムによって直接アクセスでき、従ってウインドウ及びディスプレーの同様の部分のカバーが外された時に古いデータの問題が発生しなければ更に一層好ましいであろう。
【００３８】
上記のことを達成するため、本発明はアプリケーション・プログラムによるシステム・コール（呼出し）の必要性が無くなるように迅速なアクセス同期化とデバイスの文脈切り換えの利用を拡張し、第２の共用記憶機構の使用によりウインドウの保持される部分への直接的なアクセスを可能にし、この直接アクセスを保持されるウインドウを内部に記憶できる余剰のフレーム・バッファ記憶装置部分とシステム記憶装置の双方に拡大し、プログラム間の同期化と通信を達成するために、プログラムが互いに干渉しないようにロック機構の利用を拡大したものである。本発明の方法の段階は図３に詳しく示されている。
【００３９】
この方法の第１段階はウインドウ・システムの動作の実際の背景になるものである。この段階１０で、ウインドウ・システム・プログラムは動作を開始する。このプログラムは仮想記憶スペースを受理し、フレーム・バッファと図形アクセラレータのレジスタをこのスペースにマッピングする。
【００４０】
アプリケーション・プログラムは、可視ウインドウと、可視ウインドウ内にカバーされたデータのコピーを含んでいる保持されるウインドウとの双方に直接アクセスしたい場合は、共用されるべきウインドウを作成したい旨を（段階２０）、又、ウインドウ・システムの保持されるウインドウの機能を利用したい旨を（段階３０）ウインドウ・システムに対して通信する。次にアプリケーション・プログラムはこのウインドウの可視部分に直接アクセスすることを要求する（段階４０）。これにはウインドウ・システムの承認が必要である。この承認が与えれたものと仮定すると、ウインドウ・システムの応答及びウインドウ・システムとアプリケーション・プログラムとのインタラクションが段階５０、６０及び７０に示すように、ウインドウの可視部分に関して前述したように継続される。しかし、このインタラクションは、本発明によって、ウインドウの保持される部分をも含むように拡張されている。
【００４１】
次に、アプリケーション・プログラムは、ウインドウ・システム・プログラムに対して、保持されるウインドウ・スペースへのアクセスを望んでいる旨の信号を送る（段階８０）。ウインドウ・システムは、共用の保持されるウインドウに対する直接的な図形アクセス要求を承認すると、段階９０に移行して、ウインドウの保持される部分に関する同期情報用の付加的な共用メモリ・ファイルを作成し、共用メモリ・ファイルの第１ページをこのファイル用の状態ページとして初期設定する。ウインドウ・システムは、任意のウインドウを作成すると、ウインドウ識別子を供給し、この識別子はウインドウの保持される部分用の共用メモリ・ファイル名に利用されて、ウインドウ・システムとアプリケーション・プログラムの双方に知られているファイル・システム内の独自のファイル名が付与される。次に、ウインドウ・システムは（依然として段階９０において）、この付加的な共用メモリ・ファイルのファイル・サイズを拡大して、ウインドウの保持される部分内の全てのピクセルを包括するのに充分なサイズにし、この記憶域の全てをその仮想記憶域アドレス・スペースへとマッピングする。
【００４２】
段階９０を実施する際に、オフスクリーン・フレーム・バッファ記憶装置が保持されるウインドウのデータ用に活用可能である場合は、ウインドウ・システムは先ず自動的に前記のオフスクリーン・フレーム・バッファ記憶装置を割当てようと試みる。それが不可能である場合は、ウインドウ・システムは保持されるウインドウのデータをシステム記憶装置に送る。ウインドウの保持される部分がシステム記憶装置内にある場合は、ピクセルは共用されたメモリ・ファイルのピクセル領域にコピーされる。ウインドウ・システムは、アプリケーション・プログラムに対して、共用メモリ・ファイルの状態ページ内の情報によって、ウインドウの保持部分がオフスクリーン・フレーム・バッファ記憶装置内にあるのか、共用メモリ・ファイルのピクセル領域内にあるのかを指示する。ウインドウの保持される部分が図形アクセラレータによって制御されたオフスクリーン・フレーム・バッファ記憶装置内に送られると、ピクセル・データは、ウインドウ・システムによって保持されるウインドウの共用メモリ・ファイルのピクセル領域への移動をされない限り、同じ位置に留まる。前記の移動が生じ、ピクセル・データが後に別の位置のオフスクリーン記憶域内に送り戻されると、アプリケーション・プログラムは、ウインドウ・システムによって更新された共用メモリ・ファイルの状態ページに次にアクセスする際に、新たな位置を通知する。
【００４３】
アプリケーション・プログラムは更に段階１００で付加的な共用メモリ・ファイルをその仮想記憶スペースにマッピングする（図２を参照）。アプリケーション・プログラムがウインドウ・システムに対してウインドウを作成するように要求すると、ウインドウ・システムはウインドウの識別子をアプリケーション・プログラムに戻す。そこでアプリケーション・プログラムは、このウインドウ識別子をこのウインドウに係わる全ての通信に利用する。アプリケーション・プログラムとウインドウ・システムの双方がこの独自の識別子のことを知っており、この識別子から保持されるウインドウの共用メモリ・ファイル用のファイル名を構成する方法を知っているので、アプリケーション・プログラムはウインドウの保持される部分へのアクセスを得るにはどのファイルを開き、どの仮想記憶アドレス・スペースにマッピングするべきかを自動的に知る。アプリケーション・プログラムは同様にしてウインドウの可視部分用の共用メモリ・ファイルを発見する。
【００４４】
前述したように、この第２共用メモリ・ファイルの第１ページはアプリケーション・プログラムとウインドウ・システムの双方がウインドウの保持される部分に関して通信できるデータ構造を備えている。このデータ構造は共用された情報の状態を示すための種々の標識（フラッグ）を有している。例えば、データ構造は、ファイルがフレーム・バッファのオフスクリーン記憶域にあるか、システム記憶装置内の共用メモリ・ファイルのピクセル領域内にあるかを告げる。更にこのデータ構造は特にウインドウの保持部分が余剰のフレーム・バッファ記憶域にある場合はその座標によって位置を示し、一つ以上のフレーム・バッファが起動している場合はどのフレーム・バッファに位置しているかを示す。このウインドウ位置の情報は、アプリケーション・プログラムが図形アクセラレータのレジスタを介しては得られない動作用にフレーム・バッファ記憶域を直接アクセスする必要がある場合は、アプリケーション・プログラムによって利用されることができる。
【００４５】
アプリケーション・プログラムは、可視なウインドウ・スペースと保持されるウインドウ・スペースの状態を構成する共用メモリ・ファイルとピクセルの双方を直接アクセスできるので、ウインドウの可視部分の内容を更新する場合、ウインドウの保持部分内の任意の必要な領域を同時に更新することができる。そこで、ウインドウの重複部分が後にカバーを外される場合は、新たにカバーを外された部分のデータはウインドウ・システムによってスクリーンにコピーされた場合も古いデータではない。
【００４６】
ウインドウの可視部分と保持される部分の双方で直接的な図形アクセスを求めるウインドウ・システムとアプリケーション・プログラムとの双方が適切な共用記憶域通信領域を確立すると、それらの同期インタラクションは次のように進展する。
【００４７】
ウインドウ・システムとアプリケーション・プログラムの双方は、仮想記憶システムがウインドウの可視部分用の共用記憶ロック・ページへの専有アクセスを許容するように既に要求している（段階５０及び８０）。双方のプログラムとも次の規則、何れか一方が共用記憶域の状態ページ内の任意の状態情報を変更し、またはウインドウの可視部分または保持される部分のピクセル領域をアクセスする前には、共用記憶域ロック・ページへのアクセスを試みることによってこれらの共用された領域を先ず「ロック」するという規則に従う（段階１１０又は段階１３０）。このロック・ページへのアクセスは、有効である場合には、仮想記憶システムによってアクセスを行うプログラムがこれらの記憶域の全ての一時的な専有者であるとして扱われるようにされる。何れのプログラムもロックを付与されていない場合にロック・ページへのアクセスが試みられると、仮想記憶システムによってそのプログラムには即座にロックが付与される。プロセス（処理手順）は必要である任意の状態又はピクセルの変更を行いつつ継続し、その後、ロック動作と同様のアクセスを用いてロック・ページのロックを解除する。しかし、一つのプログラムがロック解除されていないロック・ページを有し、別のプログラムがロック・ページへのアクセスを試みる場合は、この別のプログラムは仮想記憶システムのページフォルト機構によってブロックされ、ロック・ページのロックが解除されるまでドライバによって休止状態に置かれる。ウインドウ・システムはそれが所望する期間だけロック状態を維持できるという一種の特別の特権を有しているが、過剰に長期間に渡ってロック状態を維持するアプリケーション・プログラムは時間切れになり、デバイス・ドライバが割り込んで、ロックをアプリケーション・プログラムから解除する。
【００４８】
ウインドウ・システムは、共用された記憶域の状態情報を更新する必要があるたびに、直接的な図形アクセスを行う全てのアプリケーション・プログラムがそのロックを放棄するまで待機して、待機中は新たなロックが付与されることを防止し、その後、ウインドウ・システムは影響される全てのウインドウをロックし、ピクセルをオフスクリーン記憶域から共用ピクセル領域へと移動することを含む更新を行い、その後、全てのロックを解除する。
【００４９】
このようにして、共用記憶域の状態情報、またはピクセル情報の何れかをアクセスする前にロックを確保することが直接的な図形アクセスを行うアプリケーション・プログラムの要求であるので、アプリケーション・プログラムが過渡状態で状態情報又はピクセル情報の何れかに遭遇することは不可能である。アプリケーション・プログラムは一旦ロックを確保すると、ロックの解除に先立ってウインドウの可視なピクセル領域と保持されるピクセル領域の双方を更新でき、又、更新することが保証される。
【００５０】
このように、ウインドウ・システムは、共用記憶域の状態ページ内の状態情報を更新する必要があるときは、全てのアプリケーション・プログラムが常に直接的な図形アクセスからロック・アウトされることを保証するためにロック・ページを利用する。同様にして、アプリケーション・プログラムは、直接図形アクセスを用いてそのウインドウの内容を更新したい場合は（段階１３０）、先ず前述の方法でウインドウの可視部分用の共用記憶域のロック・ページに書き込む。アプリケーション・プログラムがアクセスを得て、共用記憶域のロック・ページをロックすると、ウインドウの可視部分と保持される部分の双方用の状態情報の全てが完全且つ正確であるものと見なすことができる。そこでアプリケーション・プログラムはこの情報を利用してウインドウの可視部分と保持される部分の双方の内容の更新をどのように行うかを決定することができ、ロックを放棄する前に更新を行う。再度、別のプログラムの状態が図形アクセラレータ上に記憶されている場合、図形デバイスをアクセスしようとする試みによってページフォルトが生成され、デバイス・ドライバを文脈の切り換えを達成するための動作状態にする。
【００５１】
前述したように、デバイス・ドライバはオペレーティング・システムの一部ではあるが、これはそれ自体が仮想記憶域管理システムと符合するので、アクセスの試みによりデバイスの文脈切り換えが行われるべき場合は呼び出される（段階１２０又は段階１４０）。従って、ドライバはデバイス用に文脈切り換えが必要であるごとに、アプリケーション・プログラムによるシステム・コール（呼出し）要求を短絡させるために利用される。これによって高速の図形処理動作の伝送速度を維持できる速度で極めて迅速に切り換えを行うことができる。
【００５２】
一般的には、ウインドウ・システムが一旦準備されると（段階１１０）、ウインドウ・システムは共用された保持されるウインドウの状態領域にそれほど関与する必要はない。通常はウインドウのサイズ変更の際に、または、二重バッファリングがウインドウの保持される部分により使用中のフレーム・バッファの領域を必要として記憶されたピクセル・データが共用メモリ・ファイルのピクセル記憶域に移動する必要がある場合に、状態情報を変更するだけである。後者の場合は、ウインドウ・システムはアプリケーション・プログラムをロックアウトすることによってウインドウの保持される部分用の共用メモリ・ファイルへのアクセスを確保する。これは直接的な図形アクセスの特権を有する全てのアプリケーション・プログラム用の全ての共用メモリ・ファイルに「全ロック」指令を発することによって達成される。全ロック指令はロック解除されたこれらの共用メモリ・ファイルをロックし、使用中の任意のファイルでの時間切れ期間を待機し、その後、先取り（プリエンプション）が必要な場合は、これらの共用メモリ・ファイルを先取りし、ロックする。ウインドウ・システムは、共用メモリ・ファイル上でロックを得ると、ピクセル・データが共用メモリ・ファイルのピクセル領域内にあることを指示するためにデータ構造内の呼称を変えて、データが移動した場合にアプリケーション・プログラムがウインドウの保持される部分用のピクセルを発見し、これらをアクセスできるようにする。最後に、ウインドウ・システムはデータをフレーム・バッファの余剰記憶スペースから、ファイルの第２ページの第１バイトで始まる共用メモリ・ファイルのピクセル領域へと移動させる。
【００５３】
次にアプリケーション・プログラムが保持されるウインドウ記憶域に書き込むために共用メモリ・ファイルへのアクセスを得ると（段階１３０）、アプリケーション・プログラムはシステム記憶装置内の共用メモリ・ファイルのピクセル記憶域内にファイルがあることを示す情報を状態ページに発見する。ウインドウのサイズが変更されている場合は、ウインドウ・システムは共用メモリ・ファイルの状態ページ内に古い標識をセットし、ファイルの名称がファイル・システムから削除されたことを確認するために点検し、同じ名称であるが、新たなウインドウのサイズに適したサイズのファイルを再度作成し、このファイルを再度初期状態に設定する。アプリケーション・プログラムが古い共用記憶域に次にアクセスしようと試みると、アプリケーション・プログラムは古い標識を発見し、古いファイルを閉じ、新たなファイルを再開し、再度マッピングすべきであることを知る。
【００５４】
これまで本発明を好ましい実施例に基づいて説明してきたが、本発明の精神と範囲から逸脱することなく専門家には種々の修正と変更が可能であることが理解されよう。例えば、本発明は代表して保持されるウインドウとして説明してきた実施例だけではなく、ウインドウ・システムにより付与される多重バッファリング支援を利用したアプリケーション・プログラムの場合は多重オフスクリーン・バッファにも利用できる。従って本発明は特許請求の範囲によってのみ限定されるべきものである。
【００５５】
【発明の効果】
以上説明してきたように、本発明によればフレーム・バッファ記憶域内のオフ・スクリーン・データの記憶域で利用されるハードウェア用の文脈切り換えを行うためにシステムを呼び出す必要がなく、データがオフスクリーンのフレーム・バッファ記憶域にある場合も、システム記憶装置内にある場合でもウインドウの保持部分に直接図形アクセスを行うことができので、処理時間を大幅に短縮できる。
【図面の簡単な説明】
【図１】  複数の重複するウインドウを示す出力ディスプレー・スクリーンの状態を示す図である。
【図２】  直接図形アクセスを有するアプリケーション・プログラム用の仮想アドレス・マップである。
【図３】  本発明に従った方法を示す流れ図である。
【図４】  本発明に従った方法を示す流れ図である。
【図１】
0003645276.tif 000002
【図２】
0003645276.tif 000003
【図３】
0003645276.tif 000004
【図４】
0003645276.tif 000005