The many-to-one model (Figure 4.7) maps many user-level threads to one kernel thread. Thread management is done by the thread library in user space, so it is efficient (we discuss thread libraries in Section 4.4). However, the entire process will block if a thread makes a blocking system call. Also, because only one thread can access the kernel at a time, multiple threads are unable to run in parallel on multicore systems. Green threads—a thread library available for Solaris systems and adopted in early versions of Java—used the many-to-one model. However, very few systems continue to use the model because of its inability to take advantage of multiple processing cores, which have now become standard on most computer system
The many-to-one model is a good illustration of a design that made sense historically but became obsolete for a structural reason rather than an implementation flaw. It was fast precisely because thread operations stayed in user space and avoided system calls, but that same design choice is what makes it impossible to ever run two threads on two cores simultaneously, since the kernel only ever sees one thread