背景技术
远程直接存储访问模式是一种独立于目的计算机上参与通信的进程而对其可访问的存储空间进行读写的通信方式。为实现这一通信模式,目的计算机上的通信设备(一般为一个符合PCI标准且能主动发起PCI通信的网络接口设备)可以独立于其本地计算机的中央处理器,在接收到特定的数据包之后,主动地向系统内存中的指定区域读写数据。在此过程中,中央处理器无需收到和处理任何中断(包括系统管理中断,SystemManagement Interrupt)信号,可以不受干扰地正常运行。由于是通过完全的硬件逻辑而实现对系统内存的读写,目的计算机的操作系统也不会受到影响。
在计算机网络和机群系统中,和远程计算机的交互是计算机系统使用、维护和管理工作中的关键问题。对于字符终端模式的交互,目前最普遍的解决方式是基于telnet,rsh/rlogin,ssh等协议的客户端/服务器模式的通信协议系统。对于图形模式的交互,目前的解决方式主要包括基于X Window的客户端/服务器系统,数字式或者模拟式的远程KVM系统,或者由某个运行于本地操作系统之上的本地程序将显示信息获取后,经过可能的压缩处理,主动地发往用户所在的计算机系统。
对telnet,rsh/rlogin,ssh等协议而言:
1.无法提供图形模式的交互。
2.在远程计算机的操作系统已启动但未加载相应的服务之前,本地
计算机无法与其进行任何形式的交互。
3.基于客户端服务器模型,与每一个远程计算机上的服务进程进行交互都需要运行一个单独的客户端进程。当要管理的计算机系统很多时,这很容易使本地计算机成为整个监控系统的瓶颈。
4.这些服务都是基于有连接的协议,参与交互的计算机之间必须建立并且维护单独的连接,这也会带来可扩展性限制。
5.当远程结点的操作系统崩溃时,无法继续进行任何形式的交互。对于X Window系统而言:
1.该系统很耗费系统资源,在无需图形交互模式的情况下会造成很大的资源浪费。
2.在远程系统启动之后,未加载相应的服务之前无法提供任何形式的交互。
3.该系统也无法适应同时监控很多结点的显示信息的情况。
对于那些将本地的显示数据读取之后,压缩、打包发出的终端模拟系统(例如KVM-over-IP)效率很低,运行中严重依赖主机的操作系统的支持。同时,这种系统一般也都是基于TCP/IP协议族的当前实现,这使其难以适应对很多远程计算机的同时监控。
各种远程KVM系统都需要专用的终端设备和交换机,这使得机群系统的总成本提高,而本发明则有效利用了每个机群系统中必备的高速通信网络,无需额外设备。
可见,在本发明所针对的技术领域中,同类系统都无法兼顾灵活性、效率和可扩展性。
发明内容
本发明基于远程直接存储访问方式实现一个图形终端的所有交互功能。一般,一个图形终端系统应包括:用于输出的显示设备(简称V),用于输入的键盘(简称K)和设备鼠标(简称M)。对上述每个设备的交互功能的实现,以下都将分别描述。在描述中,直接与本发明所述的终端系统交互的用户所在的计算机简称为A机,用户所要控制的远程计算机称为B机。
利用本发明所述的图形终端实现方法所实现的一个系统中,A机运行该终端系统的控制部分,B机运行按照本发明的要求而实现的键盘和鼠标设备的驱动系统,并且A机和B机通过一个具有远程直接存储访问功能的网络相连。
1.本地系统的实现
在A机运行的控制部分实现了和用户直接交互的显示设备、键盘和鼠标设备的管理和驱动。于是,在本发明的实现中,该控制部分主要就由三个装置构成,分别实现以上三个设备。
显示设备装置:A机直接读取B机的显示数据存储设备(FrameBuffer),并传回A进行显示。本系统将定时(例如每30毫秒1次)从B机中的上述区域读取显示数据。为了进一步降低通信次数,可以远程配置B机的网卡在某时段内自动地定时读取显示信息并发送到A机。A机在接收到传回的显示数据后,由本地网卡自动写入Frame Buffer中,或者经过本地CPU处理后写入Frame Buffer。这时,用户就可以在A机的显示器上看到流畅(大于24帧/秒)的B机的显示输出。
键盘管理装置:当A机的键盘输入的焦点在上述的显示设备装置的显示输出窗口中时,该装置定期读取本地键盘设备的状态(扫描码序列),并用一个顺序递增的数字对这些序列进行计数。该数字用于以取模的算法来计算这个序列在写入B机的环形存储区域KBlock时的偏移植。当要将这个新序列发送到B机的KBlock中时,应该预先读取目的位置,以确保没有将未被读取的数据覆盖。
鼠标管理装置:当A机的鼠标的焦点在上述的显示设备装置的显示输出窗口中时,该装置定期读取鼠标设备的状态信息,并把本地M的任何位移和各个键的点击信息序列也用一个顺序递增的数字进行计数。该数字用于以取模的算法来计算这个序列在写入B机的环形存储区域MBlock时的偏移植。当要将这个新序列发送到B机的MBlock中时,应该预先读取目的位置,以确保没有将未被读取的数据覆盖。
2.远程系统的设备驱动
在本发明的使用中,B机无需运行任何服务器进程,但需要为其增加本发明所指定的键盘K和鼠标M的驱动系统。
B机中K的驱动程序定期读取前述的KBlock区域的内容,以获得当前的键盘输入原始信息,并将读过的位置用约定的值进行清除。此后的处理过程,和普通的键盘驱动程序相同。由于本系统提供的是用户和计算机的交互,用户键盘输入的频率一般远小于K的驱动程序读取该区域的频率,这就可以有效地消除键盘输入数据的覆盖现象(B机中K的驱动还未读取过的信息被下一个时刻的输入修改造成输入数据的丢失);当B机中的KBlock长期未被读取,就要造成覆盖现象时,A机会得到反馈,以阻止用户的进一步输入。
在B机中的M的驱动程序对MBlock区域的利用方法,和K的驱动程序利用KBlock的方法相同。
3.互连网络
A和B之间的互连网络在实现上只要物理传输带宽可以达到50MB/s以上,传输8字节的小包的延迟在1ms以下就可以很好地满足本系统的要求。在A,B上的网络接口卡必须具有根据接收到的包的内容执行特定的DMA(Direct Memory Access,直接存储器访问)读写的功能。一般而言,这种功能的实现会借助于一个嵌入式的通信协处理器。
本发明基于远程存储访问模式实现了一个完整的图形终端系统,突破了传统的客户端/服务器模式。对远程结点的显示信息的获取和各种输入设备的状态的反馈均无需远程计算机的中央处理器和操作系统的干预。该终端系统对远程系统的干扰小,可以随时在多个被监控系统之间切换。该系统所采用的实现方法可以适用于任何由具有远程直接存储访问功能的通信系统所互连的计算机网络和机群系统。
从以上说明可以看出,该图形终端系统对远程系统的干扰小,能够做到在多个被监控系统之间切换或者同时监控多个系统。同时,随着通信技术的进步(常见的机群通信网络的带宽均在200MB/s以上),计算机之间的通信带宽已经使得传输未经压缩并且比较流畅的显示位图数据(只需24MB/s)成为可能。这使得本发明已经成为一种非常可行的图形终端实现方法及其系统。在所有具有远程直接存储访问功能的网络所互连的计算机之间或者机群系统中都可以应用本发明所描述的方法。
本发明基于远程直接存储访问模式实现了一个完整的图形终端系统,突破了传统的客户端/服务器模式。对远程计算机的显示信息的获取和各种输入设备的状态的反馈均无需远程计算机的中央处理器和操作系统的干预。该终端系统对远程系统的干扰小,可以随时在多个被监控系统之间切换。该系统所采用的实现方法可以适用于任何由具有远程直接存储访问功能的通信系统所互连的计算机网络和机群系统。
技术方案
一种基于远程直接存储访问的图形终端系统,包括:用于输出的显示设备,用于输入的键盘和鼠标设备及其驱动程序,用户所在的计算机A,用户所要控制的远程计算机B,以及用户所在的计算机和用户所要控制的远程计算机之间的互连网络,其各组成部分的作用如下:
1)位于本地计算机A中的控制部分,它可以将从远程计算机B返回的显示数据显示在本地的显示设备上,并将本地的键盘、鼠标等输入设备的状态发送到远程计算机;
2)本地计算机A和远程计算机B之间具有远程直接存储访问功能的通信系统,该通信系统的主要设备为独立的或者集成在计算机主板上的网卡和交换机,其中网卡能够根据接收到的消息不经过中央处理器和操作系统的干预,直接将本地计算机系统的内存中指定区域的数据获取并发送到指定的计算机系统,或者将接收到的消息中的全部或者部分内容写入本地计算机系统中的指定区域;
3)该系统中的计算机在专用的显示处理器件(如显卡)或者内存中的显示数据存储器(Frame Buffer)里的数据可以被某个其它计算机系统通过2)中所述的通信系统读取和写入;
4)该系统中远程计算机的键盘和鼠标设备的驱动程序,它们分别可以通过从某个存储区域定时获取内容来被驱动,并且该存储区域都可以被2)中所述的通信系统写入和读取。
基于远程直接存储访问的图形终端系统,利用了通信系统的远程存储访问的能力直接获取目的计算机系统的显示数据,而无需目的计算机的CPU和操作系统的干预。
其通信系统可以是一个实现了远程直接存储访问功能的机群高速通信网络,或者是实现了远程直接存储访问功能的局域网或者广域网。
键盘或者鼠标设备的驱动系统,被驱动设备的配置和状态信息是由远程计算机利用通信系统的远程存储访问模式直接写入某个在主存中或者在嵌入网卡等外设的存储部件中的存储区域来得到,而不是通过对连接到本地计算机的同类设备的状态信息的直接读取。
其显示数据的获取无需远端计算机系统的操作系统和CPU的干预,而不论每一次显示数据是通过本地发出的对远程计算机的远程存储访问命令而得到或者通过远程计算机的通信协处理器或者硬件逻辑在经过特定的配置之后自动地返回。
基于远程直接存储访问的图形终端方法,在该方法中对远程计算机的显示内容的获取和对远程计算机的键盘、鼠标输入的提交都是在无需对方的CPU和操作系统干预的情况下实现,远程计算机的显示数据通过远程直接存储访问的方式获取,对远程计算机的控制的输入也是通过远程直接存储访问的方式提交到远程计算机。
基于远程直接存储访问的图形终端方法,直接获取远程计算机的显示数据,对于远程计算机的显示数据的获取采用远程直接存储访问模式,数据的获取操作无需远程结点的CPU和操作系统干预。
直接获取对方显示数据,计算机的显示存储设备支持远程存储访问模式,而不论该显示存储设备位于专用的显示处理器件之上,或者位于主机的物理内存空间内。
直接获取对方显示数据,显示数据直接利用通信系统的远程存储访问模式从远程计算机获取,而不论已获取的数据在本地系统中直接用于显示,或者经过可能的数据压缩等方法存储在本地系统中供全部或者部分回放使用。
具体步骤如下:
Step A:位于本地计算机的显示控制装置用远程直接存储访问方式读取远程计算机中的显示数据存储器,并将其显示在本地计算机相连的显示设备V上;
Step B:位于本地计算机的键盘控制装置读取本地键盘输入,用远程直接存储访问方式写入远程计算机中的环形缓冲区Kblock,远程计算机的键盘驱动程序从Kblock中获取输入;
Step C:位于本地计算机的鼠标控制装置读取本地键盘输入,用远程直接存储访问方式写入远程计算机中的环形缓冲区Mblock,远程计算机的鼠标驱动程序从Mblock中获取输入。
具体实施方式
1.如图1所示,用户所在的计算机A通过远程DMA方式直接读取远程计算机B的某个进程的显示数据,并通过本地显示设备呈现给用户。这个区域一般叫做Frame Buffer,它可以在显卡上也可以在内存中的特定区域,只要保证该区域可以被网卡用DMA方式读取即可。
2.如图1所示,用户在计算机A的输入——键盘状态和鼠标状态——被本系统读取并编号,在计算出目的缓冲区中的偏移地址之后,通过远程DMA方式直接写入计算机B中的指定区域的可用部分,由本系统特定的驱动程序反馈给计算机B中的对应进程。
3.结点A定期执行1,2中所述的操作。这样,本系统就在计算机A上实现了与远程计算机B交互的终端。
操作流程图说明:
在与远程计算机的交互过程中,本发明所描述的图形终端系统将周期性地分别执行三个独立的操作,即图2中所示的Step A,Step B,Step C。
Step A:位于本地计算机的显示控制装置用远程直接存储访问方式读取远程计算机中的显示数据存储器,并将其显示在本地计算机相连的显示设备V上;
Step B:位于本地计算机的键盘控制装置读取本地键盘输入,用远程直接存储访问方式写入远程计算机中的环形缓冲区Kblock,远程计算机的键盘驱动程序从Kblock中获取输入;
Step C:位于本地计算机的鼠标控制装置读取本地键盘输入,用远程直接存储访问方式写入远程计算机中的环形缓冲区Mblock,远程计算机的鼠标驱动程序从Mblock中获取输入。