OS services - page 2 Communication queues: --------------------- When you send a datum to another WIZ (on the same chip), if it is not ready to receive, you go into a zero-power wait state. For example, when we send data to a function to be processed, we cannot send more data until that function is done processing the last data. But there is a new opportunity here: the OS could create or add to a queue for the target WIZ, storing the sender's WIZ-ID and the datum to be sent. The sender can then proceed, knowing the data has been "sent". When the receiver becomes ready, the ZOZ will dequeue the datum and pass it in. Of course, if the sender then tries to retrieve a result before that happens, or before the function is done, now he must hang, in a zero-power wait state. For example, we do: X => cosine ; ... other instructions ... ; cosine => Y Here, if the cosine were busy still processing its prior input, the datum from X can queue up. But when we hit "cosine => Y", if the cosine has not be completed, we still go into a wait state.