This is my understanding:
There are two types of processes: user and kernel(OS). Each process can have single or multiple threads. The threads of a user process are called a user-level thread and the threads of a kernel process are called kernel-level threads. Scheduler, dispatcher etc. contains kernel-level threads. Both user-level threads and kernel-level threads can able to run on CPU.
There may be several user-processes in ready queue for execution, scheduler(kernel) decides which user process/ thread to run on CPU, dispatcher(kernel) gives control to the corresponding user-thread on CPU, the corresponding user-thread executes and terminates.
Consider the following statement (From Galvin os textbook):
To run on a CPU, user-level threads must ultimately mapped to an associated kernel-level thread.
My doubt is as follows:
What is the need of such mapping? Where am I going wrong?