One of my favorite projects during college. It was a part of “Operating systems 1” class (Dragan Milićev was the professor). The goal was to create a multithreading support for C++, with features like context switching, explicit synchronous preemption, asynchronous preemption (caused by an interrupt), time sharing, round-robin scheduling…
It was used as a core for Operating systems 2 class.
This was back in january 2006.