Different multithreading models are as follows:
Many-to-one Model
In Many-to-one Model, many user level treads are mapped to one" kernel thread. It is efficient because it is implemented in user space. A process using this model will be blocked entirely if a thread makes a blocking system call. Only one thread can access the kernel at a time so it cannot be run in parallel on multiprocessor.
One-to-one Model
Figure: One-to-one Model
In this model, each user thread is mapped to a kernel thread. It provides more concurrency because it allows another thread to execute when a thread makes a blocking system call. It facilitates parallelism in multiprocessor. Each user thread requires a kernel thread, which may affect the performance of the system. Creation of threads in this model is restricted to a certain number. This model is used by Windows NT, Windows 2000 and OS/2.
Man-to-Many Model
This model multiplexes many user level threads to a smaller or equal number of kernel threads. The number of kernel threads may be specific to either a particular application or a particular machine. The user can create any number of user threads and corresponding kernel threads can run in parallel on multiprocessor. When a thread makes a blocking system call, the kernel can execute another thread. It is used by Solaris 2, IRIX, and Tru64.
Many-to-one Model
In Many-to-one Model, many user level treads are mapped to one" kernel thread. It is efficient because it is implemented in user space. A process using this model will be blocked entirely if a thread makes a blocking system call. Only one thread can access the kernel at a time so it cannot be run in parallel on multiprocessor.
One-to-one Model
Figure: One-to-one Model
In this model, each user thread is mapped to a kernel thread. It provides more concurrency because it allows another thread to execute when a thread makes a blocking system call. It facilitates parallelism in multiprocessor. Each user thread requires a kernel thread, which may affect the performance of the system. Creation of threads in this model is restricted to a certain number. This model is used by Windows NT, Windows 2000 and OS/2.
Man-to-Many Model
This model multiplexes many user level threads to a smaller or equal number of kernel threads. The number of kernel threads may be specific to either a particular application or a particular machine. The user can create any number of user threads and corresponding kernel threads can run in parallel on multiprocessor. When a thread makes a blocking system call, the kernel can execute another thread. It is used by Solaris 2, IRIX, and Tru64.