CA2071451C - Application distributed execution apparatus and method - Google Patents
Application distributed execution apparatus and methodInfo
- Publication number
- CA2071451C CA2071451C CA002071451A CA2071451A CA2071451C CA 2071451 C CA2071451 C CA 2071451C CA 002071451 A CA002071451 A CA 002071451A CA 2071451 A CA2071451 A CA 2071451A CA 2071451 C CA2071451 C CA 2071451C
- Authority
- CA
- Canada
- Prior art keywords
- execution
- computer
- computers
- redirection
- graphical information
- 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 - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Abstract
To enable sharing of a screen, window or application by a plurality of processors connected through ISDN or the like, API calls to the operating system in a master processor, during execution, are transferred to slave processors by an event redirection mechanism. The API calls are then provided to the operating systems of the slave processors by their event redirection mechanisms, and the same screen or window appears at both the master processor and slave processors.
Messages generated at the slave processors are likewise provided to the message queue of the master processor by the event, and then provided to the application of the master processor. Therefore the slave processors share the application of the master processor.
Messages generated at the slave processors are likewise provided to the message queue of the master processor by the event, and then provided to the application of the master processor. Therefore the slave processors share the application of the master processor.
Description
JA9-91-504 1 20 71 ~ ~1 APPLICATION DISTRIBUTED ~x~ullON APPARATUS AND METHOD
:
The present invention generally relates to the development of distributed applications (for example, a computer teleconferencing sy~tem, a remote desktop presentation system) and to the mechanism for using stand-alone applications as distributed applications.
Recently, ISDN services provided by public phone companies are becoming world-wide available. It is now cost-effective ~i to utilize these services in place of modems to support applications that require high-speed data exchange among personal computers. Distributed applications (for example, a computer teleconferencing system, a remote desktop presentation system) are good examples of applications using the ISDN technology.
~;
In such distributed applications, the most important feature is to display in real time the same information on the screen or in windows of personal computers connected by a network. Displaying an identical screen or windows on interconnected personal computers in a distributed system is called "screen sharing" or "window sharing".
The effectiveness of using ISDN services in real-time applications for supporting screen sharing depends on how the bandwidth of ISDN channels is utilized. For instance, the 64 kilo bit-per-second (kbps) of the ISDN B channel is relatively high for text-based screen sharing between personal computers. However, it is not good enough to allow graphics or image-based screens to be displayed locally and remotely in real time. For example, to transmit data on a screen having 640x480 resolution and 16 colors (4-bits per pixel), we need about 1200 kbps (640*480*4) of bandwidth for the transmission. Therefore, sending screen data between personal computers is not an appropriate method to support the screen sharing or window sharing in real time.
JA9-91-504 2 2071-~5~
Another method for supporting screen sharing is to build the screen sharing as a special feature into each distributed application which is difficult to develop. The reason is that, in each distributed application, it involves a lot of efforts to define and to support a protocol (or conversation) between application modules on each personal - computer, and to install all application modules on each personal computer which will waste memory and CPU resources on doing the redundant processing.
While the following description is mainly made with regard to personal computers, the present invention can be applied to other sizes of computers.
Relevant patent publications are Japanese Published Unexamined Patent Application (JPUPA) 60-128769, JPUPA
62-150960, and JPUPA 2-2794. In the techniques disclosed in those publications, for achieving a remote conference system wherein the same screen is displayed at remote terminals, image or graphics information is in advance transferred and stored at every remote terminal. However, in these techniques, control ( program) for the remote conference system is actually performed at each terminal ( note that as described later according to the present invention a program is executed only at one terminal ( or processor)). Further in these techniques, a special design for communicating control data among the terminals and achieving the screen sharing is needed, and therefore the configuration becomes complicated.
It is an objective of this invention to provide a method for supporting real-time screen sharing or window sharing of distributed applications (for example, a computer teleconferencing system, a remote desktop presentation system) on interconnected personal computers.
It is another objective of this invention to simplify the development of distributed applications and to enable stand-alone applications to act as distributed applications capable of supporting real-time screen sharing or window sharing.
JA9-91-504 3 20714~1 The objectives of this invention are accomplished by redirecting subroutines calls and messages of applications and system softwares between interconnected personal computers in a distributed system ( that is, copying subroutines call etc. in one personal computer and transferring the same -to other remote personal computers).
In this method, only one personal computer runs applications and other personal computers do not need to run the same applications.In this method, instead of directly sending screen data of applications to remote personal computers, system software events are captured and redirected to remote personal computers for processing. On rem~te personal computers, system software events are captured and forwarded to applications through the network for processing as if they have occurred on the personal computer running applications.
The invention will be more clearly appreciated from the following detailed description taken in conjunction with the appended drawings, wherein:
Fig.l is a block diagram of a typical environment in which the system according to the invention is used;
Eig. 2 is a block diagram of typical hardware and software for a personal computer on which the invention is operated;
Fig. 3 is a block diagram of typical software components needed in each personal computer connected to a network;
Fig.4 is a block diagram of the configuration of the event redirection 3 in Fig. 2 for the master personal computer;
Fig. 5 is a block diagram for the configuration of the event redirection 3 in Fig. 2 for the slave personal computer;
Fig.6 is a block diagram of software components needed in the master personal computer and the sl~ave personal computers by the API redirection;
JA9-91-504 4 20~51 Fig. 7 is a flowchart of the processing routines for the API
redirection at the master personal computer;
Fig. 8 is a flowchart of the processing routines for the API
redirection at the slave personal computers;
Fig. 9 is a block diagram of software components needed in the master personal computer and the slave personal computers by the message redirection;
Fig. lO is a flowchart of a processing routine for the message redirection at the master personal computer;
Fig. 11 is a flowchart of a processing routine for the message redirection at the slave personal computers;
Fig. 12 is a flowchart of a message reading routine at each slave personal computer;
Fig. 13 is a drawing illustrating a snapshot of of the window of an example; and, Fig. 14 is a block diagram of an example implementing the event redirection.
Figure 1 shows a typical environment in which the system according to the invention is used by users. In Figure l, the system consists of personal computers interconnected by a network (for example, locally by a local area network (LAN) or remotely by ISDN ). A typical user runs an - application on one personal computer and, through the communication support of the network, shares the information in the application windows with other users in the network.
That is, same application windows with same contents are displayed on each user s screen.
Since the communication support of the network used in this system is simple function that can be found on most personal computers, it will not be described any more.
. .~ , ~ , . ~
-Figure 2 shows the overall system configuration of each personal computer on which the system of the invention is operated. In this system, each personal computer 1 may be a PS/55. of IBM Japan, for example, which consists of a processor 5, a display device 6, a keyboard 7, a mouse device 8, and a network adapter 9. The operating system 2 may be an OS/2~ of IBM Japan, for example, which includes a Presentation Manager~
10 managing interaction between input devices (a keyboard 7, a mouse device 8, etc.) and a user. The presentation manager 10 also provides Application Program Interface (API) for drawing and managing windows on the display device 6. The Event Redirection 3, which w~ll be detailed later, is a feature that is used to support the screen sharing between users on the network. The Applications 4 are the program (for example, a desktop presentation) used by an user for displaying some information on the screen.
Figure 3 shows the software components needed in each personal computer connected by a network. In Figure 3, an application program is run only on one personal computer called master personal computer, and the contents of the applicatLon's windows are reproduced on other personal computers called slave personal computers, by the event redirections resided in each personal computer. On slave personal computers, applications are not needed to be run.
Figure 4 and Figure 5 illustrate the software components of the master personal computer and the slave personal computer in more details. In a message-driven window system (for example, the Presentation Manager of OS~2), an application program obtains data from input devices 11 (keyboard, mouse device, etc.) in the form of messages (keyboard message, mouse message, etc.) that the window manager sends to the program through a message queue 12. To show and manipulate data on the display device or to use system services, an application program 4 uses the application program interface (API) provided by a window manager and an operating system 2. For example, in the Presentation Manager of OS/2, API subroutines for windows and graphics are grouped into two libraries called PMWin and PMGpi, respectively.
In Figure 4, the event redirection 3 is in between the applications 4 and the Presentation Manager and the operating system 2. The event redirection 3 is composed of an API
redirection 14, a message redirection 15, and an event redirection manager 13. The API redirection 14 will intercept API calls invoked from applications. The message redirection 15 will intercept messages read by applications from the message queue 12. The intercepted messages and API calls are sent through the network by the event redirection 3 from the master personal computer to other slave personal computers. The event redirection manager 13 will manage some information related to the API calls and the messages.
At slave personal computers (Figure 5), messages and API calls sent from the master personal computer are received by the event redirection 3. These messages and API calls are used for creating application windows on the display devices 6 and for simulating the interaction of applications at slave personal computers.
The following describes the detail operations of the event redirection.
Figure 6 is to illustrate the configuration of the API
redirection in each personal computer connected by a network.
When an API call is being invoked by applications in the master personal computer, it is intercepted and sent to slave personal computers through the network.
It will be first explained how the processing routines of the API redirection are executed when an API call of the Presentation Manager and the operating system is invoked by applications at the master personal computer, and then how an API call sent from the master personal computer is executed on each slave personal computer.
[API Redirection Routine At Master personal computer (Figure 7)]
On the master personal computer, when an application invokes an API call, this API call is intercepted by the API
- JA9-91-504 7 ~ ~ 7 ~
redirection 14 (step S11), together with its parameters. The event redirection manager 13 passes this API call to the Presentation Manager and the operating system for execution, and then gets the results, if it exists, returned by this API
call (step S12). If it is necessary, the information (for example, its parameters and its results) is kept by the event redirection manager (step S13) for later use. The API call together with its parameters and results are sent to each slave personal computer through the network (step S14). If the API
call returns some results, these results are returned to the application (step S15). Then, the routine is terminated (step S16). From the application's point of view, the processing of the API call is the same as if this API call is directly executed by the Presentation Manager and the operating system.
That is, the interception of the API call and the transmission of this API call to other slave personal computers, for example, done by the API redirection are transparent to the applications.
[API Redlrection Routine At Each slave personal computer - (Figure 8)]
On each slave personal computer, the API call and its information sent from the master personal computer are received by the event redirection manager 13 (step S21). Since some parameters sent from the master personal computer are only valid for the Presentation Manager and the operating system of that master personal computer, these parameters are converted to the local parameters of each slave personal computer by the event redirection manager 13 (step S22) by using the information previously stored. The event redirection manager 13 passes this API call together with its local parameters to the Presentation Manager and the operating system for execution, and then gets the results, if it exists, returned by this API call (step S23). If it is necessary, the information (for example, its parameters and its results) is kept by the event redirection manager (step S24) for later use (at step S22). Then, the routine is terminated (step S25). As the result of the execution of the API call on each slave personal computer, the output data, for example, to the display device of each '~ -JA9-91-504 8 2 ~ 7 ~
slave personal computer are the same as the output data to ~~ the display device of the master personal computer. That _-~ ~ is, th~ users at the master personal computer and slave personal computers see the same output data on their display device.
Figure 9 is to illustrate the configuration of the message redirection in each personal computer connected by a network. When a message is being delivered to applications in the master personal computer, it is intercepted and sent to slave personal computers through the network. At each slave personal computer, when a message is read by the event redirection manager, this message is also sent through the network to the application s message queue resided in the master personal computer. This message will be retrieved by the application.
First, it will be explained how the processing routines of -~ message redirection are executed when a message for the applications is intercepted at the master personal computer, and then how a message sent from the master personal computer is processed on each slave personal computer.
[Message Redirection Routine At Master personal computer (~igure 10)]
On the master personal computer, when an application reads a message from the message queue 12, this message is intercepted by the message redirection 15 (step S31). Based on the information associated with each message, each intercepted message is checked whether or not it is necessary to send it to each slave personal computer (step S32). If the message is needed to be sent to each slave - personal computer, the event redirection manager sends this --- - message together with its parameters to each slave personal computer (step S34). Then, the routine is terminated (step S33).
[Message Receiving Routine At Each slave personal computer [Figure 11) ]
' -JA9-91-504 9 ~ ? ~ ~
On each slave personal computer, a message sent from the master personal computer is received by the event redirection manager 13 (step S41). Since some parameters of the intercepted message sent from the master personal computer are only valid for the Presentation Manager and the operating system of that master personal computer, these parameters are converted to the local parameters of each slave personal computer by the event redirection manager 13 (step S42) by using the information previously collected. The event redirection manager 13 sends this message together with its local parameters to the object in each slave personal computer, and then gets the results, if it exists, returned by this message (step S43). If it is necessary, the information (for example, its parameters and its results) is kept by the event redirection manager (step S44) for later use (at step S42). Then, the routine is terminated (step S45).
[Message Reading Routine At Each slave personal computer (Figure 12)]
On each slave personal computer, the event redirection creates the same ob;ects (for example, windows, menus, buttons) as those created by an application on the master personal computer. The objects on each slave personal computer are managed and controlled by the event redirection manager. Like the objects created by an application, each object on each slave personal computer retrieves a message from the message queue 12. Since the subroutines to read and process messages of each object are provided by the event redirection manager, a message retrieved by an object can be intercepted for sending to the application on the master personal computer through the network. Figure 12 is to illustrate how a message retrieved by an object on each slave personal computer is processed. On each slave personal computer, when an object reads a message from the message queue 12, the event redirection manager checks whether or not it is necessary to send this message to the master personal computer (step S52) based on the information associated with the message. If the message is needed to be sent to the master personal computer, the event JA9-91-504 10 ~ ~ 7 ~
redirection manager converts the message's parameters to the parameters for the master personal computer tstep S54), and then it sends this message together with its converted parameters to the master personal computer (step S55).
Then, tne routine is terminated (step S53).
We will now describe, merely as one example, the implementation of a prototype called Real-Time Presentation ~RTP) system that is based on the event redirection described in this invention.
The RTP p~ototype runs on two IBM PS/55 connected by ISDN or by IBM Token-Ring network. Each IBM PS/55 runs Operating System 2 (0S/2) and Presentation Manager (OS/2 PM) as its operating system and its window manager. The RTP prototype is mainly composed of a foil browser and a control program which correspond to Applications 4 and to Event Redirection 3 of Figure 2, respectively. The foil browser is a application used for browsing a package of foils prepared in advance. Figure 13 shows a snapshot of the window of the foil browser and two button objects called "Previous" and Next for flipping foils backwards and forwards.
Note that the foil browser is a stand-alone application like other applications of 0S/2 that can be run without the RTP
control program. However, with the support of the RTP
control program which implements the event redirection mechanism described in this invention, a user called presenter on the master personal computer can use this foil browser to do a real-time desktop presentation to a remote user called listener on the slave personal computer. That is, even if there is no foil browser run on the slave personal computer, the screen sharing or window sharing on the master and slave personal computers can be realized by the RTP prototype.
In the following, the implementation of the event redirection mechanism of the RTP prototype will be described.
JA9-91-504 11 ~Q7 ~
OS/2 provides a mechanism called "dynamic linking" that allows a program s external references to subroutines to be resolved either when the program is loaded, or later at run time when the subroutines are actually called by the program. Subroutines of OS/2 are kept in a special library called ~ynamic Link Library (DLL). For example, API ca]ls of OS/2 PM for creating windows and for drawing graphics are provided by DLLs called PMWin and PMGpi, respectively. For an application, any DLL (regardless of its origin) is indistinguishable from a component of the operating system.
The DLL in OS/2 allows users to extend or even to redefine the functions (by keeping the same calling sequences) of its subroutines without changing the applications themselves. In the RTP prototype, new DLLs are developed to intercept API
calls and messages of OS/2 PM.
Figure 14 is to illustrate the relevant steps for realizing the screen sharing in the RTP prototype.
[Distribution of foils during setup]
Foils are normally prepared hefore the presentation taking place by using a foil editor. Therefore, these foils are available and can be transmitted during the setup of the presentation (step S81~. The purpose of sending foils in advance is to reduce the time delay when foils are displayed on the slave personal computer. When the si2e of foil data is small and the bandwidth of the network is high enough to send foils with small delay, foils can be transmitted on demand to the slave personal computer.
[Displaying foils on the master and slave personal computers]
Since the foil browser is run on the master personal computer, the presenter uses this program to display foils on the screen. When a foil is showed in a window, a series of OS/2 PM calls are made by the foil browser. To simplifying the description, suppose that to show a foil in ri its window, the foil browser on the master personal computer will use a subroutine called "LoadFoil" to load a foil from ' -- ~
JA9-91-504 12 2Q71 ~51 a file into memory, and then it will use a subroutine called "ShowFoil" to display the contents of a foil from memory into a window.
When the foil browser calls "LoadFoil" subroutine, the API
redirection on the master personal computer intercepts this call (s'ep S82), passes it to OS/2 PM for execution (step S83), and then sends it to the RTP prototype on the slave personal computer through the network (step S84). When the step S83 is finished, a foil is loaded into memory of the master personal computer. In the slave personal computer, -- the call to "LoadFoil" subroutine sent from the master --- personal computer is received by the RTP prototype and is passed to OS/2 PM (step S85) which will load into memory a foil from the file sent during setup (step S81) of the presentation. As the result, an identical foil is loaded on both master and slave personal computers.
Similarly, the call to "ShowFoil" subroutine by the foil browser on the master personal computer is intercepted (step S86) and is passed to OS/2 PM (step S87) which will show the loaded foil into a window. This call to "ShowFoil"
subroutine is sent to the RTP prototype on the slave personal computer (step S84) and is executed by OS/2 PM
(step S88). As the result, an identical foil is showed on both master and slave personal computers.
[Flipping foils on the master and slave personal computers]
If the presenter or the listener presses "Previous" or "Next" button object in the window, OS/2 will detect the button-pressed event and will send button-pressed event information in the form of an OS/2 message to the foil browser on the master personal computer or to the RTP
prototype on the slave personal computer, respectively. If the foil browser receives the button-pressed message, it will call OS/2 PM s subroutines to do the flipping of a foil. By the API redirection of the RTP prototype, the same OS/2 PM s subroutines are also executed by OS/2 PM on the slave personal computer and the foil is also flipped at the listener's side. If the RTP prototype on the slave personal -JA9-91-504 13 2 ~ 7 ~
computer receives the button-pressed message when the listener presses "Previous" or "Next" button object for flipping a foil, this message will be sent from the slave personal computer by the message redirection of the RTP
prototype to the foil browser on the master personal computer. When the foil browser receives this message, it will flip the foil in the same way as if the presenter has pressed the button object on the foil browser s window. That is, the actual execution of flipping a foil is done at the presenter s side, although the flipping operation is done by the listener.
This example shows that the event redirection mechanism described in this invention can be used to support the screen sharing or window sharing of stand-alone applications. Note that there is no foil browser on the slave personal computer and that the foil browser is an independent and stand-alone application like other programs of OS/2 that can be run without the RTP control program.
That is, the foil browser is developed without needing to know about the network nor to explicitly support the screen sharing on both master and slave personal computers. The generation of the screen on the slave personal computer for supporting the screen sharing is transparent to the applications and is done by the RTP prototype which implements the event redirection mechanism described in this invention.
Although in the above description personal computers are divided into masters and slaves, each personal computer can be used either a master or slave by installing a required software component into the personal computer. Further the present invention enables not only sharing of a screen and window but also sharing of speech inputting and outputting.
Further when the master personal computer is set up to receive messages from only particular slave personal computers, manipulation to the application is allowed for only the particular slave personal computers and unexpected conflicts among manipulation at different personal computers can be avoided.
!, .
JA9-91-504 14 2071~1 As described above, according to the present invention, processors in a distributed processing system can share stand-alone applications.
:
The present invention generally relates to the development of distributed applications (for example, a computer teleconferencing sy~tem, a remote desktop presentation system) and to the mechanism for using stand-alone applications as distributed applications.
Recently, ISDN services provided by public phone companies are becoming world-wide available. It is now cost-effective ~i to utilize these services in place of modems to support applications that require high-speed data exchange among personal computers. Distributed applications (for example, a computer teleconferencing system, a remote desktop presentation system) are good examples of applications using the ISDN technology.
~;
In such distributed applications, the most important feature is to display in real time the same information on the screen or in windows of personal computers connected by a network. Displaying an identical screen or windows on interconnected personal computers in a distributed system is called "screen sharing" or "window sharing".
The effectiveness of using ISDN services in real-time applications for supporting screen sharing depends on how the bandwidth of ISDN channels is utilized. For instance, the 64 kilo bit-per-second (kbps) of the ISDN B channel is relatively high for text-based screen sharing between personal computers. However, it is not good enough to allow graphics or image-based screens to be displayed locally and remotely in real time. For example, to transmit data on a screen having 640x480 resolution and 16 colors (4-bits per pixel), we need about 1200 kbps (640*480*4) of bandwidth for the transmission. Therefore, sending screen data between personal computers is not an appropriate method to support the screen sharing or window sharing in real time.
JA9-91-504 2 2071-~5~
Another method for supporting screen sharing is to build the screen sharing as a special feature into each distributed application which is difficult to develop. The reason is that, in each distributed application, it involves a lot of efforts to define and to support a protocol (or conversation) between application modules on each personal - computer, and to install all application modules on each personal computer which will waste memory and CPU resources on doing the redundant processing.
While the following description is mainly made with regard to personal computers, the present invention can be applied to other sizes of computers.
Relevant patent publications are Japanese Published Unexamined Patent Application (JPUPA) 60-128769, JPUPA
62-150960, and JPUPA 2-2794. In the techniques disclosed in those publications, for achieving a remote conference system wherein the same screen is displayed at remote terminals, image or graphics information is in advance transferred and stored at every remote terminal. However, in these techniques, control ( program) for the remote conference system is actually performed at each terminal ( note that as described later according to the present invention a program is executed only at one terminal ( or processor)). Further in these techniques, a special design for communicating control data among the terminals and achieving the screen sharing is needed, and therefore the configuration becomes complicated.
It is an objective of this invention to provide a method for supporting real-time screen sharing or window sharing of distributed applications (for example, a computer teleconferencing system, a remote desktop presentation system) on interconnected personal computers.
It is another objective of this invention to simplify the development of distributed applications and to enable stand-alone applications to act as distributed applications capable of supporting real-time screen sharing or window sharing.
JA9-91-504 3 20714~1 The objectives of this invention are accomplished by redirecting subroutines calls and messages of applications and system softwares between interconnected personal computers in a distributed system ( that is, copying subroutines call etc. in one personal computer and transferring the same -to other remote personal computers).
In this method, only one personal computer runs applications and other personal computers do not need to run the same applications.In this method, instead of directly sending screen data of applications to remote personal computers, system software events are captured and redirected to remote personal computers for processing. On rem~te personal computers, system software events are captured and forwarded to applications through the network for processing as if they have occurred on the personal computer running applications.
The invention will be more clearly appreciated from the following detailed description taken in conjunction with the appended drawings, wherein:
Fig.l is a block diagram of a typical environment in which the system according to the invention is used;
Eig. 2 is a block diagram of typical hardware and software for a personal computer on which the invention is operated;
Fig. 3 is a block diagram of typical software components needed in each personal computer connected to a network;
Fig.4 is a block diagram of the configuration of the event redirection 3 in Fig. 2 for the master personal computer;
Fig. 5 is a block diagram for the configuration of the event redirection 3 in Fig. 2 for the slave personal computer;
Fig.6 is a block diagram of software components needed in the master personal computer and the sl~ave personal computers by the API redirection;
JA9-91-504 4 20~51 Fig. 7 is a flowchart of the processing routines for the API
redirection at the master personal computer;
Fig. 8 is a flowchart of the processing routines for the API
redirection at the slave personal computers;
Fig. 9 is a block diagram of software components needed in the master personal computer and the slave personal computers by the message redirection;
Fig. lO is a flowchart of a processing routine for the message redirection at the master personal computer;
Fig. 11 is a flowchart of a processing routine for the message redirection at the slave personal computers;
Fig. 12 is a flowchart of a message reading routine at each slave personal computer;
Fig. 13 is a drawing illustrating a snapshot of of the window of an example; and, Fig. 14 is a block diagram of an example implementing the event redirection.
Figure 1 shows a typical environment in which the system according to the invention is used by users. In Figure l, the system consists of personal computers interconnected by a network (for example, locally by a local area network (LAN) or remotely by ISDN ). A typical user runs an - application on one personal computer and, through the communication support of the network, shares the information in the application windows with other users in the network.
That is, same application windows with same contents are displayed on each user s screen.
Since the communication support of the network used in this system is simple function that can be found on most personal computers, it will not be described any more.
. .~ , ~ , . ~
-Figure 2 shows the overall system configuration of each personal computer on which the system of the invention is operated. In this system, each personal computer 1 may be a PS/55. of IBM Japan, for example, which consists of a processor 5, a display device 6, a keyboard 7, a mouse device 8, and a network adapter 9. The operating system 2 may be an OS/2~ of IBM Japan, for example, which includes a Presentation Manager~
10 managing interaction between input devices (a keyboard 7, a mouse device 8, etc.) and a user. The presentation manager 10 also provides Application Program Interface (API) for drawing and managing windows on the display device 6. The Event Redirection 3, which w~ll be detailed later, is a feature that is used to support the screen sharing between users on the network. The Applications 4 are the program (for example, a desktop presentation) used by an user for displaying some information on the screen.
Figure 3 shows the software components needed in each personal computer connected by a network. In Figure 3, an application program is run only on one personal computer called master personal computer, and the contents of the applicatLon's windows are reproduced on other personal computers called slave personal computers, by the event redirections resided in each personal computer. On slave personal computers, applications are not needed to be run.
Figure 4 and Figure 5 illustrate the software components of the master personal computer and the slave personal computer in more details. In a message-driven window system (for example, the Presentation Manager of OS~2), an application program obtains data from input devices 11 (keyboard, mouse device, etc.) in the form of messages (keyboard message, mouse message, etc.) that the window manager sends to the program through a message queue 12. To show and manipulate data on the display device or to use system services, an application program 4 uses the application program interface (API) provided by a window manager and an operating system 2. For example, in the Presentation Manager of OS/2, API subroutines for windows and graphics are grouped into two libraries called PMWin and PMGpi, respectively.
In Figure 4, the event redirection 3 is in between the applications 4 and the Presentation Manager and the operating system 2. The event redirection 3 is composed of an API
redirection 14, a message redirection 15, and an event redirection manager 13. The API redirection 14 will intercept API calls invoked from applications. The message redirection 15 will intercept messages read by applications from the message queue 12. The intercepted messages and API calls are sent through the network by the event redirection 3 from the master personal computer to other slave personal computers. The event redirection manager 13 will manage some information related to the API calls and the messages.
At slave personal computers (Figure 5), messages and API calls sent from the master personal computer are received by the event redirection 3. These messages and API calls are used for creating application windows on the display devices 6 and for simulating the interaction of applications at slave personal computers.
The following describes the detail operations of the event redirection.
Figure 6 is to illustrate the configuration of the API
redirection in each personal computer connected by a network.
When an API call is being invoked by applications in the master personal computer, it is intercepted and sent to slave personal computers through the network.
It will be first explained how the processing routines of the API redirection are executed when an API call of the Presentation Manager and the operating system is invoked by applications at the master personal computer, and then how an API call sent from the master personal computer is executed on each slave personal computer.
[API Redirection Routine At Master personal computer (Figure 7)]
On the master personal computer, when an application invokes an API call, this API call is intercepted by the API
- JA9-91-504 7 ~ ~ 7 ~
redirection 14 (step S11), together with its parameters. The event redirection manager 13 passes this API call to the Presentation Manager and the operating system for execution, and then gets the results, if it exists, returned by this API
call (step S12). If it is necessary, the information (for example, its parameters and its results) is kept by the event redirection manager (step S13) for later use. The API call together with its parameters and results are sent to each slave personal computer through the network (step S14). If the API
call returns some results, these results are returned to the application (step S15). Then, the routine is terminated (step S16). From the application's point of view, the processing of the API call is the same as if this API call is directly executed by the Presentation Manager and the operating system.
That is, the interception of the API call and the transmission of this API call to other slave personal computers, for example, done by the API redirection are transparent to the applications.
[API Redlrection Routine At Each slave personal computer - (Figure 8)]
On each slave personal computer, the API call and its information sent from the master personal computer are received by the event redirection manager 13 (step S21). Since some parameters sent from the master personal computer are only valid for the Presentation Manager and the operating system of that master personal computer, these parameters are converted to the local parameters of each slave personal computer by the event redirection manager 13 (step S22) by using the information previously stored. The event redirection manager 13 passes this API call together with its local parameters to the Presentation Manager and the operating system for execution, and then gets the results, if it exists, returned by this API call (step S23). If it is necessary, the information (for example, its parameters and its results) is kept by the event redirection manager (step S24) for later use (at step S22). Then, the routine is terminated (step S25). As the result of the execution of the API call on each slave personal computer, the output data, for example, to the display device of each '~ -JA9-91-504 8 2 ~ 7 ~
slave personal computer are the same as the output data to ~~ the display device of the master personal computer. That _-~ ~ is, th~ users at the master personal computer and slave personal computers see the same output data on their display device.
Figure 9 is to illustrate the configuration of the message redirection in each personal computer connected by a network. When a message is being delivered to applications in the master personal computer, it is intercepted and sent to slave personal computers through the network. At each slave personal computer, when a message is read by the event redirection manager, this message is also sent through the network to the application s message queue resided in the master personal computer. This message will be retrieved by the application.
First, it will be explained how the processing routines of -~ message redirection are executed when a message for the applications is intercepted at the master personal computer, and then how a message sent from the master personal computer is processed on each slave personal computer.
[Message Redirection Routine At Master personal computer (~igure 10)]
On the master personal computer, when an application reads a message from the message queue 12, this message is intercepted by the message redirection 15 (step S31). Based on the information associated with each message, each intercepted message is checked whether or not it is necessary to send it to each slave personal computer (step S32). If the message is needed to be sent to each slave - personal computer, the event redirection manager sends this --- - message together with its parameters to each slave personal computer (step S34). Then, the routine is terminated (step S33).
[Message Receiving Routine At Each slave personal computer [Figure 11) ]
' -JA9-91-504 9 ~ ? ~ ~
On each slave personal computer, a message sent from the master personal computer is received by the event redirection manager 13 (step S41). Since some parameters of the intercepted message sent from the master personal computer are only valid for the Presentation Manager and the operating system of that master personal computer, these parameters are converted to the local parameters of each slave personal computer by the event redirection manager 13 (step S42) by using the information previously collected. The event redirection manager 13 sends this message together with its local parameters to the object in each slave personal computer, and then gets the results, if it exists, returned by this message (step S43). If it is necessary, the information (for example, its parameters and its results) is kept by the event redirection manager (step S44) for later use (at step S42). Then, the routine is terminated (step S45).
[Message Reading Routine At Each slave personal computer (Figure 12)]
On each slave personal computer, the event redirection creates the same ob;ects (for example, windows, menus, buttons) as those created by an application on the master personal computer. The objects on each slave personal computer are managed and controlled by the event redirection manager. Like the objects created by an application, each object on each slave personal computer retrieves a message from the message queue 12. Since the subroutines to read and process messages of each object are provided by the event redirection manager, a message retrieved by an object can be intercepted for sending to the application on the master personal computer through the network. Figure 12 is to illustrate how a message retrieved by an object on each slave personal computer is processed. On each slave personal computer, when an object reads a message from the message queue 12, the event redirection manager checks whether or not it is necessary to send this message to the master personal computer (step S52) based on the information associated with the message. If the message is needed to be sent to the master personal computer, the event JA9-91-504 10 ~ ~ 7 ~
redirection manager converts the message's parameters to the parameters for the master personal computer tstep S54), and then it sends this message together with its converted parameters to the master personal computer (step S55).
Then, tne routine is terminated (step S53).
We will now describe, merely as one example, the implementation of a prototype called Real-Time Presentation ~RTP) system that is based on the event redirection described in this invention.
The RTP p~ototype runs on two IBM PS/55 connected by ISDN or by IBM Token-Ring network. Each IBM PS/55 runs Operating System 2 (0S/2) and Presentation Manager (OS/2 PM) as its operating system and its window manager. The RTP prototype is mainly composed of a foil browser and a control program which correspond to Applications 4 and to Event Redirection 3 of Figure 2, respectively. The foil browser is a application used for browsing a package of foils prepared in advance. Figure 13 shows a snapshot of the window of the foil browser and two button objects called "Previous" and Next for flipping foils backwards and forwards.
Note that the foil browser is a stand-alone application like other applications of 0S/2 that can be run without the RTP
control program. However, with the support of the RTP
control program which implements the event redirection mechanism described in this invention, a user called presenter on the master personal computer can use this foil browser to do a real-time desktop presentation to a remote user called listener on the slave personal computer. That is, even if there is no foil browser run on the slave personal computer, the screen sharing or window sharing on the master and slave personal computers can be realized by the RTP prototype.
In the following, the implementation of the event redirection mechanism of the RTP prototype will be described.
JA9-91-504 11 ~Q7 ~
OS/2 provides a mechanism called "dynamic linking" that allows a program s external references to subroutines to be resolved either when the program is loaded, or later at run time when the subroutines are actually called by the program. Subroutines of OS/2 are kept in a special library called ~ynamic Link Library (DLL). For example, API ca]ls of OS/2 PM for creating windows and for drawing graphics are provided by DLLs called PMWin and PMGpi, respectively. For an application, any DLL (regardless of its origin) is indistinguishable from a component of the operating system.
The DLL in OS/2 allows users to extend or even to redefine the functions (by keeping the same calling sequences) of its subroutines without changing the applications themselves. In the RTP prototype, new DLLs are developed to intercept API
calls and messages of OS/2 PM.
Figure 14 is to illustrate the relevant steps for realizing the screen sharing in the RTP prototype.
[Distribution of foils during setup]
Foils are normally prepared hefore the presentation taking place by using a foil editor. Therefore, these foils are available and can be transmitted during the setup of the presentation (step S81~. The purpose of sending foils in advance is to reduce the time delay when foils are displayed on the slave personal computer. When the si2e of foil data is small and the bandwidth of the network is high enough to send foils with small delay, foils can be transmitted on demand to the slave personal computer.
[Displaying foils on the master and slave personal computers]
Since the foil browser is run on the master personal computer, the presenter uses this program to display foils on the screen. When a foil is showed in a window, a series of OS/2 PM calls are made by the foil browser. To simplifying the description, suppose that to show a foil in ri its window, the foil browser on the master personal computer will use a subroutine called "LoadFoil" to load a foil from ' -- ~
JA9-91-504 12 2Q71 ~51 a file into memory, and then it will use a subroutine called "ShowFoil" to display the contents of a foil from memory into a window.
When the foil browser calls "LoadFoil" subroutine, the API
redirection on the master personal computer intercepts this call (s'ep S82), passes it to OS/2 PM for execution (step S83), and then sends it to the RTP prototype on the slave personal computer through the network (step S84). When the step S83 is finished, a foil is loaded into memory of the master personal computer. In the slave personal computer, -- the call to "LoadFoil" subroutine sent from the master --- personal computer is received by the RTP prototype and is passed to OS/2 PM (step S85) which will load into memory a foil from the file sent during setup (step S81) of the presentation. As the result, an identical foil is loaded on both master and slave personal computers.
Similarly, the call to "ShowFoil" subroutine by the foil browser on the master personal computer is intercepted (step S86) and is passed to OS/2 PM (step S87) which will show the loaded foil into a window. This call to "ShowFoil"
subroutine is sent to the RTP prototype on the slave personal computer (step S84) and is executed by OS/2 PM
(step S88). As the result, an identical foil is showed on both master and slave personal computers.
[Flipping foils on the master and slave personal computers]
If the presenter or the listener presses "Previous" or "Next" button object in the window, OS/2 will detect the button-pressed event and will send button-pressed event information in the form of an OS/2 message to the foil browser on the master personal computer or to the RTP
prototype on the slave personal computer, respectively. If the foil browser receives the button-pressed message, it will call OS/2 PM s subroutines to do the flipping of a foil. By the API redirection of the RTP prototype, the same OS/2 PM s subroutines are also executed by OS/2 PM on the slave personal computer and the foil is also flipped at the listener's side. If the RTP prototype on the slave personal -JA9-91-504 13 2 ~ 7 ~
computer receives the button-pressed message when the listener presses "Previous" or "Next" button object for flipping a foil, this message will be sent from the slave personal computer by the message redirection of the RTP
prototype to the foil browser on the master personal computer. When the foil browser receives this message, it will flip the foil in the same way as if the presenter has pressed the button object on the foil browser s window. That is, the actual execution of flipping a foil is done at the presenter s side, although the flipping operation is done by the listener.
This example shows that the event redirection mechanism described in this invention can be used to support the screen sharing or window sharing of stand-alone applications. Note that there is no foil browser on the slave personal computer and that the foil browser is an independent and stand-alone application like other programs of OS/2 that can be run without the RTP control program.
That is, the foil browser is developed without needing to know about the network nor to explicitly support the screen sharing on both master and slave personal computers. The generation of the screen on the slave personal computer for supporting the screen sharing is transparent to the applications and is done by the RTP prototype which implements the event redirection mechanism described in this invention.
Although in the above description personal computers are divided into masters and slaves, each personal computer can be used either a master or slave by installing a required software component into the personal computer. Further the present invention enables not only sharing of a screen and window but also sharing of speech inputting and outputting.
Further when the master personal computer is set up to receive messages from only particular slave personal computers, manipulation to the application is allowed for only the particular slave personal computers and unexpected conflicts among manipulation at different personal computers can be avoided.
!, .
JA9-91-504 14 2071~1 As described above, according to the present invention, processors in a distributed processing system can share stand-alone applications.
Claims (24)
- The embodiments of the invention in which an exclusive property or privilege is claimed are defined as follows:
l. A method of simulating the execution of an application program, designed to execute on a single computer, on a plurality of interconnected computers, said method comprising the steps of:
creating, on each one of said computers, an event redirection unit including an application procedure interface redirection element, and a message redirection element;
executing said application program on one of said computers;
intercepting, with said application procedure interface redirection element of said execution computer, a command issued from said application program;
redirecting, with said redirection unit of said execution computer, said intercepted command to each one of said computers;
and displaying identical graphical information on each one of said display devices, said graphical information being generated from executing said redirected commands on said execution computer and said non-execution computers, respectively. - 2. The method of claim 1 wherein said step of intercepting, with said application interface redirection element of said execution computer includes the step of:
intercepting, with said application procedure interface redirection element of said execution computer, an application procedure interface call issued by said application program. - 3. The method of claim 2 wherein said step of redirecting, with said redirection unit of said execution computer, said intercepted command includes the step of:
redirecting, with said redirection unit of said execution computer, said intercepted application procedure interface call to said execution computer and said non-execution computers. - 4. The method of claim 3 further comprising the step of:
receiving said redirected application procedure interface call in said application procedure interface redirection element of each one of said non-execution computers. - 5. The method of claim 4 wherein said step of:
displaying identical graphical information includes the step of:
displaying identical graphical information on each one of said display devices, said graphical information corresponding to the execution of said redirected application procedure interface call on said execution computer and said non-execution computers, respectively. - 6. The method of claim 1 further comprising the steps of:
intercepting, with said message redirection element of said execution computer, a message representing data provided from a user input device of said execution computer; and redirecting, with said redirection unit of said execution computer, said intercepted message to each one of said computers. - 7. The method of claim 6 wherein said step of:
displaying identical graphical information includes the step of:
displaying identical graphical information on each one of said display devices, said graphical information being generated from executing said redirected commands and said redirected messages on said execution computer and said non-execution computers, respectively. - 8. The method of claim 7 further comprising the step of:
receiving said redirected messages in said message redirection element of each one of said non-execution computers. - 9. The method of claim 1 further comprising the steps of:
intercepting, with one of said message redirection elements corresponding to one of said non-execution computers, a message representing data generated from a user input device of said one of said non-execution computers; and redirecting, with one of said redirection units corresponding to said one of said non-execution computers, said intercepted message to each one of said computers. - 10. The method of claim 9 wherein said step of:
displaying identical graphical information includes the step of:
displaying identical graphical information on each one of said display devices, said graphical information being generated from executing said redirected commands and said redirected messages on said execution computer and said non-execution computers, respectively. - 11. The method of claim 10 further comprising the step of:
receiving said redirected messages in said message redirection element of each one of said non-execution computers and said message redirection element of said execution computer. - 12. A system for simulating the execution of an application program, designed to execute on a single computer, on a plurality of interconnected computers, said system comprising:
means for creating, on each one of said computers, an event redirection unit including an application procedure interface redirection element, and a message redirection element;
means for executing said application program on one of said computers;
means for intercepting, with said application procedure interface redirection element of said execution computer, a command issued from said application program;
means for redirecting, with said redirection unit of said execution computer, said intercepted command to each one of said computers; and means for displaying identical graphical information on each one of said display devices, said graphical information being generated from executing said redirected commands on said execution computer and said non-execution computers, respectively. - 13. The system of claim 12 wherein said means for intercepting, with said application interface redirection element of said execution computer includes:
means for intercepting, with said application procedure interface redirection element of said execution computer, an application procedure interface call issued by said application program. - 14. The system of claim 13 wherein said means for displaying identical graphical information includes:
means for displaying identical graphical information on each one of said display devices, said graphical information corresponding to the execution of said redirected application procedure interface call on said execution computer and said non-execution computers, respectively. - 15. The system of claim 12 further comprising:
means for intercepting, with said message redirection element of said execution computer, a message representing data provided from a user input device of said execution computer; and means for redirecting, with said redirection unit of said execution computer, said intercepted message to each one of said computers. - 16. The system of claim 15 wherein said means for displaying identical graphical information includes:
means for displaying identical graphical information on each one of said display devices, said graphical information being generated from executing said redirected commands and said redirected messages on said execution computer and said non-execution computers, respectively. - 17. The system of claim 12 further comprising:
means for intercepting, with one of said message redirection elements corresponding to one of said non-execution computers, a message representing data generated from a user input device of said one of said non-execution computers; and means for redirecting, with one of said redirection units corresponding to said one of said non-execution computers, said intercepted message to each one of said computers. - 18. The system of claim 17 wherein said means for displaying identical graphical information includes:
means for displaying identical graphical information on each one of said display devices, said graphical information being generated from executing said redirected commands and said redirected messages on said execution computer and said non-execution computers, respectively. - 19. A computer program product for use with a data processing system having a plurality of interconnected computers, said computer program product comprising:
a computer usable medium having computer readable program code means embodied in said medium for simulating the execution of an application program, designed to execute on a single computer, on said plurality of interconnected computers, said computer readable program code means including:
computer readable program code means for creating, on each one of said computers said application program being designed to execute on a single computer, an event redirection unit including an application procedure interface redirection element, and a message redirection element;
computer readable program code means for executing said application program on one of said computers; and computer readable program code means for intercepting, with said application procedure interface redirection element of said execution computer, a command issued from said application program;
computer readable program code means for redirecting, with said redirection unit of said execution computer, said intercepted command to each one of said computers; and computer readable program code means for displaying identical graphical information on each one of said display devices, said graphical information being generated from executing said redirected commands on said execution computer and said non-execution computers, respectively. - 20. The computer program product of claim 19 wherein said computer readable program code means for intercepting, with said application interface redirection element of said execution computer includes:
computer readable program code means for intercepting, with said application procedure interface redirection element of said execution computer, an application procedure interface call issued by said application program. - 21. The computer program product of claim 19 wherein said computer readable program code means further comprises:
computer readable program code means for intercepting, with said message redirection element of said execution computer, a message representing data provided from a user input device of said execution computer; and computer readable program code means for redirecting, with said redirection unit of said execution computer, said intercepted message to each one of said computers. - 22. The computer program product of claim 21 wherein said computer readable program code means for displaying identical graphical information includes:
computer readable program code means for displaying identical graphical information on each one of said display devices, said graphical information being generated from executing said redirected commands and said redirected messages on said execution computer and said non-execution computers, respectively. - 23. The computer program product of claim 19 wherein said computer readable program code means further comprises:
computer readable program code means for intercepting, with one of said message redirection elements corresponding to one of said non-execution computers, a message representing data generated from a user input device of said one of said non-execution computers; and computer readable program code means for redirecting, with one of said redirection units corresponding to said one of said non-execution computers, said intercepted message to each one of said computers. - 24. The computer program product of claim 23 wherein said computer readable program code means for displaying identical graphical information includes:
computer readable program code means for displaying identical graphical information on each one of said display devices, said graphical information being generated from executing said redirected commands and said redirected messages on said execution computer and said non-execution computers, respectively.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP91/222394 | 1991-08-08 | ||
JP3222394A JPH0546568A (en) | 1991-08-08 | 1991-08-08 | Dispersion application execution device and method |
Publications (2)
Publication Number | Publication Date |
---|---|
CA2071451A1 CA2071451A1 (en) | 1993-02-09 |
CA2071451C true CA2071451C (en) | 1998-10-27 |
Family
ID=16781686
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CA002071451A Expired - Fee Related CA2071451C (en) | 1991-08-08 | 1992-06-17 | Application distributed execution apparatus and method |
Country Status (4)
Country | Link |
---|---|
US (1) | US5537548A (en) |
EP (1) | EP0527590A3 (en) |
JP (1) | JPH0546568A (en) |
CA (1) | CA2071451C (en) |
Families Citing this family (128)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020091850A1 (en) | 1992-10-23 | 2002-07-11 | Cybex Corporation | System and method for remote monitoring and operation of personal computers |
US5920694A (en) * | 1993-03-19 | 1999-07-06 | Ncr Corporation | Annotation of computer video displays |
US5649104A (en) * | 1993-03-19 | 1997-07-15 | Ncr Corporation | System for allowing user of any computer to draw image over that generated by the host computer and replicating the drawn image to other computers |
EP0622930A3 (en) * | 1993-03-19 | 1996-06-05 | At & T Global Inf Solution | Application sharing for computer collaboration system. |
US5835713A (en) * | 1993-03-19 | 1998-11-10 | Ncr Corporation | Remote collaboration system for selectively locking the display at remote computers to prevent annotation of the display by users of the remote computers |
EP0739558B1 (en) * | 1993-06-09 | 2003-04-16 | BTG International Inc. | Method and apparatus for multiple media digital communication system |
US6738357B1 (en) | 1993-06-09 | 2004-05-18 | Btg International Inc. | Method and apparatus for multiple media digital communication system |
DE4417588A1 (en) * | 1993-08-30 | 1995-03-02 | Hewlett Packard Co | Method and apparatus for capturing and forwarding window events to a plurality of existing applications for simultaneous execution |
JP2544581B2 (en) * | 1994-02-14 | 1996-10-16 | インターナショナル・ビジネス・マシーンズ・コーポレイション | Conference system control method, conference device, and conference system |
US5854898A (en) | 1995-02-24 | 1998-12-29 | Apple Computer, Inc. | System for automatically adding additional data stream to existing media connection between two end points upon exchange of notifying and confirmation messages therebetween |
US5732269A (en) * | 1995-04-21 | 1998-03-24 | International Business Machines Corporation | Data adapter transparent to application I/O path |
US5713045A (en) * | 1995-06-29 | 1998-01-27 | Object Technology Licensing Corporation | System for processing user events with input device entity associated with event producer which further links communication from event consumer to the event producer |
US5721842A (en) * | 1995-08-25 | 1998-02-24 | Apex Pc Solutions, Inc. | Interconnection system for viewing and controlling remotely connected computers with on-screen video overlay for controlling of the interconnection switch |
US5781731A (en) * | 1995-09-21 | 1998-07-14 | Hitachi, Ltd. | Schedule management support system |
US7555529B2 (en) * | 1995-11-13 | 2009-06-30 | Citrix Systems, Inc. | Interacting with software applications displayed in a web page |
US6219045B1 (en) * | 1995-11-13 | 2001-04-17 | Worlds, Inc. | Scalable virtual world chat client-server system |
US6950991B2 (en) * | 1995-11-13 | 2005-09-27 | Citrix Systems, Inc. | Interacting with software applications displayed in a web page |
US6437803B1 (en) * | 1998-05-29 | 2002-08-20 | Citrix Systems, Inc. | System and method for combining local and remote windows into a single desktop environment |
US6088515A (en) | 1995-11-13 | 2000-07-11 | Citrix Systems Inc | Method and apparatus for making a hypermedium interactive |
US5909545A (en) * | 1996-01-19 | 1999-06-01 | Tridia Corporation | Method and system for on demand downloading of module to enable remote control of an application program over a network |
JPH09269931A (en) * | 1996-01-30 | 1997-10-14 | Canon Inc | Cooperative work environment constructing system, its method and medium |
US7080127B1 (en) * | 1996-03-06 | 2006-07-18 | Hickman Paul L | Method and apparatus for computing within a wide area network |
US6173337B1 (en) * | 1996-03-08 | 2001-01-09 | Apple Computer, Inc. | Method and apparatus for relaying events intended for a first application program to a second application program |
US5784643A (en) * | 1996-03-28 | 1998-07-21 | International Business Machines Corporation | System incorporating program for intercepting and interpreting or altering commands for generating I/O activity for enabling real-time user feedback by sending substitute characters to modem |
US6173315B1 (en) * | 1996-03-29 | 2001-01-09 | Intel Corporation | Using shared data to automatically communicate conference status information within a computer conference |
JP2000516053A (en) * | 1996-05-07 | 2000-11-28 | ウェブライン コミュニケーションズ コーポレーション | Method and apparatus for integrating Internet multimedia content with telephone and audio communications |
US6134601A (en) * | 1996-06-17 | 2000-10-17 | Networks Associates, Inc. | Computer resource management system |
US6832380B1 (en) * | 1996-06-28 | 2004-12-14 | Tarantella, Inc. | Client-server application partitioning with metering technique for distributed computing |
US5862330A (en) * | 1996-07-16 | 1999-01-19 | Lucent Technologies Inc. | Technique for obtaining and exchanging information on wolrd wide web |
EP0825506B1 (en) | 1996-08-20 | 2013-03-06 | Invensys Systems, Inc. | Methods and apparatus for remote process control |
US6240444B1 (en) * | 1996-09-27 | 2001-05-29 | International Business Machines Corporation | Internet web page sharing |
US5805829A (en) * | 1996-10-01 | 1998-09-08 | International Business Machines Corp | Process for running applets over non-IP networks |
US5974442A (en) * | 1996-12-31 | 1999-10-26 | Intel Corporation | Communication technique for interactive applications over a network with delays |
US6662210B1 (en) | 1997-03-31 | 2003-12-09 | Ncr Corporation | Method of remote collaboration system |
US6304895B1 (en) | 1997-08-22 | 2001-10-16 | Apex Inc. | Method and system for intelligently controlling a remotely located computer |
US20010044843A1 (en) * | 1997-10-28 | 2001-11-22 | Philip Bates | Multi-user computer system |
US20020059468A1 (en) * | 1999-11-18 | 2002-05-16 | Freeny Charles C. | Split personal computer system |
US6215486B1 (en) * | 1998-07-20 | 2001-04-10 | Hewlett-Packard Company | Event handling in a single logical screen display using multiple remote computer systems |
US6249294B1 (en) * | 1998-07-20 | 2001-06-19 | Hewlett-Packard Company | 3D graphics in a single logical sreen display using multiple computer systems |
JP2000047878A (en) * | 1998-07-31 | 2000-02-18 | Sony Computer Entertainment Inc | Data processing system, its method, data transmitting/ receiving device and its method |
US6513071B2 (en) * | 1998-08-13 | 2003-01-28 | International Business Machines Corporation | Method for providing kiosk functionality in a general purpose operating system |
EP1116086B1 (en) | 1998-09-22 | 2007-02-21 | Avocent Huntsville Corporation | System for accessing personal computers remotely |
US20060069657A1 (en) * | 1998-10-01 | 2006-03-30 | Freeny Charles C Jr | Multiple customer and multiple location PC service provider system |
US6928469B1 (en) | 1998-12-29 | 2005-08-09 | Citrix Systems, Inc. | Apparatus and method for determining a program neighborhood for a client node in a client-server network using markup language techniques |
US7089530B1 (en) | 1999-05-17 | 2006-08-08 | Invensys Systems, Inc. | Process control configuration system with connection validation and configuration |
WO2000070531A2 (en) | 1999-05-17 | 2000-11-23 | The Foxboro Company | Methods and apparatus for control configuration |
US6788980B1 (en) | 1999-06-11 | 2004-09-07 | Invensys Systems, Inc. | Methods and apparatus for control using control devices that provide a virtual machine environment and that communicate via an IP network |
KR100294889B1 (en) * | 1999-06-19 | 2001-07-12 | 윤종용 | Slave device and data sharing method |
US6378014B1 (en) | 1999-08-25 | 2002-04-23 | Apex Inc. | Terminal emulator for interfacing between a communications port and a KVM switch |
US6356933B2 (en) * | 1999-09-07 | 2002-03-12 | Citrix Systems, Inc. | Methods and apparatus for efficiently transmitting interactive application data between a client and a server using markup language |
US6895591B1 (en) | 1999-10-18 | 2005-05-17 | Unisys Corporation | Virtual file system and method |
US7296274B2 (en) * | 1999-11-15 | 2007-11-13 | Sandia National Laboratories | Method and apparatus providing deception and/or altered execution of logic in an information system |
GB2357349B (en) * | 1999-12-17 | 2002-06-12 | Inventec Corp | Method of using multi-step processing in message processing |
DE50115341D1 (en) * | 2000-04-13 | 2010-03-25 | Infineon Technologies Ag | DC CONVERTER |
US6785726B1 (en) | 2000-05-08 | 2004-08-31 | Citrix Systems, Inc. | Method and apparatus for delivering local and remote server events in a similar fashion |
US6789112B1 (en) | 2000-05-08 | 2004-09-07 | Citrix Systems, Inc. | Method and apparatus for administering a server having a subsystem in communication with an event channel |
US6785713B1 (en) | 2000-05-08 | 2004-08-31 | Citrix Systems, Inc. | Method and apparatus for communicating among a network of servers utilizing a transport mechanism |
US6922724B1 (en) | 2000-05-08 | 2005-07-26 | Citrix Systems, Inc. | Method and apparatus for managing server load |
US20020038388A1 (en) * | 2000-09-13 | 2002-03-28 | Netter Zvi Itzhak | System and method for capture and playback of user interaction with web browser content |
US20020105548A1 (en) * | 2000-12-12 | 2002-08-08 | Richard Hayton | Methods and apparatus for creating a user interface using property paths |
US20020112181A1 (en) * | 2000-12-12 | 2002-08-15 | Smith Mark Elwin | Multilevel secure network access system |
GB0108044D0 (en) * | 2001-03-30 | 2001-05-23 | British Telecomm | Application synchronisation |
AU2002251205A1 (en) * | 2001-03-30 | 2002-10-15 | British Telecommunications Public Limited Company | Multi-modal interface |
US7433458B2 (en) * | 2001-06-29 | 2008-10-07 | At&T Intellectual Property I, L.P. | System and method for viewing contents via a computer network during a telephone call |
US6857505B1 (en) | 2001-07-25 | 2005-02-22 | Ncr Corporation | Apparatus and method for utilizing an existing software application during operation of a convertible checkout terminal |
US7698713B2 (en) | 2001-09-20 | 2010-04-13 | Google Inc. | Altered states of software component behavior |
US8261095B1 (en) | 2001-11-01 | 2012-09-04 | Google Inc. | Methods and systems for using derived user accounts |
US7051340B2 (en) * | 2001-11-29 | 2006-05-23 | Hewlett-Packard Development Company, L.P. | System and method for isolating applications from each other |
US7406542B2 (en) * | 2002-03-01 | 2008-07-29 | Google Inc. | Method and system for assured denotation of application semantics |
US8135843B2 (en) * | 2002-03-22 | 2012-03-13 | Citrix Systems, Inc. | Methods and systems for providing access to an application |
EP1488601A1 (en) * | 2002-03-28 | 2004-12-22 | British Telecommunications Public Limited Company | Synchronisation in multi-modal interfaces |
US6873692B1 (en) * | 2002-03-29 | 2005-03-29 | Bellsouth Intellectual Property Corporation | Telephone synchronization with software applications and documents |
WO2003089995A2 (en) | 2002-04-15 | 2003-10-30 | Invensys Systems, Inc. | Methods and apparatus for process, factory-floor, environmental, computer aided manufacturing-based or other control system with real-time data distribution |
US7137121B2 (en) * | 2002-04-19 | 2006-11-14 | Equator Technologies, Inc. | Data-processing circuit and method for switching between application programs without an operating system |
US7191469B2 (en) * | 2002-05-13 | 2007-03-13 | Green Border Technologies | Methods and systems for providing a secure application environment using derived user accounts |
WO2003104954A2 (en) | 2002-06-06 | 2003-12-18 | Green Border Technologies | Methods and systems for implementing a secure application execution environment using derived user accounts for internet content |
US7062764B2 (en) | 2002-06-17 | 2006-06-13 | Microsoft Corporation | System and method for manipulating offline software |
US7467018B1 (en) | 2002-11-18 | 2008-12-16 | Rockwell Automation Technologies, Inc. | Embedded database systems and methods in an industrial controller environment |
US8127252B2 (en) * | 2003-11-07 | 2012-02-28 | Microsoft Corporation | Method and system for presenting user interface (UI) information |
US7644367B2 (en) * | 2003-05-16 | 2010-01-05 | Microsoft Corporation | User interface automation framework classes and interfaces |
KR100512742B1 (en) * | 2003-07-25 | 2005-09-07 | 삼성전자주식회사 | Portable computer |
US7259482B2 (en) | 2003-09-24 | 2007-08-21 | Belkin International, Inc. | Distance extender and method making use of same |
US7817163B2 (en) * | 2003-10-23 | 2010-10-19 | Microsoft Corporation | Dynamic window anatomy |
US7839419B2 (en) * | 2003-10-23 | 2010-11-23 | Microsoft Corporation | Compositing desktop window manager |
US7761923B2 (en) | 2004-03-01 | 2010-07-20 | Invensys Systems, Inc. | Process control methods and apparatus for intrusion detection, protection and network hardening |
US7424720B2 (en) * | 2004-03-25 | 2008-09-09 | International Business Machines Corporation | Process and implementation for dynamically determining probe enablement using out of process correlating token |
US7948448B2 (en) | 2004-04-01 | 2011-05-24 | Polyvision Corporation | Portable presentation system and methods for use therewith |
US7834819B2 (en) | 2004-04-01 | 2010-11-16 | Polyvision Corporation | Virtual flip chart method and apparatus |
US7587452B2 (en) | 2004-04-23 | 2009-09-08 | At&T Intellectual Property I, L. P. | Methods, systems, and products for network conferencing |
KR20040079341A (en) * | 2004-04-28 | 2004-09-14 | (주)신엠 | Screen sharing method and service method thereof |
US7587037B2 (en) * | 2004-05-26 | 2009-09-08 | At&T Intellectual Property I, L.P. | Network conferencing using method for distributed computing and/or distributed objects for presentation to a mobile communications device |
US20050278424A1 (en) * | 2004-05-26 | 2005-12-15 | Wesley White | Network conferencing using method for concurrent real time broadcast and distributed computing and/or distributed objects |
US7526524B2 (en) | 2004-05-26 | 2009-04-28 | At&T Intellectual Property I, L.P. | Network conferencing using method for distributed computing and/or distributed objects |
US7694228B2 (en) | 2004-05-26 | 2010-04-06 | At&T Intellectual Property I, L.P. | Methods, systems, and products for network conferencing |
US7403969B2 (en) * | 2004-05-26 | 2008-07-22 | At&T Delaware Intellectual Property, Inc. | Network conferencing using method for distributed computing and/or distributed objects to intermediate host for presentation to a communications device |
US20060133412A1 (en) * | 2004-12-22 | 2006-06-22 | Rockwell Automation Technologies, Inc. | Integration of control and business applications using integration servers |
US7509419B2 (en) * | 2005-01-13 | 2009-03-24 | International Business Machines Corporation | Method for providing remote access redirect capability in a channel adapter of a system area network |
US7706895B2 (en) * | 2005-02-25 | 2010-04-27 | Rockwell Automation Technologies, Inc. | Reliable messaging instruction |
US7565351B1 (en) | 2005-03-14 | 2009-07-21 | Rockwell Automation Technologies, Inc. | Automation device data interface |
US7233830B1 (en) | 2005-05-31 | 2007-06-19 | Rockwell Automation Technologies, Inc. | Application and service management for industrial control devices |
US7783702B2 (en) * | 2005-11-30 | 2010-08-24 | Microsoft Corporation | Using a mobile phone to control a personal computer |
JP2007226398A (en) * | 2006-02-22 | 2007-09-06 | Hitachi Ltd | Database connection management method and computer system |
US7860857B2 (en) * | 2006-03-30 | 2010-12-28 | Invensys Systems, Inc. | Digital data processing apparatus and methods for improving plant performance |
US20080028044A1 (en) * | 2006-07-26 | 2008-01-31 | Intellidyne, L.L.C. | System and method for file transfer |
US8009173B2 (en) | 2006-08-10 | 2011-08-30 | Avocent Huntsville Corporation | Rack interface pod with intelligent platform control |
US8427489B2 (en) | 2006-08-10 | 2013-04-23 | Avocent Huntsville Corporation | Rack interface pod with intelligent platform control |
TW200924439A (en) * | 2007-11-23 | 2009-06-01 | D Link Corp | Portable ICE relay server and its method thereof |
US7792904B2 (en) * | 2008-01-15 | 2010-09-07 | International Business Machines Corporation | Sharing material in a master-slave configuration using an instant messaging infrastructure |
CN102124432B (en) | 2008-06-20 | 2014-11-26 | 因文西斯系统公司 | Systems and methods for immersive interaction with actual and/or simulated facilities for process, environmental and industrial control |
US7941551B2 (en) * | 2009-02-25 | 2011-05-10 | Microsoft Corporation | Tunneling of remote desktop sessions through firewalls |
US8463964B2 (en) | 2009-05-29 | 2013-06-11 | Invensys Systems, Inc. | Methods and apparatus for control configuration with enhanced change-tracking |
US8127060B2 (en) | 2009-05-29 | 2012-02-28 | Invensys Systems, Inc | Methods and apparatus for control configuration with control objects that are fieldbus protocol-aware |
US9081633B2 (en) * | 2010-05-24 | 2015-07-14 | Microsoft Technology Licensing, Llc | Remote application connection sharing |
ES2439803B1 (en) * | 2012-04-19 | 2014-10-29 | Universitat Politècnica De Catalunya | Procedure, system and piece of executable code to control the use of hardware resources of a computer system |
US9733953B2 (en) | 2012-06-22 | 2017-08-15 | Microsoft Technology Licensing, Llc | API redirection for limited capability operating systems |
US9405556B2 (en) | 2012-06-28 | 2016-08-02 | Microsoft Technology Licensing, Llc | Dynamic addition and removal of operating system components |
US9866592B2 (en) | 2015-09-28 | 2018-01-09 | BlueTalon, Inc. | Policy enforcement system |
US9871825B2 (en) | 2015-12-10 | 2018-01-16 | BlueTalon, Inc. | Policy enforcement for compute nodes |
US10091212B2 (en) | 2016-03-04 | 2018-10-02 | BlueTalon, Inc. | Policy management, enforcement, and audit for data security |
US11157641B2 (en) | 2016-07-01 | 2021-10-26 | Microsoft Technology Licensing, Llc | Short-circuit data access |
US10264213B1 (en) | 2016-12-15 | 2019-04-16 | Steelcase Inc. | Content amplification system and method |
US10803190B2 (en) | 2017-02-10 | 2020-10-13 | BlueTalon, Inc. | Authentication based on client access limitation |
US10291602B1 (en) | 2017-04-12 | 2019-05-14 | BlueTalon, Inc. | Yarn rest API protection |
US10250723B2 (en) | 2017-04-13 | 2019-04-02 | BlueTalon, Inc. | Protocol-level identity mapping |
US10491635B2 (en) | 2017-06-30 | 2019-11-26 | BlueTalon, Inc. | Access policies based on HDFS extended attributes |
US11146563B1 (en) | 2018-01-31 | 2021-10-12 | Microsoft Technology Licensing, Llc | Policy enforcement for search engines |
US11005889B1 (en) | 2018-02-02 | 2021-05-11 | Microsoft Technology Licensing, Llc | Consensus-based policy management |
US11790099B1 (en) | 2018-02-09 | 2023-10-17 | Microsoft Technology Licensing, Llc | Policy enforcement for dataset access in distributed computing environment |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4479195A (en) * | 1982-09-07 | 1984-10-23 | At&T Bell Laboratories | Data conference system |
US5062059A (en) * | 1986-12-08 | 1991-10-29 | Sunriver Corporation | Apparatus and method for communication between host CPU and remote terminal |
JPS63286942A (en) * | 1987-05-19 | 1988-11-24 | Fuji Xerox Co Ltd | Device for editing browser |
US4939509A (en) * | 1988-01-25 | 1990-07-03 | At&T Company | Data conferencing arrangement for stations having keyboards and displays, using a keyboard buffer and a screen buffer |
JPH01226050A (en) * | 1988-03-04 | 1989-09-08 | Nec Corp | Data sharing control system for different operating systems |
US5280583A (en) * | 1988-05-13 | 1994-01-18 | Hitachi, Ltd. | System and method for performing interlocution at a plurality of terminals connected to communication network |
US5063500A (en) * | 1988-09-29 | 1991-11-05 | Ibm Corp. | System for executing segments of application program concurrently/serially on different/same virtual machine |
US5043919A (en) * | 1988-12-19 | 1991-08-27 | International Business Machines Corporation | Method of and system for updating a display unit |
US4953159A (en) * | 1989-01-03 | 1990-08-28 | American Telephone And Telegraph Company | Audiographics conferencing arrangement |
US5206934A (en) * | 1989-08-15 | 1993-04-27 | Group Technologies, Inc. | Method and apparatus for interactive computer conferencing |
JPH03152641A (en) * | 1989-11-08 | 1991-06-28 | Fujitsu Ltd | Reference system for document dispersed in network |
JP2791146B2 (en) * | 1989-11-15 | 1998-08-27 | 株式会社日立製作所 | Data processing device |
JP2698685B2 (en) * | 1990-03-27 | 1998-01-19 | 株式会社東芝 | Computer system remote control device |
US5293619A (en) * | 1991-05-30 | 1994-03-08 | Sandia Corporation | Method and apparatus for collaborative use of application program |
-
1991
- 1991-08-08 JP JP3222394A patent/JPH0546568A/en active Pending
-
1992
- 1992-06-17 CA CA002071451A patent/CA2071451C/en not_active Expired - Fee Related
- 1992-08-05 EP EP19920307143 patent/EP0527590A3/en not_active Withdrawn
-
1994
- 1994-06-14 US US08/259,365 patent/US5537548A/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CA2071451A1 (en) | 1993-02-09 |
US5537548A (en) | 1996-07-16 |
EP0527590A2 (en) | 1993-02-17 |
JPH0546568A (en) | 1993-02-26 |
EP0527590A3 (en) | 1993-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA2071451C (en) | Application distributed execution apparatus and method | |
US6950852B1 (en) | Method and system for sharing the browser | |
US7921430B2 (en) | System and method for intercepting, instrumenting and characterizing usage of an application programming interface | |
CA2160343C (en) | System for computer supported collaboration | |
US5966441A (en) | Method and apparatus for creating a secure autonomous network entity of a network component system | |
JP3490369B2 (en) | Content information acquisition method, collaboration system and collaboration server | |
US6553428B1 (en) | Distributed object instantiation of native objects in java | |
US7418472B2 (en) | Systems and methods for determining remote device media capabilities | |
KR19980079592A (en) | Remote operation method, a storage medium for storing a server and HTML file that is remotely operated from a terminal through a network | |
US20060015763A1 (en) | Real-time web sharing system | |
US5748894A (en) | Cooperative information processing method and apparatus utilizing local program | |
KR20030060884A (en) | Web os and web desktop | |
US7974990B2 (en) | Managing program applications | |
JPWO2003038634A1 (en) | Method, system, and computer program for collaborating between multiple computers on a network | |
Davies et al. | Supporting collaborative applications in a heterogeneous mobile environment | |
US20150029898A1 (en) | Method, apparatus, and article of manufacture for web-based control of a call server | |
US6973480B2 (en) | Mechanism for implementing server-side pluglets | |
Arons | Tools for building asynchronous servers to support speech and audio applications | |
US20040044675A1 (en) | Network system and object cooperation therein | |
Chang et al. | A large scale distributed object architecture-CORBA and COM for real time systems | |
KR100494827B1 (en) | Distributed object model based radio server with hardware-independent communication interface and communication control method using the same | |
JP2003296232A (en) | System providing contents and system, information processor, and program generating the contents | |
Lu et al. | A generic application sharing architecture based on message-oriented middleware platform | |
Saddik et al. | Collaborative working with stand-alone applets | |
Chalmers | Quality of Service in Mobile Environments |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
EEER | Examination request | ||
MKLA | Lapsed |