Sistemas operacionais
Por: Julia Martorelli • 20/11/2015 • Pesquisas Acadêmicas • 5.631 Palavras (23 Páginas) • 4.053 Visualizações
Lstas de exercício
Capítulos 7, 8, 11, 12, 13
Belo Horizonte, 2015
Capítulo 7
- Defina o que é uma aplicação concorrente e dê um exemplo de sua utilização.
São aplicações ou processos que comunicam entre si através de memória compartilhada ou troca de mensagens. Como exemplo, um processo que lê do buffer e um outro processo que grava do buffer (ms word).
- Considere uma aplicação que utilize uma matriz na memória principal para a comunicação entre vários processos concorrentes. Que tipo de problema pode ocorrer quando dois ou mais processos acessam uma mesma posição da matriz?
Pode ocorrer o problema da inconsistência de dados caso não haja um controle de acesso a tal dado. Deve ser esperado o término de utilização do recurso por cada processo.
- O que é exclusão mútua e como é implementada?
É a solução que impede que dois ou mais processos acessem o mesmo recurso simultaneamente. Quando um processo estiver acessando um recurso, os demais processos que queiram acessar este recurso deverão esperar pelo término da utilização deste recurso. Quando um processo deseja executar instruções de sua região crítica, deverá executar um protocolo de entrada na região crítica obrigatoriamente, assim como quando sair da região crítica deverá executar um protocolo de saída.
- Como seria possível resolver os problemas decorrentes do compartilhamento da matriz, apresentado anteriormente, utilizando o conceito de exclusão mútua?
Seria possível resolver os problemas ao obter um ponto de entrada para o protocolo e um de saída. Ou seja, assim que se encontrar o término de um processo acessando o recurso, o próximo processo só iniciará após este término.
- O que é starvation e como podemos solucionar esse problema?
Starvation é a espera indefinida, e acontece quando um processo nunca consegue executar a sua região crítica. Pode ocorrer por escolha aleatória ou por prioridade. Uma slução simples é a criação de filas de pedidos para cada recurso, usando FIFO.
- Qual o problema com a solução que desabilita as interrupções para implementar a exclusão mútua?
A multiprogramação pode ficar seriamente comprometida, já a ocorrência tem como base o uso e interrupções. Se o processo “esquecer” de habilitar as interrupções, o sistema poderá ficar seriamente comprometido. Em sistemas multiprocessados esta solução torna-se ineficiente devido ao tempo de propagação de um processador para os outros da desabilitação/habilitação das interrupções.
- O que é espera ocupada e qual o seu problema?
A espera ocupada ocorre toda vez que um processo não consegue entrar em sua região crítica, por já existir outro processo acessando o recurso, o processo permanece em looping, testando uma condição, até que lhe seja permitido o acesso. Dessa forma, o processo em looping consome tempo do processador desnecessariamente, podendo ocasionar problemas ao desempenho do sistema.
- Explique o que é sincronização condicional e dê um exemplo de sua utilização.
Ocorre quando o acesso a um recurso compartilhado exige uma sincronização entre os processos. Um exemplo clássico é a comunicação entre dois processos através de operações de gravação e leitura em um buffer.
- Explique o que são semáforos e dê dois exemplos de sua utilização: um para a solução da exclusão mútua e outro para a sincronização condicional.
Um semáforo é uma variável interna, não negativa, que só pode ser manipulada por duas instruções: DOWN (decrementa o valor da variável) e UP (incrementa o valor da variável).
Quanto a exclusão mútua, citamos como exemplo de utilização de semáforo, quando for entrar na região crítica, o processo executa um DOWN; se o semáforo for igual a um, este valor é decrementado e o processo entra na região crítica; se o valor for zero, então o processo impedido de entrar na seção crítica, e seu estado passa a ser de espera, liberando o processador.
Quanto a sincronização condicional, como exemplo tem-se a solicitação de E/S, onde o processo que solicita a E/S executa um DOWN e fica em estado de espera até a operação de E/S ser completada.
- Explique o que são monitores e dê dois exemplos de sua utilização: um para a solução da exclusão mútua e outro para a sincronização condicional.
Monitores são mecanismos de sincronização de alto nível que torna mais simples o desenvolvimento de aplicações concorrentes.
Na exclusão mútua, a implementação utilizando monitores não é realizada diretamente pelo programador; as regiões críticas são definidas como procedimentos no monitor e o compilador garante a exclusão mútua; a comunicação do procedimento e monitor é executada através de chamada a procedimentos e dos parâmetros passados.
Na sincronização condicional, poder implementada utilizando-se de monitores através de variáveis especiais de condição; é possível associar a execução de u procedimento que faz parte do monitor a uma determinada condição.
- Qual a vantagem da forma assíncrona de comunicação entre processos e como esta pode ser implementada?
A vantagem deste mecanismo é aumentar a deficiência de aplicações concorrentes. Para implementar essa solução, além da necessidade de buffers para armazenar as mensagens, devem haver outros mecanismos de sincronização que permitam ao processo identificar se uma mensagem já foi enviada ou recebida.
- O que é deadlock, quais as condições para obtê-lo e quais as soluções possíveis?
Deadlock é a situação em que um processo aguarda por um recurso que nunca estará disponível ou um evento que não ocorrerá. Para que ocorra a situação de deadlock, quatro condições são necessárias simultaneamente:
- Exclusão mútua: cada recurso só pode estar alocado a um único processo em um determinado instante;
- Espera por recurso: um processo, além dos recursos já alocados, pode estar esperando por outros recursos;
- Não-preempção: um recurso não pode ser liberado de um processo só porque outros processos desejam o mesmo recurso;
- Espera circular: um processo pode ter de esperar por um recurso alocado a outro processo e vice-versa.
Para prevenir a ocorrência de dedalocks, é preciso garantir uma das quatro condições apresentadas, necessárias para sua existência, nunca se satisfaça. A prevenção de deadlocks evitando-se a ocorrência de qualquer uma das quatro condições é bastante limitada e, por isso, na prática não é utilizada. Uma solução conhecida como Algoritmo do Banqueiro (implementada com a presença das quatro condições) também possui várias limitações. A maior delas é a necessidade de um número fixo de processos ativos e de recursos disponíveis no sistema. Essa limitação impede que a solução seja implementada na prática, pois é muito difícil prever o número de usuários no sistema e o número de recursos disponíveis.
...