What's the basic difference between hardware and software solutions for critical section problem? Why are they called hardware or software solution?