Some major commercial Web services (e.g., e-retailers, search engines, etc.) have a platform consisting of a multitude of services (e.g., over 200) that are combined to build their web applications. They produce a software developer's kit (SDK) to allow third parties to create new applications using those services (through web protocols). Commercial Web services want third parties to do so because it drives traffic, advertising, and/or sales into the commercial Web services. The third parties want to build these applications because they receive money from the commercial Web services for each sale they drive.
The problem is that the commercial Web services have no good way of hosting the third party's code within their platform. With existing technology, the 3rd party hosts their own web site. This is bad for the third party because they must build a web site, acquire servers and network connections, and manage and operate their servers (even if they pay someone to host their servers). Depending on the specific scenario, this can be a very complex task requiring expertise in networking, security, distributed systems, system scaling, and so forth. This situation is bad for the commercial Web services because it creates a barrier that discourages new third parties from developing extensions to their platform.
The commercial Web services do not host the third party's code because there is no cheap and secure way to do so. The commercial Web services' conventional choices to host the third parties code are basically: put it on its own server (very expensive), put it in its own software-based virtual machine using a virtual machine monitor (VMM) like VMWare™ or Virtual Server (pretty expensive), or trust it (insecure).
Even with the first two options, the third party's code has access to a full network stack, so the commercial Web services must put firewalls (potentially expensive stateful firewalls) around it to keep it from communicating inappropriately with services' servers or to keep it from performing inappropriate actions, such as sending unsolicited spam to the outside world. Another impractical solution is for the commercial Web service to run the third party code a language-based virtual machine, such as Sun's Java Virtual Machine (JVM) or .NET AppDomains. While much cheaper than physical hardware or VMM solutions, the language-based VM solutions are inflexible, severely limiting the structure of third party code that can be safely run. Also, language-based VM solutions sacrifice security by enlarging the vulnerability surface and because they cannot adequately constrain resource usage.
The commercial Web services have no conventional approach that allows them to cheaply and securely host third party code in their data centers using the services' operations expertise. The independent software venders (ISVs) have no conventional approach that gives them the flexibility to write a new extension as dictated by their design needs and easily drop it into the commercial Web services' servers, securely and cheaply.
Using only the available conventional approaches, a developer who creates or extends an existing web application with code must become well versed in the expertise of running a data center. The developer must endure the hassle of server procurement, server management, patching, operations planning, service deployment, load balancing, backup, etc.
For example, let's say a fictional company, which we will call the Hope Software Corporation (HSC), wanted to extend a service called the World Mapping Web Service (WMWS). HSC wants to extend the WMWS service by plotting houses from various web sites and the multiple-listing services (MLS) real estate listings onto a satellite map from WMWS. Assuming that WMWS exposes the necessary application programming interfaces (APIs) to build this application, HSC still has to handle the operations burden imposed by being a web application. Say HSC's application is really popular and gets featured in an extremely popular web site. Now, HSC has to make sure their application is scalable to handle the extra load which can occur in a matter of hours. HSC has to make sure their application gracefully fails over in case one of their machines dies. HSC knows that if they cannot service their customers 24×7, someone else will.
For another example closer to home, let's say Bob modifies a service called Sharing Documents Web Service (SDWS). Bob modifies SDWS with a bit of workflow logic to route documents for approval in his workgroup. Bob's workgroup now has to worry about the hassle of obtaining a server, deploying the operating system and SDWS, patching, backing it up, etc. just because of a little extra customization. And the IT department is not completely off the hook anyway. There's now another one-off deployment of SDWS floating in the enterprise and any lapse in management of that server poses extra security risks and support costs.
In still another example, say HSC could modify (herein “mod”) a massively multiplayer online game (MMOG) like Everquest™ or World of Warcraft™. In doing so, HSC creates its own zones, monsters, and artificial intelligence (Al). Despite the huge success of mods for client-side games, mods for MMOGs are nowhere to be seen because the MMOG operators do not have a secure and reliable mechanism to isolate mods on MMOG servers.
There are an endless number of scenarios where developers want to extend existing web services. Even when a network-based interface to the web service is exposed, extending a web service is expensive and difficult because the programmers developing the extension are forced to become service providers in addition to developing the code.
There are of course hosted data centers where a third party can rent managed servers and run their code. But in this case, the third party essentially gets just a hardware box. The third party is not extending an existing web service such as one for online advertising, collaboration, business processing, gaming, etc. The third party still needs to worry about service deployment, load balancing, backup, etc. And there is still the cost involved. If HSC just wants to try out an idea, the cost just for hosting can be nearly a thousand dollars a year to use a service provider.
Thusfar, we have only described Internet scenarios. It is worth explicitly pointing out that the techniques described here are applicable to wide range of computation scenarios. For example, the “web service” that needs to be extended may actually be any arbitrary computation node, such as a mobile phone device or personal computer. It could even be an arbitrary computation system, such as a peer to peer or grid network. Consider a project like the SETI@home distributed processing system for analyzing radio signals. In this setup, each the owners of each PC participating need to “trust” the SETI@home software to not be malicious. However, this software is relatively fixed—it is not possible for an arbitrary astronomer to for example, quickly use the resources of those thousands of computers to evaluate a new radio signal analysis algorithm.
This scenario is exactly analogous to the web services scenarios described earlier, only in this case, the “commercial web service” is actually a distributed computation grid. Either way, it can be modeled as a web service needing extensions.
Described herein are techniques to isolate a third-party extension from other components of web services while expressly defining and limiting with who and how the third-party extension has permission to interact or communicate. Described herein are one or more computer operating environments that include a standard set of web services via a communications network (e.g., the Internet) and a mechanism for extending the standard set of web services to execute one or more extended web services. Since these extended web services may be produced by an unconfirmed or untrusted source (e.g., a third-party software developer), the described computer operating environments isolate the extended web services from the standard set of web services and from the communication network. Furthermore, each extended web service is an isolated process (isoproc) with a limited ability to communicate with other services. In particular, each isoproc's ability to communicate is limited to only associated defined communication channels over which it has express permission to communicate.
This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
The same numbers are used throughout the drawings to reference like elements and features.
Described herein are techniques to isolate an extension written by a third-party developer (also know as Independent Software Vendor, ISV) from other components of web services while expressly defining with who (and how) the third-party extension has permission to interact and communicate. The third-party extension is isolated from other applications and services so that untrusted 3rd party code can be executed without concern (with respect to security, stability and reliability).
Described herein are one or more implementations of a computer-operating environment (e.g., an operating system of a web server) which offers an easy-to-maintain and secure hosting environment for executing third-party software. A typical computer-operating environment include a standard set of web services via a communications network (e.g., the Internet) and a mechanism for otherwise unconfirmed or untrusted sources (e.g., a third-party software developers) to add extensions to that standard set of web services.
To ensure security, the described computer operating environments isolate the extended web services from the standard set of web services and from the communication network. Furthermore, each extended web service is an isolated process (isoproc) with a limited ability to communicate with other services. In particular, each isolated processability to communicate is limited to only defined communication channels over which it has express permission to communicate.
Context and Exemplary Scenarios
The exemplary embodiments described herein are complementary to existing web services provided by many software companies and those provided by outside parties. The exemplary embodiments are targeted at developers like Bob and the Hope Software Company (HSC), who were introduced in the “Background” section. These developers want to extend existing services or create new services without worrying about service operations.
For example, suppose that HSC is looking for house to buy in the few neighborhoods he cares about in Seattle: Queen Anne and Leschi. HSC spends nearly 45 minutes a day combing through the homes for sale listings on various web-based real estate listings services. HSC sees World Mapping Web Service (WMWS) and wonders how great it would be to see the houses for sale plotted on a map in WMWS. This is just a side project for HSC to do in his spare time.
HSC writes his code to display data from various web-based real estate listings services onto WMWS. It is then trivial for HSC to “publish” this solution so that his friends can use it also since HSC never has to think about where to host it, how much it costs, buying a server, etc. As HSC's solution grows in popularity, HSC starts adding more features like crime statistics, items for sale, more cities, mobile device access, and alerts. HSC purchases a domain name as well as various search engine keywords to drive traffic to his application. The web service (which employs at least one of the exemplary embodiments described herein) continues to run his solution for his user base, which now numbers in the millions.
For this scenario, Web Service hosts a cluster of machines running at least one of the exemplary embodiments on which ISVs build their applications to the side of existing infrastructure. One idea is to take an existing web service and augment it with servers in its data center that employ the at least one of the exemplary embodiments. Any third party extensibility code runs in the isolation boundary provided by at least one of the exemplary embodiments described herein. To get data, the code just uses the standard web service APIs to access the existing service infrastructure.
The exemplary embodiments may be a platform for a massively multiplayer online game (MMOG). Allowing end-users to modify (“mod”) their MMOG experience will improve their experience and is likely to decrease subscriber churn. A MMOG is an example of a large-scale multi-user distributed game or simulator.
Hard-core gamers who sometimes spend upwards of forty hours a week playing typically play MMOGs. One significant source of churn in the MMOG industry results from boredom, when users feel they have mastered all challenges a game has to offer, and move on after investing one year or more in a game world. The typical user spends about two years playing a game. A decrease in the subscriber base can obviously make a significant dent in revenue.
One of the ways to minimize subscriber churn is to continually enhance the game with new levels, art, characters, etc. First-person shooter games have been enormously successful in harnessing a community of users to create ‘mods.’ These mods include sophisticated new art, revised game engines, new levels, new themes, new characters, etc. MMOGs on the other hand have not been able to reap the rewards of user contributions.
An exemplary embodiment described herein may offer a mod toolkit with game studios. This way, the users will have the ability to create mods and the MMOG can feel confident that these mods will run safely and securely.
Four key desirable features that an approach using the exemplary embodiment described herein exhibits: Security, Scalability, Reliability, and Low Cost.
The security tenet is a primary driving feature. Security means that the system can take arbitrary unknown code and run it safely, without fear of corrupting the operating system itself, the data center, or other programs. There at least two interesting cases here: the malicious code writer and the buggy code writer. From the point of view of the security model, both need to be handled well. More specifically, the Web Services should not be adversely affected because an extension-based add-in had a bug or a malicious code. Adversely affect could mean, for example, having to shut down services, data corruption, impersonation of services, etc.
In terms of reliability, there are really two perspectives: reliability of the solution itself, and reliability of the data center. The data center should not encounter outages or other reliability problems due to buggy third party code. Similarly, the author of correct code would not want failures in the data center (e.g. a hard drive failure) to affect his or her code.
In addition, the exemplary embodiment may employ a “cloaking mechanism” which is intended to hide data from the extension. For example, the exemplary embodiment may process a purchase order for a customer of the web service, but the web service may not want to provide some of the sensitive info to the extension. Instead, the web service replaces the sensitive info with dummy or replacement info when providing this info to the extension. Therefore, the extension never discovers this sensitive info.
Isolated Process (IsoProc)
As shown in
In
The host computing system 100 has an operating system (represented by OS kernel 120 in the memory 110) which provides the architecture for the use of software isolated processes (SIP), such as SIP 130 and SIP 140. In the host computing system 100, non-kernel code in this OS runs in a SIP. SIPs communicate with each other, with the OS, and with a communications network 180 via strongly typed communication channels. More particularly, a SIP can only communicate with other processes and the kernel via communication channels that it has express permission (from the OS) to use. This permission defines and who and how an SIP communicates with other processes, with the OS, and with a communications network 180.
As depicted in
To be inclusive in terminology, the term “isolated process” and its shorted representation “isoproc” is used herein. It is defined to be an “isolated process” and examples of which expressly include SIPs, HIPs, and FIPs. So, unless the context clearly indicates otherwise, references herein to “isoproc” include the concepts of SIPs, HIPs, and/or FIPs.
An isoproc is a little different from a traditional OS process. An isoproc has a strong isolation boundary (much like a VM in terms of isolation). One isoproc cannot communicate or otherwise change the state of another isoproc outside of communication through typed channels—there is no shared memory concepts or the like. This isolation boundary alone is a strong and important layer in the security model. Indeed, an isoproc can only communicate via the communication channels for which it has express permission to use for such communication.
The express permission granted by the OS defines communications properties of an associated defined communication channel of a subject isoproc, wherein such properties include one or more of the following:
The security model is further strengthened because the OS knows exactly what code is running in each isoproc. The code in an isoproc runs in a distinct isolation region with well-known and describable communication characteristics. Furthermore, the code running in each software-based isoproc is verified to guarantee memory safety and to not contain any hardware-privileged instructions. Multiple isoprocs can be run in the same hardware protection domain, even the hardware protection domain of the OS kernel 120. By running in the same hardware protection domain the OS kernel 120, the cost of invoking code in separate isoprocs is extremely low.
The following U.S. Patent Applications are incorporated herein by reference:
The embodiments described herein employ the techniques described in these incorporated-herein references. In particular, techniques for Inter-Process Interference Elimination and Inter-Process Communication are employed for isoprocs. In other words, these techniques are employed to isolate a third-party extension from other components of the web services while expressly defining who it has permission to communication with.
Exemplary Environment
The OS 210 includes a communication-channel regulator 212, which is the component of the OS that expressly grants permission for isoprocs to use communication channels. That permission defines communications properties of the defined communication channel. Without express permission from the communication-channel regulator 212, the extension isoproc 220 literally cannot communicate with any other code anywhere in the universe (not even the OS network stack or the OS file system).
For this exemplary embodiment, the extension isoproc 220 receives incoming requests from a network service isoproc 230 over a communication channel 232. The network service isoproc 230 acts as an intermediary between the extension isoproc 220 and an external communications network 260, such as the Internet. The network service isoproc 230 is responsible handling communication between the extension isoproc 220 and the outside world (e.g., the Internet 160). In an alternative embodiment, the network service isoproc 230 can be replaced with a direct connection to the external communications network 260 when the extension isoproc 220 has statically checked and verified to not execute any forbidden operation against the external communications network.
The extension isoproc 220 communicates to a web-service proxy isoproc 240 on the host computing system using an OS-provided cross-process communication channel 242. The web-service proxy isoproc 240 acts as an intermediary between the extension isoproc 220 and other internal web services 250, such as the database system containing the maps for World Mapping Web Services. The web-service proxy isoproc 240 is responsible handling requests from the extension isoproc 220 and communicating with web service servers 250. To do this, any effective and available protocol, such as SOAP, may be employed. In an alternative embodiment, the web-service proxy isoproc 240 can be replaced when the filtering features of code for the web-service proxy isoproc 240 are verifiably inserted into the extension isoproc 220 code.
As depicted, channels 232 and 242 are the only two OS-provided cross-process communication channels the extension isoproc 220 has express permission to use.
The network service isoproc 230 and the web-service proxy isoproc 240 may be generically called “mediators.” That is because they act as intermediaries or mediators between the extension isoproc 220 and other data sources, such as web service servers 250 and the Internet 260.
Each isoproc has a separate and distinct interface to the OS kernel (commonly called an Application Programming Interface (API) or an Application Binary Interface (ABI)) through which each isoproc can request computation resources from the OS, such as create a new thread of execution, but cannot directly affect the state of any other isoproc. This interface allows the extension isoproc 220 to control its own execution, but it cannot affect the execution of other isoprocs. By design, this interface cannot be subverted as a mechanism for cross-process communication. An isoproc's interface to the kernel cannot be intercepted, modified, or its contents snooped, without explicit permission of the isoproc's developer.
With this exemplary environment:
While much of the focus of the discussion herein has been on Internet scenarios, the techniques described herein are applicable to wide range of computation scenarios. For example, the “web service” that is being extended may actually be any arbitrary computation node, such as a mobile phone device or personal computer. It could even be an arbitrary computation system, such as a peer to peer or grid network.
Consider a project like the SETI@home distributed processing system for analyzing radio signals. In this setup, each of the owners of each personal computer participating need to “trust” the SETI@home software to not be malicious. However, to ensure that level of trust, this SETI@home software is relatively fixed and unchangeable. Consequently, it is not possible for an arbitrary astronomer to for example, quickly use the resources of those thousands of computers to evaluate a new radio signal analysis algorithm. Using the techniques described herein, the software could be modifiable and still be trusted.
This scenario is analogous to the web services scenarios described earlier, only in this case, the “commercial web service” is actually a distributed computation grid. Either way, it can be modeled as a web service needing extensions.
Methodological Implementation
For ease of understanding, this method is delineated as separate steps represented as independent blocks in
At 310 of
At 320, the computer operating environment provides a mechanism for extending the standard set of web services to execute one or more extended processes.
At 330 of
Conclusion
The techniques, described herein, may be implemented in many ways, including (but not limited to) program modules, general- and special-purpose computing systems, network severs and equipment, dedicated electronics and hardware, and as part of one or more computer networks. The techniques, described herein, may be implemented.
Although the one or more above-described implementations have been described in language specific to structural feature and/or methodological step, it is to be understood that other implementations may be practiced without the specific feature or steps described. Rather, the specific feature and step are disclosed as preferred forms of one or more implementations.
This application claims priority to U.S. Provisional Patent Application Ser. No. 60/692,190 filed Jun. 20, 2005, the disclosure of which is incorporated by reference herein.
Number | Name | Date | Kind |
---|---|---|---|
4885684 | Austin et al. | Dec 1989 | A |
4916637 | Allen et al. | Apr 1990 | A |
5031089 | Liu et al. | Jul 1991 | A |
5057996 | Cutler et al. | Oct 1991 | A |
5179702 | Spix et al. | Jan 1993 | A |
5317568 | Bixby et al. | May 1994 | A |
5329619 | Page et al. | Jul 1994 | A |
5339443 | Lockwood | Aug 1994 | A |
5349682 | Rosenberry | Sep 1994 | A |
5361359 | Tajalli et al. | Nov 1994 | A |
5367681 | Foss et al. | Nov 1994 | A |
5455951 | Bolton et al. | Oct 1995 | A |
5469571 | Bunnell | Nov 1995 | A |
5481717 | Gaboury | Jan 1996 | A |
5522075 | Robinson et al. | May 1996 | A |
5551051 | Silverthorn et al. | Aug 1996 | A |
5574911 | D'Angelo et al. | Nov 1996 | A |
5590001 | Ino et al. | Dec 1996 | A |
5590281 | Stevens | Dec 1996 | A |
5666519 | Hayden | Sep 1997 | A |
5694601 | White | Dec 1997 | A |
5737605 | Cunningham et al. | Apr 1998 | A |
5752032 | Keller et al. | May 1998 | A |
5754845 | White | May 1998 | A |
5768532 | Megerian | Jun 1998 | A |
5794052 | Harding | Aug 1998 | A |
5845129 | Wendorf et al. | Dec 1998 | A |
5857195 | Hayashi et al. | Jan 1999 | A |
5878408 | Van Huben et al. | Mar 1999 | A |
5923878 | Marsland | Jul 1999 | A |
5931938 | Drogichen et al. | Aug 1999 | A |
5938723 | Hales, II et al. | Aug 1999 | A |
5944821 | Angelo | Aug 1999 | A |
5958050 | Griffin et al. | Sep 1999 | A |
5963743 | Amberg et al. | Oct 1999 | A |
5974572 | Weinberg et al. | Oct 1999 | A |
5991518 | Jardine et al. | Nov 1999 | A |
6003129 | Song et al. | Dec 1999 | A |
6006328 | Drake | Dec 1999 | A |
6009476 | Flory et al. | Dec 1999 | A |
6038399 | Fisher et al. | Mar 2000 | A |
6066182 | Wilde et al. | May 2000 | A |
6072953 | Cohen et al. | Jun 2000 | A |
6078744 | Wolczko et al. | Jun 2000 | A |
6080207 | Kroening et al. | Jun 2000 | A |
6092189 | Fisher et al. | Jul 2000 | A |
6115819 | Anderson | Sep 2000 | A |
6144992 | Turpin et al. | Nov 2000 | A |
6157928 | Sprenger et al. | Dec 2000 | A |
6161051 | Hafemann et al. | Dec 2000 | A |
6182275 | Beelitz et al. | Jan 2001 | B1 |
6202147 | Slaughter et al. | Mar 2001 | B1 |
6247128 | Fisher et al. | Jun 2001 | B1 |
6279111 | Jensenworth et al. | Aug 2001 | B1 |
6292941 | Jollands | Sep 2001 | B1 |
6321334 | Jerger et al. | Nov 2001 | B1 |
6324622 | Okpisz et al. | Nov 2001 | B1 |
6341371 | Tandri | Jan 2002 | B1 |
6351850 | van Gilluwe et al. | Feb 2002 | B1 |
6381742 | Forbes et al. | Apr 2002 | B2 |
6405361 | Broy et al. | Jun 2002 | B1 |
6434694 | Slaughter et al. | Aug 2002 | B1 |
6438549 | Aldred et al. | Aug 2002 | B1 |
6442754 | Curtis | Aug 2002 | B1 |
6446260 | Wilde et al. | Sep 2002 | B1 |
6487723 | MacInnis | Nov 2002 | B1 |
6542926 | Zalewski et al. | Apr 2003 | B2 |
6546546 | Van Doorn | Apr 2003 | B1 |
6629152 | Kingsbury et al. | Sep 2003 | B2 |
6658447 | Cota-Robles | Dec 2003 | B2 |
6715144 | Daynes et al. | Mar 2004 | B2 |
6732220 | Babaian et al. | May 2004 | B2 |
6748592 | Porter | Jun 2004 | B1 |
6816905 | Sheets et al. | Nov 2004 | B1 |
6817013 | Tabata et al. | Nov 2004 | B2 |
6842782 | Malik et al. | Jan 2005 | B1 |
6868539 | Travison et al. | Mar 2005 | B1 |
6904519 | Anand et al. | Jun 2005 | B2 |
6912692 | Pappas | Jun 2005 | B1 |
6944754 | Zilles et al. | Sep 2005 | B2 |
6973517 | Golden et al. | Dec 2005 | B1 |
6977994 | Stephenson et al. | Dec 2005 | B2 |
6988261 | Sokolov et al. | Jan 2006 | B2 |
7000092 | Gehman et al. | Feb 2006 | B2 |
7036114 | McWilliams et al. | Apr 2006 | B2 |
7062764 | Cohen et al. | Jun 2006 | B2 |
7086056 | Fukushima | Aug 2006 | B2 |
7089289 | Blackmore et al. | Aug 2006 | B1 |
7155713 | Burkhardt et al. | Dec 2006 | B1 |
7167867 | Rago | Jan 2007 | B1 |
7200840 | Gschwind et al. | Apr 2007 | B2 |
7222106 | Block et al. | May 2007 | B2 |
7222341 | Forbes et al. | May 2007 | B2 |
7278030 | Chen et al. | Oct 2007 | B1 |
7451435 | Hunt et al. | Nov 2008 | B2 |
7454477 | Talluri et al. | Nov 2008 | B2 |
7484245 | Friedman et al. | Jan 2009 | B1 |
7600232 | Hunt et al. | Oct 2009 | B2 |
7694300 | Hunt et al. | Apr 2010 | B2 |
7788637 | Hunt et al. | Aug 2010 | B2 |
7882317 | Hunt et al. | Feb 2011 | B2 |
8020141 | Hunt et al. | Sep 2011 | B2 |
20010029605 | Forbes et al. | Oct 2001 | A1 |
20020004852 | Sadovsky et al. | Jan 2002 | A1 |
20020099954 | Kedma et al. | Jul 2002 | A1 |
20020100017 | Grier et al. | Jul 2002 | A1 |
20020143842 | Cota-Robles et al. | Oct 2002 | A1 |
20030031404 | Pedersen | Feb 2003 | A1 |
20030056084 | Holgate et al. | Mar 2003 | A1 |
20030061067 | Atwal et al. | Mar 2003 | A1 |
20030061401 | Luciani, Jr. | Mar 2003 | A1 |
20030061404 | Atwal et al. | Mar 2003 | A1 |
20030084256 | McKee | May 2003 | A1 |
20030097581 | Zimmer | May 2003 | A1 |
20030130854 | Galanes et al. | Jul 2003 | A1 |
20030188231 | Cronce | Oct 2003 | A1 |
20030191867 | Czajkowski | Oct 2003 | A1 |
20030200402 | Willman et al. | Oct 2003 | A1 |
20030212990 | Brodkorb et al. | Nov 2003 | A1 |
20030221012 | Herrmann et al. | Nov 2003 | A1 |
20030233644 | Cohen et al. | Dec 2003 | A1 |
20040003324 | Uhlig et al. | Jan 2004 | A1 |
20040015911 | Hinsley et al. | Jan 2004 | A1 |
20040025016 | Focke et al. | Feb 2004 | A1 |
20040034850 | Burkhardt et al. | Feb 2004 | A1 |
20040061067 | Clauss | Apr 2004 | A1 |
20040064736 | Obrecht et al. | Apr 2004 | A1 |
20040078799 | Koning et al. | Apr 2004 | A1 |
20040123273 | Hammerich et al. | Jun 2004 | A1 |
20040153991 | Chen et al. | Aug 2004 | A1 |
20040187096 | Dumont | Sep 2004 | A1 |
20040193819 | Marinescu et al. | Sep 2004 | A1 |
20040199763 | Freund | Oct 2004 | A1 |
20040226023 | Tucker | Nov 2004 | A1 |
20040236861 | Bondar et al. | Nov 2004 | A1 |
20040268171 | Inoue et al. | Dec 2004 | A1 |
20050005261 | Severin | Jan 2005 | A1 |
20050021537 | Brendle et al. | Jan 2005 | A1 |
20050050069 | Vaschillo et al. | Mar 2005 | A1 |
20050060687 | Ghazaleh et al. | Mar 2005 | A1 |
20050071592 | DeCaro | Mar 2005 | A1 |
20050071828 | Brokenshire et al. | Mar 2005 | A1 |
20050081181 | Brokenshire et al. | Apr 2005 | A1 |
20050081203 | Aguilar et al. | Apr 2005 | A1 |
20050091658 | Kavalam et al. | Apr 2005 | A1 |
20050119902 | Christiansen | Jun 2005 | A1 |
20050125789 | Dijkstra et al. | Jun 2005 | A1 |
20050188364 | Cockx et al. | Aug 2005 | A1 |
20050188372 | Inoue et al. | Aug 2005 | A1 |
20050188373 | Inoue et al. | Aug 2005 | A1 |
20050203988 | Nollet et al. | Sep 2005 | A1 |
20050223239 | Dotan | Oct 2005 | A1 |
20050246718 | Erlingsson et al. | Nov 2005 | A1 |
20060005082 | Fossum et al. | Jan 2006 | A1 |
20060026578 | Ramchandran et al. | Feb 2006 | A1 |
20060031815 | Bhagia et al. | Feb 2006 | A1 |
20060047875 | Aguilar et al. | Mar 2006 | A1 |
20060069692 | Pernia | Mar 2006 | A1 |
20060085789 | Laborczfalvi et al. | Apr 2006 | A1 |
20060123401 | O'Brien et al. | Jun 2006 | A1 |
20060123417 | Hunt et al. | Jun 2006 | A1 |
20070033592 | Roediger et al. | Feb 2007 | A1 |
20070043936 | Day et al. | Feb 2007 | A1 |
20070061483 | Dauger | Mar 2007 | A1 |
20070094495 | Hunt et al. | Apr 2007 | A1 |
20070094673 | Hunt et al. | Apr 2007 | A1 |
20070192762 | Eichenberger et al. | Aug 2007 | A1 |
20070256080 | Smith et al. | Nov 2007 | A1 |
20070283337 | Kasahara et al. | Dec 2007 | A1 |
20070288940 | Keljo | Dec 2007 | A1 |
20080005750 | Hunt et al. | Jan 2008 | A1 |
20080022278 | Gschwind et al. | Jan 2008 | A1 |
20080034357 | Gschwind | Feb 2008 | A1 |
20080244507 | Hodson et al. | Oct 2008 | A1 |
20080244599 | Hodson et al. | Oct 2008 | A1 |
20080244682 | Sparrell et al. | Oct 2008 | A1 |
20080250414 | Brokenshire et al. | Oct 2008 | A1 |
20100162220 | Cui et al. | Jun 2010 | A1 |
20100199357 | Hoffman et al. | Aug 2010 | A1 |
20120227057 | Lupu et al. | Sep 2012 | A1 |
Number | Date | Country |
---|---|---|
1549108 | Nov 2004 | CN |
1033648 | Sep 2000 | EP |
14433988 | Aug 2004 | EP |
01292537 | Nov 1989 | JP |
05119987 | May 1993 | JP |
05181919 | Jul 1993 | JP |
052224956 | Sep 1993 | JP |
2002506247 | Feb 2002 | JP |
2003233521 | Aug 2003 | JP |
2004513412 | Apr 2004 | JP |
2004139396 | May 2004 | JP |
2004530191 | Sep 2004 | JP |
2005129066 | May 2005 | JP |
10-1992-0013166 | Jul 1992 | KR |
20010007119 | Jan 2001 | KR |
20010109271 | Dec 2001 | KR |
2155373 | Aug 2000 | RU |
2307388 | Sep 2007 | RU |
2337398 | Oct 2008 | RU |
WO02093370 | Nov 2002 | WO |
WO03038599 | May 2003 | WO |
WO03088086 | Oct 2003 | WO |
WO2004025491 | Mar 2004 | WO |
WO2004099949 | Nov 2004 | WO |
WO2005036835 | Apr 2005 | WO |
Entry |
---|
The Architecture of Massive Multiplayer Online Games, Authors: Sladjan Bogojevic, Mohsen Kazemzadeh, Published: Sep. 8, 2003. Department of Computer Science, Lund Institute of Technology, Lund University http://graphics.cs.lth.se/theses/projects/mmogarch/som.pdf. |
Watson, et al., “Design and implementation of the Trusted BSD MAC framework”, Proceedings of 2003 DARPA Information Survivability Conference and Exposition, Sec. 1&5-7, Apr. 2003, pp. 38-49. |
Hunt et al: “Broad New OS Research: Challenges and Opportunities” Retrieved from the Internet: URL: http://research.microsoft.com/os/singularity/publications/hotos2005—broadnewreseach.pdf> [retrieved on Dec. 2, 2008]. |
Mikunov A., “Rewrite MSil Code on the Fly with the .NET Framework Profiling API”, MSDN Magazine (Online) Sep. 2003, Retrieved from the Internet: URL: <<http://msdn.microsoft.com/en-us/magazine/cc188743(printer).aspx>> retrieved onDec. 12, 2008). |
Tatsubori et al: “Open Java: A Class-Based Macro System for Java” 2000 [Retrieved from the Internet: URL http://www.springerlink.com/content/n64gdultayqfmcjc/fulltext.pdf> [retrieved on Dec. 2, 2008]. |
Acharya, et al., “MAPbox: Using Parameterized Behavior Classes to Confine Applications”, University of California, Santa Barbara, May 1, 1999, pp. 1-19. |
Fraim, “Scomp: A Solution to the Multilevel Security Problem”, IEEE, 1983, pp. 26-34. |
Kurchuk, et al., “Recursive Sandboxes: Extending Systrace to Empower Applications”, retrieved on Sep. 4, 2009 at <<http://web.archive.org/web/20040725140723/http://nsl.cs.columbia.edu/projects/gridlock/systrace—extensions.pdf>>, 2004, pp. 1-16. |
“Microsoft Computer Dictionary”, retrieved on Sep. 4, 2009 at <<http://proquest.safaribooksonline.com/print?xmlid=0735614954/ch20>>, Fifth Edition, pp. 1-2. |
Perrine, et al., “An Overview of the Kernelized Secure Operating System (KSOS)”, Proceedings of the 7th DoD/NBS Computer Security Conference, 1984, pp. 0-14. |
Perrine, “The Kernelized Secure Operating System (KSOS)”, ;login: The Magazine of USENIX & SAGE, vol. 27, No. 6, 2002, pp. 36-40. |
Provos, “Improving Host Security with System Call Policies”, Proceedings of the 12th USENIX Security Symposium, USENIX Association, Aug. 2003, pp. 257-271. |
“Variable Scope”, retrieved on Sep. 4, 2009 at <<http://irc.essex.ac.uk/www.iota-six.co.uk/d/d5—variable—scope.asp>>, Scope, 2003, pp. 1-5. |
Back et al., “Processes in KaffeOS: Isolation, Resource Management, and Sharing in Java”, Proceedings of the 4th USENIX Symposium, Dec. 6, 2004, pp. 333-346. |
Chaki et al, “Types as Models: Model Checking Message-Passing Programs”, Proceedings of the 29th ACM Symposium on Principles of Programing Lanuages, 2002, pp. 45-57. |
Hunt et al., “Singularity Technical Report 1: Singularity Design Motivation”, Microsoft Research, 2004 Microsoft Corporation, pp. 1-4. |
McNamee et al., “An Attribute Grammar Approach to Compiler Optimization of Intra-Module Interprocess Communication”, International Journal of Parallel Programming, vol. 20, Nov. 3, 1991, pp. 181-202. |
Tanenbaum, “Modern Operating Systems”, Prentice Hall Inc., 2001, pp. 168-175. |
Tost, “Loosely typed versus strongly typed Web services”, Sep. 2, 2005, IDM, pp. 1-14. |
Mexican Office Action mailed Aug. 15, 2011 for Mexican patent application No. MX/a/2008/005402, a counterpart foreign application of U.S. Appl. No. 11/428,162, 2 pages. |
U.S. Appl. No. 60/692,190 entitled “Secure and Stable Hosting of Third-Party Extension to Web Services,” Hunt et al, filed Jun. 20, 2005. |
U.S. Appl. No. 60/730,546 entitled “Programming Language Support for Software Isolation Processes (SIPs) and Isolated Extensions and Device Drivers Upon SIPs,” Hunt et al, filed Oct. 26, 2005. |
Berman, et al., “Application-Level Scheduling on Distributed Heterogeneous Networks (Technical Paper)”, available at least as early as Mar. 6, 2007, at <<http://citeseer.ist.psu.edu/cache/papers/cs/30161/http:zSzzSzwww-cse.ucsd.eduzSz˜gshaozSzpaperszSzsup96.pdf/application-level-scheduling-on.pdf>>, pp. 1-29. |
Chinese Office Action mailed May 19, 2011 for Chinese Patent Application No. 200680040116.1, a counterpart foreign application of U.S. Appl. No. 11/428,096. |
Japanese Office Action mailed May 24, 2011 for Japanese Patent Application No. 2005-354079, a counterpart foreign application of US Patent No. 7,451,435. |
Khokhar, et al., “Heterogeneous Computing: Challenges and Opportunities”, available at least as early as Mar. 6, 2007, at <<http://meseec.ce.rit.edu/eecc722-fall2002/papers/hc/1/r6018.pdf>>, IEEE, 1993, pp. 18-27. |
Lyonnard, et al., “Automatic Generation of Application-Specific Architectures for Heterogeneous Multiprocessor System-on-Chip”, available at least as early as Mar. 6, 2007, at <<http://delivery.acm.org/10.1145/380000/379015/p518-lyonnard.pdf?key1=379015&key2=7123613711&coll=GUIDE&d1=GUIDE&CFID=16158147&CFTOKEN=58686892>>, ACM, 2001, pp. 518-523. |
Russian Office Action mailed Apr. 18, 2011 for Russian Patent Application No. 2008116714, a counterpart foreign application of U.S. Appl. No. 11/428,096. |
Sun, et al., “Synthesis of Application-Specific Heterogeneous Multiprocessor Architectures using Extensible Processors”, available at least as early as Mar. 6, 2007, at <<http://ieeexplore.ieee.org/iel5/9501/30140/01383333.pdf?is Number=>>, IEEE, 2005, pp. 1-6. |
Mexican Office Action mailed Feb. 9, 2012 for Mexican patent application No. MX/a/2008/005402, a counterpart foreign application of U.S. Appl. No. 11/428,162, 7 pages. |
Chinese Office Action mailed Jun. 4, 2012 for Chinese patent application No. 200680021042.7, a counterpart foreign application of U.S. Appl. No. 11/275,160, 6 pages. |
Mexican Office Action mailed Apr. 26, 2011 for Mexican patent application No. MX/a/2008/005403, a counterpart foreign application of U.S. Appl. No. 11/428,096. |
Final Office Action for U.S. Appl. No. 11/694,339, mailed on Aug. 3, 2011, Orion Hodson, “Master and Subordinate Operating System Kernels for Heterogeneous Multiprocessor Systems”. |
Aiken et al., “Deconstructing Process Isolation”, retrieved from http:doi.acm.org/10.1145/1178597.1178599, In Proceedings of the 2006 Workshop on Memory System Performance and Correctness, 2006, 10 pages. |
Fahndrich et al., “Language Support for Fast and Reliable Message-based Communication in Singularity OS”, retrieved from http://doi.acm.org/10.1145/1218063.1217953. SIGOPS Operating Systems Rev. 40, 2006, 14 pages. |
Grosso, “Java RMI”, O'Reilly Media, 2002, 574 pages. |
Office action for U.S. Appl. No. 11/428,162, mailed on Jun. 27, 2013, Hunt et al., “Statically Verifiable Inter-ProcessCommunicative Isolated Processes”, 25 pages. |
Wikipedia, “Strong and weak typing”, retrieved from http:en.wikipedia.org/w/index.php?title=Strong—and—weak—typing&oldid=560035416, 2013, 1 page. |
Gay et al., “Session Types for Inter-Process Communication”, University of Glasgow, Department of Computing Science Technical Report (TR-2003-133), Mar. 2003, 33 pages. |
Huang et al., “Securing Web Application Code by Static Analysis and Runtime Protection”, Proceedings of the 13th International Conference on World Wide Web, ACM, New York, NY, 2004, 12 pages. |
European Office Action mailed Mar. 14, 2013 for European patent application No. 11009734.2, a counterpart foreign application of US patent No. 8,020,141, 6 pages. |
European Office Action mailed Mar. 14, 2013 for Euroopean patent application No. 11009735.9, a counterpart foreign application of USpatent No. 8,020,141, 8 pages. |
European Office Action mailed Mar. 27, 2013 for European patent application No. 05111731.5, a counterpart foreign application of US patent application No. 8,020,141, 8 pages. |
Japanese Office Action mailed Jan. 22, 2013 for Japanese patent application No. 2005-352581, a counterpart foreign application of US patent No. 8,020,141, 8 pages. |
Chinese Office Action mailed Jul. 1, 2011 for Chinese patent application No. 200680021042.7, a counterpart foreign application of U.S. Appl. No. 11/275,160. |
Acceta et al.; “A New Kernel Foundation for UNIX Development”, In Summer USENIX Conference, Atlanta, GA, Jun. 1986, pp. 93-112. |
Back et al.; “Processes in KaffeOS: Isolation, Resources Management, and Sharing in Java”; In Proceedings of the 4th USENIX Symposium on Operating Systems Design & Implementation (OSDI), San Diego, CA, Oct. 2000, 14 pages. |
Dorward et al; “The Inferno Operating System”; Bell Labs Technical Journal, 2 (1), Winter 1997, pp. 5-18. |
Engler et al.; “Exokernel: an Operating System Architecture for Application-Level Resource Management”; In Proceedings of the Fifteenth ACM Symposium on Operating System Principles, Cooper Mountain Resort, Co, 1995, pp. 251-266. |
Goldberg et al.; “Smalltalk-80: The Language and Its Implementation”; Addison-Wesley, May 1983, 6 pages. |
Golm et al.; “The JX Operating System”; In Proceedings of the USENIX 2002 Annual Conference, Monterey, CA, Jun. 2002, pp. 45-58. |
Golm et al., “Beyond Address Spaces—Flexibility, Preformance, Protection, and Resource Management in the Tpe-Safe JX Operatin System”, Proc. of the 8th Workshop on Hot Topics in Operating Systems, May 2001, pp. 1-6. |
Hartig et al.; “The Perfromance of u-kernel-based Systems”; In Proceedings of the Sixteenth ACM Symposium on Operating Systems Principles (SOSP '97), Saing Malo, France, 1997, pp. 66-77. |
Hawblitzel et al.; “Implementing Multiple PRotection Domains in Java”; In Proceedings of the 1998 USENIX Annual Technical Conference, New Orleans, LA, Dec. 1998, pp. 259-270. |
Hawblitzel et al.; “Luna: A Flexible Java Protection System”; In Proceedings of the Fifth ACM Symposium on Operating System Design and Implementation (OSDI'02), Boston, MA, 2002, pp. 391-402. |
“JSR-000121 Application Isolation API Specification”; available at http://jcp.org/aboutJava/communityprocess/pfd/jsr121/index.html; printed Sep. 7, 2006, 1 page. |
“JSR 121: Application Isolation API Specification” Java Specification Requests, printed Sep. 7, 2006, 7 pages. |
Rajamani et al.; “Conformance Checking for Models of Asynchronous Message Passign Software”; In Proceedings of the International Conference on Computer Aided Verification (CAV 02), Springer, Copenhagen, Denmark, Jul. 2002, pp. 166-179. |
Redell et al.; “Pilot: An Operating System for a Personal Computer”; Communications of the ACM, 23 (2), 1980, pp. 81-92. |
Rosenblum et al.; “The Impact of Architectural Trends on Operating System Performance”; In Proceedings of the Fifteenth ACM Symposium on Operating System Principles, Copper Mountain Resort, CO, 1995, pp. 285-298. |
Swift et al; “Improving the Reliability of Commodity Operating Systems”; In Proceedings of the 19th ACM Symposium on Operating Systems Principles (SOSP '03), Bolton Landing, NY, 2003, pp. 207-222. |
Swinehart et al.; “A Structural View of the Cedar Programming Environment”; ACM Transactions on Programming Languages and Systems, 8 (4), 1986, pp. 419-490. |
Wahbe et al.; “Efficient Software-Based FAult Isolation”; In Proceedings of the Fourteenth ACM Symposium on Operating System Principles, Asheville, NC, 1993, pp. 203-216. |
Weinreb et al.; “Lisp Machine Manuel”; Symbolics, Inc., Cambridge, MA, Jul. 1981. |
Wood et al.; “An In-Cache Address Translation Mechanism”; In Proceedings of the Thirteenth Annual International Symposium on Computer Architecture, Jun. 1986, pp. 158-166. |
Extended European Search Report mailed Aug. 27, 2013 for European patent application No. 08733009.8, 12 pages. |
Goble, et al., “A Dual Processor VAX 11/780”, ACM Sigarch Computer Architecture News, vol. 10, No. 3, Apr. 1982, pp. 291-298. |
Hunt, et al., “An Overview of the Singularity Project”, http://research.microsoft.com/pubs/52716/tr-2005-135.pdf. |
Hunt, et al., “Broad News OS Research: Challenges and Opportunities”, Internet citation, Jun. 2005, pp. 1-6, retrieved from the internet at http://research.microsoft.com/os/singularity/publications/hotos2005—broadnewresearch.pdf, retrieved on Dec. 2, 2008. |
Japanese Office Action mailed Aug. 20, 2013 for Japanese patent application No. 2005-352581, a counterpart foreign application of US Patent Application 8,020,141, 8 pages. |
Kagstrom, et al., “The application kernel approach—a novel approach for adding SMP support to uniprocessor operating systems”, Software Practice & Experience, Wiley & Sons, Bognor Regis, GB, vol. 36, No. 14, Nov. 25, 2006, pp. 1563-1583, retrieved on Jun. 22, 2006. |
Muir, et al., “AsyMOS—An Asymmetric Multiprocessor Operating System”, Open Architectures and Network Programming, 1998 IEEE San Francisco, CA, USA, Apr. 2-4, 1998, pp. 25-34. |
Japanese Office Action mailed Sep. 9, 2011 for Japanese patent application No. 2008-518169, a counterpart foreign application of U.S. Appl. No. 11/275,160, 9 pages. |
Office Action for U.S. Appl. No. 11/694,455, mailed on Aug. 17, 2011,12 pgs. |
Mexican Office Action mailed Dec. 15, 2011 for Mexican patent application No. MX/a/2008/005403, a counterpart foreign application of US patent No. 8,074,231, 4 pages. |
Chinese Office Action mailed Mar. 1, 2012 for Chinese patent application No. 200680021042.7, a counterpart foreign application of U.S. Appl. No. 11/275,160, 7 pages. |
Chinese Office Action mailed Mar. 23, 2012 for Chinese patent application No. 200680040116.1, a counterpart foreign application of US patent No. 8,074,231, 6 pages. |
European Office Action mailed Feb. 17, 2012 for European patent application No. 05111731.5, a counterpart foreign application of US Patent Application 8,020,141, 8 pp. |
Extended European Search Report mailed Feb. 20, 2012 for European patent application No. 11009735.9, 8 pages. |
Extended European Search Report mailed Feb. 23, 2012 for European patent application No. 11009734.2, 7 pages. |
Hawblitzel, et al., “A Case for Language-Based Protection”, Internet citation, Mar. 1998, pp. 1-12, retrieved from the Internet at http://chrishawblitzel.net/publish/tr98—1670.ps on Feb. 9, 2012. |
Japanese Office Action mailed Jan. 27, 2012 for Japanese patent application No. 2008-537770, a counterpart foreign application of US patent No. 8,074,231, 6 pages. |
Japanese Office Action mailed Mar. 13, 2012 for Japanese patent application No. 2008-518169, a counterpart foreign application of U.S. Appl. No. 11/275,160, 4 pages. |
Japanese Office Action mailed Mar. 30, 2012 for Japanese patent application No. 2008-537768, a counterpart foreign application of U.S. Appl. No. 11/428,162, 5 pages. |
Japanese Office Aciton mailed Apr. 17, 2012 for Japanese patent application No. 2005-352581, a counterpart foreign application of US patent No. 8,020,141, 4 pages. |
Japanese Office Action mailed Dec. 16, 2011 for Japanese patent application No. 2005-352581, a counterpart foreign application of US patent No. 8,020,141, 6 pages. |
Japanese Office Action mailed Dec. 2, 2011 for Japanese patent application No. 2008-537768, a counterpart foreign application of U.S. Appl. No. 11/428,162, 10 pages. |
“The JX Operating System” Michael Golm, Meik Felser Christian Wawersich, and Juergen Kleinoeder 2002 USENIX Annual Technical Conference, Jun. 10-15, 2002, Monterey, CA, pp. 45-58. |
“Trademark Electronic Search System (TESS) from the USPTO database” for “Windows” trademark of Microsoft filed in USPTO Aug. 20, 1999; http://tess2.uspto.gov/bin/gate.exe? f=doc&state=n00gan.5.26. |
Microsoft Press Computer Dictionary, Second Edition, 1994, Published by Penguin Books, Ltd., pp. 23-24 and p. 279. |
Microsoft Press Computer Dictionary Third Edition: 1997 3 pages. |
Pike, et al., “Plan 9 from Bell Labs”, Computing Systems, Vol 8 #3, Summer 1995, pp. 221-254. |
Pike, et al, “The Use of Name Spaces in Plan 9”, Operating Systems Review, vol. 27, #2, Apr. 1993, pp. 72-76. |
Korean Office Action mailed Apr. 9, 2013 for Korean patent application No. 10-2007-7029343, a counterpart foreign application of U.S. Appl. No. 11/275,160, 9 pages. |
Korean Office Action mailed May 13, 2013 for Korean patent application No. 10-2008-7010060, a counterpart foreign application of US patent No. 8,074,231, 5 pages. |
Seo, et al., “Performance Evaluation of Dynamic Seamless Zone Server Model for Massively Multiplayer Online Game”, Model for Massively Multiplayer Online Game, Division of Media, Ajou University, 2004. |
Abbaspour et al., “Retargetable Binary Utilites”, ACM, <http://ieeeplore.ieee.org/stamp.jsp?tp=&arnumber=1012645>, 6 pages, DAC '02 Proceedings of the 39th Annual Design Automation Conference, pp. 331-336, 2002. |
Chinese Office Action mailed Sep. 5, 2012 for Chinese patent application No. 200680040116.1, a counterpart foreign application of US patent No. 8,074,231, 6 pages. |
Japanese Office Action mailed Aug. 3, 2012 for Japanese patent application No. 2005-352581, a counterpart foreign application of US patent No. 8,020,141, 5 pages. |
“Kernel Module Packages Manualfor CODE 9”,Novel/SUSE, 2006, <http://www.suse.de/˜agruen/KMPM/old/KernelModulePackagesManual-CODE9.pdf, 15 pages. |
Korean Office Action mailed Oct. 10, 2012 for Korean patent application No. 10-2007-7029343, a counterpart foreign application of U.S. Appl. No. 11/275,160, 5 pages. |
Sbaraglia et al., “A Productivity Centered Application Performance Tuning Framework”, ICST, 2007, <http://delivery.acm.org/10.1145/135000/1345326/a49-sbaraglia.pdf>, 10 pages. |
Number | Date | Country | |
---|---|---|---|
20070011199 A1 | Jan 2007 | US |
Number | Date | Country | |
---|---|---|---|
60692190 | Jun 2005 | US |