在虚拟终端环境下允许使用单个操作的机构的制作方法

文档序号:6406208阅读:216来源:国知局
专利名称:在虚拟终端环境下允许使用单个操作的机构的制作方法
技术领域
本发明一般涉及的是虚拟终端的环境,其中,许多的程序应用可以同时运行,且这些应用中的每一个至少有一个与此相关的虚拟终端。此外,提供了许多的硬件显示设备,並且至少一个程序应用可以直接写到至少二个硬件显示设备中。
通常,在虚拟终端环境中,在改变用户的活动中心之前或者从第一个应用提交给下一个顺序连接应用前,需要系统的用户执行几次“热键”操作。该无效的多次热键操作是由于以下的事实引起的单次热键操作只是将活动中心在虚拟终端之间移动,而不是在应用之间移动。由于多个虚拟终端可以和单个程序应用有关,因此在将活动中心实际移动至下一个应用前,可能使用户执行几个热键序列操作。这种过分的热键操作除了会产生由这种类型的以前技术系统的用户所遇到的挫折外,还会产生时间和资源方面的低效的问题。
与以前的技术相比,本发明只需经过一次热键操作即可,使计算机系统的用户将活动中心或热键从一个程序应用移动到下一个接连的应用。
概括地说,本发明的操作是在虚拟终端环境中进行的,其中至少要提供二个程序应用。並且也包括了许多硬件显示设备和虚拟终端。
在单个程序应用可以打开一个以上的虚拟终端(即多进程应用)的情况下,该应用指定了除了一个以外的全部虚拟终端为“不参与”任意的热键操作的虚拟终端。因此,当用户希望将活动中心从一个程序应用移动到下一个程序应用时,一个单一的热键操作就可以完成该任务。例如,假设一个用户通过第一个已被激活的虚拟终端正在与第一个多进程程序应用相会话的话,也假设该第一个应用已经打开许多虚拟终端的话,在一次热键操作之后,以前技术的虚拟终端子系统使第一个虚拟终端去除激活並且着手进行使下一个虚拟终端激活的工作。然而,下一个虚拟终端可能是由第一个应用已经打开的那个虚拟终端。因此,该用户只是在第一个应用的虚拟终端之间进行热键操作而不是在第一个和下一个接连的程序应用之间进行热键操作。比较起来,本发明将指定与每个程序应用有关的许多虚拟终端中的一个以外的其它全部虚拟终端为不参与热键操作的虚拟终端。因而,系统将忽略所有不参与的虚拟终端並激活那个还没有被指定为不参与的下一个虚拟终端。由于对于每个应用只有一个虚拟终端没有被指定为不参与热键操作的虚拟终端,因此,每个热键操作将其活动中心从第一个程序应用移动到下一个应用中,而不仅仅是在可能与同一的程序应用有关的虚拟终端之间移动其活动中心。
因此,按照前面的要点及从下面的描述和所附的权利要求连同附图一起,对于一个技术上熟练的人而言,本发明的目的、特点和优点将是明显的。


图1为描述本发明的处理系统内部的层次的框图;
图1A为本发明的虚拟终端子系统的部件的另一框图;
图2为用于系统中处理文本方式的信息流程图;
图3为本发明在监控方式下用于写到硬件显示设备所用的数据流程图;
图4-9为描述本发明所使用的过程的程序框图,以便使程序应能具有与实际设备不同的特性。而且,使用虚拟终端时所写的程序可以独立于专门的实际的终端设备,即独立于显示缓冲器的组织,任选的输入设备的存在等。此外,对于处理实际资源的限制方面,虚拟终端解除了程序员的开发适应个别需要的过程。
尽管本发明的范围打算使用其它的虚拟终端模型,但是典型的虚拟终端模型可以使用电传打字机,如键盘的发送/接收(KSR)电传打字机。例如,可以使用的一种方式或终端模型支持虚机环境的UNIX操作系统的终端需求。UNIX操作系统需要阴极射线管的电传打字机的仿真,例如数字设备公司(DEC)的VT100或者为最初的KSR电传打字机增强型的IBM3101。
KSR终端方式是以使用PC ASCII代码集而不是ANSI3.4/3.41代码集的A NSI3.64标准精神进行的ASCII终端仿真。ANSI3.64数据流是扩展的,正如该标准所指定的那样,以便支持增强的声音生成能力,处理定位器过程的流动並提供转换物理显示、字模和终端特性的各种控制。
每个虚拟终端具体化了单个KSR终端的特点。即,虚拟终端识别並处理所接收的数据流,该数据流导致请求要发生的动作。这些动作包括移动光标,或在虚拟显示上画字符,插入或删除行,清屏或修改重发字符的属性。除了这些动作以外,出界的数据流可以导致产生连续音调的声音序列,或者导致在任意可以用的物理显示设备42上的重发虚拟显示。
虚拟终端从虚拟键盘和/或虚拟定位器中接收输入信息,並且将数据输出到虚拟显示上。因此,虚拟终端总是可以期望它从它的虚拟输入设备中接收输入信息並且总是可以输出到它的虚拟显示上。这些用在虚拟终端环境下直接存取硬件显示设备;
图10为描绘本发明的虚拟终端环境下的不同的部件及它们相互间关系的实例的框图;
图11给出了图10所描述的本发明操作的具体实例的每个程序应用的状态信息图;
图12A,12B和12C为每个程序应用的初始化过程的流程图;
图13为描述SIGGRANT处理所需步骤的流程图;
图14为应用程序接收SIGRETRACT时所需的处理步骤的流程图。
图1说明了虚拟终端处理系统的层次。应用50运行在操作系统10上,如UNIX操作系统(UNIX是AT&T公司的注册商标)或类似的操作系统。下一层为管理所有显示硬件输入/输出设备40的虚拟终端子系统30。这些硬件设备40包括,当然並不局限于,输入设备41(如键盘、鼠标器、图形输入板)和输出设备42(如声音设备和显示)。
在虚拟终端处理系统中,驱动用户接口的用户按照该用户的命令来进行活动间的转换。该处理系统虚拟化了资源的使用,以致于对于用户的活动而言,将整个资源给于一个应用50。这是在虚拟终端子系统30中实现的。虚拟终端子系统30提供了虚拟终端环境中的终端支持。
用应50可以打开如同想使用的实际的硬件显示设备42数那么多的虚拟终端。虚拟终端给应用50这样的印象,即显示设备42比实际存在的要多,输入设备41要比实际存在的多,並且这些设备可虚拟设备可以具有或没有分配给它们的物理设备。因而,虚拟终端实际上可以不接收输入或写到物理显示设备42上。当每个虚拟终端识别和处理从键盘来的入站的数据流时,如果请求的话,它可以自动地将不同的字符和简单的功能返回到它的虚拟显示上。该操作使运行中的应用50就象它正在使用实际的终端硬件设备40一样。因此,大多数已经存在的应用50不需修改就可运行在虚拟终端环境中,因为应用50並不知道虚拟终端不是物理终端42。
图1A描述了虚拟终端子系统30的组成部分,它包括资源控制程序310,屏幕管理程序320,键盘设备驱动程序410,定位器设备驱动程序420,声音设备驱动程序430,显示设备驱动程序440,和多个虚拟终端330等。
资源控制程序310初始化並结束虚拟终端子系统30,它也可以让操作系统10和应用程序50查询和修改交互式的设备,即用户可以得到的物理终端的配置和特性。此外,当资源控制程序310打开和关闭虚拟终端时,即建立和破坏虚拟终端时,它将分配和撤消分配虚拟终端操作所需的系统资源。
屏幕管理程序320执行对虚拟终端所用的虚拟设备的物理设备的分配。屏幕管理程序320连同键盘和定位器设备驱动程序410,420一起实现虚拟化这些输入设备所需的时间和空间的共享。在给定的时间内,将物理显示设备42分配给由虚拟终端所用的一个並且只能为一个虚拟显示上。
屏幕管理程序320也对激活的虚拟终端的虚拟设备进行所有的物理设备40的分配。激活的虚拟终端是提供给用户交互作用的终端。激活的虚拟终端实际可以从设备41接收输入信息,並且可以在物理显示设备42上产生输出。此外,屏幕管理程序320还提供了对物理资源40的重分配。对于物理设备40重新分配的激发的结果可以从用户请求或应用50的请求得到。用户请求是通过物理输入设备41来实现的,例如通过分配给屏幕管理程序320的逻辑键盘或类似的逻辑鼠标器来实现的。物理资源40的重新分配包括除去现行激活的虚拟终端的资源並且对新激活的虚拟终端分配资源。这种资源的重新分配需要去除激活和激活终端这两者的协作。正如前面指出的那样,分配物理设备40需要设备驱动程序的参加,于是保证了信号的同步,如击键和工作请求的应答信号的同步。
虚拟终端子系统30的另一组成部分为键盘设备驱动程序410,它按照从屏幕管理程序320接收的指令将输入信号从物理键盘41送到虚拟终端上。虚拟终端子系统30的任选的部件为定位器设备驱动程序420和声音设备驱动程序430。定位器设备驱动程序420和声音设备驱动程序430。定位器设备驱动程序420根据从屏幕管理程序320所接收的指令将输入信号从物理定位器41送到虚拟终端上。声音设备驱动程序430可以将音频输出信号从子系统30送到物理设备42上。在虚拟终端管理程序中也包括了大量的服务于从显示适配器所接收的中断的显示设备驱动程序440。
虚拟终端子系统可以提供任意多数量的虚拟终端。实际的虚拟终端的最大数量因实现方法而异並且将由系统资源使用的考虑来加以限制。每个虚拟终端包括虚拟终端方式处理器340。虚拟终端方式处理器340提供像KSR的虚拟终端操作。每个虚拟终端也包括虚拟显示设备驱动程序350。虚拟显示驱动程序350接收所有虚拟终端方式处理器340的输出,並将它们写到虚拟显示上,然而再虚拟化该显示。每个虚拟终端也包括一个公共设备实用例行程序,通过该例行程序,虚拟终端方式处理器340可以将它的资源请求与资源控制器310相通信。
资源控制器310执行虚拟终端子系统30的初始化。首先,资源控制器必须接收包括在系统中的物理设备40(显示、键盘等)的列表。资源控制器310也必须接收用于区分各种其它的子系统部件如字模和虚拟终端缺省值等的标识符。初始化需要1)检查上述初始化信息的完整性和正确性,2)初始化物理输入设备41,3)处理所提供的字模,4)建立屏幕管理程序320,5)建立与屏幕管理程序320通信所必需的通路,6)建立允许屏幕管理程序320与输入/输出设备40通信所必需的通路,和7)初始化部件之间共享的总的数据结构。
资源控制器310以下述方式初始化子系统30。下面的例行程序是用程序设计语言编写的,从这种语言中可以推导出源代码和机器代码。
INITIALIZE GLOBAL DATA STRUCTUREIF THE INITIALIZATION INFORMATION NOTCOMPLETE AND CORRECTTHENPRESENT ERROR INDICATIONELSECALL INIT_DEVICESCALL CREATE_SM
PRESENT SUCCESS INDICATIONPREPARE TO SERVICE RESOURCE COMMANDS FROMTHE OPERATING SYSTEM例行程序INIT_DEVICES初始化系统中多种不同的设备驱动程序並将必要的信息放到总的数据结构中以供不同部件使用。它也可以得到在初始化参数中用于标识字模的系统所必需的信息。该例行程序也建立了从设备40到资源控制器310(RC),键盘与定位器设备驱动程序410与420,和操作系统10之间的通信通路。
VIRTUAL TERMINAL OPEN初始化之后,资源控制器310已准备就绪来接收资源请求。当操作系统10接收请求去打开(建立)虚拟终端时,资源控制器310将采取下列步骤1)初始化与虚拟终端有关的总的数据,2)在虚拟终端方式处理器340上执行必要的操作以保证虚拟终端处理功能的正确性,3)建立虚拟终端方式处理器340与所用的设备驱动程序之间的双向通信通路,4)对虚拟终端分配一个外部的标识符,和5)初始化虚拟终端。
在初始化之后,资源控制器310通过实现下述例行程序来打开虚拟终端,正如上面所指出的那样。
IF MAXIMUM NUMBER OF VIRTUAL TERMINALS OPENTHENINDICATE NO SUCCESSELSECREATE_VT
CREATE_PATHSINITIALIZE THE VIRTUAL TERMINALTELL_SM(OPEN)INDICATE_SUCCESS例行程序CREATE_VT将代码复制给虚拟终端方式处理器340(VTMP),它允许每个虚拟终端具有它自己的数据和堆栈空间。
例行程序CREATE_PATHS建立虚拟终端与现在的设备驱动程序及请求打开虚拟终端的相应的操作系统10之间的双向通信通路。该例行程序也建立了从屏幕管理程序320至虚拟终端的通信通路。CREATE_VT和CREATE_PATHS这二者都将信息保存在总的结构中。
例行程序TELL_SM通知屏幕管理程序320新的虚拟终端已经被打开。该例行程序发送新的虚拟终端的名字(标识符)(和将索引送到总的数据结构中)以致屏幕管理程序320可以得到所需的信息。屏幕管理程序320再进而使虚拟终端激活(见下文)。例行程序TELL_SM在使资源控制器310(RC)继续进行之前,TELL_SM等待屏幕管理程序320完成它的操作。
虚拟终端方式处理器340通过执行下列例行程序必须完成虚拟终端的初始化。
QUERY_DEVICESSELECT_DISPLAYSELECT_INPUT例行程序QUERY_DEVICES将分配给可以获得的设备的标识符返回给这些设备。例行程序SELECT_DISPLAY使虚拟终端方式处理器340去选择哪一个可以获得的显示设备去使用。SELECT_DISPLAY功能对所选择的显示设备建立通路以便让虚拟终端方式处理器340与虚拟显示驱动程序350进行通信。这样使虚拟终端使用独立于其它虚拟终端的它的虚拟显示设备。然后,当虚拟终端激活以后,虚拟终端可以开始与用户交互工作。
例行程序SELECT_INPUT使虚拟终端方式处理器340通过相应的设备驱动程序410,420来选择接收或不接收从键盘和/或定位器来的输入信号。
此时,操作系统10能与虚拟终端通信。操作系统10也能向屏幕管理程序320发出关于虚拟终端的屏幕管理命令,如果它们之间提供了通信通路的话。
VIRTUAL TERMINAL CLOSE为了关闭通过上述步骤已经打开的虚拟终端,操作系统10或者虚拟终端可以发出关闭请求。资源控制器310接收该命令並执行下列操作TELL_SM(CLOSE)RECOVER_RESOURCESINDICATE_COMPLETION例行程序TELL_SM向屏幕管理程序320发出一个命令以区分(通过内部标识符)要关闭的虚拟终端。该例行程序在处理以前要等待屏幕管理程序完成它的工作(见下文)。例行程序RECOVER_RESOURCES恢复正在被关闭的虚拟终端的所有资源(存贮器、控制块等)並且从总的数据结构中将该虚拟终端除去。例行程序INDICATE_COMPLETION通知请求者关闭操作已经完成。
正如上面所指出的,当资源控制器310等待时屏幕管理程序320执行下列操作COMMAND_MP(CLOSE)NEW_VT_ACTIVEACK_RC例行程序COMMAND_MP通过它们之间的通信通路向虚拟终端发出关闭命令並等待虚拟终端方式处理器340的响应。例行程序NEW_VT_ACTIVE使另一虚拟终端激活,即向新激活的虚拟终端分配物理的输入与输出设备40(见下文)。例行程序ACK_RC与资源控制器310通信,它使RC310继续它的关闭处理工作。
虚拟终端方式处理器340接收关闭命令(以前由例行程序COMMAND_MP发送的)並且执行下列操作。
RELEASE_DISPLAYACK_SMRELEASE_DISPLAY例行程序向虚拟显示驱动程序350(VDD)指出,它的资源可以被释放了。ACK_SM例行程序使屏幕管理程序320继续它的关闭处理。
VIRTUAL TERMINAL ACTIVATION/DEACTIVATION由于打开或关闭的命令,或者由于用户已经请求使另一虚拟终端激活,就可以发生使虚拟终端激活的操作。它需要屏幕管理程序320,对于现行激活的虚拟终端的虚拟终端方式处理器340,要被激活的虚拟终端的虚拟终端方式处理器340和输入设备驱动程序的协作。屏幕管理程序320执行下述操作
FIND_VTCOMMAND_KDD(NEW_VT)COMMAND_LDD(NEW_VT)COMMAND_VT(DEACTIVATE)COMMAND_VT(ACTIVATE)UPDATE_DATA(NEW_VT)例行程序FIND_VT决定了哪一个虚拟终端应该被激活。该结果取决于与屏幕管理有关的预则和实际所接收的命令。
例行程序COMMAND-KDD向区分虚拟终端的键盘设备驱动程序410发送命令以便接收物理键盘41的输入信号。例行程序COMMAND_LDD向区分虚拟终端的定位器设备驱动程序420发送命令以便接收物理定位器42的输入信号。这两个例行程序在继续它们的例程操作之前要等待设备驱动程序410、420完成它们的操作。然后这些设备驱动程序执行如下所述的相同的操作。
具有去除激活任选项的例行程序COMMAND_VT使现行激活的虚拟终端去执行实现去除激活虚拟终端所必须的诸如此类的操作(见下文)。具有激活任选项的例行程序COMMAND_VT使新的激活的虚拟终端去执行实现激活虚拟终端所必须的诸如此类的操作(见下文)。
例行程序UPDATE_DATA管理屏幕管理程序320的内部数据结构,以致于屏幕管理程序320可以知道哪一个虚拟终端是激活的。
键盘设备驱动程序410与/或定位器设备驱动程序420执行下列操作
SET_NEW_PATH_MODESSEND_STATUSACK_SM例行程序SET_NEW_PATH_MODES将用于对新激活的虚拟终端的通信通路的标识符放到内部的结构中。该例行程序也对该虚拟终端设置正确的设备操作方式。例行程序SEND_STATUS告诉虚拟终端关于物理设备40的现行状态,即当虚拟终端激活以后,已经按了什么样的有关的键(或按钮)。例行程序ACK_SM让屏幕管理程序320以同步的方式继续它的处理。
正在被去除激活的虚拟终端的虚拟终端方式处理器340执行下列操作DEACTIVATE_VDDNO_SOUND例行程序DEACTIVATE_VDD告诉虚拟显示驱动程序350,正在被去除激活的虚拟终端不能将信息写到物理显示设备42中,但是代之以必须缓存所有该虚拟终端的输出。例行程序NO_SOUND为虚拟终端方式处理器340设置内部标志,以致于由程序应用50对声音的请求不输出到声音设备驱动程序430(SDD)中。
将成为激活的虚拟终端的虚拟终端方式处理器340执行下列操作ACTIVATE_VDDSOUND_OK例行程序ACTIVATE_VDD告诉虚拟显示驱动程序350,正在被激活的虚拟终端可以将信息写到物理显示设备42上。然而,虚拟显示驱动程序350首先将它的不激活期间已经被维护的缓冲器的数据送到显示设备42上。因而,用户看到的是从应用50中可以得到的最现行的信息。例行程序SOUND_OK为虚拟终端方式处理器340设置内部标志,以致于将程序应用50对声音的请求发送到声音设备驱动程序430中。此时,用户可以和新激活的虚拟终端交互工作。
虚拟终端从操作系统10中以已经送到物理显示终端42的输出格式进行输入並虚拟化这个输出,使应用50相信实际的物理终端是存在的。如果虚拟终端现行是激活的话,(即与用户正在交互工作的终端),然后将操作所需的所有的物理资源40提供给虚拟终端。虚拟终端从定位器设备驱动程序420和键盘设备驱动程序410中取得输入信息。因而,将设备驱动程序410、420中的输入信息送到现行激活的虚拟终端中。任意的生成的声音将送到声音设备驱动程序430,而任意的生成的显示将送到显示驱动程序440中,以便于在物理显示设备42的实际屏幕上显示给用户。
其它的可能打开的虚拟终端,但现在没有激活的可以接收程序应用50的输出。当这些没有激活的虚拟终端正在接收该输出时,它们是不知道它们是否激活或者没有激活。因而,当没有激活的虚拟终端接收输出请求去显示数据时,它们不是将该请求发送到设备驱动程序440中,而是将它虚拟化输出到虚拟设备驱动程序的缓冲器中。
这种设备驱动程序缓冲器是存贮器(RAM)的一部分,它保持了虚拟显示6的现行状态。在一定时间之后的给定的点上,虚拟终端的虚拟设备驱动程序缓冲器包含的是送到那个虚拟终端的所有输出请求的屏幕画面的累加的现状。如果该虚拟终端是由用户激活的话,则虚拟设备驱动程序缓冲器的内容将在实际的显示屏幕上显示。
在将实的物理显示资源42给某个特定的虚拟终端时,虚拟终端必须将在虚拟设备驱动程序缓冲器中的累加数据转换为物理显示设备的命令。这使用户能看到信息的现行抽点情况。换言之,当迫使虚拟终端撤回其物理显示资源42时,其概念上是类似于用户让他的头离开物理终端一段时间。当用户将他的头转回来看物理终端时,看到的是那一点时间的整个累计的显示信息。
重要的是,即使当没有实设备分配给它时,设备驱动程序缓冲器仍需更新。在虚拟终端子系统30的显示设备驱动程序440部分中以设备依赖的形式来维护这些虚拟化的设备驱动程序缓冲器。
屏幕管理程序320以下列方式与用户交互作用。由于存在一个终端环,因此每次虚拟终端打开时,就将它放在这个环中。当用户寻找与某个特定的虚拟终端会话时,用户可以在键盘上(输入设备41)执行一定的键的序列。键盘设备驱动程序410将该键的序列发送给屏幕管理程序320。然后,通过检查环的结构,屏幕管理程序320决定虚拟终端中的哪一个现在可以给用户使用並将它激活。照这样,用户可在任意给定的时间内选择与哪个应用的哪个操作会话。
在修改虚拟终端操作状态中所包括的操作要调用屏幕管理程序320,设备驱动程序410,420,430,440及虚拟终端。当屏幕管理程序320通知新的终端要激活时,屏幕管理程序320将新的路由信息发送给输入设备驱动程序410,420。键盘或定位器设备驱动程序410、420接收这个信息並决定必需修改输入信号的路由,使新的激活的虚拟终端可以接收这些输入信号。
处理输出设备的方式有一点点不同。屏幕管理程序320通知现行激活的虚拟终端,它将要被除去激活。就声音设备驱动程序430而说,虚拟终端本身对决定可以将没有声音的请求发送至声音设备驱动程序430负责,而声音设备驱动程序430则产生用户听得见的声音。
对于虚拟显示驱动程序350而言,为了去除激活虚拟终端要实行不同的机构。既然是这样,虚拟显示驱动程序350以一系列例行程序送给激活的虚拟终端,激活的虚拟终端可以调用该例行程序,以便在物理显示设备42上产生输出。当使虚拟终端不激活时,则要调用虚拟显示驱动程序350的例行程序,它表明了该虚拟终端是不激活的。因而,当应用50试图通过它的虚拟终端,输出到物理显示设备42时,虚拟显示驱动程序350将要送到物理设备42的任意信息放到虚拟设备驱动程序缓冲器。这使正在使用虚拟终端的应用50可以和虚拟终端通信,就象它仍然是激活的。将要成为激活的虚拟终端调用虚拟显示驱动程序350的例行程序,而该驱动程序350指出虚拟终端是激活的。虚拟终端现在可以用它不激活时的相同方式来使用它的虚拟显示驱动程序350,但是它的虚拟显示驱动程序350现在可以真正写到显示适配器硬件42上。
因此,使用虚拟终端的应用50不需要知道虚拟终端是激活的还是不激活的。它可以在任意时候与有关的虚拟终端通信並且当虚拟终端激活时,对它的虚拟显示所做的任意修改对用户而言是看得见的。应用50的操作是独立于它的有关的虚拟终端的激活或不激活状态的。
由程序应用50进行的显示硬件42的直接存取是本发明的另一方面,对它的理解是本发明的关键部分。
再来参考图1,它给出了数据处理系统环境中的各种层次,並且包括了所有前面已经讨论的部件。在图1的数据处理系统中,虚拟终端子系统30能够以两种不同的方式操作。一种方式为KSR方式,而第二种为监控方式。正如前面所述的,KSR方式主要用于在显示设备42上显示文本,並且不能用于高性能的图形应用。另外,KSR是非常慢的接口,因为到KSR虚拟终端的命令是起源于应用程序50並且在任意数据输出到显示设备42以前,是通过数据处理系统的每一层次加以处理的,如图1所示。
监控方式支持应用50,应用50可以直接与包含在显示设备42中的硬件刷新缓冲器会话,而不管它们是以字符方式还是以所有点可寻址(APA)的布置方式,均可直接会话。因而,就旁路了虚拟终端子系统30並且数据可直接输出到显示设备42中。
在监控方式中,输入设备有其经过虚拟终端子系统30到应用50的输入信号。使用监控方式的应用具有在应用程序50的存贮器空间中定义循环缓冲器15(图1)的任选项。虚拟终端子系统30从输入设备41中接收中断,並且直接将数据存贮在输入缓冲器15中,虚拟终端子系统30对应用50並不产生与发出中断信号,除非是数据第一次存到循环缓冲器15中。
如果应用50不选择定义循环缓冲器15,则虚拟终端子系统30从输入设备41中接收中断並使用中断通路来发送数据。该中断通路需要排队接口管理,而接口管理包括通信系统的不同层次之间的通信,如操作系统10与虚拟终端子系统30之间的通信。因而,由于操作系统10和虚拟终端子系统30的存在,应用50须经排队的额外的层次。
因此,如果应用50定义了循环缓冲器15,则上述排队的开销是可以去消的。用这种方式,应用程序50可以获得快得多的键盘、鼠标器或图形输入板的输入。在这种数据处理系统中,关于处理输入设备41的输入的关键部份是取决于应用50定义由应用50和虚拟终端子系统30管理的循环输入缓冲器15的能力。
循环缓冲器15的结构需要一个位于该缓冲器开始32字节处的状态区域。该状态区域有一个对于虚拟终端子系统30的偏移指针和一个对于应用程序50的偏移指针。这些偏移指针是用于将数据放到缓冲器15中和从中移动数据的。缓冲器15包括一个可变大小的缓冲器环,它至少要有34字节,並且最好不大于64,000字节。缓冲器环是在系统进入到监控方式之后定义的,並且将在下面更详细地加以讨论。
前面的讨论已经定义了输入通路,即输入设备41是如何得到到达应用程序50的路由的。即,将输入设备41得到的数据,如击键或在显示屏上移动定位器(鼠标器),输入到虚拟终端子系统30。而虚拟终端子系统30将该数据存到循环缓冲器15的缓冲器环中。一当该数据放到缓冲器环中,应用50就可以在任何时候移动这些数据。
在监控方式期间,当应用50正在显示设备42上画图时,数据是直接从相应的应用50发送到显示42上的。虚拟终端子系统30並不知道这种直接的数据传送。当使用没有通信通路的虚拟终端子系统30时,系统性能将得到增强,因为这旁路了虚拟终端子系统30中的许多通信层次。
图2和图3最清楚地描述了KSR和监控方式的不同处。图2示出了在KSR方式或非监控方式时输入命令在被显示以前必须采取的通路。首先,从输入设备41中接收数据,並且通过虚拟终端子系统30发送到操作系统10中。应用50存取操作系统10中的输入数据,並决定相应的输出。然而,操作系统10产生要在输出显示设备42上显示的命令並将该命令发送到虚拟终端子系统30中。然后通过虚拟终端子系统30处理对显示42的命令並输出到输出设备42中。
相反,图3示出了在监控方式时对显示设备42的命令所采取的通路。虚拟终端子系统30接收输入设备41的数据並将数据存到输入缓冲器15中。一当数据在输入缓冲器15中时,应用50可在任意时候存取该数据,並且虚拟终端子系统30不知道该数据正在被存取。接着,应用50直接将输入缓冲器15的数据发送到输出显示42中。
在监控方式下虚拟终端子系统30被旁路了,因而它不知道应用50和输出设备42之间所发生的事情。因此,使用这种方式的应用50必须通过维护它们自己的数据表示和使虚拟终端之间容易转变的办法来实际参与。
使用监控方式的应用50也响应所有输入数据的跟踪(键盘、鼠标器、图形输入板、发亮的程序功能键和拨号盘等)。这些应用50可以指定最适合于它们处理要求的键盘输入数据的格式规程。可以设置该规程的方式使键入的数据转换为ASCII字符、控制序列或者返回键的位置、状态和扫描代码。应用50也响应返回键盘和定位器的输入。
通常,监控方式将给予应用50下述的灵活性控制显示硬件42,在虚拟终端子系统30和应用50之间优化数据的传送和通过在应用50和显示设备42之间除去几个层次的软件的方法有效地改进系统性能。当然,为了实现这种灵活性,通过增加涉及虚拟终端子系统30和显示设备42的层次必须使应用在显示活动的管理方面采取更积极的作用。
图4-9描述了应用50的KSR和监控方式的操作。尽管可以使用任意的操作系统10,但是关于UNIX类型操作系统或类似UNIX操作系统描述了该操作。
图4给出了应用50在监控方式下打开新的虚拟终端所需的步骤。它也描述了在这些步骤期间应用50,操作系统10和虚拟终端子系统30之间的通信会话。
应用50初始化的第一个动作是打开如第51步(图4)所示的专门文件。假设,应用50选择在监控方式下运行,它必须请求访问显示硬件(第52步)。接着,应用50必须使能为虚拟终端子系统30所接收的监控方式(MOM)信号,第53步。然后,在第54步,如果KSR是初始的方式的话,以应用50到虚拟终端子系统30的PROTOCOL MODE(规程方式)命令将KSR方式修改成监控方式。第55步是从应用50发送到虚拟终端子系统30的屏幕请求命令,並且为了定义使用在监控方式下的输入缓冲器15,让应用50存取显示设备42。
这个屏幕请求命令55和前面的规程命令54将虚拟终端放在监控方式中,而且也给应用50一个机会去定义或不定义在输入缓冲器15中的一个缓冲器环。不管定义缓冲器环与否,必须将屏幕请求第55步发送到虚拟终端子系统30。在虚拟终端处于监控方式时,应用50将从虚拟终端子系统30中接收授予中断(SIGGRANT)12信号。它通知应用50,它已经完成了对与虚拟终端有关的显示适配器硬件42的控制。从这一点看,应用50可以显示在物理输出显示设备42的显示上所选择的任何的东西。
图5描述了在监控方式下打开新的终端並且在同一终端上再返回到KSR方式的步骤。图5所示的步骤包括图4的所有信号序列,即打开专门的文件51,请求存取显示硬件,第52步,使能监控方式信号53,发送规程方式,第54步以便将虚拟终端置于监控方式和请求屏幕55。在应用50接收了SIGGRANT12信号之后,该虚拟终端处于监控方式。如果应用希望将虚拟终端置于KSR方式下,应用必须向虚拟终端子系统30发送叫做屏幕释放应答的命令(SCREEN RELEASE ACK),第56步。第56步使虚拟终端准备就绪去停止监控方式操作。然后,应用50必须向虚拟终端子系统30发送规程方式请求,第57步,它将虚拟终端从监控方式改为KSR方式。
图6描述了在监控方式下打开一个新的虚拟终端,然后再关闭该虚拟终端的情况。再次,该信号的序列是与图4所示相同的。在应用50接收了信号授与12之后,虚拟终端处于监控方式。此时,如应用50选择关闭该虚拟终端,它可能这样做向虚拟终端子系统30发送关闭虚拟终端命令(CLOSE VT),第58步。这样从虚拟终端子系统30过程中取消了该虚拟终端並且关闭了该虚拟终端。
运行在监控方式下的虚拟终端可以参与虚拟终端子系统30的热键系列。热键动作可以使不同的已打开的虚拟终端在硬件显示设备上加以显示。对于多数的虚拟终端共享相同的硬件显示设备前面已经加以讨论了。
键盘上的操作键系列如果实现的话,将使虚拟终端屏幕在硬件显示设备42上出现。如果操作键再次被激活的话,则下一个接连的虚拟终端屏幕将被显示。该过程将随着每次操作键(热键操作)的激活而重复。一当该键被激活足够多的次数以致于每个虚拟终端屏幕已经在硬件显示42上出现的话,下一次操作键的激活将使已经首先显示过的虚拟终端再次显示。这样,在硬件显示42上的虚拟终端屏幕的连续滚动可以与键盘上的热键操作的重复激活一起发生。
虚拟终端子系统30保留了运行在KSR方式下的所有虚拟终端的屏幕内容的付本。在运行在KSR方式下的虚拟终端的激活时,热键操作自动地在硬件显示设备42上恢复前面保存的虚拟终端屏幕。应用50不需保存运行在KSR方式的虚拟终端的屏幕内容。进一步说,因为应用不需要保存/恢复屏幕的内容,因此它还进一步解除了跟踪KSR方式下已经打开的虚拟终端状态的要求。
然而,如果虚拟终端运行在监控方式下並且正在参与热键操作的话,则在虚拟终端放弃显示控制之前,必须保存数据。
图7给出了两个终端被打开且均处于监控方式的情况。如果在键盘上激活操作键,作为虚拟终端子系统30的一部分的虚拟终端资源控制器310,如前所述,接收信号701。虚拟终端资源控制器310发送信号702去解除激活该虚拟终端。这就起动了虚拟终端子系统30的虚拟终端方式处理器340中的虚拟资源控制器定时器801,正如上面所述的。定时器可以置为指定的时间段,如30秒。
应用50从虚拟终端子系统30中接收屏幕释放中断。以撤回信号(SIGRETRACT)的格式进行。该SIGRETRACT通知应用50,它已经指定一个时间段,如30秒,来保存所有的数据並且响应SIGRETRACT信号,第101步。为了响应SIGRETRACT信号101,应用50向虚拟终端子系统30发送屏幕释放应答501。屏幕释放应答501向虚拟终端子系统30指出,应用50已经确认下述事实硬件显示设备42(现在是被写到的地方)必须释放,並且应用50已准备好撤回显示设备42。然后,再禁止虚拟资源控制器的定时器,在第803步。
此时,虚拟终端子系统30接收屏幕释放应答501。虚拟终端子系统30再实现去除激活804和激活704过程,该过程对虚拟终端子系统而言是内部的过程。应用50不知道该过程的存在。下一个应用50将从虚拟终端子系统30接收SIGGRANT信号102,而虚拟终端子系统30告诉运行在第二个虚拟终端的应用50,它现在已经控制了可以由应用50直接存取的显示设备42。因此,第一个(去除激活)虚拟终端与硬件显示42通信的能力已经被取消了,並且第二个(激活的)虚拟终端已经有机会在硬件显示42上直接绘画了。
图8描述了两个虚拟终端处于监控方式並将参与热键操作的情况。然而,在这种情况下应用50在指定的时间内並不响应SIGRETRACT信号101。如图8所示,从开始用于热键操作的键盘操作序列起,应用50从虚拟终端子系统30中接收SIGRETRACT信号101(第701步)。如果应用50在指定时间内即30秒内不响应SIGRETRACT信号,则虚拟终端子系统30中的定时器将在第807步时终止。
由于定时器的终止,应用50将从虚拟终端子系统30中接收SIGKILL信号103,它指出了该虚拟终端已经终止並且虚拟终端子系统30应该关闭该虚拟终端。然后该虚拟终端则从虚拟终端子系统30中除去。因而,在SIGKILL处理103之后,不响应的虚拟终端就关闭了(第502步)。然后,虚拟终端子系统30将接收关闭命令並通过从虚拟终端子系统结构310、340中除去该过程的办法来关闭该虚拟终端(第705和809步)。
由于在该例子中存在着正在被激活的第二个虚拟终端,虚拟终端子系统30知道这个第二个终端的情况,並且激活(第707步)该第二个虚拟终端。由于第二个虚拟终端处于监控方式下,屏幕授于中断信号(SIGGRANT)将通过虚拟终端子系统30发送到新激活的虚拟终端的应用50中。此时,新激活的虚拟终端已经控制了显示硬件42。
图9表示的是两个终端在KSR和监控方式下打开的情形。当终端处于不激活的步骤时,该终端可从监控方式变为KSR方式。然后该终端在KSR方式下可重新激活,则它的方式转变为监控方式。
在这种情况下,重要的是应用50记住从虚拟终端处于监控方式再转变为KSR方式起,虚拟终端子系统30已经不再保留任意关于监控方式的信息(该信息由相应的应用50保留)。因而,从KSR方式到监控方式的转换可以完成前,应用50必须定义另一个循环输入缓冲器15並且复位所有相关的指针。即使当虚拟终端开始处于监控方式然后转换到KSR方式时前面的循环缓冲器15已经定义的情况下,这也是对的。当由监控方式转换为KSR方式时,该环形缓冲器15就不存在了。因而,图9的情况是按顺序描述了每次终端处于监控方式时必须发送的规程方式(第504步)和屏幕请求(第505步)。
现在用图10来描述本发明的情况,图10为虚拟终端系统的部件的框图。图中给出了三个应用50a,50b和50c,正如以前所讨论的那样,它们可以在监控方式下直接写到显示设备42a,42b和42c。与这些应用一起给出的是已经打开的用参考数字31,32,33,34,35和36描述的六个虚拟终端。每个应用打开的虚拟终端数决不能大于计算机系统中物理显示没有42的总数,然而,一个应用50可以打开比可以得到的显示设备数小的虚拟终端。可以看出,能够打开的虚拟终端的总数(例如,图10为6个)比整个物理显示设备数(例如,图10为3个)要大。因而,必须使用一个机构,它可以使虚拟终端子系统(VTSS)30在请求使用的应用之间分配显示设备42。
在以前的技术中,虚拟终端系统是这样操作的当计算机系统的用户开始“热键”序列时,现行激活的虚拟终端就成为去除激活的虚拟终端,而下一接连的虚拟终端成为激活的了。于是,问题是用户只可以在虚拟终端间进行热键操作,而不是在多个程序应用50间进行。为了解决这个问题,本发明指定除了一个以外的所有的由单个应用打开的多个虚拟终端为“不参与”任意的热键操作的虚拟终端。
现在参改表示初始化步骤流程图的12a、12b和12c来描述用于如图10所描述的本发明的系统中的应用50的初始化。应该注意的是该过程是用于图10所示系统中的每一个应用50a、50b和50c的。也应该注意的是使用本初始化过程,任意的应用50可以用于本发明的系统中。只使用那些可以管理多个虚拟终端和硬件显示设备42的应用50是不必要的。
在第一步(图12a),开始用于图10所示系统中的应用50的初始化过程。应用50查询VTSS30以便决定存在于本发明的系统中的物理显示设备42的数量(第2步)。下一步,该过程决定现在的显示设备41的数量是否小于应用50所需的显示设备42的数量(第3步)。如果现在的显示设备42的数量少于应用50所需的显示设备42的数量,则已经发生错误且该过程在第4步退出。然而,如果现在的显示设备42的数量大于或等于应用50所需的显示设备42的数量,则该过程继续前进到第5步,其中的前面所述的方式打开应用50所需的虚拟终端。
在第6步,VTSS30使用输入/输出控制系统调用(IOCTL)来指定除了一个以外的所有虚拟终端为“不参与”任意热键操作的虚拟终端。IOCTL让应用50告诉VTSS30哪些虚拟终端用该不参加热键操作。然后在第7步中该过程使每一个已打开的虚拟终端与不同的物理显示设备42发生联系。再说一下,应用50使用IOCTL来告诉VTSS30应用50希望哪些显示设备42与每个已打开的虚拟终端发生联系。
第8步在应用50内建立信号处理程序,以致于从VTSS30中可以连收和处理SLGGRANT和SLGRETRACT信号。信号处理程序在技术上是众所周知的,并且常常称之为中断处理程序。因而,对于一个技术上熟练的人去理解本发明是不需要再详细了解关于这些信号处理程序的建立的。然后,在初始化场合,图12的过程将所有的物理显示设备42指定为“不能用的”(图12b的第9步)。这样,没有VTSS30的开始的授与许可,应用50是不能开始写到显示设备中的。在第10步中应用50再使用IOCTL向VTSS30请求监控方式操作。在第11步中,通过对VTSS30调用AIX操作系统(AIX是IBM公司的商标)的一部分的AIXGC系统调用,应用50再请求直接硬件级存取所需的显示设备42。在第12步,VTSS30为已经指定为参与热键操作的虚拟终端请求存取物理显示设备42。再一次说,使用IOCTL来产生这种请求。此时VTSS30指定任意的显示设备42为将要授予为“可用的”存取设备。第13步执行任意其它的起动特别的应用可能需要的过程。第14步,再决定该特别的应用是否已经结束。如果这样的话,在第15步该过程结束。然而,如果该应用保持有效,则在第16步处理所有正常应用的输入。在第17步,该过程决定是否有数据从应用50中输出,该应用50正在等待在已经指定为“可用的”显示设备42上显示。如果是悬而不决的输出或等待显示的话,则在第18步更新显示设备42。然而,如果对于可用的显示没有悬而不决的输出的话,则该应用50返回到第16步,在这一步再决定应用是否已经结束。在第18步更新显示之后,该过程也返回到第16步。
本发明保证每一次热键操作使用户的活动中心移到下一个接连的应用,现在参改图10和11来描述本发明的机构的实例。对于这个例子,假设VTSS30已经以前面所述的方式打开了虚拟终端31、32、33、34、35和36並且每个应用50a、50b和50c(应用50b和50c是多道处理的应用)已经进行了上面刚讨论的关于图12a、12b和12c的初始化过程。下面对图10的系统必须假设某一初始稳定状态的条件。例如,下面假设(1)应用50b和50c已经指定虚拟终端33、34和36为不参与热键操作的虚拟终端(图12a的第6步);(2)应用50a是激活的並且在监控方式下正在直接向显示设备42a进行写操作,(3)应用50b正在请求允许从VTSS30直接写到显示设备42a中,因为这个显示设备是对应于参与热键操作的虚拟终端32的。(4)应用50c在监控方式下有效地写到显示设备42b和42c中。
图11为小结这种假设的初始状态的图,然而,应该注意的是可以假设许多其它稳定状态条件而不会背离本发明的范围。此外,图11给出了在例中每次执行热键操作之后的每个应用50a,50b和50c的条件。应该注意的是,每个热键序列将活动中心在每个接连的应用50之间移动,即该序列是从50a到50b再到50c然后返回到50a。
开始,用户在输入设备41上执行热键序列。应该注意的是对于这个例子而言,假设虚拟终端31、32和35参与热键操作(图12a的第6步)。在热键操作之后,应用50a从VTSS30中接收SLGRETRACT信号,因为虚拟终端31是激活的,应用50a直接将虚拟方式下的数据在显示设备42a上显示。在应用50a的初始化过程第8步所建立的信号处理程序接收SIGRETRACT信号並执行如图14所示的处理(该过程假设信号处理程序已经由初始化过程在应用50中建立)。
在图14的第一步中,由应用50建立的SIGRETRACT信号处理程序从VTSS30中接收SIGRETRACT信号。然后,信号处理程序使用IOCTL来查询VTSS30以便决定正在撤回的是哪个显示设备42(第2步)。必须注意的是在以前的技术中,AIX操作系统提供SIGRETRACT信号,而运行在以前技术的AIX下的应用50是不能决定已经撤回的是哪一个显示设备。
第3步是保存正在被撤回的显示设备上的屏幕内容。这些屏幕内容由应用50保存在“如果需要”的库中。即,当应用50一旦再次变为激活的话,不需要的信息就不保存了。然后显示设备42被指定为应用50“不能用”来写入的设备(第4步)。在第5步,应用50中的信号处理程序告诉VTSS 30,所有的SIGRETRACT处理何时完成。如果对于参与热键操作的虚拟终端执行了撤回处理的话,则在第6步该过程结束。如果这样,则信号处理程序重新请求允许应用50直接写到刚被撤回的屏幕上(第7步)。然而,如果SIGRETRACT是对没有参与热键操作的虚拟终端而言的话,则SIGRETRACT处理在第8步结束。应该注意的是每次执行该过程时,VTSS 30向应用50发送SIGRETRACT信号並且在多数情况下,在关于本发明和参考图10所解释的该例子的整个余下部分是将要执行的。
现在继续讨论本例,假设应用50a刚刚完成SIGRETRACT处理,正如上面所说的那样,並且已经将应答信号返回给VTSS30,而且现在已经置于“请求状态”,因为虚拟终端31已经被指定为参与热键操作(见图14的第6、7步)。热键操作使VTSS 30起动激活虚拟终端32的步骤,虚拟终端32是指定参与热键操作的下一个虚拟终端。在VTSS 30接收了SIGRETRACT信号的应答之后,向应用50b发出关于激活虚拟终端32的SIGGRANT信号。应用50b中的信号处理程序再以图13的过程所描述的方式处理该SIGGRANT信号。
图13为表示涉及处理由应用50的信号处理程序(图12a的第8步)所接收的SIGGRANT信号的步骤的流程图。在图13的第1步*,信号处理程序从VTSS30中接收SIGGRANT信号,並开始执行这个过程。在第2步,通过指定I为可以用的显示设备数並使它等于1来初始化该过程。第3步决定第I个显示设备42指定为“可以用”的还是“不可以用”的(见图12b的第9步)。如果该显示设备42是可用的,则该过程继续进行到第4步,其中要决定所有的显示设备是否已经检查了其可用性。如果是这样的话,则该过程在第5步结束。然而,如果在第4步中,已经确定了不是所有的显示设备已经检查了可用性的话,则该过程通过设置要考虑的显示设备为I=I+1的方法来重新指定要检查其可用性的显示设备42(第6步)。在这个重新指定之后,该过程返回到第3步。如果在第3步中,被考虑的显示设备不是标志为可用的话,则在第7步中确定被考虑的虚拟终端是否已经指定为不参与的虚拟终端。如果是这样的话,则应用50向VTSS 30的屏幕管理程序320发出IOCTL,使该显示设备为可见的设备(第8步)。然而,如果该虚拟终端不是标志为不参与的虚拟终端,则标志该显示设备42为可见的设备並重新建立屏幕显示(第9步)。在第9步以后,该过程返回到第4步以确定所有设备是否已经检查了可用性。
就本例子而言,由应用50b中的信号处理程序所完成的SIGGRANT处理是在VTSS30从应用50a中接收应答信号之后进行的。因而,由于该热键操作,已经授于应用50b对监控方式下的显示设备42a进行直接写的访问。下一步,应用50b请求将由应用50b打开的不参与热键操作的虚拟终端33成为可见的设备,使应用50b也可以直接写到监控方式下的显示设备42b中。应用50b向VTSS30和包括在其中的屏幕管理程序320提出该请求。VTSS30和应用50b再经历打开监控方式下虚拟终端所需的相同步骤,如参考图4前面所讨论的那样。这样不参与热键操作的虚拟终端就成为可见的了(图13的第7和8步)並且授于显示设备42b,使应用50b可直接写到监控方式下的该显示设备42b中。
直接在显示设备42b和42c上写过的应用50c现在从VTSS30中为显示设备42b接收SIGRETRACT信号,因为应用50b已经服从于热键操作並且正在请求显示设备42b。在SIGRETRACT处理之后,应用50c再重新请求显示设备42b(图14的第7步),因为该显示设备对应于已经指定为参与热键操作的应用50c的虚拟终端35。该(初始的)热键序列並不影响显示设备42c的状态,因为应用50c是唯一期望写到那里的应用。因而,应用50c仍然在进行直接写到监控方式下的显示设备42c中。
为了总结本发明题目例子的状态,在开始热键操作之后,应用50a正在请求存取显示设备42a,应用50b在监控方式下正在写到显示设备42a和42b中,而应用50c正在请求存取显示设备42b且正在直接写到监控方式下的显示设备42c中。
下面,假设用户在输入设备41上执行第二次热键操作。VTSS30再去除激活虚拟终端32和通过跳过不参与热键操作的虚拟终端33和34,来激活下一个参与的虚拟终端35。虚拟终端35的激活是以参考图11A的如前所述方式发生的。
如前所述,VTSS30必须包括一个让它去选择要激活的下一个参与的虚拟终端的机构。如果下一接连的虚拟终端指定为不参与的话,则VTSS30要跳到没有被指定为不参与的下一接连的虚拟终端上。
对于现行的例子中假设虚拟终端33和34均被指定为不参与的事实下,因而,VTSS30跳过虚拟终端33和34而到虚拟终端35上。由于虚拟终端35的激活,已经在请求显示设备42b的应用50c,现在则服从于热键操作。对于显示设备42b,VTSS30向应用50b发出SIGRETRACT信号。在撤回显示设备42b之后,应用50b再向VTSS30返回一个应答信号。下一步,向应用50c发出SIGGRANT信号,以授于它直接存取显示设备42b。此时,应用50c再向VTSS30的屏幕管理程序320请求显示设备42a,因为这是唯一留下的应用50c还没有存取的显示设备。对于显示设备42a,VTSS 30再向应用50b发出SIGRETRACT信号。在SIGRETRACT处理和发送应答之后,应用50b请求显示设备42a(图14的第7步)。在接收应答之后,对于显示设备42a,VTSS30向应用50c发出SIGGRANT信号。应该注意的是发生在应用50b和50c的信号处理程序中的SIGGRANT和SIGRETRACT的处理,在关于图13和图14所述的处理上是相同的。关于显示设备42c的状态是没有改变的,因为应用50c是唯一期望写到那里的应用,並且在第二次热键操作之前,应用50c已经有效地写到监控方式下的该显示设备中。
因而,参考图11,在第二次热键操作之后,应用50a、50b和50c是处于下列状态的应用50a保持处于请求存取显示设备42a的状态;因为对应用的热键操作和正在请求显示设备42a的缘故,应用50b有两个被拿开(撤回)的显示设备42a和42b。而应用50c现在已经可以对所有三个显示设备42a、42b和42c进行存取,並且可以直接写到这些监控方式下的显示设备。由于这个热键操作和由VTSS30发出的随后相关的SIGRETRACT(向应用50b发出的)和SIGGRANT信号(向应用50c发出的),应用50c能够从应用50b中取走两个显示设备42a和42b。应用50c以前对显示设备42c也直接在写,因而该热键操作没有修改该状态。
现在将要讨论的是另一个热键操作,其中,用户在输入设备41上初始该序列,而VTSS30知道要去除激活虚拟终端35,跳过不参与的虚拟终端36再处理下一个参与的虚拟终端31。应该注意的是虚拟终端的顺序可以为任意期望的次序,然而,对于本例子而言,假设其顺序是从虚拟终端31到虚拟终端36再返回到虚拟终端31的卷形次序。然而,任意序列均可工作,如以降序方式从虚拟终端36到虚拟终端31再返回到虚拟终端36。
对于显示设备42a而言,应用50c的信号处理程序从VTSS30中接收SIGRETRACT信号,並且在该处理完成之后向VTSS30发送应答信号。在从应用50c接收应答信号之后,对于显示设备42a而言,VTSS30向应用50a发出SIGGRANT信号。在由应用50a处理SIGGRANT之后,应用50a在监控方式下可以写到显示设备42a中(即应用50a在显示设备42a上是有效的)。
于是,这第三次热键操作已经将虚拟终端35去除激活而将虚拟终端31激活了。然而,从应用50c中撤回显示设备42b和42c是不必要的,因为应用50a没有在请求显示设备42b和42c,而只请求显示设备42a,它是通过从VTSS30发出SIGGRANT信号而在以前已经被授于访问的。因而,可以从图11中看出,应用50a现在正在写到处于监控方式下的显示设备42a中,应用50b保持请求存取显示设备42a,而应用50c正在写到处于监控方式下的显示设备42b和42c中。再参考图11,可以看出,在第三次热键操作之后,应用50a、50b和50c的关于显示设备42a、42b和42c的状态是完全与开始假设的状态相同的。
因而,可以看出本发明如何使包括能直接写到多个显示设备中的多个应用的系统的用户起动的每一个热键操作总是能够将所研究的显示设备从一个应用转换到下一个应用中,而不是象以前的技术系统所提供的从一个虚拟终端转换到下一个虚拟终端。也可以看出,对于所有的其中含有期望直接写到显示设备中的过程而言,服从于热键操作的应用50将总是具有对显示设备的存取权力的。前面描述的例子並不打算将本发明局限于图10所描述的系统中。本发明的范围是打算用于任意使用大量应用的系统中,而且其中至少有一个应用能直接写到多个硬件显示设备上。
虽然已经示出並加以描述了某个择优的具体体现,应该理解的是可以对其中进行许多的变换或修改而不会离开所附的专利范围。例如,本发明将能够使一个本领域的技术人员从具有下述配置的系统中得到其中的好处,该系统的第一个应用可以写到第一个显示设备中而另一个程序应用可以直接写到第一个显示设备和至少有一个的其它显示设备。
权利要求
1.将活动中心从第一个程序应用移到接连的程序应用的方法,它通过单个移动操作加以实现,所说的方法的特点在于下述步骤中提供许多硬件显示设备;提供许多所说的程序应用;提供许多虚拟终端,每个所说的虚拟终端与所说的程序应用中的特定的一个有关並且直接对应于所说的硬件显示设备中的一个;指定与所说的应用中的特定的一个有关的所说的虚拟终端中的除了一个以外的所有的虚拟终端为不参与所说的移动操作的虚拟终端;並且起动所说的移动操作,以致于忽略所有所说的接连的不参与的虚拟终端。
2.按照权利要求1的方法,其特征在于激活与所说的接连的程序应用有关的接连的虚拟终端的步骤,该终端没有被指定为不参与所说的移动操作。
3.按照权利要求1的方法,其特征在于,所说的许多程序应用中至少有一个可以直接写到至少二个所说的许多硬件显示设备中。
4.按照权利要求3的方法,其中移动的方法的特点还在于下述步骤中决定哪些所说的硬件显示设备是由所说的接连的程序应用所需的;从由任意其它所说的许多程序应用所使用中撤回对所说的硬件显示设备的存取,这些所说的硬件显示设备是所说的接连的程序应用所需的;並且对所说的接连的程序应用授于对所说的所需的硬件显示设备的存取。
5.按照权利要求4的方法,其特点在于决定提供一个机构的步骤构成的所说的步骤可以查询关于哪些所说的硬件显示设备必须被撤回,通过上述的机构,所说的程序应用普遍存取由所说的接连的程序应用所需的至少为一个的所说的硬件显示设备。
6.通过执行单个的移动操作,将活动中心从第一个程序应用移到下一接连的程序应用的方法,所说的方法其特点在于下述步骤中提供许多硬件显示设备;提供许多所说的程序应用,至少一个所说的程序应用能直接写到至少为二个的所说的许多硬件设备中;提供许多虚拟终端,每个所说的虚拟终端与特定的一个所说的程序应用有关,並且直接对应于一个所说的硬件显示设备;指定与特定的一个所说的应用有关的,除了一个以外的所有的所说的虚拟终端为不参与所说的移动操作;决定哪些所说的硬件显示设备是由所说的下一接连的程序应用所需的;提供一个机构可以查询关于哪些所说的硬件显示设备必须被撤回,通过该机构所说的程序应用普遍存取由所说的下一接连的程序应用所需的至少为一个所说的硬件显示设备;並且起动所说的移动操作以致于忽略所有所说的接连的不参与的虚拟终端。
7.通过执行单个移动操作,将活动中心从第一个程序应用移到接连的程序应用的系统,其特点在于许多硬件显示设备;许多所说的程序应用;许多虚拟终端,每个所说的虚拟终端与特定的一个所说的程序应用有关並且直接对应于一个所说的硬件显示设备;用于指定与特定的一个所说的应用有关的,除了一个以外的所有所说的虚拟终端为不参与所说的移动操作的方法,以致于忽略所有所说的接连的不参与的虚拟终端。
8.按照权利要求7的系统,其特点在于,用于激活与所说的接连的程序应用有关的接连的虚拟终端的方法,该虚拟终端没有指定为不参与所说的移动操作。
9.按照权利要求7的系统,其特点在于,所说的许多程序应用中至少一个可以直接写到至少为二个的所说的许多硬件显示设备中。
10.按照权利要求9的系统,其特点在于,用于决定哪些所说的硬件显示设备是由所说的接连的程序应用所需的方法;用于从任意其它的所说的许多程序应用所使用的所说的硬件显示设备中撤回由所说的接连的程序应用所需的所说的硬件显示设备的存取的方法;並且用于对所说的接连的程序应用授于对所说的所需的硬件显示设备的存取的方法。
11.按照权利要求10的系统,其特点在于,为了决定用于提供一个机构的构成方法的所说的方法可以查询关于哪些所说的硬件显示设备必须被撤回。通过上述机构,所说的程序应用普遍存取由所说的接连的程序应用所需的至少为一个的所说的硬件显示设备。
12.通过执行单个的移动操作,将活动中心从第一个程序应用移到下一接连的程序应用的系统,所说的系统其特点在于许多硬件显示设备;许多所说的程序应用,至少一个所说的程序应用能直接写到至少为二个的所说的许多硬件设备中;许多虚拟终端,每个所说的虚拟终端与特定的一个所说的程序应用有关並且直接对应于一个所说的硬件显示设备;用于指定与特定的一个所说的应用有关的除了一个以外的所有所说的虚拟终端为不参与所说的移动操作的方法;用于决定哪些所说的硬件显示设备是由所说的下一接连的程序应用所需的方法;通过一个机构,所说的程序应用普遍存取由所说的下一接连的程序应用所需的至少为一个所说的硬件显示设备,该机构可以查询关于哪些所说的硬件显示设备必须被撤回;並且用于起动所说的移动操作以致于忽略所有所说的接连的不参与的虚拟终端的方法。
13.在虚拟终端环境中,将活动中心从第一个多道处理的程序应用移到接连的程序应用的方法,所说的方法的特点在下列步骤中指定与特定的一个所说的程序应用有关的除了一个以外的所有所说的虚拟终端为不参与任意的移动操作;並且起动单个移动操作以致于忽略与所说的接连的程序应用有关的所有所说的不参与的虚拟终端。
14.按照权利要求13的方法,其特点在于,对于每个所说的多道处理程序应用,继续所说的移动操作的步骤。
全文摘要
本发明提供了在虚拟终端环境下的多个程序应用之间移动活动中心的方法,以致于使用单个热键操作使下一个接连的应用总是成为可见的并能与用户会话的。在本发明的系统中提供了多个应用,其中至少有一个可以直接写到多个硬件显示设备中。此外,打开了许多虚拟终端,每一个虚拟终端与一个特定的程序应用有关并且对应于一个硬件显示设备。除了一个以外的所有与单个应用有关的虚拟终端被指定为“不参与”任意的热键操作。
文档编号G06F9/06GK1060545SQ9110047
公开日1992年4月22日 申请日期1991年1月24日 优先权日1990年2月1日
发明者哈里什·钱德尔·阿格拉瓦尔, 理查德·利·沃伯格 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1