So in the silberschatz O.S book it says Windows uses one to one model (mapping user level threads to kernel level threads)

but why? i thought many to many and two level models are much better, specially two level model, so why not use the two level mode or many to many? whats the benefit compared to other models and isn't there some overhead and limitation(like number of threads) because of using one to one?

overall, if someone wants to create a new O.S, how should he know which model to choose?


1 Answer 1


I am gonna be very careful here and say it is due to complexity of managing threads at two different levels did not produce the expected results, the lack of a direct mapping caused issues meeting POSIX threads requirements. Notice that in the book it says that Solaris 8 and before have implemented many to many model. Here you can see the document they "explain" the retirement of this model.

The Solaris 9 Operating Environment does not include an alternate threads implementation. The old MxN implementation has been gracefully retired and replaced with an enhanced version of the 1:1 implementation. The /usr/lib/lwp directories which held the alternate library in Solaris 8 software have been preserved, but these now simply link back to /usr/lib. Extensive testing indicates that this decision should cause no issues for existing applications. Most applications are expected to benefit from this move and binary compatibility is preserved.

Again, sadly, there was nothing concrete stated as reason, but my guess will be complexity.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.