title: What's difference between lock (spinlock etc) and blocking
body: <p>This may seems a little absurd, but i'm confused.</p>
  
  <ol>
  <li>What's exactly difference between a locking and blocking operations? </li>
  <li>When do we use Block and when do we use Lock?</li>
  <li>When we can use spinlock,semaphore etc to put calling process to sleep (i suppose it happens, please mention if i'm wrong) then why do we create wait_queues to put process to sleep (i expect this is blocking).</li>
  </ol>
  
  <p>Please answer.</p>