Tasks running on a computer system are connected. Well, they are not connected via cellphones, ICQ or MSN. :-) Instead, as shown in figure 1.1,they talk to each other via sockets, pipes, signals, IPC messages, IPC semaphores, file locks and pseudo terminals (ptmx/pty pairs). Naturally, when one task A talks to task B, B might be ready to give the answer. In this case, task A blocks until the response is given. For example, if a task calls read(sock,...) and the data is not available, the task blocks until another task write to this socket. In this article, we call task A depends on task B when task A blocks on waiting for a resource to be provided by task B.