Hi, I am trying to get my head round Multi Threading and I have a few queries to try and clear up my confusion
Q1. Is multi threading a hardware / chip level concept, an OS level or an application / code level concept ? I am trying to work out where SMT
architecture fits in.
Q2. What’s the multi threading position in relation to Unix, Linux and Windows ?
Q3. Is multi threading only in relation to application processes or is it for OS processes as well ? I am trying to differentiate multi threading from the older CPU concepts of timeslicing, round robin etc
My understanding is that you can have multi processing systems which switch between or execute processes in parallel. However multi
threading takes this a step further in that a process can be broken down into threads and the processor execute the individual threads ( again via switching or parallel depending on the number of processors / cores you have )
Q4. Are processors therefore specifically designed either to execute full processes, threads or both ? Can a single processor execute a mix
of full processes and threads ? i.e. does a processor operate only at either a process level or a thread level ?
Q5. What’s the difference between a single processor with multi cores and a mult processor with single core processors ?
Q6. Are most modern processors today, multi thread capable processors ( or is it the OS which determines this ). Does the processor have to be specifically set to multi thread ?
Any wisdom greatly appreciated,
thanks Jim