Title: C++ Synchronization Description: The sample project illustrates usage of pure virtual class, member functions with different types of arguments, global objects constructor invocation. A simple application demonstrates basic sanity of the kernel. The main thread and a cooperative thread take turns printing a greeting message to the console, and use timers and semaphores to control the rate at which messages are generated. This demonstrates that kernel scheduling, communication, and timing are operating correctly. -------------------------------------------------------------------------------- Building and Running Project: This kernel project outputs to the console. It can be built and executed on QEMU as follows: make run -------------------------------------------------------------------------------- Troubleshooting: Problems caused by out-dated project information can be addressed by issuing one of the following commands then rebuilding the project: make clean # discard results of previous builds # but keep existing configuration info or make pristine # discard results of previous builds # and restore pre-defined configuration info -------------------------------------------------------------------------------- Sample Output: Create semaphore 0x001042b0 Create semaphore 0x001042c4 main: Hello World! coop_thread_entry: Hello World! main: Hello World! coop_thread_entry: Hello World! main: Hello World! coop_thread_entry: Hello World! main: Hello World! coop_thread_entry: Hello World! main: Hello World! coop_thread_entry: Hello World! main: Hello World! coop_thread_entry: Hello World! main: Hello World! coop_thread_entry: Hello World! main: Hello World! coop_thread_entry: Hello World! main: Hello World! coop_thread_entry: Hello World! main: Hello World!