System and method for application isolation
Summary by NHIP
Dynamic Application Isolation System
The system creates isolated environments containing applications and executables during installation, removing them upon uninstall while storing them for later retrieval. Interception layers and databases manage access to host resources, translating parameters between the host environment and the isolated environments.
Claim Score by NHIP
Abstract
A system, method, and computer readable medium for providing application isolation to one or more applications and their associated resources. The system may include one or more isolated environments including application files and executables, and one or more interception layers intercepting access to system resources and interfaces. Further, the system may include an interception database maintaining mapping between the system resources inside the one or more isolated environments and outside, and a host operating system. The one or more applications may be isolated from other applications and the host operating system while running within the one or more isolated environments.

Term
2.9 yearsleft in the term
Expires 12 August 2029, including 124 days of term adjustment.
- Priority
- Filed
- Granted
- Today
- Expires
20 claims: 3 independent, 17 dependent
- 1A system, comprising:one or more central processing units;and one or more isolated environments including one or more applications and executables;wherein the one or more central processing units and the one or more isolated environments are configured to interact with each other;wherein the one or more isolated environments are created during installation of the one or more applications, and updates to the one or more isolated environments occur as the one or more applications use additional resources;wherein the one or more isolated environments are removed as part of an uninstall of the one or more applications;wherein the one or more isolated environments are stored for retrieval at a later time after the uninstall of the one or more applications.
- 14Broadest claimClaim Score 72, broad(NHIP)A method, comprising:creating one or more isolated environments during installation of the one or more applications, and updating the one or more isolated environments as the one or more applications use additional resources while running;removing the one or more isolated environments as part of uninstalling the one or more applications;and storing the one or more isolated environments for retrieval at a later time after the one or more applications are uninstalled.
- 18A non-transitory computer readable storage medium comprising instructions for:creating one or more isolated environments during installation of the one or more applications, and updating the one or more isolated environments as the one or more applications use additional resources while running;removing the one or more isolated environments as part of uninstalling the one or more applications;and storing the one or more isolated environments for retrieval at a later time after the one or more applications are uninstalled.
Independent claims3
95 paragraphs in 9 sections, as filed
CROSS-REFERENCE TO RELATED APPLICATIONS
This application is a continuation of U.S. patent application Ser. No. 12/421,691, filed Apr. 10, 2009, titled SYSTEM AND METHOD FOR APPLICATION ISOLATION, now issued U.S. Pat. No. 8,341,631, issued on Dec. 25, 2012. The present application is related to U.S. patent application Ser. No. 12/334,654, filed Dec. 15, 2008, titled METHOD AND SYSTEM FOR PROVIDING STORAGE CHECKPOINTING TO A GROUP OF INDEPENDENT COMPUTER APPLICATIONS, and U.S. patent application Ser. No. 12/334,660, filed Dec. 15, 2008, titled METHOD AND SYSTEM FOR PROVIDING CHECKPOINTING TO WINDOWS APPLICATION GROUPS, the disclosure of each of which is hereby incorporated by reference herein in their entirety.
STATEMENT REGARDING FEDERALLY SPONSORED RESEARCH OR DEVELOPMENT
Not Applicable
INCORPORATION-BY-REFERENCE OF MATERIAL SUBMITTED ON A COMPACT DISC
Not Applicable
NOTICE OF MATERIAL SUBJECT TO COPYRIGHT PROTECTION
A portion of the material in this patent document is subject to copyright protection under the copyright laws of the United States and of other countries. The owner of the copyright rights has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the United States Patent and Trademark Office publicly available file or records, but otherwise reserves all copyright rights whatsoever. The copyright owner does not hereby waive any of its rights to have this patent document maintained in secrecy, including without limitation its rights pursuant to 37 C.F.R. §1.14.
BACKGROUND OF THE INVENTION
1. Field of the Invention
This invention pertains generally to enterprise computer systems, computer networks, embedded computer systems, wireless devices such as cell phones, computer systems, and more particularly to methods, systems and procedures (i.e., programming) for providing application isolation for multiple applications running on a host operating system.
2. Description of Related Art
In many environments one of the most important features is to ensure that one running application doesn't affect other running applications, and that the crash of one application doesn't compromise other running applications. In many environments applications share system resources, libraries and hardware, which exposes subtle interconnects between seemingly unrelated applications.
Several approaches have been developed addressing this fundamental problem. The first level of application isolation is provided by the operating system. Modern operating systems such as Linux, UNIX, Windows2000, NT, XP and Vista provide some level of application isolation through the use of processes, and the underlying hardware memory management unit. The use of processes generally ensure that one running application process cannot address memory owned and used by other processes. This first level of isolation does not address the use of shared resources, such as files, file systems, shared memory, and libraries, so other approaches have been developed
In U.S. Pat. No. 6,496,847 Bugnion et al. teach the use of a virtual machine monitor (VMM) with a protected host operating system (HOS). This invention partially solves the isolation problem by placing every application into its own VMM. The solution requires the use of a VMM subsystem and in some cases a customized operating system. U.S. Pat. No. 6,496,847 does not provide isolation at the level of individual applications, but for entire operating systems with all the applications within it. It does not address the problem of application isolation with multiple natively running applications on one host computer.
In U.S. Pat. No. 6,601,081 Provino et al. teach the use of a virtual machine for a plurality of application programs. As with U.S. Pat. No. 6,496,847 the use of a VM subsystem simply moves the problem to a different layer, and does not address the fundamental issue of application isolation with several natively running applications on one host computer.
In U.S. Pat. No. 7,028,305 Schaefer teaches a system for creating an application protection layer to separate an application from the host operating system. Shaefer primarily teaches how to intercept the Windows registry to capture configuration information for Windows application and how to create a virtual operating environment for the application. Access to files is provided via a virtual file system, access to registry information via the virtual registry etc. For Unix and MacOS few specific teachings are presented.
The present invention provides a system, method, and computer readable medium to create an application isolation environment where applications can run unmodified, on un-modified operating systems without requiring any virtual environments, virtual machines or virtual machine monitors. The present invention also teaches how to manage and handle applications that share libraries and resources, and how to handle complex multi-process applications. In one embodiment an implementation in the Linux environment is described, in another embodiment an implementation on Windows is described.
BRIEF SUMMARY OF THE INVENTION
A method, system, apparatus and/or computer program are described for achieving application isolation for single and multi-process applications and their associated resources. The application isolation is provided without requiring any changes to the host operating system kernel or requiring any changes to the applications. The application isolation is fully transparent to both operating system and application and automatically adjusts for resources such as memory, storage, and CPUs being allocated and released. The application isolation is provided in an interception layer interposed between the individual applications and the operating system and an interception database. Preferably, any functional changes to system calls are done exclusively within the interception layer and interception database, and only in the context of the calling application.
Another aspect of the present invention relates to a method and a computer readable medium comprising instructions for application and application group isolation. The instructions are for installing the applications into the isolated environment, running the application in the isolated environment, un-installing applications from the isolated environment, configuring the isolated environments, and deploying the isolated environments.
Yet another aspect of the invention relates to a system for providing application isolation to one or more applications, the system comprising: one or more isolated environments including application files and executables; one or more interception layers intercepting access to system resources and interfaces; an interception database maintaining mapping between the system resources inside the one or more isolated environments and outside; and a host operating system, wherein the one or more applications are isolated from other applications and the host operating system while running within the one or more isolated environments.
DEFINITIONS
The terms “Windows” and “Microsoft Windows” are utilized herein interchangeably to designate any and all versions of the Microsoft Windows operating systems. By example, and not limitation, this includes Windows XP, Windows Server 2003, Windows NT, Windows Vista, Windows Server 2008, Windows Mobile, and Windows Embedded.
The terms “Linux” and “UNIX” are utilized herein to designate any and all variants of Linux and UNIX. By example, and not limitation, this includes RedHat Linux, Suse Linux, Ubuntu Linux, HPUX (HP Unix), and Solaris (Sun Unix).
The term “node” and “host” are utilized herein to designate one or more processors running a single instance of an operating system. A virtual machine, such as VMWare or XEN VM instance, is also considered a “node”. Using VM technology, it is possible to have multiple nodes on one physical server.
The terms “application” is utilized to designate a grouping of one or more processes, where each process can consist of one or more threads. Operating systems generally launch an application by creating the application's initial process and letting that initial process run/execute. In the following teachings we often identify the application at launch time with that initial process.
The term “application group” is utilized to designate a grouping of one or more applications.
In the following we use commonly known terms including but not limited to “process”, “process ID (PID)”, “thread”, “thread ID (TID)”, “thread local storage (TLS)”, “instruction pointer”, “stack”, “kernel”, “kernel module”, “loadable kernel module”, “heap”, “stack”, “files”, “disk”, “CPU”, “CPU registers”, “storage”, “memory “memory segments”, “address space”, “semaphore”, “loader”, “system loader”, “system path”, and “signal”. These terms are well known in the art and thus will not be described in detail herein.
The term “transport” is utilized to designate the connection, mechanism and/or protocols used for communicating across the distributed application. Examples of transport include TCP/IP, Message Passing Interface (MPI), Myrinet, Fibre Channel, ATM, shared memory, DMA, RDMA, system buses, and custom backplanes. In the following, the term “transport driver” is utilized to designate the implementation of the transport. By way of example, the transport driver for TCP/IP would be the local TCP/IP stack running on the host.
The term “interception” is used to designate the mechanism by which an application re-directs a system call or library call to a new implementation. On Linux and other UNIX variants interception is generally achieved by a combination of LD_PRELOAD, wrapper functions, identically named functions resolved earlier in the load process, and changes to the kernel sys_call_table. On Windows, interception can be achieved by modifying a process' Import Address Table and creating Trampoline functions, as documented by “Detours: Binary Interception of Win32 Functions” by Galen Hunt and Doug Brubacher, Microsoft Research July 1999”. Throughout the rest of this document we use the term to designate the functionality across all operating systems.
The term “file context” or “context” is used in relation with file operations to designate all relevant file information. By way of example, and not limitation, this includes file name, directory, read/write/append/execute attributes, buffers and other relevant data as required by the operating system.
The term “transparent” is used herein to designate that no modification to the application is required. In other words, the present invention works directly on the application binary without needing any application customization, source code modifications, recompilation, re-linking, special installation, custom agents, or other extensions.
The terms “private and isolated environment” and “isolated environment” are used herein interchangeably to designate the private area set aside for application isolation, as described in further detail below.
The present invention provides application isolation at several levels: 1) during installation, all installation and registration information is intercepted and installation is re-directed to a private and isolated environment, 2) during launch of an application the installation information is retrieved and provided to the application again via interception, and 3) during access to external resources interception of all access is re-directed as necessary. The combination of all levels of isolation provides for fully transparent application isolation. Thus at all times, access to resources, configuration and run-time information is intercepted and redirected.
By way of example, and not limitation, for embodiments within Windows operating systems, access to the Windows Registry is intercepted and included in the application isolation.
Further aspects of the invention will be brought out in the following portions of the specification, wherein the detailed description is for the purpose of fully disclosing preferred embodiments of the invention without placing limitations thereon.
BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWING(S)
The invention will be more fully understood by reference to the following drawings which are for illustrative purposes only:
<figref idref="DRAWINGS">FIG. 1</figref> is a block diagram of the core system architecture showing two applications, the interception layer, and the interception database.
<figref idref="DRAWINGS">FIG. 2</figref> is a block diagram illustrating installation and running of applications
<figref idref="DRAWINGS">FIG. 3</figref> is a block diagram illustrating un-installation
<figref idref="DRAWINGS">FIG. 4</figref> is a block diagram illustrating the Interception Database
<figref idref="DRAWINGS">FIG. 5</figref> is a block diagram illustrating running application groups
<figref idref="DRAWINGS">FIG. 6</figref> is a block diagram illustrating running multiple application groups concurrently
<figref idref="DRAWINGS">FIG. 7</figref> is a block diagram illustrating installation-free deployment
<figref idref="DRAWINGS">FIG. 8</figref> is a block diagram illustrating administration
<figref idref="DRAWINGS">FIG. 9</figref> is a block diagram illustrating various deployment scenarios
<figref idref="DRAWINGS">FIG. 10</figref> is a block diagram illustrating interception data and control flow
DETAILED DESCRIPTION OF THE INVENTION
Referring more specifically to the drawings, for illustrative purposes the present invention will be described in relation to <figref idref="DRAWINGS">FIG. 1</figref> through <figref idref="DRAWINGS">FIG. 10</figref>. It will be appreciated that the system and apparatus of the invention may vary as to configuration and as to details of the constituent components, and that the method may vary as to the specific steps and sequence, without departing from the basic concepts as disclosed herein.
1. Introduction
The context in which this invention is described is one or more applications being installed, running and accessing local and remote resources. Without affecting the general case of multiple applications, the following scenarios often depict and describe one or two applications as applicable. Multiple applications are handled in a similar manner.
1. Overview
<figref idref="DRAWINGS">FIG. 1</figref> illustrates by way of example embodiment <b>10</b> the overall structure of the present invention. The following brief overview illustrates the high-level relationship between the various components; further details on the inner workings and interdependencies are provided in the following sections. <figref idref="DRAWINGS">FIG. 1</figref>. Illustrates by way of example embodiment <b>10</b> two applications A <b>22</b> and B <b>26</b> loaded in memory <b>14</b> on a node <b>12</b>. The interception layers <b>16</b>, <b>17</b>, are interposed between the applications <b>22</b>, <b>26</b> and the system libraries <b>18</b> and operating system <b>20</b>. The interception database <b>28</b> provides system-wide persistent interception information and configuration information for the isolated environments. The interception layers <b>16</b>,<b>17</b> combined with the Interception database <b>28</b> provides application isolation <b>24</b>. System resources, such as CPUs <b>36</b>, I/O devices <b>34</b>, Network interfaces <b>32</b> and storage <b>30</b> are accessed using the operating system. Devices accessing remote resources use some form of transport network <b>38</b>. By way of example, system networking <b>32</b> may use TCP/IP over Ethernet transport, Storage <b>32</b> may use Fibre Channel or Ethernet transport, and I/O may use USB. The present invention access and arbitrate resources through the operating system and does not work at the transport level.
2. Installing and Running Applications
<figref idref="DRAWINGS">FIG. 2</figref> illustrates by way of example embodiment <b>40</b> installation of a typical application “AppXYZ” <b>42</b>. The Interception Layer (IL) <b>50</b> intercepts all calls to system libraries and the operating system. IL <b>50</b> communicates with the Interception Database (IDB) <b>58</b> to create a private and isolated environment where the application can execute without depending on or affecting other parts of the environment. By way of example, and not limitation, first the installation process requests a resource <b>44</b>, such as opening a file. The resource request is intercepted by IL <b>50</b> and a request to create <b>54</b> a private instance of the resource is made to the Interception Database (IDB) <b>58</b>. The IDB <b>58</b> is a system wide database containing mappings <b>60</b>, <b>62</b>, <b>64</b> between the resources as the application <b>42</b> requests them <b>60</b>, and their private values inside the isolated environment <b>62</b>, subject to global exceptions <b>64</b>. Further details on the IDB are given in section 4 below. By way of example, and not limitation, if the resource request <b>44</b> was to create a file in C:\Program Files\AppDir, the IDB may map that to a private location <b>62</b>, such as D:\private\AppXYZ\C\Program Files\AppDir. So while AppXYZ <b>42</b> operates under the assumption that it's working on C:\Program Files\AppDir, in reality all access has been intercepted and re-directed to a private and isolated environment in D:\private\AppXYZ\C\Program Files\AppDir. The IDB <b>58</b> returns <b>54</b> the private resource to IL <b>50</b>, which returns the resource handle <b>46</b> to the application <b>42</b>. As the application <b>42</b> uses the resource <b>46</b> it operates under the assumption that the original resource request was satisfied, and is unaware that all resources have been relocated to a private and isolated environment. When use of the resource is terminated <b>48</b>, the IL <b>50</b> sends a message to the IDB <b>58</b> that the resource currently is inactive <b>56</b>. All mappings are maintained in the IDB <b>58</b> after the installation finishes as they may be needed after the initial request.
<figref idref="DRAWINGS">FIG. 2</figref> also illustrates, by way of example embodiment <b>40</b>, how an application <b>42</b> runs after being installed. As resources are opened, used, and freed, the same steps as described above are used. As the application <b>42</b> executes, it generally access or create resources not used during installation. By way of example, if AppXYZ <b>42</b> is a word processor, the user may create a document and save it to storage. That document did not exist as part of the installation process, but is handled using the same mechanisms previously taught. As the user choose to create a new document, AppXYZ <b>42</b> makes a request <b>44</b> to have the file created. This is intercepted by the IL <b>50</b> and forwarded <b>52</b> to the IDB <b>58</b>. The IDB creates a mapping between the Applications <b>42</b><i>s </i>public document name <b>60</b>, and the private and isolated document name <b>62</b>. As with Application <b>42</b> information stored in the IDB <b>58</b>, so is the application data information stored persistently until un-installation.
At times it may be desirable to store some user-data outside the isolated environment, such as on a central file server. In a preferred embodiment, this is supported by specifying which resource locations should remain fixed and public in the global exceptions <b>64</b>. Such public resources are not translated into the isolated environment.
3. Uninstalling Applications
<figref idref="DRAWINGS">FIG. 3</figref> illustrates by way of example embodiment <b>80</b>, un-installation of a typical application AppXYZ <b>82</b>. The un-installation uses and requests resources <b>84</b>, which are intercepted by the IL <b>86</b> and redirected <b>88</b> by the IDB <b>90</b>, as described above. All actions, such as deletion of files, are re-directed to the private and isolated location. When the un-install terminates, sometimes called exit( ), the exit is intercepted <b>92</b> by the IL <b>86</b>, and forwarded <b>94</b> to the IDB <b>90</b>. The IDB <b>90</b> removes all entries mapping <b>100</b> application AppXYZ <b>82</b> resources <b>96</b> against its isolated environment <b>98</b>. The application is now uninstalled, and all isolation information has been removed.
4. Interception Database and Resource Mapping
The Interception Database (IDB) is a system wide database containing mappings between the resources as the application requests them, and their private values inside the isolated environment. <figref idref="DRAWINGS">FIG. 4</figref> illustrates, by way of example embodiment <b>120</b>, the Interception Database (IDB) <b>122</b>, and its various components. The IBD <b>122</b> contains two main components, a rules engine <b>130</b> and the core resource mappings <b>132</b>. The rules engine <b>130</b> contains the main high-level configuration information <b>124</b> as provided by an administrator <b>126</b>. The rules engine <b>130</b> and its configuration information <b>124</b> includes, but is not limited to, information designating the base directory for installing the isolated environment, specific exceptions <b>138</b> to the resource mappings and the general mechanism used to create the mappings. The administrator <b>126</b> defines exceptions <b>138</b> as needed. The global exceptions contain all resources that should not be remapped to the isolated environments. Examples include, but are not limited to, shared storage, shared devices, network resources, and system-wide resources.
The resource mapping <b>132</b> maintains mapping between public resources <b>134</b> and the corresponding private and isolated resources <b>136</b>. The resource mapping <b>132</b> also consults the global exceptions <b>138</b> prior to translating any public to private or private to public resource requests.
Resources take many forms including but not limited to files, fonts, shared libraries, shared devices, and storage. On Microsoft Windows the Registry is an important component and contains system wide configuration information used by most applications. Some resources, such as data files, tend to be local to the individual applications, while e.g. fonts tend to be shared between multiple applications.
Access to files are handled by the IL (<figref idref="DRAWINGS">FIGS. 2-50</figref>) intercepting all file operations between the application and the system libraries and operating systems. Examples include, but are not limited to open( ), fopen( ), write( ), read( ), close( ), seek( ), remove( ) and the Windows equivalents. Generally these functions either contain a public file name as part of the arguments, or a file handle to an already established file. The files names are remapped as described above, to an isolated environment, and any further reference to the handle is automatically re-directed to the isolated environment. File operations that return information, are translate back to the public values. By way of example, and not limitation, if the applications ask for “current directory”, the public name, as the application expects is returned, and not the private name within the isolated environment. By way of further example, if the current directory is located on shared storage included the global exceptions <b>138</b>, the directory is returned un-translated, as it's subject to the exception handling.
File, paths and other resource names can be specified both as absolute values or relative values. By way of example, and not limitation, an absolute path for a document file may be “C:\MyDocuments\myfile.doc”, while a relative reference may be “ . . . \docs\myfile.doc”. Absolute references are resolved as previously described by consulting the public resources <b>134</b>, private resources <b>136</b> and global exceptions <b>138</b>. Relative addresses are resolved in a multi-step process: First relative names are converted to absolute names and then the absolute name is converted as previously described. This mechanism ensures fully transparent support of both absolute and relative naming of all resources.
Fonts pose particular problems, as fonts reside both in application-specific directories and global system directories, such as “C:\Windows\Fonts” on Windows and “/usr/X11R6/lib/X11/fonts/” and “/usr/share/fonts/” on Linux. An application may install font both into one or more global font directories as well as application-specific directories. All shared-fonts directories are included in the Global Exceptions <b>138</b> as they should be accessed directly. If during installation additional fonts are installed, they are installed according to the policy chosen by the administrator <b>126</b>. Prior to installation, the administrator chooses if application-installed fonts are allowed to be placed in the global fonts directory or if they should be placed in the isolated environment. The rules engine <b>130</b> consults this administrative choice and upon receiving a request to enumerate the font directory will include isolated-environment fonts if so configured. If the application installs its fonts into its own file structure, the fonts are treated as normal files and are not subject to the automatic enumeration as the application knows where to look for its application-specific fonts.
Modern operating systems share components across multiple applications. Such shared libraries also pose a special case. On Windows Dynamic Link Libraries (DLLs) and on Linux/UNIX shared objects (.so files) are examples of such shared components. On Window shared libraries primarily reside in C:\Windows and C:\Windows\System32, but can sit anywhere. On Linux/Unix the primary locations are ‘/usr/lib’, ‘/usr/X11/lib’ and the entire /usr/lib/ directory structure. The loader of the operating system traverses the system PATH to find any requested shared library, but this can be manually or programmatically changed as part of the load process. The PATH is set using environment variables both on Windows and Linux. In order to intercept loading of shares libraries the present invention loads the application in stead of using the system loader directly. This enables interception of library loading done by the loader. If during installation additional shared libraries are installed, they are installed according to the policy chosen by the administrator <b>126</b>. Prior to installation, the administrator chooses if application-installed libraries are allowed to be placed in a global directory or if they should be placed in the private and isolated environment. If the libraries are placed into the private and isolated environment, the load PATH is adjusted to search the private location.
As with files, libraries can be loaded with both absolute and relative addresses. The load process handles the resource mapping as described above. In all cases, the loading must follow the same path and address resolution as the system loader provides.
If the application installs its shared libraries into its own file structure, the libraries are treated as normal files and are not subject to an adjusted PATH or load-order as the application knows where to look for its application-specific libraries. In the preferred embodiment, if the application installs new shared libraries, they are installed into the isolated environment
One of the most significant sources of application incompatibilities, and one of the motivators for the present invention, is shared library conflict. By way of example, and not limitation, if a shared library is loaded on the system, and a new application installs an older version of the library, the older version may overwrite the newer version and render other applications non-functional based on having their shared library replaced by an incompatible older version. This is a common problem on both the Windows and Linux platforms. Using the preferred embodiment described above, the application would install the older library into its isolated environment and therefore not affect other applications. The application would load and use the older library without ever being aware that it was provided from the isolated environment, and other applications running on the system would be unaffected by the installation of the older library.
Microsoft Windows uses a special configuration system generally referred to as “the Registry”. The registry contains configuration, installation and un-installation information for applications on the system. When an application installs on a Windows system, it uses the registry to store values such as “home directory”, “recent files”, etc. The preferred embodiment on Windows systems additionally include interception of all registry information, and ensures that installation and runtime information that would normally go into the registry, in stead is stored and maintained in the IDB. During installation of a Windows application all registry information is thus stored in the IDB and not the registry. When an application requests registry information, the information is provided from the IDB, and not the registry. This ensures complete application isolation from the registry.
The isolated environment contains all application files and shared resources and their respective mappings. These are all preserved persistently on local or remote storage and can be archived, copied and restored as any other set of files. Specifically, the isolated environment directory structure can be copied to a different node, and used directly to start the application on that node.
So far the Interception database has been described as a “database”. Based on the teachings above, it's readily apparent to anyone skilled in the art, that the only requirement is that updates to the resource tables <b>134</b>, <b>136</b> and <b>138</b> be atomic at the record level. This functionality can be readily implemented in a variety of ways, including using Java's ConcurrentHashMap( ) the Windows .NET equivalents, or by custom programming the data structures and locking. Furthermore, preferably concurrent access to the Interception Database translations is provided. In an alternate implementation such a custom interception database is used in stead of a full database.
5. Interception Data and Control Flow
<figref idref="DRAWINGS">FIG. 10</figref> illustrates by way of example embodiment <b>240</b> the data and control flow in more detail. By way of example, and not limitation, consider first an environment with the present invention inactive. An application <b>242</b> calls a write( ) <b>243</b> operation. The write operation is resolved by the operating system loader and directed <b>244</b> to the system libraries <b>248</b> and operating system <b>250</b>, and ultimately writes data to storage <b>251</b>. Return value is returned <b>246</b> to the caller <b>243</b> within the calling application <b>242</b>.
By way of example, and not limitation, consider an environment with the present invention active. An application <b>252</b> calls a write( ) <b>253</b> operation. As described in above, the write( ) is intercepted <b>254</b> by the interception layer <b>262</b>. Parameters to the write( ) call are translated by the Interception Database <b>264</b> and the rules for the isolated environment <b>266</b> and the file context and parameters of the calling write are adjusted to point to the isolated environment. The write call <b>268</b> is then forwarded to the system libraries <b>258</b> and operating system <b>260</b> as were the case with the present invention inactive. The return value <b>266</b> from the write is returned to the IL <b>262</b> which, using the IDB <b>264</b>, maps the result back into the original context and returns the value <b>256</b> to the caller <b>253</b>. The application <b>252</b> issuing the write <b>253</b> operating is thus unaware that the write is being intercepted and re-directed to the isolated environment. All translation and isolation is performed outside the application <b>252</b>, and before the write operation ever reaches the system libraries <b>258</b> or operating system <b>260</b>.
A specific example, using ANSI C, further illustrates the mechanics of the IL <b>262</b> and IDB <b>264</b> translations. Consider an example where a file is opened for writing, a small text is written, and the file is closed using the following code
<tables id="TABLE-US-00001" num="00001"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="offset" colwidth="14pt" align="left" /><colspec colname="1" colwidth="21pt" align="left" /><colspec colname="2" colwidth="161pt" align="left" /><colspec colname="3" colwidth="21pt" align="left" /><thead><row><entry /><entry namest="offset" nameend="3" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry /><entry /><entry> int main(void)</entry><entry /></row><row><entry /><entry /><entry> {</entry><entry /></row><row><entry /><entry /><entry> char const *pStr = “small text”;</entry><entry /></row><row><entry /><entry /><entry> FILE *fp = fopen(“/home/user/newfile.txt”, “w”)</entry><entry /></row><row><entry /><entry /><entry> if (fp != null)</entry><entry /></row><row><entry /><entry /><entry> fwrite(pStr,strlen(pStr),1,fp);</entry><entry /></row><row><entry /><entry /><entry> fclose(fp)</entry><entry /></row><row><entry /><entry /><entry>{</entry></row><row><entry /><entry namest="offset" nameend="3" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
The call to fopen( ) returns a file pointer, which the fwrite( ) operation uses to write data to the file. The call to fopen( ) includes the file name “/home/user/newfile.txt” as the first parameter. The Interception Layer <b>262</b> intercepts the call to fopen( ) and changes the actual filename to the corresponding location in the isolated environment before passing <b>268</b> the call on to the system library implementation <b>258</b>. The following fwrite( ) operation is unaware that the file pointer points to the isolated environment and simply writes the data. Finally, fclose( ) is called to close the file. The file pointer still points to the isolated environment and the close proceeds as a close would without the present invention active.
6. Application Groups
At times multiple applications share data, libraries and work in combination. By way of example, and not limitation, Microsoft Word may include a Microsoft Excel spreadsheet. In general any number of applications may need to collaborate and share data. So far the approach has been to isolate applications so that, to continue the example, if Word and Excel were installed separately, they would both be isolated and not able to work together. To enable sharing between pre-designated applications, the applications need to be grouped together in an application group and installed inside the same isolated environment. <figref idref="DRAWINGS">FIG. 5</figref> illustrates by way of example embodiment <b>140</b>, an application group <b>142</b> operating within the present invention. The administrator <b>152</b> pre-defines the application group <b>142</b> and the individual applications within the group: App-1 <b>143</b>, App-2 <b>144</b> and App-n <b>146</b>. The administrator <b>152</b> commits the application group to the IDB <b>150</b>. The IDB uses the same mechanisms as described above for individual applications, and structures the isolated environment <b>154</b> so that the individual applications share resources and file system. By installing the applications together they automatically use the same isolated environment and sharing is fully automatic without requiring any additional information. The interception layer <b>148</b> intercepts, as previously described, and requires no special configuration; all application group information is contained within the IDB <b>150</b> and the settings for the isolated environment <b>154</b>.
7. Concurrent Operation of Multiple Application Groups
<figref idref="DRAWINGS">FIG. 6</figref> illustrates by way of example embodiment <b>160</b>, concurrent operation of three application groups: application group A <b>162</b>, application group B <b>166</b> and application group C <b>170</b>. Each application group consists of one or more applications. As previously described each application group has a dedicated interception layer: IL <b>164</b> for application group A <b>162</b>, IL <b>168</b> for application group B <b>166</b>, and IL <b>172</b> for application group C <b>170</b>. Each interception layer <b>164</b>, <b>168</b>, <b>172</b> provide the interception services as previously described, with each attached to only one application group. As previously disclosed, the Interception Database <b>174</b> is global, and is shared between all application groups and interception layers.
The administrator <b>176</b> commits all administrative settings to the IDB <b>174</b>, which is reflected in the database tables for the isolated environment <b>178</b>.
8. Running Multiple Concurrent Instances of One Application
At times it may be desirable to run multiple instances of the same application or application group, but in separate isolated environments. Referring again to <figref idref="DRAWINGS">FIG. 6</figref> for illustrative purposes. The administrator <b>176</b> defines each instance of the application group using separate application group names. Even though Application Group A <b>162</b>, Application Group B <b>166</b>, and Application Group C <b>170</b> are identical, they have been pre-defined with their own environment, and thus run in separate isolated environments without any further intervention or configuration.
9. Installation-Free Deployment
One of the major problems with application deployment is the actual installation and the associated risks as described previously. Using the present invention, a pre-created isolated environment can be used in place of performing an actual installation. The isolated environment contains all application files, shared libraries, and installation data and can be moved, copied and run from anywhere the present invention is present.
<figref idref="DRAWINGS">FIG. 7</figref> illustrates by way of example embodiment <b>180</b>, how to deploy an isolated environment without needing more than one initial installation <b>181</b>. First the administrator <b>196</b> installs <b>184</b> the application group <b>182</b>. As previously taught the interception database <b>186</b> creates an isolated environment <b>188</b> which contains all application group data, including shared files, data and programs. As taught above, the isolated environment is written to storage and can be copied and run elsewhere. With the isolated environment ensuring isolation from the underlying operating system and applications, an isolated environment can be deployed on a different node by copying the entire isolated environment directory structure to the new node and starting the application. Referring to <figref idref="DRAWINGS">FIG. 7</figref>, the administrator <b>196</b> copies the isolated environment <b>188</b> into the first node <b>190</b>, the second node <b>192</b> and the third node <b>194</b>.
In an alternate embodiment, the environment <b>188</b> is stored on shared storage, and is accessed directly from the shared storage. In this embodiment, the isolated environment is loaded directly from shared storage, and only local data, such as temporary files, are kept locally.
In another embodiment, the environment <b>188</b> is saved to storage and shipped to a remote site. The remote site loads the environment and runs the applications directly from within the environment without any installations. In this embodiment the present invention may be used for disaster recovery.
10. Administration
<figref idref="DRAWINGS">FIG. 8</figref> illustrates by way of example embodiment <b>200</b>, the management infrastructure. The administrator <b>202</b> communicates configuration preferences to the Interception database <b>204</b> for each isolated environment <b>206</b>. The IDB <b>204</b> contains, as described above, two separate modules: 1) a rules engine (FIG. <b>4</b>—<b>130</b>) and 2) management of the resource mappings (FIG. <b>4</b>—<b>132</b>). The rules engine implements the administrator provided resource translations and populates the tables (FIG. <b>4</b>—<b>134</b>,<b>136</b>,<b>138</b>).
The administrator <b>202</b> provides general configuration information applicable to all isolated environments and applications <b>203</b>, unless explicitly changed for a particular isolated environment <b>205</b>. Examples of administrator-provided global configuration information <b>203</b> includes, but is not limited to <ul id="ul0001" list-style="none"><li id="ul0001-0001" num="0000"><ul id="ul0002" list-style="none"><li id="ul0002-0001" num="0077">Default storage location for all isolated environments</li><li id="ul0002-0002" num="0078">Default resource exceptions</li><li id="ul0002-0003" num="0079">Default application and application group naming</li><li id="ul0002-0004" num="0080">Default policy for installing fonts and shared resources into global or isolated environment</li></ul></li></ul>
Each setting can be changed, i.e. replaced, on an application by application basis, and on an application-group by application basis. As determined by the administrator, examples of administrator-provided application-level configuration information <b>205</b> include, but is not limited to <ul id="ul0003" list-style="none"><li id="ul0003-0001" num="0000"><ul id="ul0004" list-style="none"><li id="ul0004-0001" num="0082">Storage location for isolated environment</li><li id="ul0004-0002" num="0083">Logical name of application or application group</li><li id="ul0004-0003" num="0084">Application or application-group specific resource exceptions</li><li id="ul0004-0004" num="0085">Policy for installing fonts and shared resources into global or isolated environment</li></ul></li></ul>
The combination of the global configuration information <b>203</b> with the rules engine (FIG. <b>4</b>—<b>130</b>), makes the configuration and deployment on new isolated environment fully automatic after the initial global configuration has been provided. As described, it may be desirable to change one or more of an application's isolated environment settings. By way of example, and not limitation, if a particular application needs to locally access certain resources only available on a particular server, that one application's isolated environment would be located on that particular server, while all other environments were centrally stored. The ability to “mix and match” environments and deployments ensure full flexibility and ability to deploy multiple applications in a heterogeneous environment with all the benefits of the present invention.
In another embodiment the administrative functions <b>202</b> is done programmatically using an Application Programming Interface (API).
11. Deployment Scenarios
<figref idref="DRAWINGS">FIG. 9</figref> illustrates by way of example embodiment <b>220</b> a variety of ways the invention can be configured to operate. In one embodiment, the invention is configured to run from a central file server <b>222</b>, in another it is configured to run on a pair of application servers <b>224</b>, <b>226</b>. In a third embodiment the invention is configured to run on a LAN <b>228</b> connected PC <b>232</b> together with the application servers <b>224</b>, <b>226</b>, and with environments loaded from the central file server <b>222</b>. In a fourth embodiment the invention is configured to isolate applications on a cell phone <b>230</b>, which is wirelessly connected <b>238</b> to the Internet <b>236</b>, the application servers <b>224</b>,<b>226</b> and the file server <b>222</b>. A fifth embodiment has an isolated environment on a home-PC <b>234</b> connected via the internet <b>236</b> to the application servers <b>224</b>,<b>226</b> and the LAN PC <b>232</b>. The invention runs on one or more of the devices, can be distributed across two or more of these elements, and allows for running the invention on any number of the devices (<b>222</b>,<b>224</b>,<b>226</b>,<b>230</b>,<b>232</b>,<b>234</b>) at the same time
12. Conclusion
In the embodiments described herein, an example programming environment was described for which an embodiment of programming according to the invention was taught. It should be appreciated that the present invention can be implemented by one of ordinary skill in the art using different program organizations and structures, different data structures, and of course any desired naming conventions without departing from the teachings herein. In addition, the invention can be ported, or otherwise configured for, use across a wide-range of operating system environments.
Although the description above contains many details, these should not be construed as limiting the scope of the invention but as merely providing illustrations of some of the exemplary embodiments of this invention. Therefore, it will be appreciated that the scope of the present invention fully encompasses other embodiments which may become obvious to those skilled in the art, and that the scope of the present invention is accordingly to be limited by nothing other than the appended claims, in which reference to an element in the singular is not intended to mean “one and only one” unless explicitly so stated, but rather “one or more.” All structural and functional equivalents to the elements of the above-described preferred embodiment that are known to those of ordinary skill in the art are expressly incorporated herein by reference and are intended to be encompassed by the present claims. Moreover, it is not necessary for a device or method to address each and every problem sought to be solved by the present invention, for it to be encompassed by the present claims. Furthermore, no element, component, or method step in the present disclosure is intended to be dedicated to the public regardless of whether the element, component, or method step is explicitly recited in the claims. No claim element herein is to be construed under the provisions of 35 U.S.C. 112, sixth paragraph, unless the element is expressly recited using the phrase “means for.”
Contents9
12 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12
Every citation, both waysCites: the store holds 139 of 140
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US9563786B1 | Cited by | United States of America | Applicant |
| US9934404B2 | Cited by | United States of America | Applicant |
| US10496602B1 | Cited by | United States of America | Search report |
| US9934405B2 | Cited by | United States of America | Applicant |
| US9953182B2 | Cited by | United States of America | Applicant |
| US2002007468A1 | Cites | United States of America | Applicant |
| US2002087916A1 | Cites | United States of America | Applicant |
| US2002124089A1 | Cites | United States of America | Applicant |
| US2002169884A1 | Cites | United States of America | Applicant |
| US2002174265A1 | Cites | United States of America | Applicant |
| US2003018927A1 | Cites | United States of America | Applicant |
| US2003028635A1 | Cites | United States of America | Applicant |
| US2003069993A1 | Cites | United States of America | Applicant |
| US2003140041A1 | Cites | United States of America | Applicant |
| US2003140272A1 | Cites | United States of America | Applicant |
| US2004044721A1 | Cites | United States of America | Applicant |
| US2004153700A1 | Cites | United States of America | Applicant |
| US2004210895A1 | Cites | United States of America | Applicant |
| US2004268175A1 | Cites | United States of America | Applicant |
| US2005050304A1 | Cites | United States of America | Applicant |
| US2005071824A1 | Cites | United States of America | Applicant |
| US2005213498A1 | Cites | United States of America | Applicant |
| US2005251785A1 | Cites | United States of America | Applicant |
| US2005262097A1 | Cites | United States of America | Applicant |
| US2005262411A1 | Cites | United States of America | Applicant |
| US2005268273A1 | Cites | United States of America | Applicant |
| US2005278688A1 | Cites | United States of America | Applicant |
| US2006015764A1 | Cites | United States of America | Applicant |
| US2006075381A1 | Cites | United States of America | Applicant |
| US2006080411A1 | Cites | United States of America | Applicant |
| US2006085679A1 | Cites | United States of America | Applicant |
| US2006090097A1 | Cites | United States of America | Applicant |
| US2006143512A1 | Cites | United States of America | Applicant |
| US2006206873A1 | Cites | United States of America | Applicant |
| US2006262716A1 | Cites | United States of America | Applicant |
| US2006262734A1 | Cites | United States of America | Applicant |
| US2007007336A1 | Cites | United States of America | Applicant |
| US2007107052A1 | Cites | United States of America | Applicant |
| US2007156659A1 | Cites | United States of America | Applicant |
| US2007192518A1 | Cites | United States of America | Applicant |
| US2007260733A1 | Cites | United States of America | Applicant |
| US2007277056A1 | Cites | United States of America | Applicant |
| US2007294578A1 | Cites | United States of America | Applicant |
| US2008104441A1 | Cites | United States of America | Applicant |
| US2008295114A1 | Cites | United States of America | Applicant |
| US2008301760A1 | Cites | United States of America | Applicant |
| US2009271787A1 | Cites | United States of America | Applicant |
| US2010023996A1 | Cites | United States of America | Applicant |
| US2012054486A1 | Cites | United States of America | Applicant |
| US5774660A | Cites | United States of America | Applicant |
| US5951650A | Cites | United States of America | Applicant |
| US5996016A | Cites | United States of America | Applicant |
| US6021408A | Cites | United States of America | Applicant |
| US6026499A | Cites | United States of America | Applicant |
| US6085086A | Cites | United States of America | Applicant |
| US6105148A | Cites | United States of America | Applicant |
| US6144999A | Cites | United States of America | Applicant |
| US6154877A | Cites | United States of America | Applicant |
| US6161219A | Cites | United States of America | Applicant |
| US6189111B1 | Cites | United States of America | Applicant |
| US6269442B1 | Cites | United States of America | Applicant |
| US6314567B1 | Cites | United States of America | Applicant |
| US6321275B1 | Cites | United States of America | Applicant |
| US6484276B1 | Cites | United States of America | Applicant |
| US6496847B1 | Cites | United States of America | Applicant |
| US6496979B1 | Cites | United States of America | Applicant |
| US6560626B1 | Cites | United States of America | Applicant |
| US6574618B2 | Cites | United States of America | Applicant |
| US6601081B1 | Cites | United States of America | Applicant |
| US6718538B1 | Cites | United States of America | Applicant |
| US6766314B2 | Cites | United States of America | Applicant |
| US6823474B2 | Cites | United States of America | Applicant |
| US7028305B2 | Cites | United States of America | Applicant |
| US7058696B1 | Cites | United States of America | Applicant |
| US7076555B1 | Cites | United States of America | Applicant |
| US7089294B1 | Cites | United States of America | Applicant |
| US7093086B1 | Cites | United States of America | Applicant |
| US7096388B2 | Cites | United States of America | Applicant |
| US7127713B2 | Cites | United States of America | Applicant |
| US7197700B2 | Cites | United States of America | Applicant |
| US7207039B2 | Cites | United States of America | Applicant |
| US7213246B1 | Cites | United States of America | Applicant |
| US7246256B2 | Cites | United States of America | Applicant |
| US7257811B2 | Cites | United States of America | Applicant |
| US7269645B2 | Cites | United States of America | Applicant |
| US7363365B2 | Cites | United States of America | Applicant |
| US7370071B2 | Cites | United States of America | Applicant |
| US7447896B2 | Cites | United States of America | Applicant |
| US7467370B2 | Cites | United States of America | Applicant |
| US7512815B1 | Cites | United States of America | Applicant |
| US7519963B1 | Cites | United States of America | Applicant |
| US7523344B2 | Cites | United States of America | Applicant |
| US7543182B2 | Cites | United States of America | Applicant |
| US7613921B2 | Cites | United States of America | Applicant |
| US7673308B2 | Cites | United States of America | Applicant |
| US7694123B2 | Cites | United States of America | Applicant |
| US7725763B2 | Cites | United States of America | Applicant |
| US7761573B2 | Cites | United States of America | Applicant |
| US8065714B2 | Cites | United States of America | Applicant |
| US8171483B2 | Cites | United States of America | Applicant |
195 members in 3 offices
Priority claims14
| Document | Office | Kind | Date |
|---|---|---|---|
| 33465408 | United States of America | A | |
| 33465408 | United States of America | A | |
| 33466008 | United States of America | A | |
| 33466008 | United States of America | A | |
| 42169109 | United States of America | A | |
| 42169109 | United States of America | A | |
| 201213708477 | United States of America | A | |
| 12334654 | – | – | – |
| 12334660 | – | – | – |
| 12421691 | – | – | – |
| US20080334654 | – | – | – |
| US20080334660 | – | – | – |
| US20090421691 | – | – | – |
| US201213708477 | – | – | – |
Members195
| Document | Office | Kind | |
|---|---|---|---|
| WO2006026402A2 | World Intellectual Property Organization (WIPO) | A2 | |
| WO2006026403A2 | World Intellectual Property Organization (WIPO) | A2 | |
| US2006085679A1 | United States of America | A1 | |
| US2006090097A1 | United States of America | A1 | |
| EP1719056A2 | European Patent Office (EPO) | A2 | |
| EP1784727A2 | European Patent Office (EPO) | A2 | |
| WO2006026403A3 | World Intellectual Property Organization (WIPO) | A3 | |
| WO2006026402A3 | World Intellectual Property Organization (WIPO) | A3 | |
| US7293200B2 | United States of America | B2 | |
| US2007260733A1 | United States of America | A1 | |
| WO2007130989A2 | World Intellectual Property Organization (WIPO) | A2 | |
| WO2007130989A3 | World Intellectual Property Organization (WIPO) | A3 | |
| EP1719056A4 | European Patent Office (EPO) | A4 | |
| US7681075B2 | United States of America | B2 | |
| US7783914B1 | United States of America | B1 | |
| US2010262694A1 | United States of America | A1 | |
| US2010262970A1 | United States of America | A1 | |
| US2010262977A1 | United States of America | A1 | |
| US8037367B1 | United States of America | B1 | |
| US8078910B1 | United States of America | B1 | |
| US8082468B1 | United States of America | B1 | |
| US8108722B1 | United States of America | B1 | |
| US8122280B2 | United States of America | B2 | |
| US8176364B1 | United States of America | B1 | |
| US8195722B1 | United States of America | B1 | |
| US8281184B1 | United States of America | B1 | |
| US8281317B1 | United States of America | B1 | |
| US8301700B1 | United States of America | B1 | |
| US8341631B2 | United States of America | B2 | |
| US8347140B1 | United States of America | B1 | |
| US8401940B1 | United States of America | B1 | |
| US8401941B1 | United States of America | B1 | |
| US8402305B1 | United States of America | B1 | |
| US8418236B1 | United States of America | B1 | |
| US8433951B1 | United States of America | B1 | |
| US8458534B1 | United States of America | B1 | |
| US8464256B1 | United States of America | B1 | |
| US8527809B1 | United States of America | B1 | |
| US2013238943A1 | United States of America | A1 | |
| US8539488B1 | United States of America | B1 | |
| US2013246843A1 | United States of America | A1 | |
| US8555360B1 | United States of America | B1 | |
| US8584145B1 | United States of America | B1 | |
| US8589953B1 | United States of America | B1 | |
| US8612802B1 | United States of America | B1 | |
| US8621275B1 | United States of America | B1 | |
| US8639599B1 | United States of America | B1 | |
| US8645240B1 | United States of America | B1 | |
| US8645754B1 | United States of America | B1 | |
| US8656226B1 | United States of America | B1 | |
| US8667066B1 | United States of America | B1 | |
| US8726078B1 | United States of America | B1 | |
| US8745098B1 | United States of America | B1 | |
| US8745442B1 | United States of America | B1 | |
| US8752048B1 | United States of America | B1 | |
| US8752049B1 | United States of America | B1 | |
| US8775871B1 | United States of America | B1 | |
| US8782670B2 | United States of America | B2 | |
| US2014208153A1 | United States of America | A1 | |
| US8799119B1 | United States of America | B1 | |
| EP1784727A4 | European Patent Office (EPO) | A4 | |
| US8818886B1 | United States of America | B1 | |
| US8839034B2 | United States of America | B2 | |
| US8880473B1 | United States of America | B1 | |
| US8881171B1 | United States of America | B1 | |
| US8893129B1 | United States of America | B1 | |
| US8904004B2 | United States of America | B2 | |
| US2014359354A1 | United States of America | A1 | |
| US2015006958A1 | United States of America | A1 | |
| US8943500B1This record | United States of America | B1 | |
| US8943501B1 | United States of America | B1 | |
| US8959395B2 | United States of America | B2 | |
| US9003229B1 | United States of America | B1 | |
| US9032249B1 | United States of America | B1 | |
| US9043640B1 | United States of America | B1 | |
| US9058599B1 | United States of America | B1 | |
| US9058600B1 | United States of America | B1 | |
| US9069729B2 | United States of America | B2 | |
| US9075646B1 | United States of America | B1 | |
| US9092331B1 | United States of America | B1 | |
| US9128787B1 | United States of America | B1 | |
| US9128904B1 | United States of America | B1 | |
| US9135127B1 | United States of America | B1 | |
| US9141481B1 | United States of America | B1 | |
| US9141502B2 | United States of America | B2 | |
| US9158626B1 | United States of America | B1 | |
| US2015293819A1 | United States of America | A1 | |
| US9164843B1 | United States of America | B1 | |
| US9183089B1 | United States of America | B1 | |
| US9201737B1 | United States of America | B1 | |
| US9213654B1 | United States of America | B1 | |
| US9223671B2 | United States of America | B2 | |
| US9251004B1 | United States of America | B1 | |
| US9253184B1 | United States of America | B1 | |
| US9256496B1 | United States of America | B1 | |
| US9270757B1 | United States of America | B1 | |
| US9286109B1 | United States of America | B1 | |
| US9304869B1 | United States of America | B1 | |
| US9311200B1 | United States of America | B1 | |
| US9323623B1 | United States of America | B1 |
47 transactions on the USPTO file
Allowed after 1 non-final rejection.
- Non-final rejections
- 1
- Final rejections
- 0
- RCEs
- 0
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Email NotificationEML_NTR | EML_NTR | |
| Change in Power of Attorney (May Include Associate POA)PA.. | PA.. | |
| Correspondence Address ChangeC.AD | C.AD | |
| 7.5 yr surcharge - late pmt w/in 6 mo, Large EntityM1555 | M1555 | |
| Payment of Maintenance Fee, 8th Year, Large EntityM1552 | M1552 | |
| Maintenance Fee Reminder MailedREM. | REM. | |
| Payment of Maintenance Fee, 4th Year, Large EntityM1551 | M1551 | |
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Patent Issue Date Used in PTA CalculationAllowedPTAC | PTAC | |
| Email NotificationEML_NTR | EML_NTR | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Dispatch to FDCD1935 | D1935 | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Email NotificationEML_NTR | EML_NTR | |
| Filing Receipt - CorrectedFLRCPT.C | FLRCPT.C | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Examiner's Amendment CommunicationEX.A | EX.A | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Paralegal or electronic terminal disclaimer approvedP574 | P574 | |
| Terminal Disclaimer FiledDIST | DIST | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Reference capture on IDSRCAP | RCAP | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Application Is Now CompleteCOMP | COMP | |
| Email NotificationEML_NTR | EML_NTR | |
| Email NotificationEML_NTR | EML_NTR | |
| Change in Power of Attorney (May Include Associate POA)PA.. | PA.. | |
| Filing ReceiptFLRCPT.O | FLRCPT.O | |
| Sent to Classification ContractorPGPC | PGPC | |
| Cleared by OIPE CSRL194 | L194 | |
| PGPubs nonPub RequestNPRQ | NPRQ | |
| IFW Scan & PACR Auto Security ReviewSCAN | SCAN | |
| Initial Exam Team nnIEXX | IEXX |
6 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Fee payment procedure7.5 YR SURCHARGE - LATE PMT W/IN 6 MO, LARGE ENTITY (ORIGINAL EVENT CODE: M1555); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYFEPP | FEPP | |
| Maintenance fee paymentMAFP | MAFP | |
| Fee payment procedureMAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYFEPP | FEPP | |
| AssignmentAS | AS | |
| Maintenance fee paymentMAFP | MAFP | |
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF |
Numbers
- Publication
- 08943500
- Publication, DOCDB
- 8943500
- Publication, EPODOC
- US8943500
- Application
- 13708477
- Application, DOCDB
- 201213708477
- Application, EPODOC
- US201213708477
Titles
- English
- System and method for application isolation
Patent term adjustment
- A delay
- +124 daysthe office missed an examination deadline
- Net adjustment
- 124 days
Classification
- CPC, 10
- G06F9/46
- G06F8/62
- G06F8/61
- G06F9/50
- G06F9/545
- G06F9/455
- G06F2209/542
- G06F11/008
- G06F9/461
- G06F11/00
- IPC, 4
- G06F9 455
- G06F9 46
- G06F9 50
- G06F11 00
- USPC, 3
- 718001000
- 714001000
- 718104000