RT1 | Real Time and Multi-Core programming |
This course helps you master multitask and real-time programming, understanding how to effectively solve problems using the primitives provided by the underlying Operating System. |
Exercise: | Install the development environment on the host system (if needed) | |
Exercise: | Install the execution environment on the target system | |
Exercise: | Create a simple context switch routine |
Exercise: | Build a general purpose thread safe doubly linked list |
Exercise: | Write a simple, thread safe, buddy system memory manager |
Exercise: | Write a generic, multi-level, memory manager |
Exercise: | Enhance the memory manager for memory error detection |
Exercise: | Enhance the context switching infrastructure to monitor stack use |
Exercise: | Write a simple, fixed priority, scheduler |
Exercise: | Write a basic interrupt manager |
Exercise: | Extend the scheduler to also support real-time round-robin scheduling |
Exercise: | Writing a spinlock implementation |
Exercise: | Study of a multi-core scheduler |
Exercise: | Implement Semaphores by direct interaction with the scheduler |
Exercise: | Implement the mutex mechanism |
Exercise: | Check proper nesting of mutexes and recursive/non-recursive use |
Exercise: | Implement a priority ceiling mechanism |
Exercise: | Add Condition variable support to the mutex mechanism |
Exercise: | The producre-consumer problem, illistrating (and avoiding) concurrent access problems |
Exercise: | The philosophers dinner problem, illustrating (and avoiding) deadlock, livelock and starvation |
Exercise: | Solve the classic readers-writers problem with POSIX threads |
Exercise: | Maintain per-thread static data for the readers-writers problem |
Exercise: | Create a kernel-mode execution barrier using kernel synchronisation primitives |
Exercise: | Create a kernel event synchronisation object, using basic synchronisation primitives |
Exercise: | Sending messages between AMP cores |