Asynchronous Design Pattern for Many-Core and Cloud Operating Systems


One of the key aspects for many-core and cloud operating systems is message passing communication. The networking aspect of this mechanism requires a high degree of concurrency to handle communicating with thousands of cores simultaneously in an efficient and scalable manner. Non-blocking interfaces allows us to efficiently use a core and gives us concurrency without multiple threads, this also minimizes context switch. We developed an asynchronous design pattern for operating systems written in C++. The framework uses only C++ language features (template metaprogramming), thus not requiring a custom compiler. The pattern provides a framework to develop and use asynchronous interfaces based on completion handlers. As the name implies, a completion handler is executed when the operation completes. The framework also provides queuing mechanism to serialize execution of handlers for synchronization purposes.

European Network of Excellence on High Performance and Embedded Architecture and Compilation