SóProvas


ID
204679
Banca
CESPE / CEBRASPE
Órgão
Banco da Amazônia
Ano
2010
Provas
Disciplina
Sistemas Operacionais
Assuntos

Acerca de características dos sistemas operacionais modernos,
julgue os itens subsequentes.

Uma thread pode estar, basicamente, em três estados diferentes: execução, bloqueado e pronto. A transição do estado de execução para o estado de bloqueio é ativada por meio dos algoritmos de escalonamento.

Alternativas
Comentários
  •  O thread vai para o estado de bloqueio quando ele precisa aguardar por algum evento, como por exemplo esperar o término de uma operação de entrada e saída (E/S).

    Logo, essa transição não depende do algoritmo de escalonamento.

  • Além do que o colega citou...

    Basicamente uma linha de execução pode assumir os seguintes estados:

    • criação. Neste estado, o processo pai está criando a thread que é levada a fila de prontos;
    • execução. Neste estado a linha de execução está usando a CPU;
    • pronto. Neste estado a linha de execução avisa a CPU que pode entrar no estado de execução e entra na fila de prontos;
    • bloqueado. Neste estado, por algum motivo, a CPU bloqueia a linha de execução, geralmente enquanto aguarda algum dispositivo de I/O;
    • término. Neste estado são desativados os contextos de hardware e a pilha é deslocada.

    Fonte wikipedia
  • Na realidade o escalonamento é feito na transição do estado de pronto para execução

  • Para uma thread ficar bloqueada, é necessário acontecer o seguinte:

    1 - Exclusão Mútua: ou um recurso está associado a um processo ou está disponível
    2 - Posse e Espera: processos que já possuem recurso podem solicitar novos recursos mantidos poroutros processos
    3 - Não Preempção: nenhum recurso pode ser retirado a força de um processo
    4 - Espera Circular: um processo espera um recurso de outro ...que espera recurso de outro....

    Não é por algoritmos de escalonamento que uma thread ou processo fica bloqueado e sim pelos 4 fatores acima.

    Bons estudos!
  • Apenas como alerta para quem lê os comentários, o comentário acima da Melissa está equivocado. As 4 condições elencadas por ela são as condições necessários para um deadlock, não para que uma thread seja bloqueada. Como já muito bem comentado acima, as condições para um thread ser bloqueada são basicamente espera por I/O ou interrupção, por exemplo, por um sleep.
  • O estados das threads estão corretos. O erro está em afirmar q "A transição do estado de execução para o estado de bloqueio é ativada por meio dos algoritmos de escalonamento", pois uma thread entra no estado bloqueado por razoes como pausas, espera por E/S, espera pela aquisição de um bloqueio, espera por uma notificação etc. E isso não depende do escalonador.

    O escalonador entra em ação para ativar uma nova thread. E isso acontece quando um dos 3 eventos a seguir ocorrer: a thread completar sua fatia de tempo, a thread bloquear a si mesma, uma thread de mais alta prioridade se tornar executavel.

    Quando o escalonador estiver pronto para ativar uma nova thread, ele verificará todas as threads q estão executáveis no momento e calculara o maior valor de prioridade de cada uma, selecionando uma daquelas em q o valor de prioridade seja igual ao calculado.


  • Parte 1: Uma thread pode estar, basicamente, em três estados diferentes: execução, bloqueado e pronto.

    Certo!

     

    Parte 2: A transição do estado de execução para o estado de bloqueio é ativada por meio dos algoritmos de escalonamento.

    Errado! O thread vai para o estado de bloqueio quando ele precisa aguardar por algum evento, não mediante um algoritmo de escalonamento. O algoritmo de escalonamento é utilizado quando o processo sai de "pronto" para "execução".

     

    Questão errada.