Paging is a memory management scheme that allows non-contiguous allocation of processes, and which eliminates problems with fragmentation by allocating memory in equal sized blocks known as pages. The basic idea behind paging is
If a system does not employ either a deadlock-prevention or a deadlock-avoidance algorithm(for detail see Introduction to Deadlocks, Methods for Handling Deadlocks and Deadlock Avoidance Techniques), then deadlock situation may occur.
In a multi programming environment, several processes may compete for a finite number of resources. A process requests resources, and if the resources are not available at that time, process enters in a waiting state.