Concepts:
Kernels that are used on supercomputers have very unique requirements:
- When you run on a supercomputer, you are running one application at a time.
- This application has (almost always) has exclusive access to the the hardware.
- The performance of the application is the only thing that matters.
- A good kernel for parallel applications must reduce OS noise - we want to reduce the number of things that happen behind the scene in the kernel.
- A good kernel for parallel applications gives the application as much control as possible while still protecting the hardware.
- A good kernel for parallel applications is highly asynchronous - kernel calls from userspace should by asynchronous wherever possible.