Baixe o app para aproveitar ainda mais
Prévia do material em texto
17/10/2020 Sobre threads: Revisão da tentativa www.classes.sead.ufpb.br/mod/quiz/review.php?attempt=72892&cmid=53187 1/2 Página inicial / Meus cursos / SO - 20.1 - 273045 / Threads / Sobre threads Questão 1 Correto Atingiu 2,00 de 2,00 Questão 2 Parcialmente correto Atingiu 1,33 de 2,00 Iniciado em domingo, 4 out 2020, 15:30 Estado Finalizada Concluída em domingo, 4 out 2020, 15:48 Tempo empregado 18 minutos 10 segundos Avaliar 9,33 de um máximo de 10,00(93%) Muitas podem estar associadas a um . Elas parecem processos separados, mas compartilham o mesmo , dados e os alocados ao processo. Assim, a troca de informações entre elas é rápida, pois podem acessar as mesmas variáveis. Para que essas linhas de execução possam ser é preciso manter para cada uma delas, informações de contexto/estado, tais como , endereço da pilha de execução e cópias dos registradores. threads processo espaço de endereçamento recursos escalonadas contador de programa Sua resposta está correta. Quando uma thread cria outra thread, ambas ficam associadas ao mesmo processo, e compartilham o mesmo espaço de endereçamento/dados e recursos alocados aos processos. Ao contrário, quando um processo cria outro processo, eles não compartilham o mesmo espaço de endereçamento. As threads passam a ser as unidades escalonáveis do processo, assim, é preciso manter para cada uma, toda a informação de contexto que possibilite a alternância delas no uso da CPU. Sobre threads, marque as opções verdadeiras. Escolha uma ou mais: a. Uma tabela de threads é mantida pelo sistema operacional para que as threads de usuário possam ser alternadas no uso da CPU. b. Uma alternativa interessante é de um modelo de threads híbrido, em que N threads de usuário estão associadas a M threads de núcleo, assim, consegue-se usufruir do bom desempenho das threads de usuário e de não perder a CPU por conta de uma chamada de sistema bloqueante. c. Mesmo quando threads de usuário são usadas, o sistema operacional escalona o processo e não as threads, pois elas não são conhecidas pelo sistema operacional. Se uma delas faz uma chamada de sistema bloqueante, o processo associado é bloqueado e perde a CPU. d. As threads de núcleo são raramente usadas porque precisam do suporte do sistema operacional e quase nenhum sistema operacional moderno (atual) dá suporte a isso. e. Threads de núcleo são conhecidas pelo sistema operacional e por isso resolvem o problema de um processo de não perder necessariamente a CPU quando faz uma chamada de sistema bloqueante. Sua resposta está parcialmente correta. Você selecionou corretamente 2. Mudar o contexto da CPU de uma thread de usuário para outra é muito rápido, As threads de usuário são implementadas no nível de biblioteca de programas de usuários. Assim, o sistema operacional não tem conhecimento delas e escalona o processo, não as threads. A própria runtime da linguagem de programação que deve manter uma tabela de threads. Já as threads de núcleo só funcionam quando o SO dá suporte a elas, pois nesse caso, o SO escalona as threads e é o SO que mantém uma tabela de threads. Como o SO está envolvido, é mais demorado mudar o contexto da CPU de uma thread para outra, mesmo quando elas fazem parte do mesmo processo. http://www.classes.sead.ufpb.br/ http://www.classes.sead.ufpb.br/course/view.php?id=1044 http://www.classes.sead.ufpb.br/mod/quiz/view.php?id=53187 17/10/2020 Sobre threads: Revisão da tentativa www.classes.sead.ufpb.br/mod/quiz/review.php?attempt=72892&cmid=53187 2/2 Questão 3 Correto Atingiu 2,00 de 2,00 Questão 4 Correto Atingiu 2,00 de 2,00 Questão 5 Correto Atingiu 2,00 de 2,00 Só faz sentido usar threads se o computador onde o programa for executar for multiprocessado. Caso contrário, não há ganho algum em usar threads. Escolha uma opção: Verdadeiro Falso O uso de threads é muito recomendado para as aplicações que tem computação substancial a ser realizada e também operações de entrada/saída quando essas atividades puderem ser realizadas de forma independente. Se um programa é monothread e faz uma chamada de sistema bloqueante (como um read, por exemplo), ele vai ser bloqueado e vai perder o processador para outro processo. Se esse programa tem algum processamento que pode ser realizado independente do resultado dessa chamada de sistema, ele se beneficiaria do uso de threads. As threads são entidades que cooperam entre si. Elas fazem parte do mesmo processo, e portanto operam em nome do mesmo usuário. Por conta disso, o sistema operacional não precisa se preocupar de proteger uma thread de outra se elas são de um mesmo processo. Escolha uma opção: Verdadeiro Falso Se as threads de um mesmo processo se prejudicarem umas às outras então é bug na aplicação. Elas devem cooperar. Em cada instante de tempo, cada thread está em um estado. Os estados possíveis para as threads os mesmos estados possíveis dos . Apenas as threads no estado podem ser escolhidas para rodar. Threads podem passar para o estado se fizerem uma chamada de sistema . são processos pronto em execução bloqueado bloqueante Sua resposta está correta. ◄ Vídeo-aula sobre threads Seguir para... Questionário aberto sobre threads ► http://www.classes.sead.ufpb.br/mod/page/view.php?id=53188&forceview=1 http://www.classes.sead.ufpb.br/mod/assign/view.php?id=54911&forceview=1
Compartilhar