带显示设备的数据处理装置.pdf

上传人:e2 文档编号:655435 上传时间:2018-03-01 格式:PDF 页数:62 大小:1.72MB
返回 下载 相关 举报
摘要
申请专利号:

CN91100341.X

申请日:

1991.01.19

公开号:

CN1053502A

公开日:

1991.07.31

当前法律状态:

终止

有效性:

无权

法律详情:

专利权的终止(未缴年费专利权终止)授权公告日:1999.10.13|||授权||||||公开

IPC分类号:

G06F3/147

主分类号:

G06F3/147

申请人:

佳能株式会社;

发明人:

井上裕司

地址:

日本东京都

优先权:

1990.01.19 US 468,605

专利代理机构:

中国国际贸易促进委员会专利代理部

代理人:

冯赓瑄

PDF下载: PDF下载
内容摘要

在一种数据处理装置上包括一台宿主处理器包含用一种分时方式的一个多任务单元,以及一个调度单元用于向一台图形设备调度来自多个用户进程的制图请求并且形成一个与各制图请求关联的各个命令的单一序列,一个调度单元监视在图形设备处理器上制图命令的执行状态,并保留来自用户进程的制图请求的调度直到执行状态前进到一个预定阶段。

权利要求书

1: 一种数据处理装置包括: 一台宿主处理器包括以一种分时方式执行多个进程的多任务装置,以及用于调度来自多个进程的制图请求及将制图请求形成一个单一序列的调度装置,所述多任务装置与所述调度装置是逻辑地配置的,以及 一台图形设备用于控制一台显示设备按照从所述调度装置中的单一序列传送来的预定的制图命令单元画出一个图形, 其中所述调度装置监视图形设备上预定的制图命令单元的执行状态,并在执行状态进行到一个预定的阶段以前保留调度来自进程的制图请求。
2: 根据权利要求1的数据处理装置,其中所述调度装置调度一个硬件事件,且当所述制图命令与所述硬件事件互相竞争时,比所述制图命令优先调度所述硬件事件。
3: 根据权利要求2的数据处理装置,其中所述硬件事件是响应一个键盘,鼠标,光笔,触模屏幕或转球指示器的操作而生成的。
4: 根据权利要求1的数据处理装置,其中所述调度装置在所述图形设备的一个单一屏幕上提供多窗口功能。
5: 根据权利要求1的数据处理装置,其中所述显示设备是一块铁电液晶显示板。
6: 一种数据处理装置包括图形设备装置用于依照一条制图命令在一个屏幕上画出一个图形,以及宿主处理器装置用于运行一个生成 所述制图命令的进程并且向所述图形设备装置传送所述生成的制图命令,其中 所述宿主处理器装置监视从所述运行中的进程向所述图形设备装置的一个制图请求和一个硬件事件,响应所述监视到的制图请求将所述生成的制图命令登记在一个第一队列(服务员队列105)中或者执行所述监视到的硬件事件,以及 所述宿主处理器装置监视传送到所述图形设备装置的所述制图命令的执行状态,并根据所述执行状态控制所述生成的制图命令在所述第一队列(105)中的登记。
7: 根据权利要求6的数据处理装置,其中如果所述制图请求与所述硬件事件互相竞争,所述硬件事件比所述制图请求优先执行。
8: 根据权利要求6或7的数据处理装置,其中所述宿主处理器装置挂起以监视向所述图形设备装置的所述制图请求直到传送到所述图形设备装置的所述制图命令的执行达到一个预定的阶段。
9: 根据权利要求8的数据处理装置,进一步包括一个缓冲器(图形命令缓冲器106)用于存储传送到所述图形设备装置的所述制图命令,其中当所述缓冲器中的未执行命令的数目等于或小于一个预定的数目时开始监视向所述图形设备装置的所述制图请求。
10: 根据权利要求8的数据处理装置,进一步包括一个缓冲器(图形命令缓冲器106)用于存储传送到所述图形设备装置的所述制图命令,其中当在所述缓冲器中不存在一个未执行的命令或者判断出有自由空间可用于存储下一条命令时,开始监视所述制图请求。
11: 根据权利要求6,7,8,9和10中任何一项的数据处理装置,其中所述宿主处理器装置使得多个进程以一种分时方式运 行,在提供给各制图生成进程的一个第二队列(顾客队列101至103)中登记所述生成的制图命令,作为一个单一序列,控制在所述第二队列中的登记的制图命令,并将所述登记的制图命令存储在所述第一队列中。
12: 根据权利要求6的数据处理装置,其中所述硬件事件是响应一个键盘,鼠标,光笔,触摸屏幕或转球指示器的一个操作生成的。
13: 根据权利要求6的数据处理装置,其中所述图形设备装置包括一个铁电液晶显示板设备。
14: 一种数据处理装置包括: 一台图形设备包括一块显示板及一台本地处理器用于按照一条制图命令驱动所述板在所述板上画出一个图形, 一个用户操作设备用于生成一个硬件事件;以及 一台宿主计算机处理器包括顾客执行装置用于运行一个制图进程和服务员装置用于对来自所述进程的一个制图请求与所述硬件事件的监视进行调度,响应所述制图请求将所述制图命令传送给所述本地处理器,并响应所述硬件事件将所述硬件事件通知所述进程,所述顾客执行装置与所述服务员装置是逻辑地配置的,其中 所述服务员装置在所述硬件事件与所述制图请求互相竞争时比所述制图请求优先执行所述硬件事件,监视所述本地处理器对所述制图命令的执行状态以保留所述制图请求的所述调度直到所述执行状态达到一个预定阶段。
15: 根据权利要求14的数据处理装置,其中所述显示板是一块铁电液晶板。
16: 根据权利要求14的数据处理装置,其中所述服务员向所述本地处理器提供用于在所述显示板上形成多窗口的所述制图命令。

说明书


本发明涉及一种带有一台显示设备的数据处理装置,更具体地涉及用于多任务操作及使用诸如鼠标的指示设备的多窗口的一种数据处理装置。

    在诸如UNIX或OS/2(UNIX是美国电报与电话公司的注册商标,OS/2是IBM公司的注册商标)的多任务操作系统中,数据处理系统并发地与异步地执行任务。例如,在系统从事于控制其显示器时,可同时执行一个或多个任务,而且,在以一个网络互连的一组或若干宿主计算机中,一个任务可从其发源的系统送往其他任何宿主计算机去去进行处理。在一个多窗口系统中,与各进行中的任务分别相关的信息可以在单个屏幕的不同对应窗口中同时显示。X窗口是当前可获得的典型多窗口系统之一(X窗口是麻省理工学院的注册商标)。

    迄今为止,作为计算机终端显示设备,通常使用的是刷新扫描型CRT(阴极射线管),而具有存储器特征的矢量扫描型CRT则有时用作CAD(计算机辅助设计)的大型高分辨率显示器。在一台矢量扫描型CRT上,一个图象一旦被显示,由于其存储器特性而并不被刷新直到下一次屏幕刷新(即,全屏幕刷新)被执行为止。但是,操作速度是相对缓慢的所以它并不很好地适合于作为一种用于实时人机接口显示的显示器,诸如移动光标显示器,移动图象显示器,像鼠标之类的指示设备,或者编辑显示器。另一方面,刷新扫描型CRT需要有帧频的刷新周期,因为它并不具备存储器特性。这种显示器是以帧频被提供新图象的。帧频是以每帧的扫描行数同与每一行的水平扫描时间地乘积的倒数表示的。为了防止显示器闪烁,帧频应为60赫兹或更高。两种类型的CRT都采用非隔行扫描方式,使用户便于观察和跟踪在屏幕上的移动数据显示,例如图像的运动显示。

    在两种类型的CRT中,为了,例如,清楚地显示多个窗口的目的要求的显示分辨率越高,则显示器的大小也越大,结果导致高功率消耗,更大的驱动器以及更高的成本。这样的大型,高功率,高分辨率CRT引起各种不便。因此,最近研制了平板型显示器。

    当前,已有多种平面显示板。一种采用用超扭转向列(STN)液晶的高度多路复用的驱动系统。第二种是它的改型,用于黑白显示器。第三种为等离子体显示系统。所有这些都采用CRT系统的图象数据传输方案以及非隔行扫描方案以60赫兹或更高的帧频进行屏幕刷新,因而需要一整屏400-480行的数量级的扫描行总数。具有,例如,1000条或更多扫描行的大型平面显示板尚未达到实用阶段。这是因为这种显示板需要以60赫兹或更高的帧频的刷新周期来防止闪烁。同时,这一要求又导致10至50微秒或更短的单行扫描时间,这对于提供良好的对比度显得太短了。

    用一台CRT,在一个荧光屏上形成的一个图象由于荧光性而保持一定的时间。在一台TN型LCD(扭转向列型液晶设备)中,图象是由利用作用一个足够的驱动电压所引起的透射率改变来形成的。在两种设备中,都必须使用30Hz或更高的高帧频。

    例如,对于包含1920条扫描行及每行2560个象素,即,4,915,200个象素的CRT显示器或TN型LCD而言,水平扫描时间大约为17.5微秒而水平点时钟频率大约为147兆赫,在CRT的情况中,147兆赫的水平点时钟频率导致非常高的束扫描速度,远远超出当前可以获得的显象管中所使用的电子束枪的最大电子束调制频率,以致不能生成精确的图象。在TN型LCD的情况中,驱动总数为1920的扫描行相当于频率系数1/1920,它远远低于当前可能的最小可用效率系数1/400左右。另一方面,如果以现实的水平扫描速度进行驱动,帧频会低于30Hz,而闪烁削弱显示质量。由于这些原因,从CRT或TN型LCD所能得到的画面加大和加密受到了限制,因为扫描行的数目得不到充分的增加。

    近年来,Clark(克拉克)与Lagerwall(拉基华尔)(4,367,924号美国专利)曾经提出过一种铁电体液晶设备(FLCD),同时具有高速响应特性与存储器特性(双稳性)。在特定的温度范围内该FLCD显示近晶型C相(SmC*)或H相(SmH*),并具有光双稳性。该FLCD对作用的电场的变化显示快速响应,因而有希望广泛地用作高速存储器型显示设备。

    这种FLCD能够用在大型高分辨率显示器中,这种显示器超过上述平板显示设备。考虑到它的低帧频驱动,为了提供人机接口显示设备,为之提供了利用存储器特性的部分重写扫描方式。在部分重写扫描方式中,只有屏幕上要复盖的一个区域被扫描以构成一个新的画面。这种部分重写扫描已在4,655,561号美国专利中公开,使用这种FLCD的双稳性效应已经达到由1920条扫描行X每行2560个象素组成的平板显示器。

    在FLCD的逐行扫描方式中,随着扫描行数量的增加,帧刷新频率下降,例如,50微秒/行速度的FLCP帧频为:

    1920(行)×50(微秒/行)=96(毫秒)=10(赫兹)。

    另一方面,对于计算机的可操作性来说实时响应具有足够的速度,指示设备的运动具有足够的平滑性以及键盘输入具有足够的平滑度是十分重要的因素。指示设备符号(例如,鼠标形)与字符就它们的显示面积而言是相对小的,但要求显示它们时具有较高的响应速度。例如,一个鼠标形通常以60Hz写入,而一个字符则以30Hz写入。所以,10Hz的帧频对于这种操作是不够的。采用前面提到的“部分重写扫描技术”使得显示器只用新的信息重写显示器的必要部分,借此极大地减少了更新所显示的信息所需用的时间。例如,如果鼠标形规定为32×32位数据,用于显示数据的速度为:

    32(行)×50(微秒/行)=1.6(毫秒)=525(赫兹),然而,实际上应用这一“部分重写扫描技术”,必须标别“部分重写请求”及向显示设备指示要重写的行的数目。此外,由于某些其它因素,部分重写的实际频率的数量级大约为300Hz。然而一般地说,使用FLCD作为大型显示设备提供了极大地改进了的鼠标形之类的实时显示。

    然而,对用于在多窗口上实时显示多个任务的显示设备而言,会产生另一个问题。参见图8A,在一台显示设备的屏幕上开了三个窗口1,2,3。一个第一任务在窗口1中显示一个钟,其针是时时移动的。一个第二任务在窗口2中显示在箭头方向上转动的一条旋转线。一个第三任务诸如一个文本编辑程序在窗口3中显示字符。同时一个系统任务在一个基本(根)窗口中显示从一个位置移动到另一位置的一个箭头的一个鼠标形。图8B示出了生成作图命令的时序以及执行这些命令的时序。

    如图8B所示,假设在产生一个第一鼠标形显示命令与一个第二鼠标形显示命令之间的时间间隔内产生8个生成一条直线的命令。即使使用一台执行多任务的计算机,来自多个任务的作图命令也并不是平行并发地处理的,而是在单一的序列中一个命令一个命令地处理的。所以,只有在执行完前面产生的画一条直线的8个命令之后才执行第二鼠标形显示命令。如果作图命令的执行时间,即,用一个图形设备实际作图时间(主要取决于该设备的硬件特性)比产生命令的速度需要更长的时间,在产生与执行一条命令之间便出现了时间延迟。结果,第二鼠标形的显示相应地延迟了。

    为了使这种时间延迟缩小,必须增进图形设备的硬件操作速度以及采取诸如前面提到的部分重写扫描技术来提高软件操作。这里需要考虑的一个要点是一个硬件事件的实时显示在相当程度上是被另一任务(在极少数情况下由其本身的任务产生)所产生的一条作图命令所分隔开。由于这一原因,有可能存在这样的问题,尤其是在一个多窗口系统中,这便是在屏幕上显示的一个鼠标形无法跟上实际的鼠标操作。

    在计算机操作中,从鼠标与键盘的输入称作硬件(H/W)事件。在一台计算机系统中实时处理H/W事件应最大程度地加以保证因为这些H/W事件是直接与一位操作员的操作相关的并且H/W事件的实时处理是系统的可操作性的主要表现。

    本发明的一个目的是提供一种具有改进的硬件事件实时显示的数据处理装置。

    本发明的一个特定目的是对一个大型高分辨率FLCD的硬件事件的实时显示进行改进。

    本发明的另一个特定目的是对一个多窗口系统中的硬件事件的实时显示进行改进。

    为达到上述目的,本发明的数据处理装置包括:

    一台宿主处理器,该处理器包括以分时方式执行多个用户进程的装置,以及调度装置用于将来自多个用户进程的作图请求调度给一个图形设备以及形成一个单一的命令序列,其中的每一条命令与每一个作图请求相关联,所述多任务装置与所述调度装置是逻辑地配置的;以及

    一个图形设备处理器,用于控制所述图形设备按照由所述调度装置从单一序列中传送来的一个予定单元的作图命令画出一个图形。

    其中所述调度装置监视所述图形设备处理器的予定单元作图命令的执行状态,并保留对来自用户进程的作图请求的调度直到执行状态进行到一个予定的阶段。

    图1为展示实施本发明一个计算机系统的硬件配置的方框图;

    图2为展示图1中所示的图形控制器的细节的方框图;

    图3为展示图1中所示的图形卡的细节的方框图;

    图4展示本发明的实施例的操作环境中的一个X窗口系统的排列;

    图5展示X窗口系统的模块配置;

    图6为展示事件调度的流程图;

    图7展示服务器的分层结构;

    图8A示出如何在一个多窗口系统的X窗口中画一个图形;

    图8B示出一个传统的作图命令时间序列以及它们在一个多窗口系统中的执行;

    图9A示出如何在一个多窗口系统的X窗口中画一个图形;

    图9B示出了作图命令的一个时间序列以及它们在根据本发明的一个实施例的一个多窗口系统中的执行;

    图10为展示根据本发明的一个实施例的一个排队系统的方框图;

    图11为示出Wait  ForSome  thing()(等待某事件())例行程序中的QSpace()(Q空间())的流程图;

    图12A为展示WaitForSomething()例行程序的一个第一例子的流程图;

    图12B为展示WaitForSomething()例行程序的一个第二例子的流程图;

    图13展示了图2中示出的图形卡的信号波形;

    图14示出根据本发明的调度的分层结构概念;

    图15A展示图形命令缓冲器的Head(头),Tail(尾)与连接自由空间;

    图15B示出了连接自由空间的Head(头)地址,Tail(尾)地址,以及其大小;

    图16A为展示在宿主方面命令传送的流程图;

    图16B为展示图16A中所示传送流程中的PutBlock()(放入块())前一半的流程图;

    图16C为展示图16A中所示的传送流程中的PutBlock()的后一半的流程图;

    图17A为展示远程方面命令接受与执行的右边一半流程图;

    图17B为展示远程方面命令接受与执行的左边一半流程图;

    图17C为展示图17A中所示流程中GetBlockl)(取块())的流程图;

    图18为展示ReadRequestsFromClient()(从用户读取请求())的流程图;

    图19展示可应用本发明的图形命令缓冲器的另一种结构;

    图20为展示使用图19所示的缓冲器结构的Qspace()的流程图;以及

    图21为展示使用图20示出的QSpace()的WaitForSomething()的流程图。

    (1)硬件结构

    作为本发明的一个实施例,为一个计算机系统提供了一台铁电体液晶显示器FLCD。图1是该系统的硬件结构的概貌的示图。该系统由两部分构成,一部分由一台宿主处理器控制,一部分由一台图形设备处理器控制。宿主处理器与图形设备处理器互相独立地操作。这里所用的名词“图形设备”泛指一个设备包括一个图形卡,一个图形控制器以及一块FLCD板。宿主处理器上装备有以分时方式执行进程的操作系统。由各进程生成的一条制图命令经由一个总线接口送给图形设备的图形卡。图形卡具有将一条制图命令的内容展开在一个图像VRAM(虚拟随机存取存储器)中的功能以及管道在FLCD板上特定部分重写一条制图命令的内容的功能。VRAM的内容的数字信号的形式供给下一阶段,即图形控制器。根据表示包含部分重写信息的VRAM的内容的数字信号,图形控制器生成用于在FLCD板上适当地址处显示图形图象的驱动信号并将它们送至一片驱动器集成电路。

    图3中给出了图形卡的实施例的方框图。图形卡由用于控制一个接口28与一个存储器34的一个图形处理器20以及一个存储器控制器22构成。存储器34由用于存储命令的RAM34-1(随机存取存储器34-1),存储图像输出的VRAM34-2与VRAM34-3,以及为图形处理器20存储初始控制命令的RAM34-4构成。用于图形设备的一个图形命令缓冲器以RAM34-1逻辑地实现,这一点以后将要说明。这些存储器中的某些部分可以在宿主机的主存储器上实现。应用存储器控制器22将数据在处理器20与存储器34之间进行传送。一个视频定时单元32向图形处理器20提供一个时钟30作为其定时信号,VRAM34-2与VRAM34-3的输出被输入到一个输出接口50。供给输出接口50的数据经过一个多路通道36并接受了一个适当的灰度值或一个彩色信号级。来自多路通道的输出供给一个数字接口40。数字接口40生成屏幕地址数据,图象数据(信号线PD0至PD7),一个用于区别地址数据和图象数据的信号AH/DL,以及一个定时信号CLK,所有这些都提供给下一阶段的图形控制器。

    图形处理器20可以是,例如一个德克萨斯仪器公司(Texas  Instruments)的GSP34010处理器,它既能执行图形命令又能执行通用令,而接口可以是一个IBM(国际商用机器公司)“AT  Bus”(“AT总线”),它们对于熟悉本技术的人都是熟知的。GSP34010处理器在德克萨斯仪器公司出版的TMS34010用户指南中有详细的说明(出版物号SPVU007)。

    图2为用于接收来自图形卡的制图数据并驱动PLCD板的图形控制器的方框图。FLCD板包括一个由1920个扫描电极与2560个数据电极构成的矩阵电极结构,前者连接到一个扫描电极驱动器82,而后者连接到一个数据电极驱动器76。扫描电极驱动电路62包括一个解码器78,一个行地址存储器80,以及一个地址检测电路。数据电极驱动电路64包括一个移位寄存器72,一个行存储器74以及一个缓冲器70。

    用于对在板形屏幕上指定作图位置的扫描电极84进行寻址的扫描电极地址数据(A0,A1,A2,…,A15)以及图象数据(D0,D1,D2,…D2559)是通过同一的信号线PD0至PD7传送的。因而,同时将信号AH/DL送至处理器89以标识所传送的数据是地址数据还是图象数据。如果AH/DL信号为高电平指示该信号为扫描电极地址数据,则控制电路68使地址检测电路88接收在PD0至PD7上的信号。如果AH/DL信号为低电平指示该信号为图象数据,则由行缓冲器70接收信号。AH/DL信号也用作传送数据的传送起始信号。

    行缓冲器70将接收到的图象数据暂时存储在那里,并在水平扫描周期中经由移位寄存器72及行缓冲器74将它们送至数据电极驱动器76。地址检测电路88检测到的地址数据由解码器78译成扫描电极驱动信号,并经由行地址存储器80送至扫描电极驱动器82。

    在这一实施例中,驱动显示板60与图形卡处理器生成扫描电极地址数据A0至A15及图象数据D0至D2559不是同步的,所以在传送数据时有必要对控制电路68与图形处理器进行同步。为了这一目的,控制电路为每一水平扫描生成一个同步信号Hsync。这一Hsync信号在时间上与信号AH/DL相关。图形处理器20监视该Hsync信号并当Hsync信号从高电平改变到低电平时袖手旁观数据传送。此后,图形处理器20将AH/DL信号从低电平改变到高电平从传送扫描电极地址数据,并再度将AH/DL信号从高电平改变到低电平以传送图象数据。图13中示出了其详细信号波形。

    根据本发明,对图1中所示的图形设备的一个H/W事件的实时处理进行了改进。本发明的特征性性质在于宿主机与图形设备之间的一个逻辑接口结构。

    (2)软件结构(逻辑)

    在本发明的逻辑结构中,采用了运行在一个UNIX操作系统(OS)上并实现在图1中所示的硬件上的一个X窗口图形用户接口(GUI)。UNIX操作系统的主要部分称作一个内核。一个用户程序响应诸如Open()(打开()),read()(读())等系统调用与内核交互作用。UNIX功能诸如文件系统,多任务机制(分时),进程间通信等是由内核提供的。OS是一个由多个模块组成的系统软件,它由厂商供应给用户。OS的模块之一的设备驱动程序直接控制一台输入/输出硬件设备并对UNIX专有的独立于硬件设备的内核提供一个接口。这一设备驱动程序控制显示设备,一个用户程序指令该设备驱动程序在显示设备上去画一个图形。设备驱动程序是考虑了内核的功能与设备的硬件属性采用下述I/O系统调用来编程的。

    #include<temio.h>

    int iocti(fd,cmd,tbuf)/*终端设备控制*/

    int fd;/*打开文件描述符*/

    int cmd;/*指定要执行的操作的命令*/

    struct termio*tbuf;/*终端信息的结构的指针*/

    例如,命令TCGETA是一条在一个termio结构中填充由fd参照的终端信息的命令。虽然设备驱动程序是连接到内核上构成一个新的内核映象,但它并不是UNX内核所固有的。

    X窗口是一个软件系统用于向用户提供多窗口程序设计环境作为配置在包含图形设备驱动程序功能的UNIX内核上的一个GUI。图4中示出了X窗口系统的系统配置的梗概。X窗口系统是一个用于在一个屏幕上生成多窗口的GUI,并由一个服务员/顾客模型来表示。X窗口的要素是一个服务员程序(基本窗口系统),该程序与一个工作站交互作用,该工作站通常装备有一个屏幕,一个键盘,以及一个鼠标,该程序在屏幕上生成并显示窗口并且在窗口上形成图形图象,或者检测并处理来自键盘或鼠标的硬件H/W事件。一个顾客程序是指一个用户程序,X库,与窗口管理程序。即,一个顾客或用户进程可以依赖服务程序进行图形处理。在这一情况中,一个顾客可以不考虑图形设备的硬件特性而描述一个多窗口功能。服务员程序吸收了硬件特性。

    依靠X协议在顾客与服务员之间进行数据传送。服务员执行依赖于店主(比方OS与硬件)的操作,因此顾客可以不考虑硬件而编写程序,只要伙伴系统了解X协议就行。在宿主机1上的顾客经由一个网络使用X协议与宿主机O上的服务员进行通信以控制在宿主机O处的工作站。换言之,X窗口系统是网络透明的。在宿主机O上(远程)的服务员进程作为宿主机1(本地)上的顾客的代理人。如果一个目标顾客是在宿主机O上,则不必使用网络而经由其服务员进行通信。一个应用程序并不直接处理X协议,它只是调用一个库功能Xlib,而由该库功能再提供X协议。在宿主机O上的服务员能向宿主机O与宿主机1上的两个进程提供多任务服务。

    图5示出了X窗口的模块化结构。下面是一个例子,一个用户应用程序使用Xlib功能,以此一个顾客在屏幕上显示一个500×300的窗口W。

    XOpen  Display()(X打开显示器())是一个Xlib功能用于在网络系统内的用户进程与指定的服务员之间建立连系,XCreate  Simple  Wimdnw()(X建立单窗口())是一个Xlib功能用于在服务员的控制下在屏幕上生成一个500×300的窗口W,而XMap  Window()(X映射窗口())是一个Xlib功能用于生成在屏幕上显示生成的窗口的X协议及将该X协议提供给X服务员。

    服务员的结构

    服务员的主要任务是与顾客建立连系,以一种平衡的方式处理来自多个顾客的请求,以及将来自诸如显示器,鼠标与键盘这些硬件的一个事件分发给多个顾客。如图7所示,服务员是由四层构成,包括DIX(独立于设备的X),DDX(依赖于设备的X),OS,以及扩充功能(EXT:(Extension)。了解这些层对于说明本发明是重要的。

    DIX层:服务员所进行的一切操作都是首先以调用从DIX起的另一层上的一个功能开始执行的。根据被调用的功能,顾客请求被处理,输入事件被读取,并分发给顾客。DIX不依赖于机器,设备与OS,只是以X协议与一位顾客进行通信。一个用于调度事件进程的例行程序Dispatch()(调度())属于该DIX层。

    DDX层:这一层包括所有直接控制输入/输出设备的功能,并且是考虑设备与OS进行描述的,这一层由一个输入部分与一个输出部分构成。输入部分用于控制一台输入设备,诸如从硬件读入一个事件,调整鼠标运动的敏感性,生成键码的映射信息。输出部分用于控制一台输出设备,诸如生成/改变一个图形上下文(GC)各设备的这些功能是从DIX连同数据结构调用的。

    OS层:这一层为顾客连接,网络连接以及它们之间的通信执行一个读/写功能,以及执行一个将任何输入事件通知顾客的功能(这一功能有时以DDX执行)。这一层同时执行在顾客中平滑地控制分时的功能,用于访问一个字形文件的一个接口访问功能,以及一个低级存储器管理功能。

    EXT层:这一层用于扩充服务员功能及X协议。对于一般的服务员,这一层并不需要,而是用于具有特殊功能的显示设备的。

    如上所述,X窗口系统是配置在UNIX内核上的一个操作系统,用于向用户提供一个网络透明的多窗口环境。一位用户可以通过X协议访问多窗口功能以及上述UNIX的专有功能。X窗口系统是在图1中所示的实施例的宿主计算机中提供的,并且图形设备FLCD的硬件性质是在DDX与OS层中描述的。

    为了帮助了解系统操作,服务员的一个顾客用户程序示例性地给出在下面,它是用于在屏幕上鼠标的一个定位点上显示一个字符“X”。

    这一种序要求服务员以设置×SelectInput(×选择输入())来通知一个鼠标定位事件。一个×Next  Event()(×下一事件())读出一个H/W事件,而在定位时的鼠标位置坐标信息则描述在×Button  Event(×按纽事件)结构项e的x与y项中。×DrawString()(×画字符串())指令服务员在窗口中由×与y项指定的屏幕位置上画一个字苻×。服务员执行一次H/W事件检测并将一个通知告知顾客。顾客接受一条响应该H/W事件而生成的制图命令,并控制图形设备去画出该字符。如上所述,顾客用户程序是说明为独立于硬件设备及与该硬件设备相关的服务员接口而对顾客提供服务。

    调度

    服务员是对应于一个单一工作站(终端:屏幕,键盘,鼠标)提供的一个单一进程,用于控制该工作站。然而,服务员依然为多个进程,即,多个顾客提供服务。名词“进程”在这里用于表示一个程序运行的环境。一个进程由三个段构成,包括一个命令段,一个用户数据段,和一个系统数据段。一个程序用于初始化一个命令与用户数据。一个程序可以在时间上互相并行地被多个进程执行。一个多任务系统以分时方式并行地执行多个进程。这一多个进程的分时是由UNIX的内核执行的。服务员的调度确定一个生成的制图请求与一个诸如处理一个H/W事件的服务请求的处理次序。图10示出了根据本发明的一个实施例的一个队列系统,该队列系统服务于多个顾客。顾客们生成的制图命令按照生成的次序存储在为顾客提供的顾客队列101至103中。

    存储的命令从一个入口点104传送到一个服务员队列105。具体地说,来自多个顾客的命令形成一个单一的序列并输入到服务员队列105去进行顺序处理,就像是一个单一的任务那样。宿主处理器的服务员队到105中的一组特定的命令被传送给图形设备处理器的一个图形命令缓冲器106。将该命令组传送给图形设备处理器之后,宿主处理器令图形设备处理器去执行被传送的命令组而自己则去执行自己的另一进程。该命令组在图形命令缓冲器106展开成为图形设备处理器的命令并存储在Tail(尾)至Head-1(头-1)的区域中,如图10所示。图形设备处理器从Tail到Head顺序地执行这些命令。在逐个地执行命令的过程中Tail越来越靠近Head。当Tail=Head时,说明传送的命令组已经执行完了。然后,从服务员队列105向图形命令缓冲器106传送下一组命令。这一下一组命令存储在高于以前的Head的地址处。即,从下一命令组展开的命令的Tail成为前命令组的Head。图10中示意性地环形示出图形命令缓冲器106。请注意在图10中(a)处Head>Tail而在图10中(d)处Tail<Head。

    如图8A与8B所示,当出现诸如鼠标事件这样的H/W事件时一个图形图象不能实时地形成的原因是图形设备的处理速度没有产生制图命令的速度那样快,以致在出现一个事件时有许多尚未执行的命令积压在服务员队到105中。虽然服务员系统以高于其它进程的优先级检测一个H/W事件并通知出现该事件的顾客,但该顾客为-H/W事件所生成的制图命令则要等到这时候积压在服务员队列105中的命令执行完以后才能执行,因为服务员队列105只是以单任务方式顺序地执行命令。

    要求服务员服务的事件是由多个顾客进程或硬件设备异步地生成的。服务员的DIX的层中的例行程序Dispatch()(调度())调度这些事件并控制其进程流。明确地说,生成的事件是由DIX层的Dispatch()例行程序调度的。与事件相关的命令从顾客队列中传送到服务员队列中,使其能按照从DIX层调用的该例程序在服务员的控制下在图形设备上被执行。如果一个来自顾客的制图请求与一个H/W事件互相冲突,Dispatch()例行程序选择优先级高于制图请求的H/W事件,从而实现实时处理。

    图6为展示Dispatch()例行程序的调度的流程图。步骤1:检验是否有H/W事件(键盘、鼠标操作)。检验事件队列的头与尾指针。如果两个指针不同,则从事件队列中读取存储的事件。

    步骤2:如果H/W事件检验结果为YES(是),则为该事件执行的是一个字符显示或鼠标光标显示进程。服务员与顾客之间的数据传送是由OS层调用的WriteTo-Client()(向顾客写())执行的,将检测到的H/W事件通知顾客,并将顾客为该事件生成的制图命令存储在服务员队列中,此后结束该进程并返回至步骤1。

    步骤3:如果H/W事件检验为NO(否),则从OS层调用WaitForSomething()。WaitForSomething()的细节示出在图12中。这一功能。如明确地说明的,等待并监视一个事件。被等待的事件包括;

    *来自硬件,用户的事件

    *来自已经连接在服务员上的一个顾客的请求(制图命令),以及

    *将一个尚未连接的用户连接到一个指定的服务员的请求。

    当出现一个这种事件时,诸如事件的类型这种必要的信息被设置并送回给DIX层的Dispatch()。

    步骤4:如果生成的事件为来自一个已连接的顾客的一个请求,则从OS层调用ReadRequest-Client()(读取顾客请求())在顾客队列读取例如一条制图命令,并将其存储在服务员队列中返回到步骤1。

    步骤5:如果生成的事件是一个顾客到一个服务员的连接请求,用于建立连接的数据由OS层的WriteTo-Client()写入该顾客,此后返回至步骤1。

    DIX层的Dispatch()是一个向服务员调度服务请求的功能。用这一功能,流程跳转到一个对该服务类型所必须的一个例行程序进程,在该例行程进程中执行一个制图进程。这一调度以高于其它进程的优先级对待H/W事件。即,如果在事件队列中存储有一个事件,它被优先执行以实现实时处理。

    如前面所讨论的,只使用Dispatch()调度来优先调度存储在事件队列中的一个的问题,因为有可能在一个顾客的两个H/W事件会导致不能实时处理一个H/W事件之间存在着另一个顾客的一个尚未执行的制图命令,该命令是要求在图形设备上首先执行的。这种情况来自这样的事实;宿主服务员生成一条命令而处理该命令的图形设备则异步地操作。本发明以下述方式解决上述异步操作问题;服务员通过WaitFor-Something()监视图形设备的进程状态以控制事件处理调度。WaitForSomething()

    在说明WaitForSomething()例行程序以前,先参照图15A与15B对图形命令缓冲器106的Head,Tail及连接自由空间的概念进行说明。图15A与15B示出了在图形命令缓冲器内开展的命令数据的各种结构。从服务员队列105传送来的数据从Tail地址开始向Head地址顺序地写入图形命令缓冲器,并且由图形处理器从Tail地址向Head地址执行。每次在图形命令缓冲器106写入数据时更新Head地址,而当图形处理器执行数据时则更新Tail地址。图15A中(a)和(c)处所提示的结构代表Head地址大于Tail地址的情况。图15A中(b)与(d)所提示的结构代表Head地址等于Tail地址的情况。图15A中(e)所提示的结构代表Tail地址大于Head地址的情况。图15B示出了使用本发明的QSpace例行程序的Head地址,Tail地址以及连接自由空间大小的例子,QSpace()将在下面说明。

    根据本发明,示出在图12A中的DIX层的WaitForSomething()例行程序首先调用XQSpace()功能,这是将图11中示出的QSpace()功能发展到X窗口中得到的。QSpace()用于监视图形命令缓冲器106并接受Tail与Head地址来计算连接自由空间。为了监视图形设备的缓冲器状态,打开一条通道,通过它向OS层请求一次设备访问允许。紧接着监视以后,通道便被关闭。计算前/后的通道打开/关闭保证了多任务效率。当设备访问被允许时,该设备所占有的物理存储器空间被封锁以防止OS将它分配给另一程序。这形成这样的状态;一个多任务的虚拟存储器系统如同单任务系统那样为一个进程所占有。由于这一“封锁”状态取决于对设备处理能力的监视结果,一个要处理的新的请求被截止直到该封锁状态被释放为止即使图像处理器是忙着。在这一方式中,QSpace()按照处理能力实质上对图形处理器与OS进行了同步。在UNIX系统中这一封锁状态是要尽人量避免的,而其多任务状态则应尽快恢复。考虑到这一点。在紧接着计算以前才调用QSpace()并打开通道,存储器被封锁,而计算以后便关闭通道释放存储器。

    当一条通道被QSpace()打开时,图形命令缓冲器的Head与Tail地址被接收。如果Head>Tail,从(CMDBUFSIZE)-Head计算连接自由空间,而当Head<Tail时,它是以Tail-Head来计算的。QSpace()所接收与计算的数据送回给Wait-ForSomething()。

    在图12A中的步骤S2,检验是否Head≠Tail(即,在图形命令缓冲器中有未执行的命令)以及是否连接自由空间小于一个预定值PART-QUE(即,图形命令缓冲器中用于存储来自服务员队列的下一个命令组的自由空间是不够的)。如果是,则说明没有准备好接收和执行下一个命令组。这样,在步骤S3重新调用QSpace()来访问图形命令队列并接收Tail与Head地址。由于从前一次调用QSpace()以后命令执行进程前进了,所有命令都已执行完了,使得在步骤S4的检验提示Head=Tail从而进行到步骤S5。然而,如果还有一条命令尚未执行而在步骤S4的检验结果为否,则流程循环返回到步骤S3直到没有未被执行的命令存在,即,Head=Tail。如果在步骤S2的检验结果为否,即,如果在步骤S1QSpace所得到的数据指示Head=Tail或Head≠Tail,以及如果有一个足够的连接自由空间来存储下一命令组,则流程进行到步骤S5。

    在步骤S5,所监视的是在H/W事件队列与顾客队列上出现的一个服务请求事件(H/W事件,来自连接的顾客的制图请求,一个未连接顾客要求与服务员连接的请求)。如果在队列中存在一个事件,包含事件类型在内的信息被送至DIX层的Dispatch()进入图6中所示的流程图中的步骤S4。

    如上所述,在图形设备处理器能够执行下一个制图进程以前,是不允许在步骤S5开始以本发明的WaitFor-mething()监视一个服务请求事件的,从而,如果图形设备的制图进程的操作状态是不适当的,则来自顾客的一个制图请求被挂起不立即执行请求并将该制图命令存储在服务员队列中。在H/W事件优先调度中,如果一个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。

    图14示出根据本发明的调度的分层结构的概念。Dispa-tch存在于DIX层,这是服务员的最外层外壳,并直接与顾客及H/W设备通信进行调度,这种调度是独立于H/W设备与OS层并由Dispatch()调用用于处理一个依赖于OS的。WaitForSomething()存在于OS的服务请求。QSpace()存在于最内层的外壳并由WaitForSomething()调用,并直接访问图形设备对其进行监视。

    从服务员队列到图形命令队列的命令数据传送

    在服务员队列105中的命令数据是由在服务员一方(宿主机方)的一个宿主调度程序展开成一个基本图形功能的,并由-BeginComand()(开始命令())传送到在图形设备方(远程方)的图形命令缓冲器106(),在图形命令缓冲器106中展开的命令,由一在远程方的Get-Command()(取命令())读取并由一远程调度程序展开为对宿主调度程序的一个图形处理器功能以执行一个对VRAM预定制图进程。

    图16A至16C给出宿主方的BeginCommand()的概要,而图17A至17C则给出在进程方的Get-Command()的概要,其中主要示出了图形命令缓冲器106的通信与管理。图16中所示的变量X与Y及图17中所示的变量E与Y取任意值,而Head与Tail表示图形命令缓冲器106的一个命令数据存储区的头的尾地址。BetinCommand()对应于从宿主方服务员队列105送来的一个图形命令传送流程,而GetCommand()则对应于在进程方命令接收与执行流程。发送与接收双方都在发送/接收开始与结束时进行同步。进行这一同步是因为进程方是一个单一的处理器而多个独立的扫描(刷新)不能同时对显示设备进行。根据要从宿主方服务员队列105送出的一条图形命令,宿主调度程序送出基本图形功能组的一个特定单元给一个Put-Words()(放入字())功能。PutBlock()(放入块())功能的细节给出在图16B与图16C中。

    ButBlock()读取命令缓冲器106的当前Head与Tail值,将它们存储在变量X和Y中,并计算连接自由空间,将图形命令缓冲器106提交给一个特定的进程以后,数据便传送到那里。为了检验传送结束时间标记,Wait-ForSomething()功能等待来自进程方的一个接收结束通知。此后,设置图形命令缓冲器106的新的Head位置,然后等待下一次数据传送。所有数据传送以后,PutBlock()结束并且Putwords()与Begin-Command()也同样结束。

    以在进程方的GetCommand(),当命令的类型改变时,(单片命令(一个单个且简单的没有参数的命令)或者大块命令(具有多个参数的命令)如图17A所示,以不同的方式处理在缓冲器中一个数据区的捕获。在两种情况中,图17C所示的GetBlock()将来自宿主方的一个命令数据存储(接收)在命令缓冲器106中。此后,如图17B所示,使用命令队列105的Head与Tail值,读取并执行命令数据GetBlock()的内部操作示出在图17C中。首先检验Head与Tail的值是否不一样。如果,来自进程方的命令都已执行,则Head=Tail。此后,如果宿主方传送一条新命令,Head值被更新使Head≠Tail,如图16C所示。检验Head与Tail值是因为一种原因执行的,这便是除了在数据通信过程中以外宿主方与进程方进入一个互相独立与异步的操作,所以在数据接收时有必要检验宿现方的状态。

    根据读入的Head与Tail值计算数据大小,执行一个包卷(wrap)进程来接收来自宿主方的数据,更新Tail并将这一结果通知宿主方。这一信息用于在宿主方向进程方传送一个命令数据时差额进程方的繁忙状态。当接收到来自进程方的应答时,判定远程方是在一个空闲状态中,然后传送开始。

    在上述方式中,“Head”由宿主方BeginCommand更新,而“Tail”则由远程方GegCommand更新,这样宿主与进程方基本上实行异步执行,而在它们之间传送数据时进行同步。

    图9A与9B示出根据本发明的实施例的一个显示器状态的例子。图9A示出了与图8A中所示相似的三个窗口。图9B的左侧示出宿主方生成的一序列制图命令,而右侧则示出这些生成的命令的一序列执行。需要注意的是,画一个鼠标光标形状的命令并不是按照命令生成的次序执行的。虽然带有钭钱的命令已经在第二个鼠标光标形状(font)的制图命令之前存在在顾客队列中,根据本发明,在出现第二个鼠标事件之前,包含QSpace()的WaitForSome()例行程序并不对这些命令执行调度而不把它们送到服务员队列中。鼠标事件作为一个H/W事件是比存储在顾客队列中兄其它请求优先执行和调度的,并且鼠标事件的制图命令被送至服务队列并加以执行。

    另一实施例

    在上述实施例中,已经说明了把主要注意力集中在H/W事件上的相对一服务员队列的顾客调度的一个例子。很明显,顾客队列本身也可以根据QSpace()进行调度,即,根据图形方的执行状态。例如,图6所示步骤S2处的流程可以由在WriteToClient事件功能的进程之前或之后调用QSpace()来改动来监视远程方的缓冲器的执行状态。这一改动可以在图6中另一步骤中执行。在哪一步骤调用QSpace()以及执行哪一进程,取决于相关的系统。

    此外,本发明并不局限于图形命令缓冲器106的结构以及在远程方它的管理方法。而且,本发明适用于这样的配置,只要求它能获得能够监视图形设备方的执行状态的信息。例如,可以给出另一种方法,为每一条命令提供一个可选择长度的缓冲器而不是一个定长的缓冲器,给每一条命令分配一个编号而不是用Head与Ttil来管理它,并根据这一编号来对执行状态进行管理。图19示出了一个具有四个指向命令存储区的指针的缓冲器。指针空间#1至#4存储了三条不同的命令(操作码)以及执行它们所必需的数据,存储区及其大小存储在空间#1至#3中,假定在执行进行中,空间#1中的命令已经被执行而现在正在执行空间#2中的命令。在这一情况中,QSpace()监视编号#和大小,如图20所示使用QSpace()功能的WaitForSomething()(对于X窗口为XQSpace())示出在图21中。从QSpace()功能的循环中退出的条件取决于编号#与大小而不是Head与Tail值,基本算法与效果是与第一个措述的实施一样的。

带显示设备的数据处理装置.pdf_第1页
第1页 / 共62页
带显示设备的数据处理装置.pdf_第2页
第2页 / 共62页
带显示设备的数据处理装置.pdf_第3页
第3页 / 共62页
点击查看更多>>
资源描述

《带显示设备的数据处理装置.pdf》由会员分享,可在线阅读,更多相关《带显示设备的数据处理装置.pdf(62页珍藏版)》请在专利查询网上搜索。

在一种数据处理装置上包括一台宿主处理器包含用一种分时方式的一个多任务单元,以及一个调度单元用于向一台图形设备调度来自多个用户进程的制图请求并且形成一个与各制图请求关联的各个命令的单一序列,一个调度单元监视在图形设备处理器上制图命令的执行状态,并保留来自用户进程的制图请求的调度直到执行状态前进到一个预定阶段。 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1