JPH06242907A - ディスプレイ装置を有するデータ処理装置 - Google Patents

ディスプレイ装置を有するデータ処理装置

Info

Publication number
JPH06242907A
JPH06242907A JP2400085A JP40008590A JPH06242907A JP H06242907 A JPH06242907 A JP H06242907A JP 2400085 A JP2400085 A JP 2400085A JP 40008590 A JP40008590 A JP 40008590A JP H06242907 A JPH06242907 A JP H06242907A
Authority
JP
Japan
Prior art keywords
data processing
graphic
command
request
event
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.)
Granted
Application number
JP2400085A
Other languages
English (en)
Other versions
JP2603759B2 (ja
Inventor
Yuji Inoue
裕司 井上
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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Publication of JPH06242907A publication Critical patent/JPH06242907A/ja
Application granted granted Critical
Publication of JP2603759B2 publication Critical patent/JP2603759B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • 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/46Multiprogramming arrangements
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G3/00Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes
    • G09G3/20Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes for presentation of an assembly of a number of characters, e.g. a page, by composing the assembly by combination of individual elements arranged in a matrix no fixed position being assigned to or needed to be assigned to the individual characters or partial characters
    • G09G3/34Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes for presentation of an assembly of a number of characters, e.g. a page, by composing the assembly by combination of individual elements arranged in a matrix no fixed position being assigned to or needed to be assigned to the individual characters or partial characters by control of light from an independent source
    • G09G3/36Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes for presentation of an assembly of a number of characters, e.g. a page, by composing the assembly by combination of individual elements arranged in a matrix no fixed position being assigned to or needed to be assigned to the individual characters or partial characters by control of light from an independent source using liquid crystals
    • G09G3/3611Control of matrices with row and column drivers
    • G09G3/3622Control of matrices with row and column drivers using a passive matrix
    • G09G3/3629Control of matrices with row and column drivers using a passive matrix using liquid crystals having memory effects, e.g. ferroelectric liquid crystals
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2310/00Command of the display device
    • G09G2310/04Partial updating of the display screen

Abstract

(57)【要約】 [目的]本発明は、マルチウインドゥシステムにおける
マウスイベントのようなハードウェアイベントのリアル
タイム表示を改善することにある。 [構成]複数のプロセスからのグラフィックデバイスへ
の描画要求をスケジューリングして描画要求各々をコマ
ンドの単一のキューに形成するスケジューリング手段を
論理的に構成しているホストプロセッサ、及びスケジュ
ーリング手段のキューから転送されたコマンドに従って
ディスプレイ装置を制御して描画を行うグラフィックデ
バイスとからなるデータ処理装置において、スケジュー
リング手段はグラフィックデバイスにおける描画命令の
実行状態をモニターし、実行状態が所定の段階に進展す
る迄プロセスからの描画要求のスケジューリングを保留
している。これによりキュー内に余分に多くのコマンド
が蓄積されないので、ハードウェアイベントのリアルタ
イム化が改善される。

Description

【発明の詳細な説明】
【0001】
【技術分野】本発明はディスプレイ装置を有するデータ
処理装置に係わり、特にマウスのようなポインティング
デバイスと共に使用されるマルチタスクオペレーション
−マルチウインドゥのデータ処理装置に関するものであ
る。
【0002】
【背景技術】UNIXまたはOS/2のようなマルチタ
スク・オペレーションシステムにおいては、タスクは同
時に非同期的に処理される(UNIX及びOS/2はそ
れぞれ米国AT&Tベル研究所の登録商標及び米国IB
M Corp.の商標である)。例えば、複数のタスク
をシステムがそのディスプレイの制御に従事している際
にも処理し得る。又、ネットワークを介して相互接続さ
れたいくつかのホストコンピュータのグループにおい
て、タスクは1つのホストから他のホストへと送り実行
され得る。そしてマルチウインドゥシステムでは進行中
の各タスクに関する情報は単一のスクリーン上のそれぞ
れのウインドゥに同時に表示される。Xウインドゥはそ
のようなマルチウインドゥシステムの現在の代表的なも
のの1つである(Xウインドゥは米国マサチューセッツ
工科大学の登録商標である)。
【0003】コンピュータ端末ディスプレイ装置として
従来リフレッシュ走査型CRT(陰極線管)が一般的に
用いられてきた。そしてメモリ性を有するベクトル走査
型CRTはCAD(コンピュータエイデッドデザイン)
に関する大きなサイズの高細度ディスプレイとしてしば
しば用いられている。ベクトル走査型CRTではイメー
ジが一度表示されると次のスクリーンリフレッシュ(全
画面のリフレッシュ)がなされるまでメモリ機能によっ
てそのイメージを維持している。しかしその動作速度が
比較的低いという理由で移動するカーソル表示、移動す
るマイコン表示、マウスのようなポインティングデバイ
ス又はエディタ表示のようなリアルタイムのマン−マシ
ン・インターフェースディスプレイとしては適当ではな
かった。一方、リフレッシュ走査型CRTはメモリ機能
を有しないから一定のフレーム周波数でのリフレッシュ
・サイクルが必要である。フレーム周波数毎にディスプ
レイに新しい画面が供給され、その周波数はフレーム当
たりの走査線数と各ラインの水平走査時間の積の逆数で
あり、フリッカ防止のためには60Hz以上が望まれる。ノ
ン・インターフェース走査法は両方のタイプに共通に採
用されており、画面におけるデータの移動表示例えばマ
イコンの移動表示がユーザがそれを観測し追従するのに
適するようにしている。
【0004】CRTの両方のタイプで、例えばマルチウ
インドゥを適切に表示するなどの理由で所望の表示解像
度が高くなる程ディスプレイ装置は大型となり消費電力
も大きくなると共に駆動回路も高価となってくる。その
ような大型の高解像度CRTは種々の不都合な面があ
り、そのため最近はフラットパネル型のディスプレイが
開発されるようになってきた。
【0005】現在、種々のフラットディスプレイ・パネ
ルがあるが、その1つはスーパツイストネマチック液晶
(STN)を用いた高多重駆動システムを採用するもの
である。又、その変形として白/黒ディスプレイの使用
のもの及びプラズマディスプレイがある。これらの全て
はCRTシステムの画像データ転送方式及びスクリーン
リフレッシュに60Hz又はそれより高い周波数によるノン
・インターフェース走査方式を採用しており、それ故一
つの全画面について400〜480本の走査ライン程度が得ら
れるだけである。例えば1000本以上の走査ラインのより
大型のフラットディスプレイパネルは尚実用段階にはな
い。この原因はフリッカを防止するため60Hz以上のフレ
ーム周波数でリフレッシュサイクルをしなければならな
いが、そうすると1ライン当たり10〜50μsec 以下の走
査時間となるため良好なコントラストを得ることができ
ないからである。
【0006】CRTであると、蛍光スクリーン上に形成
されたイメージは蛍光特性のためにある時間維持され
る。TN型LCD(ツイストネマチック型液晶)では、
イメージは十分な駆動電圧の印加による光透過率の変化
を用いて形成される。いずれかのタイプであっても、少
なくとも30Hz以上の高いフレーム周波数を用いることが
必要である。
【0007】例えば走査ライン数1920本でライン当たり
2560画素、即ち一画面で 4,915,200画素数のCRTディ
スプレイ又はTN型LCDでは約17.5μsec の水平走査
時間となりそして水平ドットクロック周波数は約147MHz
となる。CRTの場合、147MHzの水平ドットクロック周
波数は現在入手できるピクチャーチューブで用いられて
いるビームガンの最大電子ビーム変調周波数をかなり越
えたものとなる。その結果正確なイメージ形成は達成さ
れない。TN型LCDの場合、1920本の走査ラインを駆
動するということは現在可能とされる約1/400 の最小デ
ューティファクタよりかなり低い1/1920のデューティフ
ァクタに該当してしまう。一方、現実的な水平走査速度
での駆動が用いられると、そのフレーム周波数は30Hzよ
り低くなり、フリッカが表示品質を損なってしまう。こ
れらの理由で、CRTやTN型LCDで得られる画面の
大型化と高細度化は走査ライン数が十分に増加できない
ため限られてしまっていた。
【0008】最近になって Clarkと Lagerwall(米国特
許第 4,367,924号)は高速応答性とメモリ性(双安定
性)の両方を有する強誘電体液晶装置(FLCD)を提
案した。FLCDはスメチッチC相(SmC*)またはH相(S
mH*)を個有温度で示し、光学的な双安定状態を有する。
FLCDは印加電界で高速な状態変化を示し、高速メモ
リ性ディスプレイ装置として広く用いられることが期待
されている。
【0009】FLCDは上述したフラットパネルディス
プレイ装置を著しく凌ぐ大型高細度ディスプレイ装置に
可能性を与えている。比較的低いフレーム周波数での駆
動が必要であるから、適切なマン−マシーンインターフ
ェイスディスプレイであるようそのメモリ機能を利用し
部分書き換え走査を採用している。部分書き込み走査と
は、スクリーン上書き換えられるべき領域のみが走査さ
れそこに新しい描画を行うというものである。そのよう
な部分書き換え走査は米国特許第 4,655,561号に開示さ
れている。FLCDの双安定性機能を用いたディスプレ
イとして(走査線数1920)×(ライン当たりの画素256
0)のフラットパネルが実現されている。
【0010】FLCDのライン走査方式では、フレーム
リフレッシュ周波数は走査線が増加するほど低くなる。
例えば50μsec/ラインの速度のFLCDに関するフレー
ム周波数は、 1920(ライン)×50(μsec/ライン)=96(msec)=10(Hz) である。一方、コンピュータの操作性上ポインティング
デバイスの動き及びキーボード入力のリアルタイム応答
性と滑らかさは重要な要素である。ポインティングデバ
イス指標(例えばマウスフォント)とか文字はスクリー
ン上の画面に対し比較的小さいものであるが、それを表
示するのに高速応答性が要求される。例えばマウスフォ
ントは60Hzで、そして文字は30Hzの速さで通常扱われな
ければならない。それ故、10Hzのフレーム周波数はその
ような動作に関し十分ではない。前述の“部分書き換え
走査技術”は、新しい描画をディスプレイの必要な領域
についてのみ書き換えるというもので、描画を更新する
に必要な時間を大幅に減ずることができる。もしマウス
フォントが32×32ビットデータとして画成されるとする
なら、そのデータの表示速度は、 32(ライン)×50(μsec/ライン)=1.6(msec)=625(Hz) となる。しかし、この“部分書き換え走査技術”を実際
に用いるには“部分書き換え要求”を認識しそして書き
換えられるべき走査線数をディスプレイに指示すること
が必要である。更に、その他いくつかの要因で部分書き
換えにおける現実の周波数は約 300Hz程度である。従っ
て、大型のディスプレイにおいてマウスフォント等の表
示のリアルタイム化に大きな改善をもたらすものであ
る。
【0011】しかし、複数のタスクをマルチウインドゥ
で表示するディスプレイにあってはリアルタイム表示に
ついて又別な問題がある。図8Aを参照するに、1つの
ディスプレイスクリーン上に3つのウインドゥ1、2及
び3がオープンされている。第1のタスクがウインドゥ
1において時々刻々針が動く時計を表示している。第2
のタスクがウインドゥ2において矢印方向に回転する直
線をグラフィック的に表示している。そしてテキストエ
ディタのような第3のタスクがウインドゥ3で文字を表
示している。又ベース(ルート)ウインドゥにおいてシ
ステムのタスクがスクリーン上1つの位置から次の位置
へと移動した矢印のマウスフォントを表示している。図
8Bはこのような描画コマンドの発生の時間系列とその
コマンドの実行の時間系列を示している。
【0012】図示するように最初のマウスフォント表示
コマンド発生から2番目のマウスフォント表示コマンド
の発生との時間間隔にウインドゥ2から直線を描くコマ
ンドが8個発生したものとする。マルチタスクを処理す
るコンピュータであっても、それら複数のタスクからの
描画コマンドを同時並列的に処理するのではなく1つの
系列として順次実行するものであるから、2番目のマウ
スフォント表示コマンドの実行は他のタスクにおいて先
に発生した8個の直線を描くコマンドの実行処理後であ
る。ここでコマンドの実行時間、即ちグラフィックデバ
イスで実際に描画する時間(主にデバイスのハード的属
性に依存する)がコマンド発生の速さに追いつかなくな
ると、コマンド発生とその実行との間に時間的ずれが生
ずる。この結果2番目のマウスフォントはかなりの時間
遅れで表示されることになってしまう。
【0013】この時間的ずれそのものを少なくするには
グラフィックデバイスのハード的な動作速度の改善のほ
か先に述べた部分書き換え走査技術のようなソフト的な
改善が必要である。しかしここで特に問題としているこ
とは、他のタスクから(または自己のタスクからの場合
もまれにある)発生される描画コマンドによってハード
ウェアイベントの表示のリアルタイム化が著しく遅延さ
れるという点である。このため現実のマウス操作に対し
スクリーン上の表示マウスフォントが追従しなくなると
いう問題がマルチウインドゥシステムでは特に発生する
可能性がある。
【0014】コンピュータ操作にあってマウスとかキー
ボードからの入力はハードウェア(H/W)イベントと
称されるが、H/Wイベントのリアルタイム処理はコン
ピュータシステムにとってできるだけ保証されているこ
とが必要である。何故なら、このようなH/Wイベント
は操作者の操作と直接関係しておりH/Wイベントのリ
アルタイム処理は操作性そのものを意味しているからで
ある。
【0015】
【発明の概要】本発明の目的は、ハードウェアイベント
のリアルタイム表示について改善されたデータ処理装置
を提供することにある。
【0016】本発明のより固有な目的は、大型高精細F
LCDディスプレイ装置におけるハードウェアイベント
のリアルタイム表示を改善することにある。
【0017】本発明の他のより固有な目的は、マルチウ
インドゥシステムにおけるハードウェアイベントのリア
ルタイム表示を改善することにある。
【0018】上述の目的を解決する本発明に従うデータ
処理装置は、複数のユーザプロセスをタイムシェアリン
グにおいて走行させる手段、及び複数のユーザプロセス
からのグラフィックデバイスへの描画要求をスケジュー
リングして描画要求各々に係わる命令からなる単一の系
列を形成するスケジューリング手段を論理的に構成して
いるホストプロセッサ、及びスケジューリング手段の単
一の系列から転送された所定単位の描画命令に従ってグ
ラフィックデバイスを制御して描画を行うグラフィック
デバイス・プロセッサからなり、スケジューリング手段
はグラフィックデバイス・プロセッサにおける所定単位
の描画命令の実行状態をモニターし、実行状態が所定の
段階に進展するまでユーザプロセスからの描画要求のス
ケジューリングを保留しているものである。
【0019】
【実施例の説明】
(1) ハードウェア構成 本発明の実施例はFLCDをディスプレイとするコンピ
ュータシステムである。図1にそのハードウェア構成の
アウトラインを示す。システムはホスト側プロセッサで
制御されている部分とグラフィックデバイス側のプロセ
ッサとで制御されている部分とからなり、ホストとグラ
フィックデバイスのプロセッサは夫々独立した動作をし
ている。尚、ここでグラフィックデバイスとはグラフィ
ックカード、グラフィックコントローラ、FLCDパネ
ルを含むデバイス全体を意味する。ホスト即ちコンピュ
ータ本体にはOSが実装されプロセスをタイムシェアリ
ング的に走行させており、各プロセスで生成された描画
命令はバスインターフェースを介してグラフィックデバ
イス内のグラフィックカードに与えられる。グラフィッ
クカードは描画命令に応じ描画内容をビデオ(V)RA
Mに展開する機能と共にその描画内容によってFLCD
パネルに対し固有の部分書き込みの管理機能を有し、次
段のグラフィックスコントローラへVRAM内容をデジ
タル信号として渡す。グラフィックスコントローラは送
られてきた部分書き込み情報を有するVRAM内容のデ
ジタル信号からFLCDパネル上の所定のアドレス位置
に実際にドライバICを介して図形などを表示する駆動
信号を形成する。
【0020】グラフィックカードの実施例のブロック構
成は図3に示されている。グラフィックカードは、グラ
フィックプロセッサ20、インターフェース28及びメモリ
34のためのメモリコントローラ22とからなる。メモリ34
は命令を蓄積するRAM34-1、ビデオ出力を蓄積するVRAM3
4-2と34-3;及びグラフィックプロセッサ20のための初
期制御命令を蓄積するROM34-4 からなる。尚、後述する
グラフィックデバイスのグラフィックコマンド・バッフ
ァはRAM34-1 に論理的に構成されるものである。又、こ
れらメモリのいくつかはホスト側の主メモリ上に構成さ
れ得るものである。データはプロセッサ20とメモリ34と
の間でメモリコントローラ22を介して通信される。ビデ
オタイミング・ユニット32はグラフィックプロセッサ20
に同期信号を提供し、クロック30がグラフィックプロセ
ッサ20のタイミング信号として与えられる。VRAM34-1と
34-2の出力は出力インターフェース50へその入力として
与えられる。出力インターフェース50において入力され
たデータはマルチプレクサ36を経て、適当なグレースケ
ール又はカラー信号レベルが与えられる。カラー/グレ
ースケール・パレット38を通ってデジタルインターフェ
ース40に入る。デジタルインターフェース40は、スクリ
ーン上のアドレスデータとイメージデータ(信号線PD0
- PD7 )、アドレスデータとイメージデータを識別する
信号AH/DL及びタイミング信号CLKを作成して次
段のグラフィックコントローラへと送る。
【0021】グラフィックプロセッサ20は例えばTexas
Instrumentsの GSP34010プロセッサであり、それはグラ
フィック命令と一般命令の両方を実行することができ
る。インターフェース28はIBM“ATバス”である。
これらは当業者に知られているものである。GSP34010の
詳細はTexas Instruments Inc.により刊行されているTM
S34010ユーザズガイド(刊行番号 SPVU007)に記述されて
いる。
【0022】図2はグラフィックカードからの描画デー
タを得てFLCDパネルを駆動するグラフィックコント
ローラのブロック構成を示す。FLCDパネルは1920本
の走査電極と2560本のデータ電極からなるマトリックス
構造である。走査電極は走査電極駆動回路82に、そして
データ電極はデータ電極駆動回路62に接続されている。
走査電極駆動回路62はデコーダ78、ラインアドレス・メ
モリ80及びアドレス検出回路88を含む。データ電極駆動
回路64はシフトレジスタ72、ラインメモリ74及びバッフ
ァ70を含む。
【0023】描画位置をパネルスクリーン上に指定する
走査電極84をアドレスするための走査電極アドレスデー
タ(A0, A1, A2…A15)とイメージデータ(D0, D1, D2,…
D2559)が同一の信号線PD0 - PD7 を介して送られるか
ら、送信データがアドレスデータかイメージデータかを
識別する信号AH/DL信号が同時にプロセッサ89に送
られる。制御回路68AH/DL信号がハイレベルのとき
PD0 - PD7 上の信号を走査電極アドレスデータであると
してアドレス検出回路88で取り込ませ、ローレベルのと
きはイメージデータであるとしてラインバッファ70に取
り込ませる。AH/DL信号は又データを転送する転送
開始信号でもある。ラインバッファ70に取り込まれたイ
メージデータは一時的に蓄えられ、水平走査期間に合わ
せてシフトレジスタ72、ラインバッファ74を経てデータ
電極駆動装置76に与えられる。アドレス検出回路88で検
出されたアドレスデータはデコーダ78によりアドレスデ
ータに従う走査電極の駆動信号とされラインアドレス・
メモリ80を経て走査電極駆動装置82に印加される。
【0024】本実施例では、表示パネル60の駆動とグラ
フィックカード内のプロセッサによる走査電極アドレス
データA0 - A15及びイメージデータDO - D2559の発生は
同期していないため、データ転送時に制御回路68とグラ
フィックプロセッサを同期させる必要がある。この目的
のために、同期信号Hsync が各水平走査時に制御回路で
発生される。このHsync 信号はAH/DL信号と関連を
有している。グラフィックプロセッサ20はHsync をモニ
タしてHsync がHighからLow に遷移したのを検出した後
データ転送の準備に入り、AH/DL信号をLow からHi
ghに立ち上げ走査電極アドレスデータを転送し、AH/
DLを再びHighからLow に立ち下げ画像データを転送す
る。その詳細な信号波形を図13に示す。
【0025】本発明は図1のようなグラフィックデバイ
スにあってH/Wイベントのリアルタイム化処理を改善
するためのもので、本発明の特徴はホスト側におけるグ
ラフィックデバイスへの論理的なインターフェース構成
に係わるものである。
【0026】(2) ソフトウェア(論理)構成概要 本発明の論理構成は、UNIXオペレーティングシステ
ム(OS)で動作するXウインドゥ・グラフィックユー
ザインターフェース(GUI)を用い、図1のハードウ
ェア上に実装される。UNIXオペレーティングシステ
ムのUNIX固有の本質部分はカーネルと称される。ユ
ーザプログラムはopen(), read()等のシステムコールに
よってカーネルと相互作用をする。UNIXのファイル
システム、マルチタスク・メカニズム(タイムシアリン
グ)、プロセス間通信などの機能はこのカーネルによっ
て提供されているものである。OSは複数のモジュール
からなりベンダーがユーザに提供するシステムソフトウ
ェアである。OS内の1つのモジュールであるところの
デバイスドライバは、入出力ハードウェアデバイスを直
接制御するものであり、デバイス非依存性であるUNI
X固有のカーネルに対するインターフェースを提供する
ソフトウェアである。ディスプレイ装置を制御するのは
このデバイスドライバであり、ユーザプログラムはデバ
イスドライバを介してディスプレイ装置に描画を指示す
る。デバイスドライバは次のようなI/Oシステムコー
ル等によりカーネルの機能とデバイスのハード的属性の
関連においてプログラムされる。
【0027】 #include <temio.h> int ioctl (fd, cmd, tbuf) /* 端末デバイスの制御 */ int fd; /* オープンされたファイル記述子 */ int cmd; /* 実行する操作を指定するコマンド */ struct termio * tbuf; /* 端末情報のための構造体へのポインタ */
【0028】例えばコマンドTCGETAはtermio構造体をfd
によって参照される端末の情報で満たすことを命令する
ものである。デバイスドライバはカーネルにリンクさ
れ、1つの新しいカーネルイメージとなり得るが、UN
IXカーネル固有の部分ではない。
【0029】Xウインドゥは、UNIXカーネル上に構
築されたグラフィックデバイス・ドライバ機能を含むG
UIとしてユーザにマルチウインドゥのプログラミング
環境を提供するソフトウェアシステムであるが、そのシ
ステム構成の概要を図4に示す。Xウインドゥシステム
は1つのスクリーン上にマルチウインドゥを生成するG
UIであり、サーバ/クライアント・モデルによって説
明される。サーバプログラムは、Xウインドゥの核心
(ベースウインドゥシステム)であり通常スクリーン、
キーボード及びマウスからなるワークステーション(端
末)と相互作用してウインドゥを生成しこれをスクリー
ン上に表示したり、ウインドゥ上に図形を描画したり又
はキーボード又はマウスからのハードウェアH/Wイベ
ントを検知して処理する役目を行う。クライアントプロ
グラムはユーザプログラム、Xライブラリ及びウインド
ゥマネージャーを意味する。即ち、クライアントである
ユーザプロセスはサーバにグラフィック処理を依頼する
ことができる。このときクライアントはグラフィックデ
バイスのハード的属性を考慮することなくマルチウイン
ドゥ機能を記述できる。ハード的属性はサーバが吸収し
ている。クライアントとサーバの交信はXプロトコルに
よって行われる。OSやハードウェアなどのベンダに依
存した操作はサーバがその処理を担当しているので、ク
ライアントは一般に相手システムがXプロトコルを理解
すればOSやハードウェアに依存せずにプログラムを書
くことができる。そしてホスト1にあるクライアント
が、ホスト0のサーバとネットワーク上でXプロトコル
によって交信しそのサーバを介してホスト0にあるワー
クステーションを制御することができる。即ち、Xウイ
ンドゥシステムはネットワーク透過性である。ここでホ
スト1(ローカル)のクライアントプロセスに対しホス
ト0(リモート)のサーバプロセスがエージェントとな
っている。クライアントがホスト0にある場合はネット
ワークを介さずサーバと交信する。尚、アプリケーショ
ンは直接Xプロトコルをハンドリングするのでなく、ラ
イブラリ関数Xlibをコールし、コールされたXlib関数が
Xプロトコルを発行している。そしてホスト0のサーバ
はホスト0とホスト1にある2個の複数のプロセスに対
しマルチタスク的にサービスを提供することができる。
【0030】図5はXウインドゥシステムのモジュール
構成を示すものである。以下はXlibを用いてスクリーン
上に500×300のウインドゥwを表示するクライアントの
ユーザアプリケーション・プログラム例である。
【0031】 #include <XII/Xlib.h> #include <XII/Xutil.h> main() { Display *d; Window w; Unsigned long black, white; d = XOpenDisplay(NULL) w = XCreateSimpleWindow(d, RootWindow(d,0), 100, 100, 500, 300, 2, BlackPixel (d, 0), White- Pixel (d, 0)); XMapWindow(d, w); }
【0032】XOpenDisplay()はこのプログラムに係わる
ユーザプロセスとネットワークシステム内の指定したサ
ーバとの接続を確立し、XCreateSimpleWindow() はその
サーバの制御するスクリーンに500×300のウインドゥw
を生成し、XMapWindow()は生成ウインドゥwをスクリー
ン上に表示するXプロトコルを発生してそれをXサーバ
に与えるXlib関数である。
【0033】サーバ構造 サーバはクライアントとの接続を確保し、複数のクライ
アントからの要求をバランスよく処理し、ディスプレ
イ、マウス、キーボードなど、ハードウェアからのイベ
ントを複数のクライアントに分配するのが主な仕事であ
る。図7に示すようにサーバは、DIX(Device Independe
nt X)、DDX(Device Dependent X)、OS、拡張機能(EXT:
Extension)の4つのレイヤ(層)からなる。本発明の説
明にあってこれらレイヤの理解が重要である。
【0034】DIX 層: サーバの全ての動作はDIX から
ほかのレイヤの関数を呼び出すことで行われ、その呼び
出された関数によってクライアントからの要求の処理、
入力イベントの読み取りとクライアントへの配分がなさ
れる。DIX はマシン、デバイス、OSに依存しない部分で
あり、Xプロトコルによってクライアントと交信を行
う。DIX 層にイベント処理をスケジューリングするルー
チンDispatch()が属する。
【0035】DDX 層: 入出力デバイスを直接制御する
関数を集めた部分であり、デバイスとOSに依存して記述
される。ハードウェアからのイベントの読み取り、マウ
ス移動感度の調整、キーコードのマッピング情報作成な
どの入力デバイス制御を行う入力部分と、描画要求の実
行、GC(Graphic Context )の作成/変更などを行う出
力部分の両者からなる。それらの関数はデバイス毎にデ
ータ構造体を伴ってDIX からコールされる。
【0036】OS層: クライアントとの接続、ネットワ
ーク接続およびその通信のための読み書き機能、入力イ
ベントが発生したことを通知する機能(これはDDX との
共同作業の場合もある)、クライアントへのタイムシェ
アリングサービスを円滑に行うための機能、フォントフ
ァイルとのインターフェース・アクセス機能、低レベル
メモリ管理機能を行う。
【0037】EXT 層: サーバの機能、Xプロトコルを
拡張するためのレイヤである。普通のサーバには必要が
なく、特殊機能を持ったディスプレイなどでその機能を
生かすものである。
【0038】即ち、Xウインドゥシステムはネットワー
ク透過性マルチウインドゥ環境をユーザに提供するUN
IXカーネル上に構築されたオペレーティングシステム
と言える。ユーザはUNIX固有の前述の機能と共にX
プロトコルによりマルチウインドゥ機能にアクセスする
ことができる。本発明の実施例に係わる図1でXウイン
ドゥシステムはホストコンピュータにおけるもので、そ
してFLCDグラフィックデバイスのハード的属性はそ
の DDX層及びOS層内に記述される。
【0039】クライアントユーザプログラムがサーバに
対しマウスのクリック点に文字Xを描くプログラムを例
示してシステム動作の理解の助けとする。
【0040】
【0041】プログラムはXSelectInputt() のセットに
よりマウスクリックイベントがあったときそれを報告し
てくれるようにサーバに依頼しておく。H/Wイベント
をXNextEvent()で読み込みそのクリック時のマウス位置
座標情報をXButtonEvent構造体eのx、yメンバに記述
する。 XDrawString()はサーバに対しx、yメンバで指
定するウインドゥスクリーン位置に文字xを描くことを
指示する。サーバはクライアントに対しH/Wイベント
の検出と報告をしそしてクライアントがそのH/Wイベ
ントに基づいて作成した描画命令を受けてグラフィック
デバイスを制御して描画を行う。即ちクライアントユー
ザプログラムはハードウェアデバイスに依存せず記述さ
れ、サーバがハードウェアデバイスに対しインターフェ
イスをとってサービスをクライアントに提供している。
【0042】スケジューリング サーバは、1つのワークステーション(端末:スクリー
ン、キーボード、マウス)を制御するのに対応づけられ
た単一のプロセスであるが複数のプロセス即ち複数のク
ライアントへサービスを提供している。尚、ここでプロ
セスとはプログラムが実行される環境である。1つのプ
ロセスは、命令セグメント、ユーザデータ・セグメン
ト、システムデータ・セグメントの3つのセグメントか
ら構成される。プログラムは命令とユーザデータを初期
化するために使用される。1つのプログラムが時間的に
並行した複数のプロセスで実行され得る。マルチタスク
・システムは複数のプロセスをタイムシェアリングで並
行して実行する。この複数のプロセスに対するタイムシ
ェアリング自体はUNIXカーネルが担当している。一
方サーバにおけるスケジューリングとは発生した描画要
求、H/Wイベント処理などのサービス要求の処理順序
を規定するものである。図10に複数のクライアントへ
のサービスを処理するための本発明の実施例におけるキ
ュー(待ち行列)システムを示す。クライアントで作成
された描画命令はそのクライアント毎のクライアントキ
ュー101−103に作成順で登録される。
【0043】登録された命令はサーバのキュー105 にエ
ントリーポイント104 から転送される。即ち、複数クラ
イアントからの命令は単一の1つの系列へと制御されサ
ーバキュー105 に入れられシングルタス的に順次処理さ
れることになる。ホストプロセッサ・サイドのサーバキ
ュー105 内の命令はあるまとまった単位でグラフィック
デバイスのプロセッササイドのグラフィックコマンド・
バッファ106 に渡される。ホストプロセッサは命令群を
グラフィックデバイスのプロセッササイドへ渡すと、そ
の命令群の処理はグラフィックデバイス・プロセッサに
委ね自分は他の処理に移行する。グラフィックコマンド
・バッファ 106において渡された命令群はグラフィック
デバイス・プロセッサ用のコマンドに展開され図10の
TailからHead−1 の間に納まる。グラフィックデバイス
・プロセッサはTailから順次Headへとコマンドを実行す
る。実行につれてTailはHeadに近づいていきTail=Head
になったとき渡された命令群の実行が完了したことを意
味する。そうすると次の命令群がサーバキュー105 から
グラフィックコマンドバッファ106 へと渡される。この
次の命令群は以前のHeadよりも先のアドレスへ納められ
る。即ち、次の命令群を展開したコマンドのTailは以前
のHeadとなる。グラフィックコマンド・バッファ106 は
模式的にリング状のものとして説明される。図10の
(a)ではHead>Tailであるが(d)ではTail<Head となっ
ていることに注意されたい。
【0044】図8A及び図8Bに示すようにマウスイベ
ントのようなH/Wイベントに係わる描画がリアルタイ
ムで実行できなくなるのは、グラフィックデバイス以降
の処理速度が描画命令発生の速さに対し十分でなくその
イベント発生時にサーバキュー105 に未処理命令が多く
残っているからである。サーバシステムはH/Wイベン
ト自体は優先して処理しクライアントへ報告するにして
も、そのときのH/Wイベントに係わるクライアントで
生成された描画命令の実行はサーバキュー105に残って
いる命令が済んでからなされる。何故ならサーバキュー
105 内の処理はシングルタスク的に単に順次実行される
ものであるからである。
【0045】サーバがサービスすべき事象は複数のクラ
イアントプロセスから又ハードウェアデバイスから非同
期的に発生するがその処理のスケジューリングを行いそ
の後の処理の流れを制御するのが、サーバの DIXレイヤ
にあるルーチンDispatch()である。即ち、発生した事象
はDIX レイヤのDisptach()ルーチンでスケジューリング
され、その事象に係わる命令がDIX レイヤから呼ばれた
ルーチンによってサーバの制御するグラフィックデバイ
スで実行されるためにクライアントキューからサーバキ
ューへと転送される。Dispatch()ルーチンはクライアン
トからの描画要求とH/Wイベント発生が競合したとき
H/Wイベントの処理を優先的にスケジューリングして
そのリアルタイム化を図っている。
【0046】図6にDispatch()ルーチンによるスケジュ
ーリングのフローを示す。 ステップ1: H/Wイベント(キーボード、マウス操
作)があったかのチェック。これはイベントキュー内の
先頭と末尾ポインタを参照して2つのポインタが異なる
ときはイベントキュー内から登録イベントを読み出す。 ステップ2: H/Wイベントチェックが Yesの時、そ
のイベントに係わる文字表示やマウスカーソル表示に伴
う処理を行う。このときサーバ/クライアント間のデー
タ送受信はOS層の WriteToClient()関数が呼ばれそれが
行う。処理は、H/Wイベントに応答してH/Wイベン
トのクライアントへの報告、クライアントで生成された
イベントに係わる描画命令がサーバキューへと登録され
ることで終了し、フローはステップ1に戻る。 ステップ3: H/WイベントチェックでNoの場合、OS
層のWaitForSomething()が呼ばれる。WaitForSomething
()の詳細は図12に示されているが、その名のとうり事
象を待ちモニターする関数である。待ち事象には以下の
ものがある。 *ハードウェア、ユーザからのイベント *サーバへ既に接続されているクライアントからの要求
(描画命令) *接続されていないクライアントを指定サーバへの接続
要求 これらの事象が発生したら、イベントタイプ等の必要な
情報を設定してDIX層のDispatch()に返す。 ステップ4: 発生事象が接続クライアントからの要求
であるとOSレイヤのReadRequestClient()を呼びクライ
アントキュー内の例えば描画命令を読みサーバキューへ
と登録し、ステップ1に戻る。 ステップ5: 発生事象がサーバへのクライアントへの
接続要求であるとOS層のWriteToClient()を介して接続
確立のデータをクライアントへ書き込み、ステップ1に
戻る。
【0047】DIX層のDispatch()はサーバへのサービス
要求のスケジューリングを行う関数であり、サービスタ
イプに応じ必要なルーチンプロセスを分岐するものであ
り、分岐プロセス先で実際の描画処理などは行われる。
このスケジューリングは先ずH/Wイベントを優先的に
処理する、即ちイベントキュー内に登録イベントがある
時、優先的にそれを処理することでリアルタイム化を図
っている。
【0048】しかし前述したように、イベントキュー内
の登録イベントを優先的に処理するDispatch()スケジュ
ーリングだけでは、あるクライアントにおける2つのH
/Wイベント発生の間に他のクライアントによる未処理
描画要求がサーバキューに残る場合がありそれを先ずグ
ラフィックデバイス側は処理しないといけないからH/
Wイベントのリアルタイム化に支障が生ずるおそれがあ
った。これは命令を生成するホスト側サーバと命令を処
理するグラフィックデバイス側とは非同期的に動作して
いることに起因している。本発明はこの2つの非同期的
動作において、サーバ側がグラフィックデバイス側の処
理状態をWaitFor-Something() 内でモニターし、そのモ
ニターに基づいてイベント処理スケジューリングを制御
し上述の問題の改善を図るものである。
【0049】WaitForSomething() WaitForSomething()ルーチンの詳細の説明の前に、図1
5Aを参照してグラフィックコマンド・バッファ106 の
Head、Tail及び未使用隣接空間の概念について説明す
る。図15Aはグラフィックコマンド・バッファ内に展
開されたコマンドデータの種々の構造を示す。サーバキ
ュー105 から転送されてきたデータはTailアドレスから
Headアドレスへ順次書き込まれ、グラフィックデバイス
・プロセッサによりTailアドレスからHeadアドレスへと
実行される。Headアドレスは、データがグラフィックコ
マンド・バッファ106 に書き込まれる毎に更新され、Ta
ilアドレスは、グラフィックデバイス・プロセッサでデ
ータが実行されるにつれて更新される。図15Aの(a)
と(c) はHeadアドレスがTailアドレスより大きい場合を
示し、(b) と(d) はHeadアドレスがTailアドレスに等し
いとき、そして(e) はTailアドレスがHeadアドレスより
大きい場合である。図15Bは、後述の本発明に従うQS
pace()ルーチンを採用した場合のHeadアドレス、Tailア
ドレス及び未使用隣接空間の大きさの実際の例を示す。
【0050】図12Aに示すDIX レイヤーにあるWaitFo
rSome-thing() ルーチンは、本発明に従い先ず関数XQSp
ace() を呼ぶ。尚、関数XQSpace() は図11に示す関数
QSpace()のXウインドゥ領域に変換したものである。QS
pace()はグラフィックコマンド・バッファ106 をモニタ
ーして、Tail、Headアドレスを入取し、未使用隣接空間
を計算するものである。グラフィックデバイス内のバッ
ファの状態をモニターするためOSに対しデバイスアク
セス許可を求めるチャネルオープンを行い、モニター後
に速やかにクローズする。計算前後でオープン/クロー
ズしているのは、マルチタスクの効率を極力維持するた
めである。このようなデバイスが使用許可されるとこの
デバイスが使用する物理的メモリ空間を他のプログラム
にOSが割り当てないようにロックする。このことは事
実上、マルチタスクの仮想記憶システムが1つのプロセ
スに占有された状態になるのでシングル・タスクのシス
テムと同様になってしまう。このため仮にこの'LOCK'状
態がデバイスの処理能力のモニター結果に依存するので
あれば、グラフィックプロセッサ側がビジーであっても
新たな要求の処理は中断状態におかれ、ロック解除まで
続く。これにより実質的に、QSpace()がグラフィックプ
ロセッサ側とOS側とで処理能力に応じた同期を取って
いることになる。このロック状態はUNIXのようなシ
ステムでは極力避けなければならない状態であるので、
当然本来のマルチタスクの状態にできるだけ速やかに戻
す必要がある。QSpace()が呼ばれ、いよいよ計算に入る
という直前にオープンし、メモリをロックし、処理後直
ちにメモリを解放するためにクローズしている。
【0051】QSpace()において、チャネルオープンがな
されるとグラフィックコマンド・バッファのHeadとTail
アドレスを入取する。もしHead>Tailならば未使用隣接
空間はキューサイズ(CMDBUFSIZE)−Headとして計算し、
Head<Tailならば未使用隣接空間はTail−Headとして計
算される。QSpace()で入取・計算されたデータはWaitFo
rSomething()にリターンされる。
【0052】図12AのステップS2で、Head≠Tail(即
ち、未処理コマンドがグラフィックコマンド・バッファ
内に存在)且つ未使用隣接空間が所定値PART_QUEより小
さい(即ち、次に来るであろうサーバキューからの命令
群を引き続き格納する空き領域がグラフィックコマンド
・バッファに十分ない)かをチェックする。Yes である
ときは次の命令群を受付処理するに準備されていない場
合であってステップS3において再びQSpace()を呼びグラ
フィックコマンド・キューにアクセスしてTailとHeadア
ドレスを入取する。前回のQSpace()のときからコマンド
実行処理が進んだ結果未処理コマンドがなくなっていれ
ば、ステップS4でのチェックによりHead=Tailとなって
いるのでステップS5に進むが、まだ未処理コマンドがあ
ってHead=TailチェックがNoであるとループして再びス
テップS3に戻りHead=Tailになって未処理コマンドがな
くなる迄ループしている。もし、ステップS2のチェック
でステップS1でのQSpace()で得られたデータにおいてHe
ad=TailまたはHead≠Tailであっても次に来る命令
群を受け付けるに十分な未使用隣接空間があると(N
o)直ちにステップS5に進む。
【0053】ステップS5はサービス要求事象(H/Wイ
ベント、接続クライアントからの描画要求、非接続クラ
イアントのサーバへの接続要求)の発生をH/Wイベン
トキュー及びクライアントキューにおいてモニターし
(尚、実際はサーバ内のフラグをみる)、キュー内に登
録があればそのイベントタイプを含む情報をDIX レイヤ
にあるDispatch()に渡し図6のフローにおけるステップ
4に進む。
【0054】即ち、本発明に従うWaitForSomething()で
は、ステップS1〜S4においてグラフィックデバイス・プ
ロセッサが次の描画処理を実行できる状態になる迄はス
テップ5におけるサービス要求事象のモニターを開始さ
せないようにしている。従って、クライアントからの描
画要求があっても、その処理を直ちに行いサーバキュー
へ描画命令を登録するスケジューリングではなくグラフ
ィックデバイスによる描画処理の進行状態に応じてこれ
を保留する。H/Wイベント優先スケジューリングで
は、H/WイベントがH/Wイベントキューに登録され
ているとそれをクライアントからの描画要求に優先して
処理するというだけであり、H/Wイベントキューに登
録がないとグラフィックプロセッサによる描画処理進行
状態と無関係にクライアント要求が順次処理されるよう
サーバキューに登録されてしまう。本発明はH/Wイベ
ントキューに登録がなくH/Wイベントの優先処理が必
要でない間でもクライアントからの描画要求の発生時直
ちに処理するのでなくグラフィックデバイスのプロセッ
サの実行の進行状態をモニターしてそれに応じて処理を
する事にその特徴あるものである。これによって、サー
バキューにはH/Wイベントのリアルタイム処理を遅ら
せるような多くの命令が登録されることがないので、H
/Wイベントによるリアルタイム処理が改善される。図
12BはWaitForSomething()の別な実施例である。ステ
ップS1でQSpace()によりグラフィックコマンド・バッフ
ァのHeadとTailアドレスを入取し、ステップS2でHead≠
Tailチェックを行いHead=Tailなら直ちにステップS5で
サービス要求の処理を行い、Head≠TailならHead=Tail
になる迄ループにより待ってからステップS5に入るフロ
ーである。
【0055】図14は、本発明に係わるスケジューリン
グの層構造の概念を示す図である。DispatchはDIX レイ
ヤにあってサーバの外殻をなしクライアント及びH/W
デバイスと直接交信してH/Wデバイス及びOSに依存
しない形態でのスケジューリングの基本フローを行う。
WaitForSomething()はOSレイヤにあってDispatch()か
らコールされOSに依存した形態でのサービス要求の処
理を行う。QSpace()は最内にあってWaitForSomething()
からコールされグラフィックデバイスを直接アクセスし
てそのモニターを行う。
【0056】サーバキューからグラフィックコマンドキ
ューへの命令データ転送 サーバキュー105 内の命令データはサーバ側(ホスト
側)のHostDispatcherで基本グラフィック関数に展開さ
れてからBeginCommand()関数によってグラフィックデバ
イス側(リモート側)のグラフィックコマンド・バッフ
ァ106 へ転送される。グラフィックコマンド・バッファ
106 内の展開された命令はリモート側のGetCommand()関
数によって読出され、Remote DispatcherでHost Dispat
cherに対応したグラフィック・プロセッサ関数に展開さ
れてVRAMに対し所定の描画処理が実行される。
【0057】図16A〜図16Cはホスト側のBeginCom
mand()、図17A〜図17Cはリモート側のGetCommand
()の概要を表しており、グラフィックコマンド・バッフ
ァ106 に対する通信・管理の様子を中心に示してある。
図16での変数X、Yや図17での変数Z、Wは任意の
変数を表し、Head、Tailはグラフィックコマンド・バッ
ファ106 の命令データ格納場所の先頭、末尾を表す。ま
たBeginCommand()自体はホスト側サーバキュー105 から
送られるグラフィック命令の転送フローにあたり、GetC
ommand()はリモート側の受信フロー及び命令実行フロー
にあたる。この送・受信間では命令の転送・受信開始及
び終了時に互いに同期を取っている。これはリモート側
がシングルプロセッサであるということと、ディスプレ
イに対しては一度に複数の独立した走査(リフレッシ
ュ)が出来ないことによる。ホスト側サーバキュー105
から送られるグラフィック命令がHost Dispatcher であ
るまとまった単位の基本グラフィック関数群をPutWords
()関数に渡す。PutBlock()関数の詳細は図16Bと図1
6Cに示されている。
【0058】PutBlock()では現時点のコマンドバッファ
106 のHead、Tail値を読みだし、変数X、Yに格納し未
使用隣接空間も計算する。グラフィックコマンド・バッ
ファ106 における特殊処理を施した後、グラフィックコ
マンド・バッファ106 へデータを転送する。そして転送
終了タイミングを見るために、WaitCommand() 関数でリ
モート側からの受信終了確認を待つ。この後、グラフィ
ックコマンド・バッファ106 の新しいHead位置をセット
し、次のデータ転送を待つ。全てのデータを転送し終わ
るとPutBlock()は終了し、PutWords()とBeginCommand()
が終了する。
【0059】一方、リモート側のGetCommand()では図1
7Aで示されるように命令の種類によって(monolithic
command(引数を伴わない単一・単純命令)またはchun
kedcommand (複数の引数を伴った命令))、データ領
域のバッファの確保の処理は異なるが、いずれも図17
Cに示すGetBlock()によってホスト側からの命令データ
をコマンドバッファ106 に格納(受信)する。そのの
ち、図17Bに示されるようにコマンドキュー106 から
Head、Tail値を用いて命令データの読みだし及び実行を
行う。図17CにGetBlock()内部動作を示す。初めにHe
adとTailの値が異なるかどうかを確認する。これはリモ
ート側の命令実行の全てが終了後はHead=Tailとなり、
それに応答してホスト側が新たな命令を転送すると図1
6Cで示されたようにHead値を更新し、Head≠Tailとな
っているからである。もう1つの理由はホスト側とリモ
ート側はデータ通信時以外独立・非同期動作のため、デ
ータ受信時のホスト側の状態を確認する必要があるから
である。
【0060】次に得られたHead、Tailの値からデータサ
イズを算出し、ラップ処理を行いホスト側からデータを
受信し、Tailを更新し、その旨をホスト側へ知らせる。
ちなみにこの情報はホスト側が命令データをリモート側
へ送ろうとする際のリモート側のビジー(BUSY)情報の判
別として扱われ、リモートからの返答を以てアイドル(I
DLE)状態であると判別し、転送を開始するのに用いられ
る。以上のことから、'Head'はホスト側BeginCommandに
よって更新され、'Tail'はリモート側GetCommandによっ
て更新され、ホストとリモート側は互いに基本的には非
同期実行処理を行い、データ通信時に同期を取るように
なっている。
【0061】図9Aと図9Bは本発明の実施例に従う表
示状態を例示するものである。図9Aは図8Aと類似す
るスクリーン上の3つのウインドゥを示す。図9Bの左
側はホスト側において発生されたグラフィックコマンド
系列であり、その右側は発生コマンドの実行系列であ
る。マウスカーソルフォントを描くコマンドは発生順序
でなく実行されることに注意されたい。斜線部のコマン
ドは2番目のマウスカーソルフォント描画命令が発生す
る前にクライアントキューに既に存在しているものであ
るが、本発明に従うQSpace()を含むWaitForSomething()
ルーチンによるスケジューリングではその事象のスケジ
ューリング処理がされず2番目のマウスイベント発生前
にはサーバキューへは送られなかったものである。マウ
スイベントはH/Wイベントとして優先処理されるから
クライアントキューに登録されている他のクライアント
からの要求に先んじてスケジューリングされその描画命
令はサーバキューへと送られ実行されるのである。
【0062】他の実施例 尚、これ迄説明した本実施例ではH/Wイベント中心に
処理するようサーバキューへのクライアント・スケジュ
ールをした例を示したが、QSpace()を用いて他の方法で
もクライアント・スケジューリングを行うことができ
る。例えば図6中のReadRequestFromClient() 関数の処
理の前後でQSpace()によるリモート側の実行状態をバッ
ファを通してモニターすることで図4のステップ2の処
理の流れに変更を加えることは可能である。図18にRe
adRequestFromClient() 関数でQSpace()をコールする具
体例を示す。本来この関数は単にあるクライアントから
の要求を受取り、要求内容を読んでそれをリターンする
ものである。そしてリターンされた要求内容に従い図6
のステップ4で処理をしグラフィックデバイス側のコマ
ンドバッファ106 に描画コマンドを格納する。図18の
ReadRequestFromClient() 関数においては、先ずQSpace
()がコールされグラフィック側のコマンドバッファ106
のコマンド処理状態即ちバッファの空き状態をモニター
し、十分空きがあるときは直ちにクライアントの要求を
読みそれをリターンするが、空きが十分でないときはク
ライアントからの要求を読まずにリターンし、そして次
に再びReadRequestFromClient() が図6で起動されその
時にコマンドバッファ106 が空きならばそこでクライア
ントからの要求が読まれその読まれた内容がリターンさ
れて処理され、描画コマンドがコマンドバッファ106 に
格納される。即ち、グラフィックデバイスの処理が遅い
ときクライアントからの要求をスキップする。これによ
りグラフィックデバイス側の処理速度に同期してクライ
アント要求処理も行われるので、要求に伴う描画コマン
ドが一方的にコマンドバッファ106 にたまることがな
い。さらに同様のことを他のステップにおいても行うこ
とは可能であり、どのステップでQSpace()をコールし、
何の処理を行うかはそのシステムに合った処理を加えれ
ばよい。このような関数でのQSpace()のコールはそれ単
独で用いることもできるが先に説明したWaitForSomethi
ng()でのQSpace()のコールとの組み合わせでも用いるこ
とができ、その場合より適切な描画処理の形態が提供さ
れ得る。
【0063】また本発明はリモート側のグラフィックコ
マンド・バッファ106 の構成や管理方法に限定されるも
のではなく、グラフィック側の実行状態がモニターでき
る情報が得られる構成であればよい。例えば別の例とし
て、本発明の固定サイズ・バッファとは異なった任意長
のバッファサイズを各命令毎に確保でき、HeadやTailの
管理ではなく命令毎にナンバーを割り振り、このナンバ
ーを各命令の実行状態に応じて管理する方法を示す。図
19命令の格納先を指し示すポインターを4つ持つバッ
ファを表す。各ポインターroom #1 - #4はある時点で3
つのそれぞれ異なる命令(opcode)とその実行に必要なデ
ータが格納され、 room #1から#3にそれぞれその格納場
所とサイズが収納される。そして実行が進み、現在 roo
m #1の命令が既に実行済みとなった状態となっていて、
room #2 が実行中であるとする。このときのQSpace()で
はこのナンバー数# とサイズをモニターすることにな
り、図20のようになる。そしてこのQSpace関数(X 用
にはQSpace())を使ったWaitForSomething()関数は図2
1となる。冒頭のQSpace()関数によるループからのEXIT
条件はHead、Tail値から先のナンバー数とサイズの大小
関係におき代わる。しかし、基本的なアルゴリズムと効
果は先の実施例となんら変わってはいない。
【図面の簡単な説明】
【図1】本発明の実施例の適用されるハードウェア構成
のブロック図である。
【図2】図1のグラフィックコントローラの詳細を示す
ブロック図である。
【図3】図1のグラフィックカードの詳細を示すブロッ
ク図である。
【図4】本発明の実施例の動作する環境であるXウイン
ドゥシステム構成を示す図である。
【図5】Xウインドゥシステムのモジュール構成を示す
図である。
【図6】イベント処理スケジューリングのフローを示す
図である。
【図7】Xウインドゥのマルチウインドゥでの描画を示
す図である。
【図8A】Xウインドゥのマルチウインドゥでの描画を
示す図である。
【図8B】図8Aのマルチウインドゥ描画の従来技術で
の描画コマンドの発生の時間系列とそのコマンドの実行
の時間系列を示す図である。
【図9A】Xウインドゥのマルチウインドゥでの描画を
示す図である。
【図9B】図9Aのマルチウインドゥ描画の本発明の実
施例に従う描画コマンドの発生の時間系列とそのコマン
ドの実行の時間系列を示す図である。
【図10】本発明の実施例におけるキューシステムを示
すブロック図である。
【図11】WaitForSomething()ルーチン中のQSpace()の
フロー図である。
【図12A】WaitForSomething()ルーチンの第1の例の
フロー図である。
【図12B】WaitForSomething()ルーチン中の第2の例
のフロー図である。
【図13】第2図のグラフィックカードにおける信号波
形を示す図である。
【図14】本発明に係わるスケジューリングの層構造の
概念を示す図である。
【図15A】グラフィックコマンド・バッファのHead、
Tail及び未使用隣接空間の様子を示す図である。
【図15B】Headアドレス、Tailアドレス及び未使用隣
接空間の大きさの実施例を示す図である。
【図16A】ホスト側でのコマンドの転送フロー図であ
る。
【図16B】図16Aの転送フロー中のPutBlock()の前
半部のフロー図である。
【図16C】図16Aの転送フロー中のPutBlock()の後
半部のフロー図である。
【図17A】リモート側のコマンド受信と実行の右半分
のフロー図である。
【図17B】リモート側のコマンド受信と実行の左半分
のフロー図;
【図17C】図17Aのフロー中のGetBlock()のフロー
図;
【図18】QSpace()をReadRequestFromClient()でコー
ルする例のフロー図である。
【図19】本発明の適用し得るグラフィックコマンドバ
ッファ構成の第2の例を示す図である。
【図20】図19のバッファ構成を用いる際のQSpace()
のフロー図である。
【図21】図20のQSpace()を用いたときのWaitForSom
ething()のフロー図である。
【符号の説明】
クライアントキュー … 101 〜 103 サーバキュー … 105 グラフィックコマンド・バッファ … 106

Claims (16)

    【特許請求の範囲】
  1. 【請求項1】 複数のプロセスをタイムシェアリングに
    おいて実行させるマルチタスク手段、及び該複数のプロ
    セスからのグラフィックデバイスへの描画要求をスケジ
    ューリングして該描画要求各々を単一の系列に形成する
    スケジューリング手段とを論理的に構成しているホスト
    プロセッサ、及び該スケジューリング手段の単一の系列
    から転送された所定単位の描画命令に従ってディスプレ
    イ装置を制御して描画を行うグラフィックデバイスとか
    らなるデータ処理装置において、 該スケジューリング手段は該グラフィックデバイスにお
    ける所定単位の描画命令の実行状態をモニターし、該実
    行状態が所定の段階に進展する迄該プロセスからの描画
    要求のスケジューリングを保留しているデータ処理装
    置。
  2. 【請求項2】 請求項1に記載のデータ処理装置におい
    て該スケジューリング手段は更にハードウェアイベント
    をスケジューリングしており、描画命令とハードウェア
    イベントが競合したとき該ハードウェアイベントを優先
    的にスケジューリングしているものであるデータ処理装
    置。
  3. 【請求項3】 請求項2に記載のデータ処理装置におい
    て、該ハードウェアイベントはキーボード、マウス、ラ
    イトペン、タッチスクリーンまたはトラックボールの操
    作に応答して発生されるものであるデータ処理装置。
  4. 【請求項4】 請求項1に記載のデータ処理装置におい
    て、該スケジューリング手段は該グラフィックデバイス
    の1つのスクリーン上にマルチウインドゥ機能を提供す
    るものであるデータ処理装置。
  5. 【請求項5】 請求項1に記載のデータ処理装置におい
    て、該ディスプレイ装置は強誘電体液晶ディスプレイパ
    ネルであるデータ処理装置。
  6. 【請求項6】 描画コマンドに従いスクリーン上の表示
    を行うグラフィックデバイス手段、及び描画コマンドを
    作成するプロセスを走行させ該作成された描画コマンド
    を該グラフィックデバイスへと転送するホストプロセッ
    サ手段とからなるデータ処理装置であって、 該ホストプロセッサ手段は走行プロセスからの該グラフ
    ィックデバイスへの描画要求及びハードウェアイベント
    をモニターして、モニターされた描画要求に応じ作成さ
    れた描画コマンドを順次第1のキュー(サーバキュー10
    5 )に登録し又はモニターされたハードウェアイベント
    を処理しており、 該ホストプロセッサ手段は更に該グラフィックデバイス
    手段に転送された描画コマンドの処理状態をモニターし
    て該処理状態に応じて該作成された描画コマンドの該第
    1のキュー(105 )への登録を制御しているものである
    データ処理装置。
  7. 【請求項7】 請求項6に記載のデータ処理装置におい
    て、該描画要求とハードウェアイベントが競合したとき
    はハードウェアイベントが優先処理されているデータ処
    理装置。
  8. 【請求項8】 請求項6又は7に記載のデータ処理装置
    において、該グラフィックデバイス手段に転送された描
    画コマンドの処理が所定の段階に進行する迄、該ホスト
    プロセッサ手段は該グラフィックデバイスへの描画要求
    のモニターを保留しているデータ処理装置。
  9. 【請求項9】 請求項8に記載のデータ処理装置におい
    て、該グラフィックデバイス手段に転送された描画コマ
    ンドを保持するバッファ(グラフィックコマンドバッフ
    ァ106 )が含まれ、該バッファ内の未処理コマンドが所
    定値以下になったとき該グラフィックデバイスへの描画
    要求のモニターを開始しているデータ処理装置。
  10. 【請求項10】 請求項8に記載のデータ処理装置にお
    いて、該グラフィックデバイス手段に転送された描画コ
    マンドを保持するバッファ(グラフィックコマンドバッ
    ファ106 )が含まれ、該バッファ内に未処理コマンドが
    なくなったとき又は次のコマンドを引き続き格納する空
    き領域があると判断されたとき該描画要求のモニターを
    開始しているデータ処理装置。
  11. 【請求項11】 請求項6、7、8、9又は10に記載
    のデータ処理装置において、該ホストプロセッサ手段は
    複数のプロセスをタイムシェアリング的に走行させ、該
    生成された描画コマンドを各描画生成プロセス毎に設け
    られた第2のキュー(クライアントキュー 101 - 103)
    に登録し、該第2のキューからの登録描画コマンドを1
    の系列として制御し該第1のキューへと登録しているデ
    ータ処理装置。
  12. 【請求項12】 請求項6に記載のデータ処理装置にお
    いて、該ハードウェアイベントはキーボード、マウス、
    ライトペン、タッチスクリーン又はトラックボールの操
    作に応答して発生されるものであるデータ処理装置。
  13. 【請求項13】 請求項6に記載のデータ処理装置にお
    いて、該グラフィックデバイス手段は強誘電体液晶ディ
    スプレイパネル装置を含むものであるデータ処理装置。
  14. 【請求項14】 ディスプレイパネルと該パネルを描画
    コマンドに従って駆動して該パネル上に描画を行うロー
    カルプロセッサとからなるグラフィックデバイス ハードウェアイベントを発生させるオペレータ操作デバ
    イス、及び描画プロセスを走行させるクライアント実行
    手段、及び該プロセスからの描画要求と該ハードウェア
    イベントをモニターし該描画要求に応答して描画コマン
    ドを該ローカルプロセッサに転送しそして該ハードウェ
    アイベントに応答して該プロセスへ該イベントをレポー
    トするスケジューリングを行うサーバ手段とを論理的に
    構成しているホストコンピュータプロセッサとからなる
    データ処理装置であって、 該サーバ手段は該描画要求と該ハードウェアイベントが
    競合するとき該ハードウェアイベントを優先処理し且つ
    該ローカルプロセッサの描画コマンド処理状態をモニタ
    ーして該処理状態が所定の段階に進む迄描画要求に対す
    る該スケジューリングを保留しているものであるデータ
    処理装置。
  15. 【請求項15】 請求項14に記載のデータ処理装置に
    おいて、該ディスプレイパネルは強誘電体液晶パネル出
    あるデータ処理装置。
  16. 【請求項16】 請求項14に記載のデータ処理装置に
    おいて、該サーバは該ディスプレイパネル上にマルチウ
    インドゥを形成する描画コマンドを該ローカルプロセッ
    サに提供しているものであるデータ処理装置。
JP2400085A 1990-01-19 1990-12-01 ディスプレイ装置を有するデータ処理装置 Expired - Fee Related JP2603759B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/468605 1990-01-19
US07/468,605 US5146558A (en) 1990-01-19 1990-01-19 Data processing system and apparatus

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP8083603A Division JP2813332B2 (ja) 1990-01-19 1996-04-05 ディスプレイ装置を有するデータ処理装置

Publications (2)

Publication Number Publication Date
JPH06242907A true JPH06242907A (ja) 1994-09-02
JP2603759B2 JP2603759B2 (ja) 1997-04-23

Family

ID=23860481

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2400085A Expired - Fee Related JP2603759B2 (ja) 1990-01-19 1990-12-01 ディスプレイ装置を有するデータ処理装置
JP8083603A Expired - Fee Related JP2813332B2 (ja) 1990-01-19 1996-04-05 ディスプレイ装置を有するデータ処理装置

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP8083603A Expired - Fee Related JP2813332B2 (ja) 1990-01-19 1996-04-05 ディスプレイ装置を有するデータ処理装置

Country Status (9)

Country Link
US (1) US5146558A (ja)
EP (1) EP0438152B1 (ja)
JP (2) JP2603759B2 (ja)
KR (1) KR940007813B1 (ja)
CN (1) CN1045673C (ja)
AT (1) ATE168205T1 (ja)
AU (1) AU652549B2 (ja)
CA (1) CA2034295C (ja)
DE (1) DE69129706T2 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5253340A (en) * 1990-01-19 1993-10-12 Canon Kabushiki Kaisha Data processing apparatus having a graphics device with priority scheduling of drawing requests
US5546553A (en) * 1990-09-24 1996-08-13 Texas Instruments Incorporated Multifunctional access devices, systems and methods
JP3002302B2 (ja) * 1991-07-25 2000-01-24 キヤノン株式会社 データ処理装置
DE69222486T2 (de) * 1991-08-02 1998-03-05 Canon Kk Anzeigesteuergerät
US5321807A (en) * 1991-11-27 1994-06-14 Mumford Christopher J Accelerated graphics display method
US5739808A (en) * 1994-10-28 1998-04-14 Canon Kabushiki Kaisha Display control method and apparatus
CN1234100C (zh) * 1996-08-26 2005-12-28 富士通株式会社 建立图形的设备和方法
JPH11296384A (ja) * 1998-04-07 1999-10-29 Hitachi Ltd イベントドリブン型osにおけるイベント処理翻訳システムおよび装置
DE19948099A1 (de) * 1999-10-06 2001-04-19 Infineon Technologies Ag Prozessorsystem, insbesondere ein Prozessorsystem für Kommunikationseinrichtungen
DE10256216A1 (de) * 2002-12-02 2004-06-24 Fujitsu Siemens Computers Gmbh Computersystem sowie Verfahren zur Übertragung von Bilddaten
TWI283394B (en) * 2004-03-31 2007-07-01 Mstar Semiconductor Inc Data processing method and structure of a multi-function display
JP4244028B2 (ja) * 2004-09-22 2009-03-25 株式会社ソニー・コンピュータエンタテインメント グラフィックプロセッサ、制御用プロセッサおよび情報処理装置
US8156259B2 (en) 2005-07-21 2012-04-10 Elliptic Technologies Inc. Memory data transfer method and system
DE112013001051T5 (de) * 2012-02-20 2014-12-11 Mitsubishi Electric Corp. Grafikdatenverarbeitungsgerät und Grafikdatenverarbeitungssystem
US11276360B2 (en) * 2018-07-27 2022-03-15 Kyocera Corporation Display device and mobile body

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60142729A (ja) * 1983-12-30 1985-07-27 Hitachi Ltd 端末制御方式
JPS6134590A (ja) * 1984-07-26 1986-02-18 フアナツク株式会社 画面制御方式
JPH0192826A (ja) * 1987-10-02 1989-04-12 Canon Inc 情報入出力装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4367924A (en) * 1980-01-08 1983-01-11 Clark Noel A Chiral smectic C or H liquid crystal electro-optical device
US4553202A (en) * 1982-05-06 1985-11-12 International Business Machines Corporation User controlled dialog resource switching in a multi-tasking word processor
EP0200172B1 (en) * 1982-12-22 1990-09-05 International Business Machines Corporation Image transformations on an interactive raster scan or matrix display
US4655561A (en) * 1983-04-19 1987-04-07 Canon Kabushiki Kaisha Method of driving optical modulation device using ferroelectric liquid crystal
US4823108A (en) * 1984-05-02 1989-04-18 Quarterdeck Office Systems Display system and memory architecture and method for displaying images in windows on a video display
JPS62276673A (ja) * 1986-05-26 1987-12-01 Toshiba Corp マルチウインドウ表示装置
GB2191918B (en) * 1986-06-16 1990-09-05 Ibm Data display system
JPS6375937A (ja) * 1986-09-19 1988-04-06 Fujitsu Ltd ジョブ優先制御装置
CA1319767C (en) * 1987-11-26 1993-06-29 Canon Kabushiki Kaisha Display apparatus
US4965559A (en) * 1988-05-31 1990-10-23 Motorola, Inc. Multi-channel graphics controller
US4965551A (en) * 1988-12-05 1990-10-23 Richard Box Burglar alarm system for multi-unit mailboxes

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60142729A (ja) * 1983-12-30 1985-07-27 Hitachi Ltd 端末制御方式
JPS6134590A (ja) * 1984-07-26 1986-02-18 フアナツク株式会社 画面制御方式
JPH0192826A (ja) * 1987-10-02 1989-04-12 Canon Inc 情報入出力装置

Also Published As

Publication number Publication date
CA2034295C (en) 1998-08-18
CA2034295A1 (en) 1991-07-20
DE69129706D1 (de) 1998-08-13
KR910014793A (ko) 1991-08-31
JPH08320774A (ja) 1996-12-03
KR940007813B1 (ko) 1994-08-25
CN1045673C (zh) 1999-10-13
EP0438152A3 (en) 1993-06-09
EP0438152A2 (en) 1991-07-24
ATE168205T1 (de) 1998-07-15
DE69129706T2 (de) 1999-01-21
CN1053502A (zh) 1991-07-31
AU652549B2 (en) 1994-09-01
JP2813332B2 (ja) 1998-10-22
EP0438152B1 (en) 1998-07-08
US5146558A (en) 1992-09-08
JP2603759B2 (ja) 1997-04-23
AU6946691A (en) 1991-07-25

Similar Documents

Publication Publication Date Title
JP2813332B2 (ja) ディスプレイ装置を有するデータ処理装置
US5874960A (en) Method and system for sharing applications between computer systems
US4928247A (en) Method and apparatus for the continuous and asynchronous traversal and processing of graphics data structures
KR920005329B1 (ko) 데이타 처리시스템 및 장치
US5097411A (en) Graphics workstation for creating graphics data structure which are stored retrieved and displayed by a graphics subsystem for competing programs
JP3171891B2 (ja) 表示制御装置
JP3002302B2 (ja) データ処理装置
US5253340A (en) Data processing apparatus having a graphics device with priority scheduling of drawing requests
KR940001109B1 (ko) 정보처리장치 및 디스플레이 시스템
US5446840A (en) System and methods for optimized screen writing
US5812150A (en) Device synchronization on a graphics accelerator
JP3245230B2 (ja) 表示制御装置および表示制御方法
JP2633032B2 (ja) 情報処理システム及び装置
JP2738845B2 (ja) 表示装置及び駆動制御装置
JP2662427B2 (ja) 情報処理装置
JP2729049B2 (ja) 表示装置
JP2770961B2 (ja) 情報処理装置
JP2584872B2 (ja) 情報処理装置
JP2801218B2 (ja) 表示装置
JPH0293584A (ja) 情報処理装置
Bernet et al. Report: The 630 multitasking graphics terminal
Theaker et al. I/O Buffering
JPS62164175A (ja) 画像表示装置
JPH0224713A (ja) マルチウインドウ制御情報管理装置
JPH03189723A (ja) Crtコントローラ

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 19961120

LAPS Cancellation because of no payment of annual fees