I have studied about both of these on many places like this, this and this, but still it is not that much clear that what the actual difference is between these two.
The Wikipedia links (first and second links mentioned above) say about deadlock prevention that:
The hold and wait or resource holding conditions may be removed by requiring processes to request all the resources they will need before starting up (or before embarking upon a particular set of operations)...
and the deadlock avoidance section of the same page says:
Deadlock can be avoided if certain information about processes are available to the operating system before allocation of resources, such as which resources a process will consume in its lifetime...
so almost in both of these situations we require the processes to provide information about resources in advance.
So can anyone kindly explain in easy-to-understand words that what the actual difference is in between both of these.