The Linux Threads implementation which today is Linux's POSIX thread library is based on the principles outlined by the kernel developers at the time the code was written(1996). The basic assumption is that context switches among related processes are fast enough to handle each user-level thread by one kernel thread. Kernel processes can have various degree of relationship. The POSIX thread specification requires sharing of almost all resources.