Nemesis is an operating system written from scratch (but it does retain some Posix compatibility layer for easy application porting), whose design is geared to the support of time-sensitive applications requiring a consistent ‘Quality of Service’ (QoS), such as those which use multimedia. Nemesis provides fine-grained guaranteed levels of all system resources including CPU, memory, network bandwidth and disk bandwidth. The OS has been built with the Multimedia in mind, its sole purpose of existance was the delivery and performance of multimedia content in the best way possible. Screenshots are available but read more for information and status of this interesting operating system.In a microkernel environment like Nemesis’, an application is typically implemented by a number of processes, most of which are servers performing work on behalf of more than one client. This leads to enormous difficulty in accounting for resource usage. In a kernel-based system, multimedia applications spend most of their time in the kernel, leading to similar problems.
The guiding principle in the design of Nemesis was to structure the operating system in such a way that the majority of code could execute in the application process itself. Nemesis therefore has an extremely small lightweight kernel, and performs most operating system functions in shared libraries which execute in the user’s process. This leads to a vertically-structured operating system. Providing QoS to time-sensitive applications necessarily requires more frequent context-switches. By use of a single address space, Nemesis greatly reduces memory-system related context-switch penalties. The single address space also removes the need to copy high-bandwidth multimedia data. Despite the fact that there is a single system-wide page table mapping virtual addresses to physical addresses, memory protection is still performed on a per-process basis.
Nemesis currently runs on a large number of platforms including x86 based PCs, DEC Alpha workstations and evaluation boards (21064 and 21164) and StrongARM SA-110 based network computers.
Austin Donnelly, previously member of the Nemesis project team (which was mostly consisted by universities and research labs), told OSNews about the project:
“The EU-funded research project is now over, so the project is not active anymore. The code is dead, but the ideas live on. The stuff up on sourceforge is the best reference. Chapter 1 of the manual provides a very brief introduction to the ideas behind Nemesis. The code up at sourceforge works, but is not actively maintained.”
We asked Austin if the Nemesis uses X11, and he replied: “No. Nemesis uses a user-safe framebuffer device, and client applications perform their own rendering: no server is involved. Getting GTK working on Nemesis was a concrete example of some of the techniques we developed to handle stateful shared libraries in a single address space OS.”
The source code of the OS is available and it has indeed an interesting approach on the design of modern operating systems. Anyone would like to further develop Nemesis?