The other day I was thinking about how the scheduler works in multi-threaded environments and how the load is distributed among the processor cores. I read about the green threads in JVM that the implementation of multithreading may not depend on the OS kernel. The threads on the same processor are more related to context switching, which creates the illusion of parallelism. Are threads an abstraction for concurrency?
The question is, how is the load distributed in multi-core processors? Does the processor itself do this automatically or programmatically (OS kernel, virtual machine)? who decides on which core the instructions of the current context will be executed?
In windows 10 task manager you can set which cores are allowed for a task. How it work
Where can I read about it