JP3645276B2 - 直接的な図形アクセスを可能にする方法および装置 - Google Patents
直接的な図形アクセスを可能にする方法および装置 Download PDFInfo
- Publication number
- JP3645276B2 JP3645276B2 JP20190492A JP20190492A JP3645276B2 JP 3645276 B2 JP3645276 B2 JP 3645276B2 JP 20190492 A JP20190492 A JP 20190492A JP 20190492 A JP20190492 A JP 20190492A JP 3645276 B2 JP3645276 B2 JP 3645276B2
- Authority
- JP
- Japan
- Prior art keywords
- window
- access
- shared memory
- storage
- memory file
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/14—Display of multiple viewports
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Digital Computer Display Output (AREA)
- Controls And Circuits For Display Device (AREA)
Description
【産業上の利用分野】
本発明はディスプレー記憶装置に関し、特に直接的な図形アクセスが可能であるようにして、オフ・スクリーン・ピクセル・データを記憶するためにディスプレー記憶装置の利用をすることに関する。
【0002】
【従来の技術】
コンピュータはその最も簡単な様式では、データを単一のプログラムからデータを記憶するフレーム・バッファに書き込んで、データが出力ディスプレーへと書き込まれることができるようにされる。この単一プログラムのデータが出力ディスプレー全体をカバーする。出力ディスプレー上に一時に一つ以上のプログラムをディスプレーしたい場合は、コンピュータ・システムは、何らかの方法で各プログラムをディスプレーできる複数のウインドウ(スクリーンの異なる部分)を付与し、情報を各プログラムから適正なウインドウに向け、各々の適正部分が提示されるように異なるウインドウの重複に注意を払うことが必要である。
【0003】
上記のタスクの全てが各個のプログラムによって実行される場合は、異なるプログラムが互いに干渉しないようにプログラム相互間で大量のチェックが行われなければならない。このことによってシステムの動作速度が遅くなり、設計が貧弱なソフトウェアの場合はシステムの動作を歪めることがある。このため、より先進的なコンピュータ・システムでは、ディスプレーされる情報を制御するため、フレーム・バッファへの書き込み動作全体を担うウインドウ・システムのプログラムを設計している。ウインドウ・システムはディスプレー全体を制御する。このウインドウ・システムは、個々のアプリケーション・プログラムから情報をディスプレーする要求を受け、これらの要求をシステム記憶装置に記憶し、異なるプログラムをディスプレーできるウインドウを選択し、アプリケーション・プログラムによって付与され、主記憶装置に記憶された要求をフレーム・バッファへの本文(テキスト)及び図形出力へと変換し、ウインドウの重複を制御し、要求に応じてウインドウのカバーされた部分のデータを記憶しておくことにより後に検索できるようにし、多くのプログラムを単一の出力ディスプレー装置でディスプレーするのに必要な全ての動作を実行する。このことによってプログラムがその出力を提示する際に正しく動作することが保証され、アプリケーション・プログラマがディスプレー目的で多くの手順を書き込む必要がなくなる。
【0004】
ウインドウは一般に出力ディスプレー上の可変サイズの方形ピクセルとして表される。一つのウインドウが別のウインドウと重複すると、重複されたウインドウからのピクセル部分は出力ディスプレー上では見えなくなる。重複されたウインドウの不可視(目視不能)部分が出力ディスプレー上のウインドウの重複状態の変化によって再び可視(目視可能)状態になると、このウインドウのそれまで不可視(目視不能)であったピクセル領域は修復されなければならない。場合によってはプログラムがこのウインドウに対して新たに露出された領域を修復する出力を送ることが可能である。別の場合には、通常は修復の複雑さにより、ウインドウ・システムが、出力の流れからそれまでにピクセル領域に現れたピクセルを覚えており、ピクセルを必要として保持し、修復するように処理し、もってプログラムが修復動作を無視できるようにする。ある種のウインドウ・システムはこの処理を保持されるウインドウ(リテインド・ウインドウ)と呼ばれる機構で支援する。ウインドウの損傷領域を修復することにわずらわされたくないアプリケーション・プログラムはこの機構をウインドウ・システムに要求する。
【0005】
ウインドウ・システムがこれらの動作の全てを実行するように設計されている場合でも、それらを利用するにはある種の困難さが伴う。例えば、ウインドウ・システムが支援しないある種の図形処理がある場合がある。更に、このようなウインドウ・システムのプログラムを実行するコンピュータ・システムは、フレーム・バッファに直接書き込みを行うプログラムのように迅速には、情報のディスプレー動作を行わない。必要なオーバヘッドを備えたウインドウ・システムのプログラムは出力ディスプレーを毎秒10回しか変更し得ないことがあり、一方、ライブ・ビデオ・ディスプレーは観察者に対して歪みが見えないように動作を描写するには毎秒60回ディスプレーされることを要求する。
【0006】
図形処理の動作全体を加速するため、多くの図形ディスプレー機能のためにする中央処理装置の使用を少なくして図形情報のディスプレーを加速する種々の図形アクセラレータが設計されてきた。コンピュータ・システムによっては各個のアプリケーション・プログラムからのデータがウインドウ・システムをバイパスすることができ、図形アクセラレータに直接書き込まれることによって、出力ディスプレー上での図形画像の描写を大幅に加速するものがある。極めて迅速な図形プログラムでは、描写を加速するためにこの機能を利用している。しかし、ウインドウ・システムのプログラムは、ディスプレー上でのウインドウ領域の割当てと処理を制御するため、且つ極めて迅速な描写を必要としない別のアプリケーション・プログラム用の図形画像の描写を制御するために、多重タスクの環境で利用されている。その結果、2つの別個のプロセス(処理手順)、すなわちウインドウ・システムによるウインドウの配置と運動の制御と、アプリケーション・プログラムによるウインドウ用のデータの供給とが、(アプリケーション・プログラムが直接的に図形アクセスを行うウインドウ用の)図形アクセラレータのハードウェアを共用しなければならない。
【0007】
コンピュータ・システムで実行されている多重のプロセス(処理手順)が、適正に動作するために、実行されているプロセス(処理手順)の状態に関する情報(プロセス(処理手順)の状態を定義するデータ、一般には単に“状態”と呼ばれる)を記憶するハードウェアの一部を共用したい場合は、異なるプロセス(処理手順)が特定のハードウェアを利用したい場合ごとに何らかの手段によってハードウェアの状態が変更されなければならない。すなわち、目下実行されているプロセス(処理手順)は、停止した時点からの処理を継続できるように、プロセスの再開の際にハードウェア内で復元可能であるように、その状態が保存されなければならない。更に、実行されるべきプロセス(処理手順)は、適正に実行されるようにハードウェア内でその状態が復元されなければならない。この動作は一般に状態の保存と復元、もしくは文脈の切り換え(コンテキスト・スイッチ)と呼ばれている。
【0008】
伝統的には、プロセス(処理手順)はハードウェアの特定の部分の独占的な利用を要求し、これを一定期間独占的に利用する。この独占的な利用を確保するため、プロセス(処理手順)はオペレーティング・システムへ呼出しを行う(システム・コール)。オペレーティング・システムは多くの点検を実施し、最終的には文脈の切り換えを達成するものと想定される。このような呼出しには多くの時間を要し、中央処理装置が他の機能を果たせなくなる。コンピュータが単一のアプリケーション・プログラムを実行している場合は、このような呼出しは頻繁には行われないので所要時間は決定的に重要ではない。しかし、同時に多数の異なるアプリケーション・プログラムを多重タスクとして実行するコンピュータ・システムの場合は、文脈の切り換えを達成するためのアプリケーション・プログラムからのシステムの伝統的な呼出し手順を極めて頻繁に利用しなければならず、システム動作の速度が大幅に遅くなる原因になる。
【0009】
一般に多数の文脈切り換えを必要とする複数個のプロセッサ(例えば中央処理装置及び浮動点プロセッサ)を使用しているシステムでは、オペレーティング・システムには、文脈の切り換えのためにプロセス(処理手順)によってシステム・コール(呼出し)を行う必要性をなくし、ひいてはそれに必要な時間を短縮するスケジューリング機能が、備えられてきた。しかし、このような自動的な文脈切り換え機構は一般に、システム内の他のハードウェアを利用するためには活用できなかった。
【0010】
出力ディスプレー上の複数個のウインドウに多重のアプリケーション・プログラムの結果を同時にディスプレーする場合のように極めて大量のデータの伝送をプロセス(処理手順)が必要とする場合は、極めて広範囲の文脈切り換え(コンテキスト・スイッチ)が必要である。例えば、図形アクセラレータは出力ディスプレー上のウインドウに同時にディスプレーされる別個のアプリケーション・プログラムに関する状態を記憶する。この状態は、個々のウインドウの位置、アプリケーション・プログラムによって使用されるカラー・モード、及びプログラムによってディスプレーされるべき結果が二重バッファリングされているかどうか、及びその他の多数の要素を描写する。このプロセス(処理手順)の実行時には同時にウインドウ・システムの動作に必要な状態が図形アクセラレータに記憶される。
【0011】
多重タスク環境では通常は、プロセス(処理手順)の実行中の時間全体にわたってソフトウェアが必要とする全てのハードウェア資源の独占的な利用を要求するか、それがハードウェアを必要とするごとにハードウェアを明示的に要求するように、ソフトウェアが書かれなければならない。限定されたハードウェア資源の最大限の共用を可能にするために、良好に書かれたソフトウェアは一般に、共用ハードウェアへの独占的なアクセス権を保持する時間を限定している。しかし、明示的なアクセス要求は一般に時間を費やすので、多くのソフトウェアは、アクセス要求があるにしてもどの様な種類のアクセスが実際に要求されているかを知ることなく、比較的トップレベルのコードでアクセス要求を行う。多重タスク・システムでは、プロセス(処理手順)による中央処理装置の利用ごとに図形アクセラレータへのアクセス要求が促されるならば、中央処理装置と時分割している異なるプロセス(処理手順)による無数の要求によって、図形ハードウェアが必ずしも要求されていない場合でも常時文脈の切り換えがなされるであろう。これらの要求の各々がオペレーティング・システムへの呼出しを要求するならば、多重ウインドウの実際のディスプレー速度はアクセス要求の処理のオーバヘッドのみに起因して劇的に遅くなる。異なるアプリケーション・プログラムによる図形アクセラレータの実際の利用の度にしかアプリケーション・プログラムによってシステム・コール(呼出し)が要求されない場合でも、要求によって多くの時間が無駄になる。
【0012】
最近になって、アプリケーション・プログラムによるシステム・コール(呼出)を必要とせずに、複数のプロセス(処理手順)が中央処理装置と数学的コープロセッサに加えてハードウェア・デバイスを利用できる文脈切り換え機構が提案されている。本出願の出願人に譲渡されている1989年9月28日出願のD.ローゼンタール他の米国特許出願番号第07/413,976号「デバイスの文脈切り換えの方法と装置」はこのようなシステムを開示している。この発明の教示によれば、プロセス(処理手順)によるハードウェア・デバイスの利用要求とこれに付随する文脈の切り換えは、システム・コール(呼出し)から、ハードウェアとオペレーティング・システム内に既に組み込まれ、最適化されたソフトウェアの双方から構成されたシステムの仮想記憶域管理部分へと移行している。デバイス上で動作していないプロセス(処理手順)によるデバイスを利用しようとする試みだけでページフォルトがトリガされ、そのページフォルトはシステムの仮想記憶域管理部分によって自動的に処理されて、文脈の切り換えが達成される。記憶域管理機能は文脈切り換えを効率よく実行するように既に準備されている。
【0013】
アプリケーション・プログラムから明示的なアクセス要求を除去することによって文脈切り換えに含まれるオーバヘッドの量が劇的に減少する。記憶域管理装置は特定のハードウェア部分に関してデバイス・ドライバ(励振器)を呼び出す。デバイス・ドライバ(励振器)は自動動作として文脈切り換えを行うように準備されている。好ましい実施例では、プロセス(処理手順)が特定のハードウェア・デバイスを実際にはアクセスしない場合は、デバイスの文脈切り換えは決してなされない。図形アクセラレータと共に使用する場合は、プロセス(処理手順)は行われる文脈切り換えを縮減し、図形アクセラレータ・ハードウェアを用いて複数のアプリケーション・プログラムを多重ウインドウに提示する際に生ずる文脈切り換えの速度を加速するように機能する。この新規の発明は同時に実行される多重図形アプリケーション・プログラム用の直接的な図形アクセス支援に必要な文脈切り換えを大幅に加速するものである。
【0014】
しかし、最近になってディスプレーと関連するオフスクリーン・データを記憶するためにフレーム・バッファ記憶装置の余剰部分を利用する新規の方法が開発されている。例えば、オフスクリーン記憶装置に別のウインドウの部分によってカバーされた図形ウインドウ内の第2のデータ表現を記憶することが有用である場合が多い。この第2の表現によって別のウインドウ部分によりカバーされたウインドウ不可視部分内のピクセル・データ用の一時記憶(“保持される(リテインド)ウインドウ”と呼ばれる)が提供される。このピクセル・データは、覆っているウインドウがカバー位置から除去されると、スクリーンに復元できるように保存される。このオフスクリーンの保持されるウインドウをディスプレー・ハードウェア内に記憶することができれば、システム記憶装置内にデータを記憶するのに必要な時間を大幅に節減できる。アプリケーション・プログラム用に二重バッファリングを行うディスプレー・システムでは二重バッファリングが利用されない期間中、相当量の未使用のフレーム・バッファ記憶装置部分がある。前記の最近の発明がなされる以前は、この目的でディスプレー記憶装置を利用するには、オフスクリーン記憶装置の割当てに時間が掛かり過ぎた。1991年6月17日付け出願され、本発明の出願人に譲渡されているマッキンタイヤ他の米国特許出願番号第716671号「オフスクリーン・ディスプレー記憶装置の割当て方法」は、このオフスクリーン・ディスプレー記憶装置を利用する方法を詳細に開示している。
【0015】
一般的には、ウインドウ・システムは保持されるウインドウのピクセル・データの記憶と更新を制御する。しかし、アプリケーション・プログラムにより直接的な図形アクセスがなされる場合には、ウインドウ・システムは、ピクセル・データを制御せず、従って、ウインドウの不可視(目視不能)部分内のデータの更新を、ウインドウの可視(目視可能)部分に対してアプリケーション・プログラムによって成される更新に対応するように、行うことができない。その結果、ウインドウがカバーされなくなると古くなったピクセル・データが供給されることがある。アプリケーション・プログラムを呼び出す必要なくウインドウのカバーされた部分を更新するには、直接的図形アクセスを利用するアプリケーション・プログラムが、可視(目視可能)部分について書き込むと同時にオフスクリーン記憶装置に書き込み可能であることが必要である。このことは特に、古い出力を覚えて復元する能力を備えないアプリケーション・プログラムの場合に当てはまる。この二重の書込みアクセスは前述の最初の特許出願に開示されている機構によっては不可能である。
【0016】
アプリケーション・プログラムにとってフレーム・バッファ内のオフスクリーン記憶装置を直接的に図形アクセスすることが有用であるが、ディスプレー上で実行されている任意のアプリケーション・プログラムについて二重バッファリングが必要である場合は、この二重バッファリング用にオフスクリーン用のフレーム・バッファのスペースを供与しなければならない。このような場合は、フレーム・バッファの(二重バッファリング用には目下使用されていない)余剰スペース内に記憶された保持されるウインドウ又は同様のオフスクリーン・データは全てシステム記憶装置へと待避されなければならない。その結果、データがシステム記憶装置に記憶されている場合は、アプリケーション・プログラムもウインドウの保持される不可視部分に直接的な図形アクセスを行う必要があろう。更に、ウインドウ・システムはオフスクリーン・データがフレーム・バッファに記憶されているにせよ、システム記憶装置に記憶されているにせよ、その移動を制御するので、アプリケーション・プログラムとウインドウ・システムの双方がフレーム・バッファ又はシステム記憶装置内の保持されるウインドウのデータを処理できなければならない。従ってオフスクリーン又はシステム記憶装置の何れかのピクセル・データに共用してアクセスする機構を必要とするだけではなく、オフスクリーン記憶装置内にある場合はアクセスの同期化と、図形ハードウェアの文脈切り換えを確実にする方法が必要である。
【0017】
【発明が解決しようとする課題】
従って、本発明の課題はフレーム・バッファ記憶装置内のオフスクリーン・データの記憶に使用されるハードウェアの文脈切り換え(コンテキスト・スイッチ)を実行するためにシステム・コール(呼出し)の必要をなくすることである。
【0018】
本発明の別の課題はフレーム・バッファの余剰部分の記憶域に記憶されたオフスクリーン・データ用の状態の文脈切り換えを自動化することである。
【0019】
本発明の付加的な課題はフレーム・バッファの余剰記憶域、又はシステム記憶装置の何れに記憶されている場合でもオフスクリーン・データ用の状態の文脈切り換えを自動化することである。
【0020】
【課題を解決するための手段】
本発明の前記の課題及びその他の課題は、保持されるウインドウ部分用に使用され、図形アクセラレータによって制御されるフレーム・バッファ記憶装置の一時記憶域へのアプリケーション・プログラムによる直接的な図形アクセスを可能にする方法であって、ウインドウ領域の保持される部分が最初にフレーム・バッファ記憶装置の余剰部分内に存在することを示す一時記憶域用のシステム記憶装置内に共用メモリ・ファイル、この共用メモリ・ファイルは処理に際して共用記憶域が使用されることを示す記憶装置を有している、を確立する段階と、アクセスを試みるプロセスとは別のプロセス(処理手順)の状態が図形アクセラレータに記憶されている場合に図形アクセラレータへのアクセスが試みられるごとにページフォルトを作成する段階と、ページフォルトに応答してデバイス・ドライバを呼び出して図形アクセラレータに記憶された文脈をアクセスを試みるプロセス(処理手順)の文脈へと切り換える段階と、を有する方法によって解決される。
【0021】
本発明の前記の、及びその他の課題と特徴は添付図面を参照した本発明の以下の詳細な説明によってより明解に理解されよう。図中同一の素子には同一の参照符号が付されている。
【0022】
【表記方法と用語】
以下の詳細な説明の部分の中にはコンピュータ記憶装置内のデータ・ビットでの動作を記号的表現で説明している部分がある。これらの説明と表現はデータ処理の分野の専門家がその研究の本質を他の専門家に最も有効に伝達するために用いられる手段である。処理動作とは、物理量の物理的処理を必要とする動作である。必ずとは限らないが通常は、これらの物理量は記憶、伝送、結合、比較及びその他の処理が可能である電気又は磁気信号の形式をとっている。場合によっては、主として一般に用いられているという理由から、これらの信号をビット、数値、要素、記号、文字、用語、数字等で表すことが便利であることが実証されている。しかし、これらの用語及びそれに類する用語は全て適宜の物理量に関連するものであり、これらの物理量に付与された便利なラベルの役割を果たすものに過ぎないことを留意されたい。
【0023】
更に、実行される処理は人間のオペレータによって行われる知的な演算に関連する加算又は比較のような用語で呼ばれる場合が多い。しかし、多くの場合は本発明の部分を構成する本明細書で説明するどの演算も人間のオペレータによるこのような能力は必要なく、望まれるものでもない。本発明の動作を実行する有用な機械には汎用のディジタル・コンピュータ又はこれに類する装置が含まれている。いずれの場合も、コンピュータを操作する操作方法と計算自体の方法との区別に留意されたい。本発明は電気的又はその他の(例えば機械的、化学的)物理信号を処理して別の必要な物理信号を生成するための方法と装置に関するものである。
【0024】
【実施例】
本発明は異なるコンピュータ動作システムを実行する多くのコンピュータ・システムの何れにも応用できるが、理解を用意にするため、以下の説明ではユニックス・オペレーティング・システムの文脈で説明することにする。更に、出力ディスプレー上の複数個のウインドウのディスプレーを制御する機構はXウインドウ・システム又はこれと同類のウインドウ管理システムの文脈で説明する。
【0025】
既に指摘したように、前記の第1の特許出願の発明は、特に図形アクセラレータを使用したプロセス(処理手順)間の文脈の切り換え(コンテキスト・スイッチ)速度を加速して、図形のアプリケーション・プログラムが、ウインドウ・システムのプログラムによって制御されるディスプレー内のウインドウに対して、直接的に図形アクセスを行うことができるように考案されたものである。前記発明は図形アクセラレータを目下使用していないプログラムがハードウェアの当該部分にアクセスを試みるごとに、システム・コール(呼出し)をする必要なく自動的に文脈の切り換えとアクセスの同期化を行えるようにするものである。アクセスを試みているプログラムは直接的図形アクセスを試みるアプリケーション・プログラムの一つであることもでき、又はウインドウ・システムのプログラムであってもよい。
【0026】
ハードウェアへのアクセスを求めるプログラムは最初に2つのプログラム間で共用されている記憶装置のページ(ロック・ページと呼ばれる)に書き込む。このロック・ページはハードウェア又は共用記憶域の使用につきプログラムへ独占的なアクセス権を付与するために利用される。プログラムがアプリケーション・プログラムである場合は、時限的な期間の経過後にこの独占的な使用は終了する。つまり、前記期間の経過前にアプリケーション・プログラムがデバイスを明示的に解放しない場合は、デバイスは解放される。デバイス(図形アクセラレータ)が別のプログラムによって目下ロックされていない場合は、このプログラムは直ちに実行を開始する。デバイスが別のプログラムによって目下ロックされている場合は、プログラムが共用された記憶域ロック・ページに書き込みを試みると、ページフォルトが誘発される。オペレーティング・システム内の仮想記憶域管理ソフトウェアは記憶域のこのページを特別のページとして認識し、ページフォルトを処理するためにデバイス・ドライバ(励振器)を呼び出す。そこでデバイス・ドライバ(励振器)は、デバイスを目下ロックしているプログラムが明示的にこれを解放し、又は使用期間が経過するまで、ロックアウトされたプログラムを休止させる。プログラムがウインドウ・システムのプログラムであった場合は、共用された記憶域のページに関する任意の状態情報(例えばその位置、サイズ及びクリップの形状)が確実に更新されたことをプログラムが確認するまでロックは解除されない。
【0027】
アプリケーション・プログラムが共用されたメモリ・ファイルを首尾よくロックすると、当該アプリケーション・プログラムが必要とする任意の状態情報が更新されており、図形ハードウェアを使用する権利を当該アプリケーション・プログラムが有するものと見なすことができる。新たなロックを有するプログラムが図形ハードウェアを使用する最後のプログラムではなかった場合は、ハードウェアに対する最初のアクセスによって別のページフォルトが誘発され、その結果デバイス・ドライバが別個に呼び出され、ドライバは図形ハードウェアにプログラムの期待する文脈をロードし、それによってプログラムはハードウェアを独占的に使用できると認識できる。次に、プログラムは図形ハードウェアの使用が終了するまで進行し、そこでロック動作と同様の動作で共用された記憶域のページのロックを解除する。
【0028】
デバイス・ドライバはオペレーティング・システムの一部であるが、それ自体、ある種の処理動作(例えばピクセル・アクセスの同期化又はデバイスの文脈切り換え)がなされると呼び出されるように仮想記憶域管理システムと符合している。このように、デバイス・ドライバは、アプリケーション・プログラム又はウインドウ・システム・プログラムによるシステム・コールの要求を短絡し、それによって共用記憶域又はデバイスに対するアクセスの同期化又は文脈の切り換えの必要の度に、文脈切り換え(コンテキスト・スイッチ)の速度を速める。前記の特許出願に開示されている好ましい実施例の一つでは、前記発明はプログラムが実際に図形アクセラレータを必要とする場合に限って文脈切り換えを起動するように機能することによって、コンピュータ・システムの動作速度を大幅に高める。前記発明はウインドウ・システム・プログラムとアプリケーション・プログラムの双方が図形アクセラレータにアクセスするのに必要な極めて迅速な文脈切り換えを可能にすることによって、アプリケーション・プログラムが視覚的ディスプレー上のピクセルへのアクセスを付与する。
【0029】
前述のとおり、ユニックス・オペレーティング・システムではアプリケーション・プログラムは、複数の(同時に動作して結果が出力ディスプレー上のウインドウ内に同時にディスプレーされる)プログラムの一つとして実行される。複数のウインドウ内の複数のアプリケーション・プログラムを提示した出力ディスプレーが図1に示されている。これらのウインドウの一つの部分がカバーされる場合は、カバーされた部分のデータが一時記憶域に保持されて、カバーしているウインドウが除去されたときに再度ディスプレーされるようにすることが望ましい。ウインドウ・システムは一般にこのような動作を達成するように準備されている。その他の理由と並んで上記の理由から、多くのアプリケーション・プログラムは、ウインドウ・システムのプログラムが保持されるウインドウを作成することを要求する。しかし、前述の発明はアプリケーション・プログラムがウインドウの可視部分にアクセスするために利用することができるものの、ウインドウ・システムは前記発明を利用して記憶域の保持されるウインドウ部分内のデータにアクセスできる唯一のプログラムである。このように、ウインドウ・システムを利用する場合はアプリケーション・プログラムは、ディスプレーされているウインドウの可視部分に直接的に図形アクセスが可能であったとしても、ウインドウ領域の保持される部分へのアクセスはできない。その結果、直接的な図形アクセスが可能であるアプリケーション・プログラムはそのウインドウの可視部分のピクセルを急速に更新できるものの、ウインドウの任意のカバー部分内のピクセルを更新するにはウインドウ・システム・プログラムに依存しなければならない。
【0030】
本発明によってアプリケーション・プログラムはデータがオフスクリーンのフレーム・バッファ記憶装置にある場合も、システム記憶装置にある場合もウインドウ・スペースの保持される部分への直接的な図形アクセスすることが可能になる。
【0031】
アプリケーション・プログラムが開始されると、オペレーティング・システムは一般にプログラムに所定量の仮想記憶アドレス・スペースを割り当てる。この仮想記憶スペースが図2に示されている。一般に、アプリケーション・プログラムは、プログラム命令コード及びプログラム・データでもって、アプリケーション・プログラムが利用できる仮想ドレス・スペースの僅かな部分を占める。アプリケーション・プログラムは、特定のハードウェア・デバイスを使用したい場合、オペレーティング・システムに対して、使用したい特定のデバイスに対応するファイル・システム内の特定のファイルを開くように求める(これによってハードウェア・デバイスの使用が要求される)。デバイスがシステムに付属し、そのプログラム用に利用できる場合は、オペレーティング・システムはアプリケーション・プログラムにファイル記述子を戻して当該のデバイス用の識別子を付与する。そこでプログラムはこの記述子を利用してデバイスを照会し、オペレーティング・システムに対してアプリケーション・プログラム用に残されている未使用の仮想記憶アドレスの一部を割当て、特定のハードウェア・デバイスと関連するレジスタと記憶装置を前記の仮想記憶アドレスのスペースにマッピングすることを要求する。それによってアプリケーション・プログラムがハードウェア・デバイスをアドレス指定できる一組の仮想アドレスが付与される。
【0032】
同様にして、ウインドウ・システムは、図形アクセラレータ(ハードウェア・デバイス)を使用したい場合は、オペレーティング・システムに対してデバイスの使用を可能にする特定のファイルを開くように要求し、オペレーティング・システムからデバイスの記述子を受理し、その仮想記憶スペースの一部を図形アクセラレータ内のレジスタ及び記憶アドレス用に残しておく。それによってウインドウ・システムが図形アクセラレータをアドレス指定可能である第2の一組の仮想アドレスが付与される。
【0033】
アプリケーション・プログラムによる図形アクセラレータへの直接的なアクセスなしで、ウインドウ・システムが出力ディスプレーを制御するためだけに使用される場合は、ウインドウ・システムに割り当てられた仮想記憶スペースへの図形アクセラレータの前記マッピングを介して、ウインドウ・システムだけが図形アクセラレータにアクセスできる。次に各々のアプリケーション・プログラムがそのデータをウインドウ・システムに供給し、このウインドウ・システムは代表的には、割り当てられた特定のウインドウに前記データを伝送する準備ができるまで、このデータをシステム記憶装置に置く。この種類の動作では、ウインドウ・システムだけが、図形アクセラレータ及前記マッピングを介して、図形アクセラレータにアクセスできる。この種類の動作では、ウインドウ・システムだけが図形アクセラレータ及びフレーム・バッファ記憶装置にアクセスするので、プログラムが出力ディスプレーのウインドウ内にデータをディスプレーするにはコンテキスト・スイッチング(文脈の切り換え)は必要ない。
【0034】
しかし、アプリケーション・プログラム(代表的には図形プログラム)が直接的に図形アクセラレータにアクセスし、且つウインドウを確立し、これを移動させるためにウインドウ・システムを利用したい場合は、アプリケーション・プログラムとウインドウ・システムの双方がデバイスにアクセスできなければならない。それで、頻繁な同期化と文脈の切り換えが必要となる。このことにより、異なる仮想アドレスを使用している2つのプログラムが図形ディスプレーの符合のために同じ物理的アドレスにアクセスすることが必要である。更に、ウインドウのサイズ、位置及び重複を管理しているウインドウ・システムが直接的な図形アクセスを利用してこれらの情報の変化を適時にアプリケーション・プログラムに通信できることが必要である。このことを達成するため、2つのプログラムは互いに干渉しないように何らかの方法で相互に通信しなければならない。これは双方のプログラムがアクセスできる記憶装置の共用記憶域を使用することによって達成される。
【0035】
可視ウインドウへの直接的な図形アクセスを行うことを望むアプリケーション・プログラムが開始されると、当該プログラムは、ウインドウ・システムに対して、直接アクセスできるウインドウを作成したいこと及びウインドウは共用されるべきであることを信号で伝達する。次にウインドウ・システムはシステム記憶装置内に共用されたメモリ・ファイルを作成し、ウインドウ・システムおよびアプリケーションの双方のプログラムはこのファイルを開き、それぞれの仮想記憶アドレス・スペースへと記憶域を割当てる。次にこの共用されたメモリ・ファイルは同期機構と、ウインドウ・システムからアプリケーション・プログラムへと情報を適時に通信する方法として、これらの目的専用に使用される。共用メモリ・ファイルにはロック・ページと、少なくとも一つの状態ページとが含まれる。状態ページは、アプリケーション・プログラムとウインドウ・システムの双方から理解できる共通のデータ構造を含んでいる。このデータ構造はウインドウの状態を示すための種々の標識(フラッグ)と情報を有している。例えば、データ構造は、ウインドウがフレーム・バッファ記憶装置のどの位置にあるかをその座標によって示し、又、目下どのプログラムがウインドウを制御しているかを告げる。各プログラムは更に、図2に示すように、フレーム・バッファを別個にそれぞれの仮想記憶アドレス・スペースにマッピングするので、図形アクセラレータのレジスタを用いては達成できない動作の場合に、フレーム・バッファ記憶装置へのアクセスを直接得ることができる。
【0036】
いくつかのウインドウ・システムを使用することによって得られる利点の一つはウインドウの保持機構である。ウインドウの保持される部分には可視ウインドウの任意のカバーされた部分のデータのコピーが含まれている。ウインドウの保持される部分は代表的にはシステム記憶装置内に記憶される。可視ウインドウが図1に示すようにディスプレー上の第2のウインドウによってカバーされている場合は、ウインドウの保持される部分はカバーされた部分に送られる最後のデータのコピーを保存するために利用され、カバーを外された場合はウインドウを復元することができる。前述したように機能する従来の形式のウインドウ・システムでは、ウインドウ・システム・プログラムだけがこの保持されるウインドウのデータにアクセスすることができた。その結果、アプリケーション・プログラムによる直接的な図形アクセスを介して可視ウインドウのカバー部分にデータが供給される場合は、アプリケーション・プログラムはウインドウの保持される部分にアクセスできないので、データは損逸してしまう。アプリケーション・プログラムがウインドウの更新を担っているので、ウインドウ・システム・プログラムはウインドウのカバー部分の更新が必要かどうかは知りえない。その結果、ウインドウのカバーが外されると、ウインドウは古いデータをディスプレーすることになる。一般に極めて迅速な図形プログラムだけが直接的な図形アクセス機構を使用しているので、これらの図形プログラムは、特定のアプリケーション・プログラムによってプロセッサの制御の獲得時点で可視状態になったウインドウ部分への新たなデータの書き込みが可能になるまでは、カバーを外される度に歪んだウインドウをディスプレーする場合が多かった。
【0037】
ディスプレーと関連したオフスクリーン・データを記憶するために余剰のフレーム・バッファ記憶装置部分を利用するように開発された前述の新規の方法によって、ウインドウの保持される部分を極めて利便に記憶できる大量の記憶域が得られる。例えば、アプリケーション・プログラム用に二重バッファリングを実行するディスプレー・システムは二重バッファリングが実施されていない期間中は、相当量の未使用のフレーム・バッファ記憶域(すなわち余剰の部分)をもたらす。この記憶域を保持されるウインドウの支援と、同様のディスプレー関連データ用に利用できれば、図形処理動作の速度を大幅に加速することができる。この情報はディスプレー・ハードウェア内に局所的に記憶することができるので、システム記憶装置内に情報を記憶し、これを更新するために通常は必要である時間を大幅に節減できる。しかし、ウインドウの保持される部分をアプリケーション・プログラムによって直接アクセスでき、従ってウインドウ及びディスプレーの同様の部分のカバーが外された時に古いデータの問題が発生しなければ更に一層好ましいであろう。
【0038】
上記のことを達成するため、本発明はアプリケーション・プログラムによるシステム・コール(呼出し)の必要性が無くなるように迅速なアクセス同期化とデバイスの文脈切り換えの利用を拡張し、第2の共用記憶機構の使用によりウインドウの保持される部分への直接的なアクセスを可能にし、この直接アクセスを保持されるウインドウを内部に記憶できる余剰のフレーム・バッファ記憶装置部分とシステム記憶装置の双方に拡大し、プログラム間の同期化と通信を達成するために、プログラムが互いに干渉しないようにロック機構の利用を拡大したものである。本発明の方法の段階は図3に詳しく示されている。
【0039】
この方法の第1段階はウインドウ・システムの動作の実際の背景になるものである。この段階10で、ウインドウ・システム・プログラムは動作を開始する。このプログラムは仮想記憶スペースを受理し、フレーム・バッファと図形アクセラレータのレジスタをこのスペースにマッピングする。
【0040】
アプリケーション・プログラムは、可視ウインドウと、可視ウインドウ内にカバーされたデータのコピーを含んでいる保持されるウインドウとの双方に直接アクセスしたい場合は、共用されるべきウインドウを作成したい旨を(段階20)、又、ウインドウ・システムの保持されるウインドウの機能を利用したい旨を(段階30)ウインドウ・システムに対して通信する。次にアプリケーション・プログラムはこのウインドウの可視部分に直接アクセスすることを要求する(段階40)。これにはウインドウ・システムの承認が必要である。この承認が与えれたものと仮定すると、ウインドウ・システムの応答及びウインドウ・システムとアプリケーション・プログラムとのインタラクションが段階50、60及び70に示すように、ウインドウの可視部分に関して前述したように継続される。しかし、このインタラクションは、本発明によって、ウインドウの保持される部分をも含むように拡張されている。
【0041】
次に、アプリケーション・プログラムは、ウインドウ・システム・プログラムに対して、保持されるウインドウ・スペースへのアクセスを望んでいる旨の信号を送る(段階80)。ウインドウ・システムは、共用の保持されるウインドウに対する直接的な図形アクセス要求を承認すると、段階90に移行して、ウインドウの保持される部分に関する同期情報用の付加的な共用メモリ・ファイルを作成し、共用メモリ・ファイルの第1ページをこのファイル用の状態ページとして初期設定する。ウインドウ・システムは、任意のウインドウを作成すると、ウインドウ識別子を供給し、この識別子はウインドウの保持される部分用の共用メモリ・ファイル名に利用されて、ウインドウ・システムとアプリケーション・プログラムの双方に知られているファイル・システム内の独自のファイル名が付与される。次に、ウインドウ・システムは(依然として段階90において)、この付加的な共用メモリ・ファイルのファイル・サイズを拡大して、ウインドウの保持される部分内の全てのピクセルを包括するのに充分なサイズにし、この記憶域の全てをその仮想記憶域アドレス・スペースへとマッピングする。
【0042】
段階90を実施する際に、オフスクリーン・フレーム・バッファ記憶装置が保持されるウインドウのデータ用に活用可能である場合は、ウインドウ・システムは先ず自動的に前記のオフスクリーン・フレーム・バッファ記憶装置を割当てようと試みる。それが不可能である場合は、ウインドウ・システムは保持されるウインドウのデータをシステム記憶装置に送る。ウインドウの保持される部分がシステム記憶装置内にある場合は、ピクセルは共用されたメモリ・ファイルのピクセル領域にコピーされる。ウインドウ・システムは、アプリケーション・プログラムに対して、共用メモリ・ファイルの状態ページ内の情報によって、ウインドウの保持部分がオフスクリーン・フレーム・バッファ記憶装置内にあるのか、共用メモリ・ファイルのピクセル領域内にあるのかを指示する。ウインドウの保持される部分が図形アクセラレータによって制御されたオフスクリーン・フレーム・バッファ記憶装置内に送られると、ピクセル・データは、ウインドウ・システムによって保持されるウインドウの共用メモリ・ファイルのピクセル領域への移動をされない限り、同じ位置に留まる。前記の移動が生じ、ピクセル・データが後に別の位置のオフスクリーン記憶域内に送り戻されると、アプリケーション・プログラムは、ウインドウ・システムによって更新された共用メモリ・ファイルの状態ページに次にアクセスする際に、新たな位置を通知する。
【0043】
アプリケーション・プログラムは更に段階100で付加的な共用メモリ・ファイルをその仮想記憶スペースにマッピングする(図2を参照)。アプリケーション・プログラムがウインドウ・システムに対してウインドウを作成するように要求すると、ウインドウ・システムはウインドウの識別子をアプリケーション・プログラムに戻す。そこでアプリケーション・プログラムは、このウインドウ識別子をこのウインドウに係わる全ての通信に利用する。アプリケーション・プログラムとウインドウ・システムの双方がこの独自の識別子のことを知っており、この識別子から保持されるウインドウの共用メモリ・ファイル用のファイル名を構成する方法を知っているので、アプリケーション・プログラムはウインドウの保持される部分へのアクセスを得るにはどのファイルを開き、どの仮想記憶アドレス・スペースにマッピングするべきかを自動的に知る。アプリケーション・プログラムは同様にしてウインドウの可視部分用の共用メモリ・ファイルを発見する。
【0044】
前述したように、この第2共用メモリ・ファイルの第1ページはアプリケーション・プログラムとウインドウ・システムの双方がウインドウの保持される部分に関して通信できるデータ構造を備えている。このデータ構造は共用された情報の状態を示すための種々の標識(フラッグ)を有している。例えば、データ構造は、ファイルがフレーム・バッファのオフスクリーン記憶域にあるか、システム記憶装置内の共用メモリ・ファイルのピクセル領域内にあるかを告げる。更にこのデータ構造は特にウインドウの保持部分が余剰のフレーム・バッファ記憶域にある場合はその座標によって位置を示し、一つ以上のフレーム・バッファが起動している場合はどのフレーム・バッファに位置しているかを示す。このウインドウ位置の情報は、アプリケーション・プログラムが図形アクセラレータのレジスタを介しては得られない動作用にフレーム・バッファ記憶域を直接アクセスする必要がある場合は、アプリケーション・プログラムによって利用されることができる。
【0045】
アプリケーション・プログラムは、可視なウインドウ・スペースと保持されるウインドウ・スペースの状態を構成する共用メモリ・ファイルとピクセルの双方を直接アクセスできるので、ウインドウの可視部分の内容を更新する場合、ウインドウの保持部分内の任意の必要な領域を同時に更新することができる。そこで、ウインドウの重複部分が後にカバーを外される場合は、新たにカバーを外された部分のデータはウインドウ・システムによってスクリーンにコピーされた場合も古いデータではない。
【0046】
ウインドウの可視部分と保持される部分の双方で直接的な図形アクセスを求めるウインドウ・システムとアプリケーション・プログラムとの双方が適切な共用記憶域通信領域を確立すると、それらの同期インタラクションは次のように進展する。
【0047】
ウインドウ・システムとアプリケーション・プログラムの双方は、仮想記憶システムがウインドウの可視部分用の共用記憶ロック・ページへの専有アクセスを許容するように既に要求している(段階50及び80)。双方のプログラムとも次の規則、何れか一方が共用記憶域の状態ページ内の任意の状態情報を変更し、またはウインドウの可視部分または保持される部分のピクセル領域をアクセスする前には、共用記憶域ロック・ページへのアクセスを試みることによってこれらの共用された領域を先ず「ロック」するという規則に従う(段階110又は段階130)。このロック・ページへのアクセスは、有効である場合には、仮想記憶システムによってアクセスを行うプログラムがこれらの記憶域の全ての一時的な専有者であるとして扱われるようにされる。何れのプログラムもロックを付与されていない場合にロック・ページへのアクセスが試みられると、仮想記憶システムによってそのプログラムには即座にロックが付与される。プロセス(処理手順)は必要である任意の状態又はピクセルの変更を行いつつ継続し、その後、ロック動作と同様のアクセスを用いてロック・ページのロックを解除する。しかし、一つのプログラムがロック解除されていないロック・ページを有し、別のプログラムがロック・ページへのアクセスを試みる場合は、この別のプログラムは仮想記憶システムのページフォルト機構によってブロックされ、ロック・ページのロックが解除されるまでドライバによって休止状態に置かれる。ウインドウ・システムはそれが所望する期間だけロック状態を維持できるという一種の特別の特権を有しているが、過剰に長期間に渡ってロック状態を維持するアプリケーション・プログラムは時間切れになり、デバイス・ドライバが割り込んで、ロックをアプリケーション・プログラムから解除する。
【0048】
ウインドウ・システムは、共用された記憶域の状態情報を更新する必要があるたびに、直接的な図形アクセスを行う全てのアプリケーション・プログラムがそのロックを放棄するまで待機して、待機中は新たなロックが付与されることを防止し、その後、ウインドウ・システムは影響される全てのウインドウをロックし、ピクセルをオフスクリーン記憶域から共用ピクセル領域へと移動することを含む更新を行い、その後、全てのロックを解除する。
【0049】
このようにして、共用記憶域の状態情報、またはピクセル情報の何れかをアクセスする前にロックを確保することが直接的な図形アクセスを行うアプリケーション・プログラムの要求であるので、アプリケーション・プログラムが過渡状態で状態情報又はピクセル情報の何れかに遭遇することは不可能である。アプリケーション・プログラムは一旦ロックを確保すると、ロックの解除に先立ってウインドウの可視なピクセル領域と保持されるピクセル領域の双方を更新でき、又、更新することが保証される。
【0050】
このように、ウインドウ・システムは、共用記憶域の状態ページ内の状態情報を更新する必要があるときは、全てのアプリケーション・プログラムが常に直接的な図形アクセスからロック・アウトされることを保証するためにロック・ページを利用する。同様にして、アプリケーション・プログラムは、直接図形アクセスを用いてそのウインドウの内容を更新したい場合は(段階130)、先ず前述の方法でウインドウの可視部分用の共用記憶域のロック・ページに書き込む。アプリケーション・プログラムがアクセスを得て、共用記憶域のロック・ページをロックすると、ウインドウの可視部分と保持される部分の双方用の状態情報の全てが完全且つ正確であるものと見なすことができる。そこでアプリケーション・プログラムはこの情報を利用してウインドウの可視部分と保持される部分の双方の内容の更新をどのように行うかを決定することができ、ロックを放棄する前に更新を行う。再度、別のプログラムの状態が図形アクセラレータ上に記憶されている場合、図形デバイスをアクセスしようとする試みによってページフォルトが生成され、デバイス・ドライバを文脈の切り換えを達成するための動作状態にする。
【0051】
前述したように、デバイス・ドライバはオペレーティング・システムの一部ではあるが、これはそれ自体が仮想記憶域管理システムと符合するので、アクセスの試みによりデバイスの文脈切り換えが行われるべき場合は呼び出される(段階120又は段階140)。従って、ドライバはデバイス用に文脈切り換えが必要であるごとに、アプリケーション・プログラムによるシステム・コール(呼出し)要求を短絡させるために利用される。これによって高速の図形処理動作の伝送速度を維持できる速度で極めて迅速に切り換えを行うことができる。
【0052】
一般的には、ウインドウ・システムが一旦準備されると(段階110)、ウインドウ・システムは共用された保持されるウインドウの状態領域にそれほど関与する必要はない。通常はウインドウのサイズ変更の際に、または、二重バッファリングがウインドウの保持される部分により使用中のフレーム・バッファの領域を必要として記憶されたピクセル・データが共用メモリ・ファイルのピクセル記憶域に移動する必要がある場合に、状態情報を変更するだけである。後者の場合は、ウインドウ・システムはアプリケーション・プログラムをロックアウトすることによってウインドウの保持される部分用の共用メモリ・ファイルへのアクセスを確保する。これは直接的な図形アクセスの特権を有する全てのアプリケーション・プログラム用の全ての共用メモリ・ファイルに「全ロック」指令を発することによって達成される。全ロック指令はロック解除されたこれらの共用メモリ・ファイルをロックし、使用中の任意のファイルでの時間切れ期間を待機し、その後、先取り(プリエンプション)が必要な場合は、これらの共用メモリ・ファイルを先取りし、ロックする。ウインドウ・システムは、共用メモリ・ファイル上でロックを得ると、ピクセル・データが共用メモリ・ファイルのピクセル領域内にあることを指示するためにデータ構造内の呼称を変えて、データが移動した場合にアプリケーション・プログラムがウインドウの保持される部分用のピクセルを発見し、これらをアクセスできるようにする。最後に、ウインドウ・システムはデータをフレーム・バッファの余剰記憶スペースから、ファイルの第2ページの第1バイトで始まる共用メモリ・ファイルのピクセル領域へと移動させる。
【0053】
次にアプリケーション・プログラムが保持されるウインドウ記憶域に書き込むために共用メモリ・ファイルへのアクセスを得ると(段階130)、アプリケーション・プログラムはシステム記憶装置内の共用メモリ・ファイルのピクセル記憶域内にファイルがあることを示す情報を状態ページに発見する。ウインドウのサイズが変更されている場合は、ウインドウ・システムは共用メモリ・ファイルの状態ページ内に古い標識をセットし、ファイルの名称がファイル・システムから削除されたことを確認するために点検し、同じ名称であるが、新たなウインドウのサイズに適したサイズのファイルを再度作成し、このファイルを再度初期状態に設定する。アプリケーション・プログラムが古い共用記憶域に次にアクセスしようと試みると、アプリケーション・プログラムは古い標識を発見し、古いファイルを閉じ、新たなファイルを再開し、再度マッピングすべきであることを知る。
【0054】
これまで本発明を好ましい実施例に基づいて説明してきたが、本発明の精神と範囲から逸脱することなく専門家には種々の修正と変更が可能であることが理解されよう。例えば、本発明は代表して保持されるウインドウとして説明してきた実施例だけではなく、ウインドウ・システムにより付与される多重バッファリング支援を利用したアプリケーション・プログラムの場合は多重オフスクリーン・バッファにも利用できる。従って本発明は特許請求の範囲によってのみ限定されるべきものである。
【0055】
【発明の効果】
以上説明してきたように、本発明によればフレーム・バッファ記憶域内のオフ・スクリーン・データの記憶域で利用されるハードウェア用の文脈切り換えを行うためにシステムを呼び出す必要がなく、データがオフスクリーンのフレーム・バッファ記憶域にある場合も、システム記憶装置内にある場合でもウインドウの保持部分に直接図形アクセスを行うことができので、処理時間を大幅に短縮できる。
【図面の簡単な説明】
【図1】 複数の重複するウインドウを示す出力ディスプレー・スクリーンの状態を示す図である。
【図2】 直接図形アクセスを有するアプリケーション・プログラム用の仮想アドレス・マップである。
【図3】 本発明に従った方法を示す流れ図である。
【図4】 本発明に従った方法を示す流れ図である。
Claims (3)
- フレーム・バッファ記憶装置中にあってウインドウの保持される不可視部分用に用いられる一時記憶域にして、図形アクセラレータによって
制御される一時記憶域に対して、第1のプロセスからの直接的な図形アクセスを可能にする方法であって、前記図形アクセラレータには第1のプロセスに対応する第1の状態または第2のプロセスに対応する第2の状態を記憶することができ、
ウインドウの保持される不可視部分が最初に前記フレーム・バッファ記憶装置の余剰部分に存在することを示す、前記一時記憶域用の第1の共用メモリ・ファイルを、システム記憶装置内に確立するステップを備え、前記第1の共用メモリ・ファイルには共用領域が前記第1のプロセスによって使用されていることを示す記憶が含まれており、
前記ウインドウの不可視部分用に第2の共用メモリ・ファイルを、前記システム記憶装置内に確立するステップを備え、
前記図形アクセラレータに前記第2のプロセスに対応する前記第2の状態が記憶されていて、前記図形アクセラレータへのアクセスが前記第1のプロセスによって試みられると常に、ページフォルトを生成し、且つ、前記第1のプロセス以外のプロセスによる前記第1および第2の共用メモリ・ファイルの使用を排除するステップを備え、
前記ページフォルトに応答してデバイス・ドライバを呼び出して、前記図形アクセラレータに記憶されているコンテキストを、前記第2の状態から、前記図形アクセラレータにアクセスしようとしている前記第1のプロセスに対応する前記第1の状態に切り換える、デバイス・ドライバの呼び出しステップを備えている
ことを特徴とする、直接的な図形アクセスを可能にする方法。 - フレーム・バッファ記憶装置中にあってウインドウの保持される不可視部分用に用いられる一時記憶域にして、図形アクセラレータによって制御される一時記憶域に対して、第1のプロセスからの直接的な図形アクセスを可能にする方法であって、前記図形アクセラレータには第1のプロセスに対応する第1の状態または第2のプロセスに対応する第2の状態を記憶することができ、
不可視部分を含むウインドウの可視部分用に第1の共用メモリ・ファイルを、システム記憶装置内に確立するステップを備え、前記第1の共用メモリ・ファイルには、あるプログラムにより前記ウインドウが使用されているときは他のプログラムによる前記ウインドウの使用を排除するロックが設けられており、
前記ウインドウの不可視部分用に第2の共用メモリ・ファイルを、前記システム記憶装置内に確立するステップを備え、その第2の共用メモリ・ファイルは、前記第1の共用メモリ・ファイルにおける、他のプログラムによる前記ウインドウの使用を排除する前記ロックに従うものであり、
前記第2の共用メモリ・ファイルには、前記ウインドウの不可視部分が最初に前記フレーム・バッファ記憶装置の余剰部分に存在することを示す手段を含め、且つ、共用領域がプロセスによって使用されていることを示すフラッグないしロックを含めておき、
前記図形アクセラレータに前記第2のプロセスに対応する前記第2の状態が記憶されていて、前記図形アクセラレータへのアクセスが前記第1のプロセスによって試みられると常に、ページフォルトを生成するステップを備え、
前記ページフォルトに応答してデバイス・ドライバを呼び出して、前記図形アクセラレータがフリーになると、前記図形アクセラレータに記憶されているコンテキストを、前記第2の状態から、前記図形アクセラレータにアクセスしようとしている前記第1のプロセスに対応する前記第1の状態に切り換える、デバイス・ドライバを呼び出すステップを備えている
ことを特徴とする、直接的な図形アクセスを可能にする方法。 - フレーム・バッファ記憶装置中にあってウインドウの保持される不可視部分用に用いられる一時記憶域にして、図形アクセラレータによって制御される一時記憶域に対して、第1のプロセスからの直接的な図形アクセスを可能にする装置であって、前記図形アクセラレータには第1のプロセスに対応する第1の状態および第2のプロセスに対応する第2の状態を記憶することができ、
不可視保持部分を含むであろうウインドウの可視部分用に第1の共用メモリ・ファイルを、システム記憶装置内に確立する手段を備え、
前記第1の共用メモリ・ファイルには、あるプログラムにより前記ウインドウが使用されているときは他のプログラムによる前記ウインドウの使用を排除する手段が設けられ、
前記ウインドウの不可視部分用に第2の共用メモリ・ファイルを、前記フレーム・バッファ記憶装置の余剰部分または前記システム記憶装置内に確立する手段を備え、その第2の共用メモリ・ファイルは、前記第1の共用メモリ・ファイルにおける他のプログラムによる前記ウインドウの使用を排除する前記手段に従うものであり、
前記第2の共用メモリ・ファイルには、前記ウインドウの不可視部分が前記フレーム・バッファ記憶装置の余剰部分に存在するのか、前記システム記憶装置内に存在するのかを示す手段が含まれ、且つ、プロセッサによる共用メモリ領域の使用を示す手段が含まれており、
前記第1の共用メモリ・ファイルおよび前記第2の共用メモリ・ファイルを、図形アクセラレータへのアクセスを有する各プログラムの仮想アドレス・スペースへとマッピングする手段を備え、
前記第2のプロセスに対応する状態が図形アクセラレータに記憶されていて、前記第1のプロセスによって図形アクセラレータへのアクセスが試みられると常に、ページフォルトを生成する手段を備え、
前記第2のプロセスに対応する前記第2の状態が図形アクセラレータに記憶されているときに生成された前記ページフォルトに応答して、前記図形アクセラレータがフリーになると、前記図形アクセラレータに記憶されているコンテキストを、図形アクセラレータへのアクセスを試みた前記第1のプロセスに対応する前記第1の状態へと切り換える手段を備える、
ことを特徴とする直接的な図形アクセスを可能にする装置。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US07/726,304 US5245702A (en) | 1991-07-05 | 1991-07-05 | Method and apparatus for providing shared off-screen memory |
| US726304 | 1991-07-05 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH05216614A JPH05216614A (ja) | 1993-08-27 |
| JP3645276B2 true JP3645276B2 (ja) | 2005-05-11 |
Family
ID=24918050
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP20190492A Expired - Lifetime JP3645276B2 (ja) | 1991-07-05 | 1992-07-06 | 直接的な図形アクセスを可能にする方法および装置 |
Country Status (5)
| Country | Link |
|---|---|
| US (1) | US5245702A (ja) |
| EP (1) | EP0521684B1 (ja) |
| JP (1) | JP3645276B2 (ja) |
| KR (1) | KR100278327B1 (ja) |
| DE (1) | DE69211231T2 (ja) |
Families Citing this family (61)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5353343A (en) * | 1992-04-30 | 1994-10-04 | Rockwell International Corporation | Telephonic switching system with a user controlled data memory access system and method |
| US5652913A (en) * | 1992-10-13 | 1997-07-29 | Microsoft Corporation | System for providing intercommunication of I/O access factors stored in a shared data structure, accessed and maintained by both file system and device driver |
| EP0610677A3 (en) * | 1993-02-12 | 1995-08-02 | Ibm | Communication device management module operating in two modes. |
| JP2561801B2 (ja) * | 1993-02-24 | 1996-12-11 | インターナショナル・ビジネス・マシーンズ・コーポレイション | プロセス・スケジューリングの管理方法およびシステム |
| US5559954A (en) * | 1993-02-24 | 1996-09-24 | Intel Corporation | Method & apparatus for displaying pixels from a multi-format frame buffer |
| US5652601A (en) * | 1993-08-06 | 1997-07-29 | Intel Corporation | Method and apparatus for displaying a color converted image |
| US5572232A (en) * | 1993-08-06 | 1996-11-05 | Intel Corporation | Method and apparatus for displaying an image using subsystem interrogation |
| US5751270A (en) * | 1993-08-06 | 1998-05-12 | Intel Corporation | Method and apparatus for displaying an image using direct memory access |
| US5552803A (en) * | 1993-08-06 | 1996-09-03 | Intel Corporation | Method and apparatus for displaying an image using system profiling |
| US5546103A (en) * | 1993-08-06 | 1996-08-13 | Intel Corporation | Method and apparatus for displaying an image in a windowed environment |
| WO1995015524A1 (en) * | 1993-12-02 | 1995-06-08 | Taligent, Inc. | Method and apparatus for displaying hardware dependent graphics in an object-oriented operating system |
| US5664139A (en) * | 1994-05-16 | 1997-09-02 | Compaq Computer Corporation | Method and a computer system for allocating and mapping frame buffers into expanded memory |
| US5577188A (en) * | 1994-05-31 | 1996-11-19 | Future Labs, Inc. | Method to provide for virtual screen overlay |
| US5613125A (en) * | 1994-06-17 | 1997-03-18 | Motorola, Inc. | Method and system for selectively defining hardware parameters in an executable operating system program |
| US5598525A (en) | 1995-01-23 | 1997-01-28 | Cirrus Logic, Inc. | Apparatus, systems and methods for controlling graphics and video data in multimedia data processing and display systems |
| US5784047A (en) * | 1995-04-28 | 1998-07-21 | Intel Corporation | Method and apparatus for a display scaler |
| US5751979A (en) * | 1995-05-31 | 1998-05-12 | Unisys Corporation | Video hardware for protected, multiprocessing systems |
| US5757386A (en) * | 1995-08-11 | 1998-05-26 | International Business Machines Corporation | Method and apparatus for virtualizing off-screen memory of a graphics engine |
| US6412031B1 (en) * | 1998-02-10 | 2002-06-25 | Gateway, Inc. | Simultaneous control of live video device access by multiple applications via software locks and in accordance with window visibility of applications in a multiwindow environment |
| US6256649B1 (en) | 1998-06-17 | 2001-07-03 | Xerox Corporation | Animated spreadsheet for dynamic display of constraint graphs |
| US6185582B1 (en) | 1998-06-17 | 2001-02-06 | Xerox Corporation | Spreadsheet view enhancement system |
| US6230170B1 (en) | 1998-06-17 | 2001-05-08 | Xerox Corporation | Spatial morphing of text to accommodate annotations |
| US6584479B2 (en) | 1998-06-17 | 2003-06-24 | Xerox Corporation | Overlay presentation of textual and graphical annotations |
| US6510470B1 (en) * | 1998-12-18 | 2003-01-21 | International Business Machines Corporation | Mechanism allowing asynchronous access to graphics adapter frame buffer physical memory linear aperture in a multi-tasking environment |
| US6295068B1 (en) | 1999-04-06 | 2001-09-25 | Neomagic Corp. | Advanced graphics port (AGP) display driver with restricted execute mode for transparently transferring textures to a local texture cache |
| JP2001016593A (ja) * | 1999-06-25 | 2001-01-19 | Mitsubishi Electric Corp | 画像復号表示装置 |
| JP2004135300A (ja) * | 2002-09-20 | 2004-04-30 | Ricoh Co Ltd | 画像形成装置,共有データ管理方法および共有データ管理システム |
| US7313764B1 (en) * | 2003-03-06 | 2007-12-25 | Apple Inc. | Method and apparatus to accelerate scrolling for buffered windows |
| US7318133B2 (en) * | 2003-06-03 | 2008-01-08 | Hitachi, Ltd. | Method and apparatus for replicating volumes |
| US20050088449A1 (en) * | 2003-10-23 | 2005-04-28 | Blanco Leonardo E. | Child window redirection |
| US20050140692A1 (en) * | 2003-12-30 | 2005-06-30 | Microsoft Corporation | Interoperability between immediate-mode and compositional mode windows |
| US7921373B2 (en) * | 2004-04-05 | 2011-04-05 | Panasonic Corporation | Display screen management apparatus |
| US7412662B2 (en) * | 2004-04-12 | 2008-08-12 | Microsoft Corporation | Method and system for redirection of transformed windows |
| US20060017738A1 (en) * | 2004-07-23 | 2006-01-26 | Juraj Bystricky | System and method for detecting memory writes to initiate image data transfers |
| FR2881239B1 (fr) * | 2005-01-24 | 2007-03-23 | Meiosys Soc Par Actions Simpli | Procede de gestion d'acces a des ressources partagees dans un environnement multi-processeurs |
| US8788787B2 (en) * | 2005-03-02 | 2014-07-22 | The Boeing Company | Systems, methods and architecture for facilitating software access to acceleration technology |
| US7616218B1 (en) * | 2005-12-05 | 2009-11-10 | Nvidia Corporation | Apparatus, system, and method for clipping graphics primitives |
| US7631168B1 (en) | 2006-05-10 | 2009-12-08 | The Math Works, Inc. | Graphical interface for grouping concurrent computing units executing a concurrent computing process |
| US9405564B2 (en) * | 2006-05-10 | 2016-08-02 | The Mathworks, Inc. | System and method for targeting commands to concurrent computing units executing a concurrent computing process |
| US8601223B1 (en) | 2006-09-19 | 2013-12-03 | Nvidia Corporation | Techniques for servicing fetch requests utilizing coalesing page table entries |
| US8352709B1 (en) | 2006-09-19 | 2013-01-08 | Nvidia Corporation | Direct memory access techniques that include caching segmentation data |
| US8543792B1 (en) | 2006-09-19 | 2013-09-24 | Nvidia Corporation | Memory access techniques including coalesing page table entries |
| US8347064B1 (en) | 2006-09-19 | 2013-01-01 | Nvidia Corporation | Memory access techniques in an aperture mapped memory space |
| KR20080031595A (ko) * | 2006-10-04 | 2008-04-10 | 삼성전자주식회사 | 오프스크린 버퍼링 관리 장치 및 방법 |
| US8707011B1 (en) | 2006-10-24 | 2014-04-22 | Nvidia Corporation | Memory access techniques utilizing a set-associative translation lookaside buffer |
| US8700883B1 (en) | 2006-10-24 | 2014-04-15 | Nvidia Corporation | Memory access techniques providing for override of a page table |
| US8504794B1 (en) | 2006-11-01 | 2013-08-06 | Nvidia Corporation | Override system and method for memory access management |
| US8347065B1 (en) * | 2006-11-01 | 2013-01-01 | Glasco David B | System and method for concurrently managing memory access requests |
| US8706975B1 (en) | 2006-11-01 | 2014-04-22 | Nvidia Corporation | Memory access management block bind system and method |
| US8607008B1 (en) | 2006-11-01 | 2013-12-10 | Nvidia Corporation | System and method for independent invalidation on a per engine basis |
| US8533425B1 (en) | 2006-11-01 | 2013-09-10 | Nvidia Corporation | Age based miss replay system and method |
| US8700865B1 (en) | 2006-11-02 | 2014-04-15 | Nvidia Corporation | Compressed data access system and method |
| US20080244155A1 (en) * | 2007-03-30 | 2008-10-02 | Kyungwoo Lee | Methods and apparatus to protect dynamic memory regions allocated to programming agents |
| US20090319933A1 (en) * | 2008-06-21 | 2009-12-24 | Microsoft Corporation | Transacted double buffering for graphical user interface rendering |
| US20090328080A1 (en) * | 2008-06-25 | 2009-12-31 | Microsoft Corporation | Window Redirection Using Interception of Drawing APIS |
| US8384738B2 (en) * | 2008-09-02 | 2013-02-26 | Hewlett-Packard Development Company, L.P. | Compositing windowing system |
| US10146545B2 (en) | 2012-03-13 | 2018-12-04 | Nvidia Corporation | Translation address cache for a microprocessor |
| US9880846B2 (en) | 2012-04-11 | 2018-01-30 | Nvidia Corporation | Improving hit rate of code translation redirection table with replacement strategy based on usage history table of evicted entries |
| US10241810B2 (en) | 2012-05-18 | 2019-03-26 | Nvidia Corporation | Instruction-optimizing processor with branch-count table in hardware |
| US20140189310A1 (en) | 2012-12-27 | 2014-07-03 | Nvidia Corporation | Fault detection in instruction translations |
| US10108424B2 (en) | 2013-03-14 | 2018-10-23 | Nvidia Corporation | Profiling code portions to generate translations |
Family Cites Families (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4047243A (en) * | 1975-05-27 | 1977-09-06 | Burroughs Corporation | Segment replacement mechanism for varying program window sizes in a data processing system having virtual memory |
| US4903218A (en) * | 1987-08-13 | 1990-02-20 | Digital Equipment Corporation | Console emulation for a graphics workstation |
| JPH01181163A (ja) * | 1988-01-13 | 1989-07-19 | Seiko Instr & Electron Ltd | 図形表示システム |
| US5043923A (en) * | 1988-10-07 | 1991-08-27 | Sun Microsystems, Inc. | Apparatus for rapidly switching between frames to be presented on a computer output display |
| US5127098A (en) * | 1989-04-12 | 1992-06-30 | Sun Microsystems, Inc. | Method and apparatus for the context switching of devices |
| US5016161A (en) * | 1989-04-12 | 1991-05-14 | Sun Microsystems, Inc. | Method and apparatus for the flow control of devices |
| US5159665A (en) * | 1989-11-27 | 1992-10-27 | Sun Microsystems, Inc. | Graphics accelerator system |
-
1991
- 1991-07-05 US US07/726,304 patent/US5245702A/en not_active Expired - Lifetime
-
1992
- 1992-06-29 EP EP92305994A patent/EP0521684B1/en not_active Expired - Lifetime
- 1992-06-29 DE DE69211231T patent/DE69211231T2/de not_active Expired - Fee Related
- 1992-07-06 JP JP20190492A patent/JP3645276B2/ja not_active Expired - Lifetime
- 1992-07-06 KR KR1019920011990A patent/KR100278327B1/ko not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| EP0521684A3 (en) | 1993-04-28 |
| EP0521684A2 (en) | 1993-01-07 |
| EP0521684B1 (en) | 1996-06-05 |
| KR930002950A (ko) | 1993-02-23 |
| DE69211231D1 (de) | 1996-07-11 |
| KR100278327B1 (ko) | 2001-02-01 |
| JPH05216614A (ja) | 1993-08-27 |
| DE69211231T2 (de) | 1996-10-10 |
| US5245702A (en) | 1993-09-14 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP3645276B2 (ja) | 直接的な図形アクセスを可能にする方法および装置 | |
| EP1054322B1 (en) | Computer system with multiple operating system operation | |
| US7650603B2 (en) | Resource management for virtualization of graphics adapters | |
| JP4079208B2 (ja) | グラフィックスシステム、自動グラフィックス動作方法およびグラフィックスプロセッサ | |
| US5745761A (en) | Advanced graphics driver architecture with extension capability | |
| US6859928B2 (en) | Shared virtual desktop collaborative application system | |
| US5715459A (en) | Advanced graphics driver architecture | |
| JP4979880B2 (ja) | グラフィックス処理ユニットのマルチスレッド式カーネル | |
| JP5091215B2 (ja) | コプロセッサの性能を強化するシステムおよび方法 | |
| US5745762A (en) | Advanced graphics driver architecture supporting multiple system emulations | |
| US5687376A (en) | System for monitoring performance of advanced graphics driver including filter modules for passing supported commands associated with function calls and recording task execution time for graphic operation | |
| US5016166A (en) | Method and apparatus for the synchronization of devices | |
| JP2010033607A (ja) | 動的プログラム可能なモード切換えディバイスドライバアーキテクチャ | |
| WO1996035993A2 (en) | Method and apparatus for consolidated buffer handling for computer device input/output | |
| JPH07121373A (ja) | データ処理システム及びその動作方法 | |
| JPH0353328A (ja) | レジスタ退避回復方法ならびに処理装置 | |
| KR100988395B1 (ko) | 태스크 스케줄링 방법, 태스크 스케줄링 지원 장치, 코프로세싱 스케줄러에 관련하여 사용하기 위한 코프로세서, 및 컴퓨터 판독가능 저장 매체 | |
| AU652549B2 (en) | Data processing apparatus with display device | |
| JPS6255693A (ja) | グラフイツクデイスプレイ装置 | |
| JPH06282515A (ja) | データ処理装置 | |
| KR20040074628A (ko) | 코프로세서의 성능을 개선하기 위한 시스템 및 방법 | |
| JPH06309183A (ja) | グラフィックス資源共用アクセス方法および装置 | |
| JPH0612054A (ja) | グラフィックディスプレイ装置の画面表示制御方法 | |
| JPH04114238A (ja) | 情報処理装置 | |
| JPH0344328B2 (ja) |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050203 |
|
| R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080210 Year of fee payment: 3 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090210 Year of fee payment: 4 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100210 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100210 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110210 Year of fee payment: 6 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120210 Year of fee payment: 7 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120210 Year of fee payment: 7 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130210 Year of fee payment: 8 |
|
| EXPY | Cancellation because of completion of term | ||
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130210 Year of fee payment: 8 |