In order to prevent deadlock we try to disable any one of the necessary conditions of deadlock .Now my point of confusion is that while we have to disable Hold and wait we say that either a process must make request initially only or if before it can request for additional resources it must be able to release all the resources that are currently allocated to it .
Now in case of disabling No Preemption also we do similar things like if a process is holding some resource and requests another resource that cannot be immediately allocated to it ,then all the resources currently being held are preempted , so then what is the basic difference between the two when in both of these scenarios we are trying to release the resources from the process if it is trying to ask for some additional resources ?