Baixe o app para aproveitar ainda mais
Prévia do material em texto
8.1. O que são aplicações concorrentes? -São aplicações que trabalham em uma mesma tarefa cooperando entre si, mas concorrendo pelos mesmos recursos (arquivos, registros, dispositivos de E/S, áreas de memória). 8.2. Explique o que são race conditions com suas palavras. - Race Condition é uma falha num sistema ou processo que ocorre quando diferentes processos ou threads em execução dependem de um estado compartilhado, e o resultado depende do escalonamento dos processos. Por exemplo, supondo que duas threads estejam utilizando uma variável global X com valor 0 para a realização de uma operação, e ambas queiram incrementar em 1 o valor dessa variável antes da utilização da mesma, a variável X passará a ter o valor igual a 2, e não 1 conforme o esperado, fazendo com que o resultado da operação seja errado. 8.3. O que fazem as chamadas fork e join? -Quando um programa A está sendo executado e encontra o comando FORK é criado um novo processo para execução de um programa B, concorrentemente ao programa A. O comando JOIN permite que o programa A se sincronize com o programa B, dando continuidade no processamento do programa A somente após ter terminado a execução do programa B. 8.4. O que acontece com o código que fica entre os comandos PARBEGIN e PAREND? Forneça um exemplo. -O comando PARBEGIN específica que a sequência de comandos seja executada concorrentemente em uma ordem imprevisível, através da criação de um processo para cada comando. O comando PAREND define um ponto de sincronização, onde o processamento só continuará quando todos os processos ou threads criados já tiverem terminado suas execuções. Um exemplo é a expressão “X := SQRT (1024) + (35.4 * 0.23) – (302/7)”, onde o cálculo final de X só será realizado quando todas as variáveis dentro da estrutura tiverem sido calculadas, funcionando da seguinte forma: PROGRAM Expressao; Var X, Temp1, Temp2, Temp3 : REAL; BEGIN PARBEGIN Temp1 := SQRT (1024); Temp2 := 35.4 * 0.23; Temp3 := 302/7 PAREND; X := Temp1 + Temp2 - Temp3; WRITELINE := ‘X = ‘, X); END. 8.5. O que é exclusão mútua? -É uma técnica usada em programação concorrente para evitar que dois processos ou threads tenham acesso simultaneamente a um recurso compartilhado. 8.6. O que é a região crítica? -É uma área de código de um algoritmo que acessa um recurso compartilhado que não pode ser acedido concorrentemente por mais de uma linha de execução, tendo como objetivo tornar Atômica a operação sobre o recurso compartilhado. 8.7. O que é starvation, ou “espera indefinida”, no contexto de exclusão mútua? -É uma situação que ocorre quando dois ou mais processos esperam por um mesmo recurso alocado. Caso o sistema escolha o processo aleatoriamente quando o recurso é liberado, um processo pode nunca ser escolhido. Starvation ocorre quando um processo nunca consegue executar sua região crítica e acessar o recurso compartilhado 8.8. Explique com suas palavras os dois mecanismos de exclusão mútua implementados em hardware. Desabilitar Interrupções: um processador sinaliza aos demais que as interrupções devem ser habilitadas ou desabilitadas. Ineficiente em arquiteturas de múltiplos processadores devido ao tempo de propagação da sinalização entre os processadores. Pode comprometer a multiprogramação, tendo em vista que a concorrência entre processos tem como base o uso de interrupções. Instrução test-and-set: Armazena um valor em uma variável lógica sinalizando se o recurso está em uso ou não. Através de uma instrução de máquina, o processador pode ler o conteúdo dessa variável, e caso o valor de bloqueio seja falso, o processo poderá alterá-lo para ter acesso a um recurso de forma exclusiva. Após o termino do processo, o valor da variável deve ser alterado para falso novamente para que o recurso fique livre novamente, podendo ser utilizado por outros processos.
Compartilhar