I've a couple of questions that I need answers for. What I am looking for here is the outline of the answers. Not necessarily the exact complete answer. I can do that. The question is that common operating systems provide support for concurrency through processes and threads.
There are differences between processes and threads and that well documented and easily understood. The issue here is What support does the hardware need to provide for processes and threads? The initial guess that came to my mind was that it is related to process communication and synchronization. However, these concepts are parts from another question which gets me to think that they are not the right answer. I am aware of the hyper-threading which is a hardware approach for concurrency. Is it ?!
The other question is that Operating systems and programming languages offer various means for communication and synchronization between processes and threads. What are the most common ones? What support does the hardware need to provide and, in particular, what instructions does a processor need to offer for communication and synchronization?
I know it is a long question but again, I don't seem to figure out the outline for the specific hardware support for (concurrent process and threads, as well as communication and synchronization).
Your help is highly appropriated