Você está na página 1de 2

Nome: Elton John Robaina da Silva

Lista 01 P2

1: Sincronização e Comunicação de processos

Respostas:

1. É necessário assegurar que dois ou mais processos não se encontrem simultaneamente na


região crítica, caso não haja uma gerência no uso concorrente dos recursos compartilhados,
inconsistências nos dados podem ocorrer.

2. É a solução mais simples pra evitar problemas de compartilhamento de recursos impedindo


que dois ou mais processos acessem um mesmo recurso simultaneamente. Ele é
implementado com a região do recurso compartilhado chamada região crítica, que tem
protocolos de entrada e saída. O processo que deseja acessar a região crítica de determinado
recurso compartilhado executa o protocolo de entrada pra verificar se já existe outro processo
utilizando o recurso, caso já esteja sendo utilizado o processo aguarda, caso esteja livre, o
processo utiliza o recurso compartilhado e executa o protocolo de saída quando termina pra
liberar o uso para o próximo.

3. Starvation é a situação onde um processo nunca consegue executar sua região crítica e,
conseqüentemente, acessar o recurso compartilhado. A solução para o problema depende de
estabelecimentos de mecanismos de acesso pelo sistema operacional que garantam o acesso
ao recurso por todos os processos que solicitarem uso.

4. Sincronização condicional é uma situação onde o acesso ao recurso compartilhado exige a


sincronização de processos vinculada a uma condição de acesso. Um recurso pode não se
encontrar pronto para uso devido a uma condição específica. Nesse caso, o processo que
deseja acessá-lo deverá permanecer bloqueado até que o recurso fique disponível. Um
exemplo clássico desse tipo de sincronização é a comunicação entre dois processos através de
operações de gravação e leitura em um buffer.

5. Os semáforos servem pra indicar ao processo que deseja acessar o recurso compartilhado se o
mesmo está liberado pra acesso, desta forma o processo acessa o recurso alterando o valor do
semáforo para bloqueado, ou bloqueado pra acesso, desta forma o processo aguarda até que
o processo que esteja utilizando o recurso compartilhado termine sua execução e altere o
valor do semáforo para liberado.
O problema anterior de sincronização condicional da utilização de um buffer por um processo
produtor (gravação) e um consumidor (leitura) é um exemplo clássico da utilização do
semáforo. Outro exemplo seria o problema dos filósofos que sentam a mesa com 5 pratos e 5
garfos cada prato, onde os filósofos poderiam sentar pra pensar e comer, quando quisessem
comer teria que ser com 2 garfos, inicialmente com 5 lugares caso todos os filósofos que
quisessem comer pegassem um garfo, ao tentar pegar o segundo para comer não teria
disponibilidade e ninguém conseguiria comer, ocorrendo o problema chamado deadlock. Pra
resolver esse problema com semáforo, uma das soluções seria o contador permitir que apenas
4 filósofos sentassem a mesa ao mesmo tempo, de cada vez, ao invés de 5.

6. 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 deadlocks, é preciso garantir que 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.

7. São mecanismos de sincronização estruturados de alto nível que tornam mais simples o
desenvolvimento de aplicações concorrentes, pois, diferente dos semáforos (não-
estruturados), não necessitam ser implementados pelo desenvolvedor da aplicação, pois são
implementados pelo compilador.

Você também pode gostar