SóProvas


ID
425062
Banca
UFBA
Órgão
UFBA
Ano
2009
Provas
Disciplina
Sistemas Operacionais
Assuntos

Um thread pode ceder seu tempo de processamento a outro thread de prioridade mais baixa.

Alternativas
Comentários
  • Exatamente o contrário.
    Threads de prioridade mais baixa sofrem preempção em detrimento a threads de mais alta prioridade
  • Esse item é estranho. Quando li o que eu entendi é que voluntariamente ou por alguma operação de IO, uma thread pode deixar de rodar e ceder o tempo a que tinha direito a outra thread. "Ceder" dá essa ideia de que não foi um processo involuntário e forçado, caso de uma preempção. Acho que o item poderia ser anulado.
  • Tbm achei estranho!
    Mas acho que o problema é questão da redação do enunciado.

    Imagina o enunciado desta forma, trocando "baixa" por "alta":
    "Um thread pode ceder seu tempo de processamento a outro thread de prioridade mais alta."
    Continuaria errado?

    Eu creio que sim.
    Acho que o thread não pode "ceder" seu tempo de processamento para qualquer outro thread. Esse é uma decisão do escalonador, não da thread.
    O thread pode pular fora antes do término do seu tempo de processamento (se acabou sua tarefa ou se há espera por E/S) mas quem vai assumir o processador não é competência dela.

    Algum comentário que possa esclarecer mais?
  • Dependendo do algoritmo que for usado, pode sim haver cessão de uma thread de prioridade mais alta para outra mais baixa, imagina uma situação em que a thread de prioridade mais alta ocupa o processador por um tempo muito longo , em algum momento ela terá que ceder para demais thread's .. questão questionável , uma vez que isso dependerá do algoritmo de escalonamento que não foi citado em nenhum momento.


    Bons Estudos
  • O conceito de thread eh semelhante ao de processos. Uma thread de prioridade inferior só será executada quando as de prioridade superior se encontram no estado bloqueado. Quando uma thread bloqueia, a JVM, no caso do java, escolhe uma das próximas threads de prioridade mais alta e executa-a. A suspensão da execução de uma thread é possível com vista a lançar a execução de outra de igual prioridade.
  • Porra, e thread.yield() faz o q?

  • O thread(ou processo) não tem interferência no sistema operacional sobre qual o próximo thread será escalonado para o processador. Essa é uma decisão do SO que dependente do algoritmo de escalonamento.

    A Thread pode até mesmo se colocar para dormir, como o colega Walking Nerd sugeriu, mas isso não garante que o processador vá escalonar um thread de prioridade mais baixa ou que o próxima thread terá um tempo de processamento maior porque recebeu mais tempo de processador de outra thread.

    Essa é aquela questão que por ser simples e direta, a pessoa fica achando que tem uma pegadinha...