Q1. What are the advantages and disadvantages of user-level threads over kernel-level threads?
Ans. The procedure that saves the thread’s state and the scheduler are just local procedures, so invoking them is much more efficient than making a kernel call.
User level threads also have other advantages. They allow each process to have its own customized scheduling algorithm. They also scale better since kernel threads invariably require some table space and stack space in the kernel, which can be a problem if there are a very large number of threads.
Despite their better performance user-level threads packages have some major problems. First among there is the problem of how blocking system calls are implemented. Kernel threads do not require any new non blocking system calls as compared to user level threads; their main disadvantage is that the cost of the system call is substantial, so if thread operations (creation, termination, etc.) are common, much more overhead will be incurred.