The added dimensionality of dynamic reconfiguration in a system has created the concept of a hardware task. Similar to software tasks, hardware tasks also need to be managed, scheduled, and placed in the reconfigurable logic. Hardware is no longer merely slave devices attached to the bus and controlled by software drivers. Hardware tasks are more active, just like software tasks. They may request synchronization primitives such as mutexes and semaphores. They may request bus and memory access. They may be created and killed dynamically. They may invoke each other, just like software function invocations. All these behaviors of hardware tasks must be managed by an Operating System for Reconfigurable Systems (OS4RS).