Sistemas Operacionais
Faculdades Network – 3o. Ano de
B.S.I.
3o. Bimestre
•
•
•
•
•
•
•
21 - Comunicação Interprocessos
22 - Região Crítica e Exclusão Mútua
23 - Exclusão Mútua com Espera Ociosa
24 - Semáforos e Monitores
25 - Escalonamento e Estratégias de escalonamento
26 - Deadlock
27 - Trabalho em Sala: Problemas no Gerenciamento de
Processos
• 28 - Revisão para a Avaliação bimestral.
• 29 - Avaliação Regimental Bimestral
• 30 - Correção e entrega das notas
IPC
• A comunicação entre processos, em inglês Inter-Process
Communication (IPC), é o grupo de mecanismos que
permite aos processos transferirem informação entre si.
• A execução de um processo pressupõe por parte do
S.O., entre outras coisas, a criação de um contexto de
execução próprio que, de certa forma, abstrai o
processo dos componentes reais do sistema.
• Devido a esta virtualização dos recursos, o processo
não tem conhecimento acerca dos outros processos e,
como tal, não consegue trocar informação.
 Transmissão de Mensagem
Processo
transmissor
Processo
receptor
Canal de comunicação
SEND
RECEIVE
7/6
 Comunicação Direta e Indireta
Processo A
Processo B
Processo A
Processo B
Mailbox
ou Port
7/7
Sincronização e Comunicação
Comunicação Interprocessos
Sincronização
gr
Processo
gravador
av
aç
ão
r
tu
i
le
a
Processo
leitor
dado
Buffer
7/1
 Concorrência em Programas
Processo
principal
PARBEGIN
Comando_1;
Comando_2;
.
.
Comando_n;
PAREND
Processo 1
Processo 2
Processo
principal
Processo n
7/2
Região Crítica e Exclusão Mútua
• Exclusão mútua (também conhecida pelo
acrônimo mutex para mutual exclusion) é uma
técnica usada em programação concorrente
para evitar que dois processos ou threads
tenham acesso simultaneamente a um recurso
compartilhado, acesso esse denominado por
Região Crítica.
Implementação
• Um meio simples para exclusão mútua é a utilização de
um semáforo binário, isto é, que só pode assumir dois
valores distintos, 0 e 1. O travamento por semáforo
deve ser feito antes de utilizar o recurso, e após o uso o
recurso deve ser liberado. Enquanto o recurso estiver
em uso, qualquer outro processo que o utilize deve
esperar a liberação.
• Porém, essa técnica pode causar vários efeitos
colaterais, como deadlocks, em que dois processos
obtêm o mesmo semáforo e ficam esperando
indefinidamente um outro processo liberar o semáforo;
e inanição, que é quando o processo nunca dispõe de
recursos suficientes para executar plenamente.
Utilização do Semáforo Binário na Exclusão Mútua
Exclusão Mútua com Espera Ociosa
DO
N
(S
>
W
0)
Processo deseja entrar
na região crítica
D
0)
O
W
N
=
(S
UP (S) - processo sai
da região crítica
Libera processo
da fila de espera
Processo acessa
a região crítica
Fila de espera
de processos
7/3
 Estrutura do Monitor
Declaração de
variáveis globais
Procedimentos
Monitor
Proc. 1
Proc. 2
Fila de entrada
Proc. n
Inicialização
de variáveis
7/4
 Estrutura do Monitor com Variáveis de
Condição
Declaração de
variáveis globais
Procedimentos
Condição C1
Monitor
Proc. 1
Proc. 2
Condição C2
Proc. n
Condição Cn
Fila de entrada
Filas de espera
Inicialização
de variáveis
7/5
Algoritmos escalonadores
Existem os algoritmos preemptivos e os não preemptivos. Os
preemptivos são algoritmos que permitem que um processo seja
interrompido durante sua execução, quer seja por força de uma
interrupção de entrada/saída, quer seja em decorrência da politica de
escalonamento adotada e aplicada por parte do escalonador de
processos ou simplesmente por força do término da execução do
processo.
Após a interrupção deste processo, ocorre o que se chama de troca
de contexto, que consiste em salvar o conteúdo dos registradores e a
memoria utilizada pelo processo e conceder à outro processo o
privilégio de executar na CPU, restaurando assim o contexto deste
ultimo processo.
Cabe ressaltar que nos algoritmos não preemptivos, por serem
utilizados exclusivamente em sistemas monoprocessados, esse fato não
ocorre, sendo cada programa executado até o fim.
Estratégias de Escalonamento
•
•
•
•
•
•
•
FIFO (First in, first out) ou FCFS (First come, first served): Onde como seu próprio
nome já diz, o primeiro que chega será o primeiro a ser executado;
SJF (Shortest Job First): Onde o menor processo ganhará a CPU e atrás do mesmo
formar uma fila de processos por ordem crescente de tempo de execução;
SRT (Shortest Remaining Time): Neste algoritmo é escolhido o processo que
possua o menor tempo restante, mesmo que esse processo chegue à metade de uma
operação, se o processo novo for menor ele será executado primeiro;
Algoritmo Loteria: O Sistema Operacional distribui tokens (fichas), numerados
entre os processos, para o escalonamento é sorteado um numero aleatório para que
o processo ganhe a vez na CPU, processos com mais tokens têm mais chance de
receber antes a CPU.
Escalonamento garantido: Este algoritmo busca cumprir promessas de alocação de
CPU o mais preciso possível.
RR (Round-Robin): Nesse escalonamento o sistema operacional possui um timer,
chamado de quantum, onde todos os processos ganham o mesmo valor de quantum
para rodarem na CPU. Com exceção do algoritmo RR e escalonamento garantido,
todos os outros sofrem do problema de Inanição (starvation).
Múltiplas Filas: São usadas várias filas de processos prontos para executar, cada
processo e colocado em uma fila, e cada fila tem uma política de escalonamento
própria e outra entre filas.
DEADLOCK
• Deadlock (interbloqueio, blocagem, impasse), no contexto
do sistemas operacionais (SO), caracteriza uma situação em
que ocorre um impasse e dois ou mais processos ficam
impedidos de continuar suas execuções, ou seja, ficam
bloqueados. Trata-se de um problema bastante estudado no
contexto dos Sistemas Operacionais, assim como em outras
disciplinas, como banco de dados, pois é inerente à própria
natureza desses sistemas.
• O deadlock ocorre com um conjunto de processos e
recursos não-preemptíveis, onde um ou mais processos
desse conjunto está aguardando a liberação de um recurso
por um outro processo que, por sua vez, aguarda a liberação
de outro recurso alocado ou dependente do primeiro
processo.
Condições
• Condição de não-preempção: recursos já alocados a
processos não podem ser tomados a força. Eles precisam ser
liberados explicitamente pelo processo que detém a sua
posse;
• Condição de exclusão mútua: cada recurso ou está alocado a
exatamente um processo ou está disponível;
• Condição de posse-e-espera: cada processo pode solicitar
um recurso, ter esse recurso alocado para si e ficar
bloqueado esperando por um outro recurso;
• Condição de espera circular: deve existir uma cadeia
circular de dois ou mais processos, cada um dos quais
esperando por um recurso que está com o próximo membro
da cadeia.
 Deadlock – Espera Circular
Processo A
Processo A
solicita o
Recurso 2
Recurso 1
alocado ao
Processo A
Recurso 2
Recurso 1
Processo B
Recurso 2
alocado ao
Processo B
Processo B
solicita o
Recurso 1
7/8
Tratamento de Deadlock
• As situações de deadlock podem ser tratadas ou não em
um sistema, e cabe aos desenvolvedores avaliar o
custo/benefício que essas implementações podem
trazer. Normalmente, as estratégias usadas para detectar
e tratar as situações de deadlocks geram grande
sobrecarga, podendo até causar um dano maior que a
própria ocorrência do deadlock, sendo, às vezes, melhor
ignorar a situação.
• Existem três estratégias para tratamento de deadlocks:
– Ignorar a situação;
– Detectar o deadlock e recuperar o sistema; e
– Evitar o deadlock;
Algoritmo do Avestruz
• Em ciência da computação, o algoritmo do avestruz é uma
estratégia de ignorar problemas potenciais com base no fato
de que eles podem ser extremamente raros — "enfie a
cabeça na areia e finja que não há nenhum problema". Isso
pressupõe é mais rentável permitir que o problema ocorra
do que tentar a sua prevenção.
• Esta abordagem pode ser usada no tratamento de impasses
(deadlocks) em programação concorrente se os impasses
são considerados muito raros, e se o custo de detecção ou
prevenção é alto.
• É um dos métodos de lidar com os impasses. Outros
métodos são: evasão (algoritmo do banqueiro), a prevenção,
detecção e recuperação.
Próxima Aula: Trabalho em sala em duplas!
PROBLEMAS NO
GERENCIAMENTO DE
PROCESSOS
Download

Sistemas Operacionais