SóProvas


ID
159010
Banca
CESPE / CEBRASPE
Órgão
STJ
Ano
2008
Provas
Disciplina
Sistemas Operacionais
Assuntos

Com relação a sistemas operacionais e sistemas distribuídos, julgue os
seguintes itens.

Há sistemas nos quais threads podem ser suportados no nível de usuário e no nível de sistema operacional. Se os threads no nível de usuário são mapeados para os threads no nível de sistema operacional, para se obter maior concorrência na execução dos threads no nível de usuário, em vez de mapear só um thread no nível de usuário para cada thread no nível de sistema operacional, tipicamente deve-se mapear mais de um no nível de usuário para cada um no nível de sistema operacional.

Alternativas
Comentários
  • Resposta: ERRADANão existe a necessidade de se mapear mais de um nível de usuário.
  • As threads do sistema são gerenciadas no Modo Kernel, que entre outras coisas realiza a Troca de Contexto Preemptiva, e as threads do usuário são gerenciadas no Modo Usuário, em que as Trocas de Contexto são Cooperativas

  • A questão trata de modelos de multithreads. Tem-se que há 3 modelos de multithread:

    Muitos para um:  vários threads de usuário são mapeados em um único thread de kernel. Se um thread fizer uma chamada bloqueante o processo inteiro será bloqueado. Com isso a concorrência fica prejudicada.

    Um para um: cada thread de usuário é mapeado em um thread de kernel. Há uma maior concorrência que no modelo muitos para um,mas pode provocar queda de desempenho do sistema. 

    Muitos para muitos: threads de usuários são multiplexados em um número menor de threads de kernel.

    O erro da questão está em dizer que com o modelo muitos para um (mais de um para cada um) obtém maior concorrência.

    Fonte: http://www.oocities.com/whisatugu/threads.pdf
     

  • 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