Modelo de Geração de Multithreads
Modelo Muitos-Para-Um
O modelo muitos-para-um mapeia muitos threads de nível de usuário para threads do kernel. O gerenciamento dos threads é realizado no espaço do usuárioe assim é eficiente, mas o processo inteiro ficará bloqueado. Além disso, como somente um thread pode acessar o kernel de cada vez, múltiplos threads são incapazes de executar em paralelo em multiprocessadores.[1]
Modelo Um-Para-Um
O modelo um-para-um mapeia cada thread de usuário para um thread de kernel, gera mais concorrência do que o modelo muitos-para-um. Permite a um outro thread ser executado, enquanto um thread realiza uma chamada de sistema de bloqueio, ele também permite que múltiplos threads executem em paralelo em multiprocessadores. A única desvantagem deste modelo é que a criação de um thread de usuário requer a criação do correspondente thread de kernel.[1]
Modelo Muitos-Para-Muitos
O modelo muitos-para-muitos multiplexa muitos threads de nível de usuário para um número menor ou igual de threads de kernel. O número de threads de kernel pode ser específico tanto para uma aplicação em particular quanto para uma máquina em particular. Os desenvolvedores podem criar tantos threads de usuário quantos forem necessários, e os correspondentes threads de kernel podem executar em paralelo em um multiprocessador. Além disso, quando um thread realiza uma chamada de sistema de bloqueio, o kernel pode agendar um outro thread para execução.
fonte:http://pt.wikipedia.org/wiki/Thread_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)
Bons Estudos!!!
Marcelo