Prévia do material em texto
Painel ► Cursos ► INE5611-04238A (20221) ► Provas ► Prova Iniciado em Tuesday, 14 Jun 2022, 18:30 Estado Finalizada Concluída em Tuesday, 14 Jun 2022, 19:31 Tempo empregado 1 hora 1 minuto Notas 7,75/8,00 Avaliar 9,69 de um máximo de 10,00(97%) https://moodle.ufsc.br/my/ https://moodle.ufsc.br/course/index.php https://moodle.ufsc.br/course/view.php?id=160261 https://moodle.ufsc.br/mod/quiz/view.php?id=4040019 Questão 1 Correto Atingiu 1,00 de 1,00 Relacione cada árvore de processos criados via fork() com o código-fonte correspondente. Nas árvores, processos são representados por esferas, e as setas apontam do processo �lho para o processo pai. for (int i = 0; i < 2 && fork(); ++i); fork(); fork(); for (int i = fork(); i <= 1; ++i) if (!fork()) break; if (!fork()) fork(); Sua resposta está correta. A resposta correta é: for (int i = 0; i < 2 && fork(); ++i); → D, fork(); fork(); → C, for (int i = fork(); i <= 1; ++i) if (!fork()) break; → A, if (!fork()) fork(); → B. D C A B Questão 2 Correto Atingiu 1,00 de 1,00 Questão 3 Correto Atingiu 1,00 de 1,00 Quando dois processos A e B não concluem as suas execuções porque o processo A depende do término do processo B que, por sua vez, depende da conclusão do processo A, tem-se uma situação denominada: Escolha uma opção: a. pipeline. b. interrupção de CPU. c. compartilhamento de recursos. d. Deadlock. e. state wait. A resposta correta é: Deadlock. Assumindo o escalonamento First-Come, First-Served e uma �la de processos indicada abaixo, determine o tempo de espera médio. A tabela representa a ordem de chegada dos processos (primeira linha indica o primeiro processo) e o tempo de CPU que eles demandam. Processo Tempo de CPU P1 28 P2 23,8 P3 12 ATENÇÃO: O resultado deve ser dado com precisão de 2 casas decimais usando arredondamento padrão. Resposta: 26,60 A resposta correta é: 26,60 Questão 4 Correto Atingiu 1,00 de 1,00 Estratégia de escalonamento de processos que se baseia em um temporizador, onde os processos ganham uma parcela de tempo para utilização da CPU, caracteriza o escalonamento de processos do tipo Escolha uma opção: a. First in, �rst out b. Shortest Job First c. Shortest Remaining Time d. Round-Robin e. First come, �rst served Sua resposta está correta. A resposta correta é: Round-Robin Questão 5 Correto Atingiu 1,00 de 1,00 Em Sistemas Operacionais modernos, para que uma operação possa invocar uma instrução privilegiada, o processador implementa o mecanismo de modos de acesso duais. Esse mecanismo está dividido basicamente nos modos de acesso conhecidos por: Escolha uma opção: a. cluster e modo kernel b. modo assíncrono e modo usuário c. system calls e modo protegido d. modo usuário e modo kernel e. modo protegido e cluster Sua resposta está correta. A resposta correta é: modo usuário e modo kernel Questão 6 Correto Atingiu 1,00 de 1,00 Durante parte do tempo, um processo está ocupado realizando computações internas e outras coisas que não levam a condições de corrida. No entanto, às vezes, um processo tem de acessar uma memória compartilhada ou arquivos, ou realizar outras tarefas críticas que podem levar a corridas. Essa parte do programa onde a memória compartilhada é acessada é chamada de região crítica ou seção crítica. Se conseguíssemos arranjar as coisas de maneira que dois processos jamais estivessem em suas regiões críticas ao mesmo tempo, poderíamos evitar as corridas. Embora essa exigência evite as condições de corrida, ela não é su�ciente para garantir que processos em paralelo cooperem de modo correto e e�ciente usando dados compartilhados. Precisamos que quatro condições se mantenham para chegar a uma boa solução. 1. Dois processos jamais podem simultaneamente estar dentro de suas regiões críticas. 2. Nenhuma suposição pode ser feita a respeito de velocidades ou de número de CPUs. 3. Nenhum processo executando fora de sua região crítica pode bloquear qualquer processo. 4. Nenhum processo deve ser obrigado a esperar eternamente para entrar em sua região crítica. Em um sentido abstrato, o comportamento que queremos é mostrado na �gura a seguir. Considerando o texto e a �gura apresentados, avalie as asserções a seguir e a relação proposta entre elas. I. Em algumas situações, a exclusão mútua pode ser obtida por meio da desabilitação da interrupção controlada pelo Sistema Operacional, não sendo permitido que o seu controle seja feito pelo usuário. PORQUE II. A desabilitação da interrupção é uma técnica que pode impedir que o processador que está executando um processo em sua região crítica seja interrompido para executar outro código, sendo mais e�ciente em sistemas de multiprocessadores devido a quantidade de processos concorrentes. A respeito dessas asserções, assinale a opção correta Questão 7 Correto Atingiu 1,00 de 1,00 Escolha uma opção: a. As asserções I e II são proposições falsas. b. As asserções I e II são proposições verdadeiras, mas a II não é uma justi�cativa correta da I. c. As asserções I e II são proposições verdadeiras, e a II é uma justi�cativa correta da I. d. A asserção I é uma proposição verdadeira, e a II é uma proposição falsa. e. A asserção I é uma proposição falsa, e a II é uma proposição verdadeira. Sua resposta está correta. A resposta correta é: A asserção I é uma proposição verdadeira, e a II é uma proposição falsa. Seja a seguinte rotina simpli�cada para saque em uma conta corrente: int saque(conta_t *conta, double valor){ if (conta.saldo >= valor) { *conta->saldo = *conta->saldo - valor; return 1; } return 0; } Supondo que um conta corrente é compartilhada por Ana e Beto e tem um saldo de R$ 500. Ambos, em terminais diferentes, realizam um saque de R$ 350 e R$ 300 , respectivamente. Qual será um saldo �nal inesperado em decorrência de condição de corrida? -150 Uma possível resposta correta é: -150 Sua resposta está correta. Questão 8 Parcialmente correto Atingiu 0,75 de 1,00 Selecione as a�rmativas verdadeiras sobre os conceitos de Programação Concorrente. ATENÇÃO: Cada resposta incorreta anula uma resposta correta. Este desconto não interfere na nota das demais questões. Escolha uma ou mais: a. Podemos evitar que deadlocks ocorram garantindo que todos os bloqueios de recursos compartilhados sejam realizados na mesma ordem. b. Um deadlock é a situação em que uma thread realiza sucessivas tentativas de obter um recurso que nunca será liberado. c. O código a seguir, executado por várias threads, não possui deadlock, apesar de realizar busy-waiting (espera ocupada). Lembre que pthread_mutex_trylock()retorna 0 se obteve sucesso (conseguiu obter o mutex). d. A chamada de sistema fork() cria um processo com o mesmo código executável do processo que realizou a chamada. e. Por padrão, uma thread que já adquiriu um mutex através de uma chamada pthread_mutex_lock(&m) pode fazer um novo pthread_mutex_lock(&m) sem bloquear. f. A função fork() retorna o PID do processo �lho que foi criado, ou o valor zero caso a criação do processo �lho tenha falhado. g. Uma thread em deadlock retém um núcleo do processador inde�nidamente, impedindo que ele seja utilizado por outras threads. h. Cada processo do Linux possui um espaço de endereçamento próprio, que é compartilhado entre suas threads. Isso signi�ca que threads de um mesmo processo compartilham memória e podem trocar dados por meio de variáveis globais. i. Regiões críticas são trechos de código onde dados compartilhados não podem ser acessados por múltiplas threads simultaneamente. Essas regiões sensíveis do código podem ser protegidas usando mecanismos de controle de concorrência, como mutexes, monitores e semáforos. j. Um semáforo que foi adquirido por uma thread só poderá ser liberado por essa mesma thread. Sua resposta está parcialmente correta. Você selecionou corretamente 3. As respostas corretas são: A chamada de sistema fork() criaum processo com o mesmo código executável do processo que realizou a chamada., Cada processo do Linux possui um espaço de endereçamento próprio, que é compartilhado entre suas threads. Isso signi�ca que threads de um mesmo processo compartilham memória e podem trocar dados por meio de variáveis globais., Regiões críticas são trechos de código onde dados compartilhados não podem ser acessados por ◄ A.3 Guia de comandos do Linux múltiplas threads simultaneamente. Essas regiões sensíveis do código podem ser protegidas usando mecanismos de controle de concorrência, como mutexes, monitores e semáforos., Podemos evitar que deadlocks ocorram garantindo que todos os bloqueios de recursos compartilhados sejam realizados na mesma ordem. Seguir para... https://moodle.ufsc.br/mod/wiki/view.php?id=3936894&forceview=1