Arrakis is a new operating system that is designed around recent application and hardware trends: Applications are becoming so complex that they are miniature operating systems in their own right and are fighting with already established OS services. For example, a web browser needs to protect itself against untrusted scripts and native code extensions, but does not have the rights to setup protection domains within its own application. On the hardware side, virtualization technologies and I/O devices have become increasingly sophisticated and take on more and more functions traditionally carried out by the operating system. For example, modern NICs can demultiplex incoming packets directly into the target application.
In Arrakis, we ask the question whether we can remove the OS entirely from normal application execution. The OS only sets up the execution environment and interacts with an application in rare cases where resources need to be reallocated or name conflicts need to be resolved. The application gets the full power of the unmediated hardware, through an application-specific library linked into the application address space. This allows for unprecedented OS customizability, reliability and performance. Interesting research questions arise in this scenario: How do we provide the same lightweight sharing between applications that traditional operating systems supply? How do we provide a single file system, instead of multiple hard disk partitions? How can applications share memory and other OS resources?