From here: Relationship between a kernel and a user thread
When they say map, they mean that each kernel thread is assigned to a
certain number of user mode threads.
Kernel threads are used to provide privileged services to applications
(such as system calls ). The are also used by the kernel to keep track
of what all is running on the system, how much of which resources are
allocated to what process, and to do scheduling.
If your applications make a heavy use of system calls, the more user
threads per kernel thread, the slower your applications will run,
because the kernel thread will become a bottleneck, since all system
calls will pass through it.
On the flip side though, if you're programs rarely use system calls
(or other kernel services), you can assign a large number of user
threads to a kernel thread without much performance penalty, other
than overhead.
You can increase the number of kernel threads, but this adds overhead
to the kernel in general, so while individual threads will be more
responsive with respect to system calls, the system as a whole will
become slower.
That is why it is important to find a good balance between the number
of kernel threads and the number of user threads per kernel thread.
Also see here: What is the difference between kernel threads and user threads?
What is the difference between kernel threads and user threads?
Kernel threads are privileged and can access things off-limits to user mode threads. Take a look at "Ring (Computer Security)" on Wikipedia. On Windows, user mode corresponds to Ring 3, while kernel mode corresponds to Ring 0.
What are techniques used for creating kernel threads?
This is extremely dependent upon the operating system.
now in case of user level threads Is it that this TCB is created in user's address space ?
The TCB records information about a thread that the kernel uses in running that thread, right? So if it were allocated in user space, the user mode thread could modify or corrupt it, which doesn't seem like a very good idea. So, don't you suppose it's created in kernel space?
What are these models? How are these models practically used?
Wikipedia seems really clear about that.