Monitoring and controlling applications executing in a computing node
A method and system for monitoring and controlling applications executing on computing nodes of a computing system. A status request process, one or more control processes, an untrusted application and one other application are executed on a computing node. The status request process receives and processes requests for the statuses of the untrusted and the other application. A first control process controls the execution of the untrusted application. A second control process controls the execution of the other application. The execution of the untrusted application terminates based on a failure of the untrusted application. A capability of the status request process to receive and process the requests for statuses, and a capability of the second control process to control the execution of the other application are preserved in response to the termination of the untrusted application.
Latest IBM Patents:
1. Technical Field
The present invention relates to a method and system for monitoring and controlling applications executing in a computing node of a computing system, and more particularly to a technique for monitoring and controlling a plurality of applications in a computing node of a distributed computing system, where one or more applications of the plurality of applications are untrusted applications.
2. Related Art
Conventional process monitoring tools do not include adequate built-in sandboxing features to allow proper execution of unreliable code in a distributed or clustered computing system, where the code is not tested or not exhaustively tested. Insufficient testing of code is commonplace in a text analytics platform such as the WebFountain cluster, due to the difficulty of simulating the complex computing environment. The WebFountain cluster is a large text analytics platform, which includes applications that provide crawling of the Internet, storage and access of the data resulting from the crawling, and indexing of the data. Further, inadequately tested code in such a complex computing environment leads to Byzantine faults that are not sufficiently protected against by known monitoring tools. A Byzantine fault is an arbitrary failure mode characterized by the erroneous, inconsistent and potentially malicious behavior of system components. Still further, known monitoring tools do not ensure, in a programmatic manner, that a failure of an unreliable child application that causes the child's parent application to also fail does not adversely affect critical components in the rest of the computing system (e.g., by causing or facilitating a failure of other child applications of the failed parent application). Thus, there exists a need to overcome at least one of the preceding deficiencies and limitations of the related art.
SUMMARY OF THE INVENTIONIn first embodiments, the present invention provides a method of monitoring and controlling applications executing on a plurality of computing nodes of a computing system, comprising:
executing, on a computing node of the plurality of computing nodes, a status request process included in a plurality of processes capable of being executed on the computing node;
executing, on the computing node, one or more control processes included in the plurality of processes;
executing, on the computing node, an untrusted application of a plurality of applications capable of being executed on the computing node, the executing the untrusted application including performing a first execution of the untrusted application, and the untrusted application designated as likely to experience a failure based on pre-defined criteria;
executing, on the computing node, another application of the plurality of applications, the executing the another application including performing a second execution of the another application, wherein the another application is different from the untrusted application;
receiving and processing, by the status request process, a first request for a first status of the untrusted application,
receiving and processing, by the status request process, a second request for a second status of the another application;
controlling, exclusively by a first control process of the one or more control processes, the first execution of the untrusted application;
controlling, exclusively by a second control process of the one or more control processes, the second execution of the another application;
terminating the first execution of the untrusted application based on a failure of the untrusted application; and
preserving, in response to the terminating, a capability of the status request process to perform the receiving and the processing the first request and to perform the receiving and the processing the second request, and a capability of the second control process to perform the controlling the second execution of the another application.
Advantageously, the present invention provides a technique for monitoring the status and performance, and controlling the execution of a plurality of applications on a computing node while isolating a failure of one of the applications (e.g., an untrusted application). The isolation of the failure allows the monitoring and controlling of the other applications to be preserved.
BRIEF DESCRIPTION OF THE DRAWINGS
Overview
The present invention provides a technique for monitoring and controlling a plurality of applications running on multiple computing nodes of a computing system (e.g., a distributed or clustered computing environment). One or more applications of the plurality of applications are executed on each of the computing nodes. At least one of the applications executing on the computing nodes is an untrusted application. The configuration of each computing node facilitates the isolation of a failure of an untrusted application so that the rest of the computing system is unaffected by the failure (i.e., in response to the failure, other applications and processes of the computing system do not fail and the monitoring and controlling capabilities are preserved). As used herein, an untrusted application is defined to be an application (a.k.a. process) designated as likely to fail based on pre-defined criteria. For example, an application is untrusted if the code of the application is untested or not exhaustively tested and the application is designed to be executed in a complex computing environment that is difficult to simulate (e.g., the WebFountain cluster).
The aforementioned failure isolation is provided by a first process (a.k.a. status request process) and a second process (a.k.a. control process) executing on each computing node, whereby the first process's processing of a request for any application's status is segregated from the second process's control of the execution of the application. In this way, sandboxing of the application's execution is facilitated.
System 100 provides resources shared among computing nodes 102-112. The shared resources can include, for example, shared data storage devices (not shown). Network 114 can be any system that provides communication among computing nodes 102-112, such as a local area network, wide area network, or global data transmission network (e.g., the Internet).
Computing Node Configurations
In one embodiment, computing node 200 (see
Comparing the computing node configurations of
In one embodiment, computing nodes 102-112 (see
In one embodiment, shared memory 212 in
Application Monitoring and Control
A plurality of processes including a status request process and one or more control processes are capable of being executed on computing node 200 (see
In step 304, one or more control processes (e.g., second process 204 of
In step 306, applications 206, 208 and 210 (see
A status request process (e.g., first process 202 of
The one or more control processes (e.g., second process 204 of
The specific commands and operations that provide the status request operations and the application control operations are described below.
In step 306, an untrusted application (e.g., application 206) fails and its execution is thereby terminated. The failure of the untrusted application is isolated from the rest of the system 100 (see
Segregation of status request and application control operations facilitates the preservation of the capabilities to perform such operations in response to a failure of an untrusted application. This segregation is provided by performing the status request operations exclusively by the status request process (e.g., first process 202 of
In one embodiment, computing node 240 (see
In the configuration of
In one embodiment, first process 202 (see
The capabilities of first process 202 (see
(1) automatically restart second process 204 (see
(2) start an application 206, 208 or 210 (see
(3) stop an application 206, 208 or 210 (see
(4) clean up an application 206, 208 or 210 (see
(5) obtain a log of standard-output and/or standard-error for an application 206, 208 or 210 via a corresponding standard-output and/or standard-error logging operation performed by second process 204 (see
(6) stop all of the plurality of applications 206, 208, 210 (see
(7) obtain a status of all applications of the plurality of applications 206, 208, 210 from process state portion 216 (see
(8) obtain a status of a single application 206, 208 or 210 (see
(9) restart an application 206, 208 or 210 (see
(10) shut down computing node 200 (see
The above-listed commands that start, restart, and stop one or more applications, or obtain a status of one or more applications can be initiated by first process 202, or by a process external to the computing node on which first process 202 is running.
The monitoring and control functionality of one of the second processes (e.g., second process 204 of
(a) automatically restart first process 202 (see
(b) start an application in response to the processing of command (2) listed above,
(c) restart an application in response to the processing of command (9) listed above,
(d) monitor the status or performance of an application via, for example, periodically obtaining a status of the application at pre-defined intervals,
(e) redirect standard-output from one device that was set as a default device to another device,
(f) redirect standard-error from one device that was set as a default device to another device,
(g) limit a usage of resources by an application, and
(h) send a status of an application to process state portion 216 (see
In one embodiment, operation (a) listed above is available only if the computing node that includes the first process to be restarted (e.g., first process 202 of
As compared to the commands issued by first process 202, the operations performed by the second processes (e.g., second processes 204) are simpler in functionality and require only system calls (e.g., Linux system calls), such as fork, wait, etc. This relative simplicity in functionality allows each second process to have substantially less code size and code complexity as compared to the first process. Further, the relative functional simplicity of a second process that controls an untrusted application facilitates the continued operability of the second process in response to a failure of the untrusted application.
Other features provided by the first process and the at least one second process executing on a computing node include remote process control of applications 206, 208, 210 and a means to monitor, report on, and limit the resource usage of the applications. Further, the present invention uniquely identifies each instance of multiple instances of an application running on the same computing node. In addition to a computing node identifier, the present invention maintains an instance identifier along with an application identifier. The combination of these identifiers allows a unique identification of an instance on any computing node in a cluster.
EXAMPLE 1 As one example of the monitoring and control process of
In this example, a process external to computing node 240 sends a first request for a status of application 244, and also sends a second request for a status of application 246. First process 202 receives and processes the first request and the second request. Second process 242-1 controls the execution of application 244 and second process 242-2 controls the execution of application 246. Controlling the execution of an application includes, for example, starting, stopping and restarting the application.
Second process 242-1 periodically sends the status of application 244 to the process state portion 216 of shared memory 212. Similarly, second process 242-2 periodically sends the status of application 246 to the process state portion 216. The periodic sending of these statuses occurs at pre-defined intervals. Process state portion 216 receives the statuses of application 244 and 246. The processing of the first and second requests by first process 202 includes obtaining the statuses of application 244 and 246 from process state portion 216.
Due to a fault in the code of untrusted application 244, application 244 fails and its execution is terminated. Second process 242-1 continues executing, and sends a status (i.e., a failure status) indicating the failure of application 244 to process state 216 at a time indicated by the aforementioned pre-defined intervals. First process 202 retrieves the failure status from process state 216, thereby making the failure status available to any external process that requests the status of application 244.
Although the execution of application 244 has terminated, monitoring and control capabilities of first process 202 and second process 242-2 are preserved. These preserved monitoring and control capabilities include a capability of first process 202 to receive and process requests for the statuses of applications 244 and 246, and a capability of second process 242-2 to control the execution of application 246.
The aforementioned successful retrieval of the status of application 244 by first process 202 is one example of preserving the aforementioned capability of first process 202 in response to the failure of application 244, and the present invention's isolation of the failure of application 244 from the rest of the computing system (i.e., the computing system that includes computing node 240). For instance, since first process 202 continues to execute, a command issued by first process 202 that monitors or controls another application (e.g., application 246, 248 or 250) is successfully received and processed (e.g., by the second process 242 that communicates with the application being monitored or controlled via the command) even though application 244 has failed.
EXAMPLE 2
The application execution process begins at step 400. In step 402, first process 202 sends a start command message to second process 222-1 via request portion 214 of shared memory 212. The start command message indicates that an execution of application 224 is to be initiated. In step 404, second process 222-1 receives the start command message from request portion 214 of shared memory 212. In step 406, second process 222-1 utilizes a fork system to spawn off application 224. In step 408, second process 222-1 sends an acknowledgment message (i.e., a message acknowledging receipt of the start command) to first process 202 via shared memory 212. In step 410, application 224 executes on computing node 220. In step 412, second process 222-1 utilizes one or more of the operations (a)-(h) listed above to monitor and control application 224 as it executes on computing node 220. The application execution process of
Computing System
Memory 504 may comprise any known type of data storage and/or transmission media, including bulk storage, magnetic media, optical media, random access memory (RAM), read-only memory (ROM), a data cache, a data object, etc. Memory 504 includes computer program code comprising application monitoring and control system 514. Local memory elements of memory 504 are employed during actual execution of the program code of application monitoring and control system 514. Cache memory elements of memory 504 provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution. Storage unit 512 is, for example, a magnetic disk drive or an optical disk drive that stores data utilized by application monitoring and control system 514. Moreover, similar to CPU 502, memory 504 may reside at a single physical location, comprising one or more types of data storage, or be distributed across a plurality of physical systems in various forms. Further, memory 504 can include data distributed across, for example, a LAN, WAN or storage area network (SAN) (not shown). Still further, memory 504 may include other systems not shown in
I/O interface 506 comprises any system for exchanging information to or from an external source. I/O devices 510 comprise any known type of external device, including a display monitor, keyboard, mouse, printer, speakers, handheld device, printer, facsimile, etc. Bus 508 provides a communication link between each of the components in computing unit 500, and may comprise any type of transmission link, including electrical, optical, wireless, etc.
I/O interface 506 also allows computing unit 500 to store and retrieve information (e.g., program instructions or data) from an auxiliary storage device (e.g., storage unit 512). The auxiliary storage device may be a non-volatile storage device (e.g., a CD-ROM drive which receives a CD-ROM disk). Computing unit 500 can store and retrieve information from other auxiliary storage devices (not shown), which can include a direct access storage device (DASD) (e.g., hard disk or floppy diskette), a magneto-optical disk drive, a tape drive, or a wireless communication device.
The invention can take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment containing both hardware and software elements. In a preferred embodiment, the invention is implemented in software, which includes but is not limited to firmware, resident software, microcode, etc.
Furthermore, the invention can take the form of a computer program product accessible from a computer-usable or computer-readable medium providing program code of application monitoring and control system 514 for use by or in connection with a computing unit 500 or any instruction execution system to provide and facilitate the capabilities of the present invention. For the purposes of this description, a computer-usable or computer-readable medium can be any apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device.
The aforementioned medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium. Examples of a computer-readable medium include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, RAM 504, ROM, a rigid magnetic disk and an optical disk. Current examples of optical disks include compact disk-read-only memory (CD-ROM), compact disk-read/write (CD-R/W) and DVD.
The flow diagrams depicted herein are provided by way of example. There may be variations to these diagrams or the steps (or operations) described herein without departing from the spirit of the invention. For instance, in certain cases, the steps may be performed in differing order, or steps may be added, deleted or modified. All of these variations are considered a part of the present invention as recited in the appended claims.
While embodiments of the present invention have been described herein for purposes of illustration, many modifications and changes will become apparent to those skilled in the art. Accordingly, the appended claims are intended to encompass all such modifications and changes as fall within the true spirit and scope of this invention.
Claims
1. A method of monitoring and controlling applications executing on a plurality of computing nodes of a computing system, comprising:
- executing, on a computing node of said plurality of computing nodes, a status request process included in a plurality of processes capable of being executed on said computing node;
- executing, on said computing node, one or more control processes included in said plurality of processes;
- executing, on said computing node, an untrusted application of a plurality of applications capable of being executed on said computing node, said executing said untrusted application including performing a first execution of said untrusted application, and said untrusted application designated as likely to experience a failure based on pre-defined criteria;
- executing, on said computing node, another application of said plurality of applications, said executing said another application including performing a second execution of said another application, wherein said another application is different from said untrusted application;
- receiving and processing, by said status request process, a first request for a first status of said untrusted application,
- receiving and processing, by said status request process, a second request for a second status of said another application;
- controlling, exclusively by a first control process of said one or more control processes, said first execution of said untrusted application;
- controlling, exclusively by a second control process of said one or more control processes, said second execution of said another application;
- terminating said first execution of said untrusted application based on a failure of said untrusted application; and
- preserving, in response to said terminating, a capability of said status request process to perform said receiving and said processing said first request and to perform said receiving and said processing said second request, and a capability of said second control process to perform said controlling said second execution of said another application.
2. The method of claim 1, further comprising:
- segregating a plurality of status request operations from a plurality of control operations,
- wherein said status request operations include said receiving and said processing said first request and said receiving and said processing said second request,
- wherein said control operations include controlling said first execution and controlling said second execution,
- wherein said segregating comprises: performing said status request operations exclusively by said status request process; and performing said control operations exclusively by at least one control process of said one or more control processes,
- wherein said status request process is different from any control process of said one or more control processes; and
- wherein said segregating facilitates said preserving in response to said terminating.
3. The method of claim 1, further comprising:
- separating a control of said untrusted application from a control of said another application, said separating provided by said controlling exclusively by said first control process and said controlling exclusively by said second control process,
- wherein said first control process is different from said second control process, and
- wherein said separating facilitates said preserving.
4. The method of claim 1, wherein said one or more control processes is one of:
- a single control process that controls an execution of any application of said plurality of applications, wherein said first control process and said second control process are said single control process;
- a plurality of control processes that controls executions of said plurality of applications in a one-to-one correspondence, wherein said first control process and said second control process are different, and wherein said plurality of applications are designated as likely to fail based on said pre-defined criteria, and
- a control process and a first set of one or more control processes, said first set including said first control process;
- wherein said control process controls an execution of any trusted application of a first group of one or more trusted applications, said first group included in said plurality of applications, each trusted application of said first group designated as not likely to fail based on said pre-defined criteria, and
- wherein said one or more control processes of said first set control executions of one or more untrusted applications of a second group in a one-to-one correspondence, said second group included in said plurality of applications, each untrusted application of said second group designated as likely to fail based on said pre-defined criteria.
5. The method of claim 1, further comprising:
- communicating between said first process and said second process via a shared memory coupled to said computing node, wherein said communicating comprises: sending said first status of said untrusted application to said shared memory by said first control process; receiving said first status by said shared memory in response to said sending; and retrieving said first status from said shared memory by said status request process.
6. The method of claim 5, wherein said sending is performed by said first control process at pre-defined intervals of a first set of intervals, and wherein said retrieving is performed by said status request process at pre-defined intervals of a second set of intervals.
7. The method of claim 5, further comprising:
- dividing said shared memory into a process state portion and a request portion, wherein said receiving comprises receiving said first status by said process state portion.
8. The method of claim 7, further comprising:
- communicating a command from said status request process to said first control process via said request portion of said shared memory, said command selected from a group consisting of:
- a first command to automatically restart said first control process in response to a termination of said first control process,
- a second command to start said untrusted application, wherein said communicating said second command initiates a starting of said untrusted application by said first control process,
- a third command to stop said untrusted application, wherein said communicating said third command initiates a stopping of said untrusted application by said first control process,
- a fourth command to clean-up said untrusted application,
- a fifth command to obtain a log of at least one of standard-output and standard-error for said untrusted application, wherein said communicating said fifth command initiates a logging, by said first control process, of at least one of standard-output and standard-error for said untrusted application,
- a sixth command to stop said plurality of applications,
- a seventh command to obtain a status of each application of said plurality of applications from said process state portion of said shared memory,
- an eighth command to obtain said first status from said process state portion of said shared memory,
- a ninth command to restart said untrusted application, and
- a tenth command to shut down said computing system.
9. The method of claim 8, further comprising:
- executing, on said computing node, a third control process of said one or more control processes, said third control process controlling an execution of said status request process, said execution performed by said executing said status request process; and
- performing an operation selected from a group consisting of:
- a first operation to automatically restart said status request process in response to a termination of said status request process,
- a second operation to start said untrusted application, said second operation initiated by said second command,
- a third operation to restart said untrusted application, said third operation initiated by said ninth command,
- a fourth operation to monitor said untrusted application,
- a fifth operation to redirect standard-output from a first device set as a default standard-output device to a second device,
- a sixth operation to redirect standard-error from a third device set as a default standard-error device to a fourth device,
- a seventh operation to limit a usage of resources by said untrusted application, and
- an eighth operation to send said first status to said process state portion of said shared memory, said first status capable of being retrieved by said status request process from said process state portion, said eighth operation performed by said first control process periodically at pre-defined time intervals,
- wherein said first operation is performed by said third control process, and
- wherein said second operation through said eighth operation inclusive are performed by said first control process.
10. The method of claim 9, further comprising:
- communicating said second command to start said untrusted application, said communicating including sending said second command from said status request process to said first control process via said request portion of said shared memory;
- receiving said second command by said first control process;
- spawning said untrusted application by said first control process;
- sending a message from said first control process to said status request process via said shared memory to acknowledge said receiving said second command;
- initiating a start of an execution of said untrusted application on said computing node; and
- monitoring and controlling said untrusted application by said first control process, said monitoring and controlling performed in response to said initiating said start, and said monitoring and controlling including performing said eighth operation.
11. The method of claim 1, further comprising:
- terminating said executing said status request process, wherein said executing said first control process is not terminated in response to said terminating said executing said status request process.
12. The method of claim 5, wherein said shared memory is a System V Inter-Process Communication (IPC) shared memory and said shared memory utilizes System V IPC semaphores.
13. The method of claim 1, wherein said computing system is a distributed computing system or a clustered computing system.
14. A system for monitoring and controlling applications executing on a plurality of computing nodes of a computing system, comprising:
- means for executing, on a computing node of said plurality of computing nodes, a status request process included in a plurality of processes capable of being executed on said computing node;
- means for executing, on said computing node, one or more control processes included in said plurality of processes;
- means for executing, on said computing node, an untrusted application of a plurality of applications capable of being executed on said computing node, said executing said untrusted application including performing a first execution of said untrusted application, and said untrusted application designated as likely to experience a failure based on pre-defined criteria;
- means for executing, on said computing node, another application of said plurality of applications, said executing said another application including performing a second execution of said another application, wherein said another application is different from said untrusted application;
- means for receiving and processing, by said status request process, a first request for a first status of said untrusted application,
- means for receiving and processing, by said status request process, a second request for a second status of said another application;
- means for controlling, exclusively by a first control process of said one or more control processes, said first execution of said untrusted application;
- means for controlling, exclusively by a second control process of said one or more control processes, said second execution of said another application;
- means for terminating said first execution of said untrusted application based on a failure of said untrusted application; and
- means for preserving, in response to said terminating, a capability of said status request process to perform said receiving and said processing said first request and to perform said receiving and said processing said second request, and a capability of said second control process to perform said controlling said second execution of said another application.
15. The system of claim 14, further comprising:
- means for segregating a plurality of status request operations from a plurality of control operations,
- wherein said status request operations include said receiving and said processing said first request and said receiving and said processing said second request,
- wherein said control operations include controlling said first execution and controlling said second execution,
- wherein said means for segregating comprises: means for performing said status request operations exclusively by said status request process; and means for performing said control operations exclusively by at least one control process of said one or more control processes,
- wherein said status request process is different from any control process of said one or more control processes; and
- wherein said segregating facilitates said preserving in response to said terminating.
16. The system of claim 14, further comprising:
- means for separating a control of said untrusted application from a control of said another application, said separating provided by said controlling exclusively by said first control process and said controlling exclusively by said second control process,
- wherein said first control process is different from said second control process, and
- wherein said separating facilitates said preserving.
17. The system of claim 14, wherein said one or more control processes is one of:
- a single control process that controls an execution of any application of said plurality of applications, wherein said first control process and said second control process are said single control process;
- a plurality of control processes that controls executions of said plurality of applications in a one-to-one correspondence, wherein said first control process and said second control process are different, and wherein said plurality of applications are designated as likely to fail based on said pre-defined criteria, and
- a control process and a first set of one or more control processes, said first set including said first control process;
- wherein said control process controls an execution of any trusted application of a first group of one or more trusted applications, said first group included in said plurality of applications, each trusted application of said first group designated as not likely to fail based on said pre-defined criteria, and
- wherein said one or more control processes of said first set control executions of one or more untrusted applications of a second group in a one-to-one correspondence, said second group included in said plurality of applications, each untrusted application of said second group designated as likely to fail based on said pre-defined criteria.
18. A computer program product comprising a computer-usable medium including computer-usable program code for monitoring and controlling applications executing on a plurality of computing nodes of a computing system, said computer program product including:
- computer-usable code for executing, on a computing node of said plurality of computing nodes, a status request process included in a plurality of processes capable of being executed on said computing node;
- computer-usable code for executing, on said computing node, one or more control processes included in said plurality of processes;
- computer-usable code for executing, on said computing node, an untrusted application of a plurality of applications capable of being executed on said computing node, said executing said untrusted application including performing a first execution of said untrusted application, and said untrusted application designated as likely to experience a failure based on pre-defined criteria;
- computer-usable code for executing, on said computing node, another application of said plurality of applications, said executing said another application including performing a second execution of said another application, wherein said another application is different from said untrusted application;
- computer-usable code for receiving and processing, by said status request process, a first request for a first status of said untrusted application,
- computer-usable code for receiving and processing, by said status request process, a second request for a second status of said another application;
- computer-usable code for controlling, exclusively by a first control process of said one or more control processes, said first execution of said untrusted application;
- computer-usable code for controlling, exclusively by a second control process of said one or more control processes, said second execution of said another application;
- computer-usable code for terminating said first execution of said untrusted application based on a failure of said untrusted application; and
- computer-usable code for preserving, in response to said terminating, a capability of said status request process to perform said receiving and said processing said first request and to perform said receiving and said processing said second request, and a capability of said second control process to perform said controlling said second execution of said another application.
19. The program product of claim 18, further comprising:
- computer-usable code for segregating a plurality of status request operations from a plurality of control operations,
- wherein said status request operations include said receiving and said processing said first request and said receiving and said processing said second request,
- wherein said control operations include controlling said first execution and controlling said second execution,
- wherein said computer-usable code for segregating comprises: computer-usable code for performing said status request operations exclusively by said status request process; and computer-usable code for performing said control operations exclusively by at least one control process of said one or more control processes,
- wherein said status request process is different from any control process of said one or more control processes; and
- wherein said segregating facilitates said preserving in response to said terminating.
20. The program product of claim 18, further comprising:
- computer-usable code for separating a control of said untrusted application from a control of said another application, said separating provided by said controlling exclusively by said first control process and said controlling exclusively by said second control process,
- wherein said first control process is different from said second control process, and
- wherein said separating facilitates said preserving.
Type: Application
Filed: May 1, 2006
Publication Date: Nov 1, 2007
Applicant: International Business Machines Corporation (Armonk, NY)
Inventors: Varun Bhagwan (San Jose, CA), Daniel Gruhl (San Jose, CA)
Application Number: 11/415,035
International Classification: G06F 9/44 (20060101);