TinyOS is a static system, so application programmers must allocate all of the resources at design-time. On the other hand, Contiki and LiteOS are dynamic systems, and application programmers can allocate and deallocate resources at run-time. Dynamic systems are more flexible, and thus are more suitable for dynamically changing environments.