It specifies the memory requirements of a component at compile time and removes the overhead from dynamic assignment.
Commands are nonblocking requests made to the low-level components. Therefore, commands do not have to wait a long time to be executed.