look , deadlock occurs usually when one instruction's input is the result of another instruction ... which in turns waits for the first one's result .. like this:
1. a = func1( b , c);
2. b = func2( a , c);
here deadlock occurs , coz func1 waits for func2's result , and func2 waits for func1's result !
this situation happens in the operating system occasionally when a process is fetched from the waiting list of a processor , while another process is beying processed and already waiting for some other waiting process result !
like I/O operation ( Data Transaction / Network actions )