New! View global litigation for patent families

US20080016489A1 - Virtual os computing environment - Google Patents

Virtual os computing environment Download PDF

Info

Publication number
US20080016489A1
US20080016489A1 US11862057 US86205707A US2008016489A1 US 20080016489 A1 US20080016489 A1 US 20080016489A1 US 11862057 US11862057 US 11862057 US 86205707 A US86205707 A US 86205707A US 2008016489 A1 US2008016489 A1 US 2008016489A1
Authority
US
Grant status
Application
Patent type
Prior art keywords
os
virtual
environment
system
file
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.)
Abandoned
Application number
US11862057
Inventor
John McMillan
Gary Chirhart
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Symantec Corp
Original Assignee
Symantec Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRICAL DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for programme control, e.g. control unit
    • G06F9/06Arrangements for programme control, e.g. control unit using stored programme, i.e. using internal store of processing equipment to receive and retain programme
    • G06F9/44Arrangements for executing specific programmes
    • G06F9/455Emulation; Software simulation, i.e. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45537Provision of facilities of other operating environments, e.g. WINE

Abstract

Multiple, semi-independent virtual operating system (OS) environments coexist within a single (OS) such that a change made in one environment does not affect the main OS or any other environment. In this way each virtual OS environment appears to be an independent OS for the applications running within it. The file system and registry information for each environment is independent of the base OS and other environments. Each of the environments can contain a group of installed applications that will run independently of each other. Although the invention is described in terms of a Windows® environment, the approach is applicable to other operating systems through appropriate modification.

Description

    REFERENCE TO RELATED APPLICATION
  • [0001]
    This application is a continuation of U.S. patent application Ser. No. 10/716,337, filed Nov. 18, 2003, which claims the benefit of U.S. provisional patent application Ser. No. 60/427,339, filed Nov. 18, 2002, the disclosures of which are each incorporated herein by reference in their entirety.
  • FIELD OF THE INVENTION
  • [0002]
    This invention relates to computing environments and, in particular, to the creation of multiple, semi-independent virtual operating system (OS) environments within a single OS.
  • BACKGROUND OF THE INVENTION
  • [0003]
    An Operating System (OS) is the high-level software that allows users to interact with a computing machine and run programs (i.e., applications). To enhance the versatility of computers, virtual operating systems (VOS) and programs that implement virtual machines (VM) have been developed. Using such systems, applications “expecting” a particular OS may run on a machine executing a different OS, or commands generated by an application may cause a real computer to act like the imaginary machine. Theoretically, a VOS may allow the same program to work on virtually any machine running the Virtual OS, thereby supporting “instant portability” for new machines.
  • [0004]
    The concept of a virtual machine has been popularized by Pascal compilers which produce intermediate “p-code” and, more recently, by Java language from Sun Microsystems. Whereas most compilers produce object code for one family of CPU, Java compilers produce object code (called J-code) for machines that may or may not exist. For each physical target processor, a Java interpreter, or virtual machine, “executes” the J-code. This allows the same object code to run on any CPU for which a Java interpreter exists.
  • [0005]
    Other examples include Limbo, a programming language developed at Lucent Technologies, produces object code for an imaginary CPU, and Perl, which creates an intermediate program representation and executes this intermediate representation instead of creating native executable code.
  • [0006]
    The major standard operating systems, namely Windows, Macintosh and Unix, make very different “calls” to the OS. These calls are critical to writing sophisticated applications, which limits portability. Java solves this problem by providing a set of library functions that communicate with an imaginary OS and imaginary GUI (graphical user interface). In a sense, just like the JVM presents a virtual physical machine, the Java libraries present a virtual OS/GUI. Every Java implementation provides libraries implementing this virtual OS/GUI. Java programs that use these libraries to provide needed OS and GUI functionality port fairly easily.
  • [0007]
    Virtual operating systems include the Amiga OS, which is based on the Taos Elate OS, and Inferno developed by Lucent Technologies. Inferno, a virtual operating system running on top of the Linux operating system, is targeted to creating and supporting distributed services used in a variety of network environments, including advanced telephones, hand-held devices, TV/cable/satellite set-top boxes, Internet computers and conventional computing systems. Applications use various resources internal to the system, such as a consistent virtual machine that runs the application programs, together with library modules that perform services as simple as string manipulation through more sophisticated graphics services for dealing with text, pictures, higher-level toolkits, and video. Applications exist in an external environment containing resources such as data files that can be read and manipulated, together with objects that are named and manipulated like files but are more active.
  • SUMMARY OF THE INVENTION
  • [0008]
    This invention is directed to the creation of multiple, semi-independent virtual OS environments within a single operating system (OS). A change made in one environment does not affect the main OS or any other environment. In this way each virtual OS environment appears to be an independent OS for the applications running within it. The file system and registry information for each environment is independent of the base OS and other environments. Each of the environments can contain a group of installed applications that will run independently of each other. Although the invention is described in terms of a Windows® environment, the approach is applicable to other operating systems through appropriate modification.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • [0009]
    FIG. 1 is a simplified diagram showing the creation of multiple OS environments under a single OS;
  • [0010]
    FIG. 2 is a illustrates the creation of independent locations for file systems and registry within the base OS file system and registry;
  • [0011]
    FIG. 3 shows how, according to the invention, injected DLL functions can execute code both before and after the OS API function;
  • [0012]
    FIG. 4 shows how any applications that are run from under the virtual OS environment file system are always redirected into that virtual OS environment;
  • [0013]
    FIG. 5 depicts when application is being redirected into a virtual OS environment, it makes an API call that tries to access the file system or registry, causing the API to be redirected to a function in the injected DLL;
  • [0014]
    FIG. 6A is a diagram that shows how getting and setting of the current directory are redirected into the virtual OS environment.
  • [0015]
    FIG. 6B shows how injected DLL functions maintain lists of these handles and the pathnames that they reference. These lists are then used in subsequent calls to OS API functions to modify the parameters properly; and
  • [0016]
    FIG. 7 is a diagram that depicts how OS API calls can be redirected by the injected DLL function modifying a parameter sent to or returned from the OS API.
  • DETAILED DESCRIPTION OF THE INVENTION
  • [0017]
    This invention is directed to the creation of multiple, semi-independent virtual OS environments within a single operating system (OS). A change made in one environment does not affect the main OS or any other environment. In this way each virtual OS environment appears to be an independent OS for the applications running within it. The file system and registry information for each environment is independent of the base OS and other environments. Each of the environments can contain a group of installed applications that will run independently of each other. Although the invention is described in terms of a Windows® environment, the approach is applicable to other operating systems through appropriate modification.
  • [0018]
    The applications running within the virtual OS environments still share the base OS attributes such as networking information, user login rights, services, hardware information, and the Windows clipboard. In addition, all of the applications run on a single OS desktop. The end user does not need to be aware that the applications are being run from different virtual OS environments. While the applications share the base OS attributes, the changes made to configuration information is made into the virtual OS environment and not into the base OS.
  • [0019]
    The virtual OS environment is achieved by creating independent locations for file systems and registry within the base OS file system and registry. When applications attempt to access the file system or registry, the attempt is redirected to the virtual OS environment file system or registry instead of the base OS location.
  • [0020]
    To create the virtual OS environments, the OS APIs that access the file system and registry directly and indirectly must be changed to redirect these accesses into the virtual OS environments file system and registry. This is done by injecting a DLL into every application that is executed. This DLL first must determine whether the current application should be run under one of the possible virtual OS environments or the base OS. If the current application is to run under the base OS the injected DLL does nothing and the application runs normally. If the current application needs to be redirected into a virtual OS environment, the injected DLL scans the applications function import table and redirects all file system and registry API calls to instead call functions within the injected DLL itself. This is done for the application functions and all of the DLLs that are loaded by the application. In addition, Windows COM calls that access the file system or registry are also redirected by the injected DLL.
  • [0021]
    When the application (or one of the applications DLLs) attempts to call an OS API (directly or indirectly) that will access the file system or registry, the injected DLL's function is called instead. The injected DLL's function then examines the parameters that are passed to the API and modifies them to direct them into the virtual OS environment location instead. The injected DLL's function then calls the real OS API with the modified parameters to perform the required function. Lastly, the injected DLL's function returns to the calling function, returning any information from the OS API function. This returned information is also modified to convert the file system or registry location information back from a virtual OS environment location. Using this method, the injected DLL functions can execute code both before and after the OS API function.
  • [0022]
    As mentioned earlier, not all applications are run from virtual OS environments and different applications may be run from different virtual OS environments. When the injected DLL is first loaded it must determine which of the virtual OS environments (if any) to redirect to. This must be done for the current application as well as any spawned or child processes created by the current application. This is determined based on the location of the current application EXE in the base OS file system. The base OS contains a list of directories where applications should be redirected to specific virtual OS environments. Any application EXE that is executed in this directory or optionally a child of this directory will run under a specific virtual OS environment. This is can be set to a CD/DVD drive in the base OS file system and the application run from this location is often a application installation program. Note that this directory is added to the virtual OS environment. File system accesses to this directory (or children) will not be redirected but will be performed in the directory itself. This directory (or directories) are shared by the base OS and the virtual OS environment. This allows the installation program or application to access support files that are then installed into the virtual OS environment.
  • [0023]
    In addition, any applications that are run from under the virtual OS environment file system (ex: C:\VirtualEnvs\Env1) are always redirected into that virtual OS environment. Since the temporary directory is also redirected into the virtual OS environment, if an installation program extracts additional installation programs from itself into a temporary directory and then executes them, they will be redirected into the same virtual OS environment. Since the installation program can only make changes to the virtual OS environment and the shared directory, it can only place files into a location that is under the virtual OS environment itself. It cannot change any file system or registry information in the base OS file system or registry except in shared directories. This method guarantees that the proper applications are always running in the proper virtual OS environment or base OS and that the applications can only modify specific areas of the base OS file system and registry.
  • [0024]
    Because all of the file system and registry calls are redirected, a copy of the base OS file system and registry must be created in the virtual OS environment file system and registry before any applications may be executed in the virtual OS environment. Once this is done, any built-in OS applications that are run by applications within the virtual OS environment (such as Notepad, WordPad, or Internet Explorer) will be executed from the virtual OS environment copy of that application. This will allow multiple versions of built-in OS applications to be supported at the same time in different virtual OS environments.
  • [0025]
    When an application that is being redirected into a virtual OS environment makes an API call that tries to access the file system or registry, the API is redirected to a function in the injected DLL. This is done without any modifications required to the application or support DLLs.
  • [0026]
    This redirection is done for all OS API calls that access the file system. There are file system calls that use a relative path. These calls are relative to a current directory. The getting and setting of the current directory are redirected into the virtual OS environment. The application views that it is accessing/modifying the base OS file system or registry when in fact it is accessing/modifying the virtual OS environment file system and registry.
  • [0027]
    The redirection of registry information is done the same way as file system information. All calls that access the registry are redirected into the injected DLL functions where they modify the parameters to redirect that registry access to a section of the registry that is private to the virtual OS environment. A number of registry and file system APIs are passed handles instead of a specific pathname. The injected DLL functions maintain lists of these handles and the pathnames that they reference. These lists are then used in subsequent calls to OS API functions to modify the parameters properly.
  • [0028]
    Since all of the virtual OS environment information is isolated inside of the base OS file system and registry, it becomes easy to save, store, and load entire virtual OS environments. It is therefore convenient to create a virtual OS environment that contains a set of applications configured in a specific way (or a “clean” virtual OS environment that contains no applications yet) and store it in a separate or central location to be used by multiple computers or the same computer at different times.
  • [0029]
    Not all OS API calls can be redirected by the injected DLL function modifying a parameter sent to or returned from the OS API. For example when creating a shortcut using the Program Manager DDE calls, the shortcut is created in the base OS file system (after backing up any shortcut in that same location) and then moved into the virtual OS environment file system. Afterward, any shortcut that was in the base OS file system is then restored. This occurs within the injected DLL function that is called from an application in the virtual OS environment.
  • [0030]
    Another special case occurs when a 16-bit application is to be executed within the virtual OS environment. The injected DLL does not function with 16-bit applications so this is normally not supported. In cases where the 16-bit application is known to only extract files from itself and then run a 32-bit application an exception is made. The 16-bit application is executed normally and allowed to place the extracted files into a temporary location in the base OS file system. This temporary location is then added as a shared directory with the virtual OS environment and the 32-bit application that was extracted is then executed in the virtual OS environment.
  • [0031]
    Since the virtual OS environment file system files are not being used by the base OS itself, they can be replaced more easily than the actual base OS files that are normally in use (files that are in-use cannot normally be replaced except during a reboot). This also allows a reboot after an installation program to be handled without a reboot being required on the computer itself.
  • [0032]
    When the OS reboot API is called by a program that is running under a virtual OS environment, the injected DLL function performs the operations normally handled by the reboot without allowing the OS API to perform a system reboot. All of the applications in the virtual system are shutdown. The list of files that are queued to be replaced during a reboot are then installed. The list of applications that are normally run during a system startup are then executed in order. This allows application installation programs that contain require one or more reboots function properly without a reboot actually being performed.

Claims (11)

  1. 1. A computing architecture, comprising:
    a base operating system (OS); and
    at least one virtual OS environment within the base OS, the virtual OS environment having a file system and registry which is independent of the base OS.
  2. 2. The computing architecture of claim 1, wherein the base OS is Windows® or is Windows®-compatible.
  3. 3. The computing architecture of claim 1, further including at least one application running under the virtual OS environment, and wherein the application shares one or more of the following with the base OS:
    networking information,
    user login rights,
    services,
    hardware information, and
    clipboard information.
  4. 4. The computing architecture of claim 1, further including multiple virtual OS environments within a single operating system (OS), and wherein a change made in one of the virtual OS environments does not affect the main OS or any other virtual OS environment.
  5. 5. The computing architecture of claim 1, wherein each virtual OS environment contains a group of installed applications that run independently of each another.
  6. 6. The computing architecture of claim 1, further including one or more applications running under the base OS and each virtual OS environment, and wherein all of the applications run on a single OS desktop.
  7. 7. The computing architecture of claim 1, wherein changes made to configuration information with respect to a virtual OS environment does not change configuration information associated with the base OS.
  8. 8. A method of configuring a computer with a base operating system (OS) having a base OS file system and registry, the method comprising the steps of:
    creating at least one virtual OS environment under the base OS, each virtual OS environment having file system and registry locations which are independent of the base OS file system and registry locations.
  9. 9. The method of claim 8, further including the step of installing at least one application program under the virtual OS environment; and
    wherein attempts to access the base OS file system and registry locations are instead redirected to the virtual OS environment file system or registry.
  10. 10. The method of claim 9, further including the step of altering one or more application programming interfaces (APIs) that access the base OS file system and registry directly and indirectly so as to redirect these accesses into the appropriate virtual OS environment file system and registry.
  11. 11. The method of claim 10, further including the step of injecting a DLL into every application that is executed.
US11862057 2002-11-18 2007-09-26 Virtual os computing environment Abandoned US20080016489A1 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US42733902 true 2002-11-18 2002-11-18
US10716337 US7673308B2 (en) 2002-11-18 2003-11-18 Virtual OS computing environment
US11862057 US20080016489A1 (en) 2002-11-18 2007-09-26 Virtual os computing environment

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11862057 US20080016489A1 (en) 2002-11-18 2007-09-26 Virtual os computing environment

Publications (1)

Publication Number Publication Date
US20080016489A1 true true US20080016489A1 (en) 2008-01-17

Family

ID=34396008

Family Applications (2)

Application Number Title Priority Date Filing Date
US10716337 Active 2028-08-29 US7673308B2 (en) 2002-11-18 2003-11-18 Virtual OS computing environment
US11862057 Abandoned US20080016489A1 (en) 2002-11-18 2007-09-26 Virtual os computing environment

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US10716337 Active 2028-08-29 US7673308B2 (en) 2002-11-18 2003-11-18 Virtual OS computing environment

Country Status (1)

Country Link
US (2) US7673308B2 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080178143A1 (en) * 2006-10-05 2008-07-24 Cort Dougan System, Method and Computer Program Product for Developing, Configuring, Installing and Testing Software
US20100031256A1 (en) * 2008-08-04 2010-02-04 Eunovation Int'l Limited Method for establishing virtual operating system
US8712052B2 (en) 2012-07-23 2014-04-29 Cooper Technologies Company System and method for secure power systems infrastructure communications

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7536688B2 (en) * 2003-02-28 2009-05-19 Azul Systems Segmented virtual machine
US20040226017A1 (en) * 2003-05-09 2004-11-11 Leonard Ozgur C. Mechanism for associating resource pools with operating system partitions
US7461080B1 (en) * 2003-05-09 2008-12-02 Sun Microsystems, Inc. System logging within operating system partitions using log device nodes that are access points to a log driver
US8122280B2 (en) 2004-08-26 2012-02-21 Open Invention Network, Llc Method and system for providing high availability to computer applications
US9286109B1 (en) 2005-08-26 2016-03-15 Open Invention Network, Llc Method and system for providing checkpointing to windows application groups
US7480908B1 (en) * 2005-06-24 2009-01-20 Azul Systems, Inc. Segmented virtual machine transport mechanism
US7434218B2 (en) * 2005-08-15 2008-10-07 Microsoft Corporation Archiving data in a virtual application environment
US9354977B1 (en) * 2008-12-15 2016-05-31 Open Invention Network Llc System and method for hybrid kernel- and user-space incremental and full checkpointing
US9256496B1 (en) * 2008-12-15 2016-02-09 Open Invention Network, Llc System and method for hybrid kernel—and user-space incremental and full checkpointing
US20070050765A1 (en) * 2005-08-30 2007-03-01 Geisinger Nile J Programming language abstractions for creating and controlling virtual computers, operating systems and networks
US20070168937A1 (en) * 2005-11-28 2007-07-19 Soummya Mallick Apparatus and method of application virtualization
EP1814028A1 (en) * 2006-01-27 2007-08-01 Siemens Aktiengesellschaft Method for implementing applications on independent partitions with optimized operating systems
US8286158B2 (en) * 2006-02-06 2012-10-09 Imation Corp. Method and system for installing portable executable applications
JP2007213494A (en) * 2006-02-13 2007-08-23 Ntt Docomo Inc Update starting device and update starting control method
US8332940B2 (en) * 2006-04-11 2012-12-11 Installfree, Inc. Techniques for securing a computing environment
US20080109466A1 (en) * 2006-11-02 2008-05-08 Microsoft Corporation Virtual Deletion In Merged Registry keys
US8650579B1 (en) * 2007-01-31 2014-02-11 Hewlett-Packard Development Company, L.P. Containment for computer-software update installation processes
KR20080085780A (en) * 2007-03-20 2008-09-24 이상규 Method for virtualizing operating system
US8356297B1 (en) 2007-03-21 2013-01-15 Azul Systems, Inc. External data source redirection in segmented virtual machine
FR2925269B1 (en) * 2007-12-19 2010-01-15 Promiles Bag switchable back end position
US8589474B2 (en) * 2008-06-17 2013-11-19 Go Daddy Operating Company, LLC Systems and methods for software and file access via a domain name
US9100246B1 (en) * 2008-06-19 2015-08-04 Symantec Corporation Distributed application virtualization
CN101645020A (en) * 2008-08-04 2010-02-10 优诺威讯国际有限公司 Virtual operating system creation method
US8880473B1 (en) 2008-12-15 2014-11-04 Open Invention Network, Llc Method and system for providing storage checkpointing to a group of independent computer applications
US8281317B1 (en) 2008-12-15 2012-10-02 Open Invention Network Llc Method and computer readable medium for providing checkpointing to windows application groups
US8752049B1 (en) 2008-12-15 2014-06-10 Open Invention Network, Llc Method and computer readable medium for providing checkpointing to windows application groups
US8752048B1 (en) 2008-12-15 2014-06-10 Open Invention Network, Llc Method and system for providing checkpointing to windows application groups
US20100174894A1 (en) * 2009-01-07 2010-07-08 Lenovo (Singapore) Pte, Ltd. Method, Apparatus, and System for Configuring an Operating System on a Target Computer
US8401940B1 (en) * 2009-04-10 2013-03-19 Open Invention Network Llc System and method for usage billing of hosted applications
US8539488B1 (en) 2009-04-10 2013-09-17 Open Invention Network, Llc System and method for application isolation with live migration
US8401941B1 (en) * 2009-04-10 2013-03-19 Open Invention Network Llc System and method for usage billing of hosted applications
US8341631B2 (en) * 2009-04-10 2012-12-25 Open Invention Network Llc System and method for application isolation
US9577893B1 (en) 2009-04-10 2017-02-21 Open Invention Network Llc System and method for cached streaming application isolation
US8464256B1 (en) 2009-04-10 2013-06-11 Open Invention Network, Llc System and method for hierarchical interception with isolated environments
US9058599B1 (en) * 2009-04-10 2015-06-16 Open Invention Network, Llc System and method for usage billing of hosted applications
US8782670B2 (en) * 2009-04-10 2014-07-15 Open Invention Network, Llc System and method for application isolation
US8904004B2 (en) * 2009-04-10 2014-12-02 Open Invention Network, Llc System and method for maintaining mappings between application resources inside and outside isolated environments
US8418236B1 (en) 2009-04-10 2013-04-09 Open Invention Network Llc System and method for streaming application isolation
US8555360B1 (en) 2009-04-10 2013-10-08 Open Invention Network Llc System and method for on-line and off-line streaming application isolation
US8826269B2 (en) * 2009-06-15 2014-09-02 Microsoft Corporation Annotating virtual application processes
US9141412B2 (en) * 2009-06-16 2015-09-22 Microsoft Technology Licensing, Llc Terminal services application virtualization for compatibility
US8645977B2 (en) * 2010-02-04 2014-02-04 Microsoft Corporation Extensible application virtualization subsystems
US9262187B2 (en) * 2010-02-05 2016-02-16 Microsoft Technology Licensing, Llc Extension point declarative registration for virtualization
KR101761615B1 (en) * 2010-10-29 2017-08-04 엘지전자 주식회사 Mobile terminal and method for controlling the same
JP4929407B1 (en) * 2011-03-09 2012-05-09 株式会社東芝 Information processing apparatus and display control method
US8745442B1 (en) * 2011-04-28 2014-06-03 Open Invention Network, Llc System and method for hybrid kernel- and user-space checkpointing
JP5719244B2 (en) 2011-06-29 2015-05-13 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation Methods for constructing an execution environment for secure management virtual machine, programs and computer apparatus
US9811364B2 (en) * 2013-06-13 2017-11-07 Microsoft Technology Licensing, Llc Thread operation across virtualization contexts
US9501211B2 (en) 2014-04-17 2016-11-22 GoDaddy Operating Company, LLC User input processing for allocation of hosting server resources
US9660933B2 (en) 2014-04-17 2017-05-23 Go Daddy Operating Company, LLC Allocating and accessing hosting server resources via continuous resource availability updates
US9804836B2 (en) 2014-06-27 2017-10-31 Welch Allyn, Inc. Medical device nucleus architecture
US20150378798A1 (en) * 2014-06-27 2015-12-31 Welch Allyn, Inc. Low acuity vitals system architecture

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5063499A (en) * 1989-01-09 1991-11-05 Connectix, Inc. Method for a correlating virtual memory systems by redirecting access for used stock instead of supervisor stock during normal supervisor mode processing
US5961582A (en) * 1994-10-25 1999-10-05 Acorn Technologies, Inc. Distributed and portable execution environment
US6081897A (en) * 1997-01-13 2000-06-27 Recording Industry Of America Apparatus for monitoring and preventing unauthorized copying of digital data
US6141698A (en) * 1997-01-29 2000-10-31 Network Commerce Inc. Method and system for injecting new code into existing application code
US6192471B1 (en) * 1996-01-26 2001-02-20 Dell Usa, Lp Operating system independent system for running utility programs in a defined environment
US6397242B1 (en) * 1998-05-15 2002-05-28 Vmware, Inc. Virtualization system including a virtual machine monitor for a computer with a segmented architecture
US20020092003A1 (en) * 2000-11-29 2002-07-11 Brad Calder Method and process for the rewriting of binaries to intercept system calls in a secure execution environment
US6611878B2 (en) * 1996-11-08 2003-08-26 International Business Machines Corporation Method and apparatus for software technology injection for operating systems which assign separate process address spaces

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6615277B1 (en) * 1999-03-29 2003-09-02 International Business Machines Corporation Cross-platform program, system, and method having a global registry object for mapping registry equivalent functions in an operating system environment
US6754889B1 (en) * 2000-10-04 2004-06-22 Compuware Corporation Java automation, testing, and analysis
US7028305B2 (en) * 2001-05-16 2006-04-11 Softricity, Inc. Operating system abstraction and protection layer

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5063499A (en) * 1989-01-09 1991-11-05 Connectix, Inc. Method for a correlating virtual memory systems by redirecting access for used stock instead of supervisor stock during normal supervisor mode processing
US5961582A (en) * 1994-10-25 1999-10-05 Acorn Technologies, Inc. Distributed and portable execution environment
US6192471B1 (en) * 1996-01-26 2001-02-20 Dell Usa, Lp Operating system independent system for running utility programs in a defined environment
US6611878B2 (en) * 1996-11-08 2003-08-26 International Business Machines Corporation Method and apparatus for software technology injection for operating systems which assign separate process address spaces
US6081897A (en) * 1997-01-13 2000-06-27 Recording Industry Of America Apparatus for monitoring and preventing unauthorized copying of digital data
US6141698A (en) * 1997-01-29 2000-10-31 Network Commerce Inc. Method and system for injecting new code into existing application code
US6397242B1 (en) * 1998-05-15 2002-05-28 Vmware, Inc. Virtualization system including a virtual machine monitor for a computer with a segmented architecture
US6785886B1 (en) * 1998-05-15 2004-08-31 Vmware, Inc. Deferred shadowing of segment descriptors in a virtual machine monitor for a segmented computer architecture
US20020092003A1 (en) * 2000-11-29 2002-07-11 Brad Calder Method and process for the rewriting of binaries to intercept system calls in a secure execution environment

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080178143A1 (en) * 2006-10-05 2008-07-24 Cort Dougan System, Method and Computer Program Product for Developing, Configuring, Installing and Testing Software
US20100031256A1 (en) * 2008-08-04 2010-02-04 Eunovation Int'l Limited Method for establishing virtual operating system
US8712052B2 (en) 2012-07-23 2014-04-29 Cooper Technologies Company System and method for secure power systems infrastructure communications

Also Published As

Publication number Publication date Type
US7673308B2 (en) 2010-03-02 grant
US20050076326A1 (en) 2005-04-07 application

Similar Documents

Publication Publication Date Title
US6412021B1 (en) Method and apparatus for performing user notification
US6389589B1 (en) Class store schema
US6631515B1 (en) Method and apparatus to reduce code size and runtime in a Java environment
US5920720A (en) Efficient computer based virtual machine object structure
US6836794B1 (en) Method and system for assigning and publishing applications
US6424991B1 (en) Object-oriented system, method and article of manufacture for a client-server communication framework
Topley J2ME in a nutshell: a desktop quick reference
Hjálmtýsson et al. Dynamic C++ classes: a lightweight mechanism to update code in a running program
US6272556B1 (en) Object-oriented system, method and article of manufacture for migrating a client-server application (#5)
US7441113B2 (en) Method and apparatus for virtualization of appliances
US5812848A (en) Subclassing system for computer that operates with portable-executable (PE) modules
US5546583A (en) Method and system for providing a client/server interface in a programming language
US5727147A (en) System and method for resolving symbolic references to externally located program files
US7840951B1 (en) Reducing the overhead involved in executing native code in a virtual machine through binary reoptimization
US6272555B1 (en) Object-oriented system, method and article of manufacture for a client-server-centric interprise computing framework system
US6367072B1 (en) Apparatus and method for identifying and modifying computer operating system components
US6199196B1 (en) Methods and apparatus for linking a program for remote execution
US5903753A (en) Name space registry with backward compatibility for older applications
US6434598B1 (en) Object-oriented system, method and article of manufacture for a client-server graphical user interface (#9) framework in an interprise computing framework system
US7533376B2 (en) Dynamic linking in constrained environment
US6314428B1 (en) Method and apparatus for application management in computer networks
US20060090171A1 (en) Method and apparatus for virtualizing window information
US20020099863A1 (en) Software support layer for processors executing interpreted language applications
US5926631A (en) Network computer emulator systems, methods and computer program products for personal computers
US7062764B2 (en) System and method for manipulating offline software