Conteúdo da Aula
•Instruções de Seminários.
•Alocação de recursos.
Instruções de Seminário 1 25/03
Equipes de até 8 alunos.
Entregar relatório (24/03) e apresentação.
Apresentação 10 minutos.
Armazenamento e multimídia. Armazenamento
em disco magnético. Armazenamento em
disco óptico. Processamento em lote e de
transações
Instruções de Seminário 2 27/03
Equipes de até 8 alunos.
Entregar relatório (26/03) e apresentação.
Apresentação 10 minutos.
Redes de computadores. Comunicação de
dados. Transmissão de dados. Mídias de
comunicação.
A primeira coisa que vem na nossa mente é que o SO deve
permitir a execução de programas. Contudo, ele não faz
apenas isso. Ele também fornece serviços para o usuário e
para o próprio sistema. Tipicamente, são eles:
• Interface com usuário
• Execução propriamente dita dos programas • Operações de I/O
• Manipulação do Sistema de Arquivos • Comunicações entre processos
• Detecção de erros • Alocação de recursos • Contabilização
Alocação de recursos! Uma das funções mais interessante do SO
é alocar recursos de forma compartilhada entre diversos
processos. Por exemplo, os SO's tem políticas/algoritmos de
escalonamento da CPU, ou seja, define qual processo vai usar
a CPU e por quanto tempo vai ficar de posse da CPU.
Outro serviço é a contabilização, ou seja, o SO deve ser capaz de
controlar quantos usuários utilizam o sistema, quais recursos
eles estão utilizando.
Alocação de recursos: atribuir recursos de
computador a certos programas e processos
para serem usados.
Principais questões relacionadas à alocação de
recursos:
– Compartilhar a Unidade Central de Processamento
– Compartilhar memória
– Compartilhar recursos de armazenamento
– Compartilhar recursos de impressão
Compartilhamento de recursos entre processos
pode gerar situações indesejáveis.
Mecanismos de sincronização – garantem a
comunicação entre processos concorrentes e
o acesso a recursos compartilhados.
Problemas de Compartilhamento de Recursos
• Mecanismos de controle devem existir para
evitar problemas.
• Exemplos:
– Atualização de arquivos compartilhados ao
mesmo tempo
Solução para os Problemas de
Compartilhamento
• Exclusão Mútua (solução mais simples): impedir que dois
ou mais processos acessem um mesmo recurso no
mesmo instante, um deve esperar que o outro termine
para utilizar.
• Região crítica: parte do código onde é feito o acesso ao
recurso compartilhado.
• Usualmente utiliza-se de um protocolo ao entrar em uma
região crítica e ao sair dela.
Problemas de Sincronização
Problemas introduzidos pela exclusão múltua. • Velocidade de Execução dos Processos:
– Processos com diferenças de velocidade ou maior tempo de processamento • Starvation:
– Situação em que um processo nunca consegue executar sua região crítica e acessar o recurso compartilhado.
– 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
– Quando um processo tem baixa prioridade também pode nunca ser escolhido. – Filas FIFO eliminam esse problema.
Problemas de Sincronização
• Sincronização Condicional:
– Quando um recurso não se encontra pronto para ser utilizado
pelos processos, o processo deve ser colocado no estado de
espera, até a liberação do recurso.
– Problema de processo produtor/consumidor: exemplo, quando
um processo tenta gravar num buffer e outro tenta ler. Um
processo não poderia gravar de um buffer cheio nem tentar ler
de um buffer vazio.
Soluções de Hardware
• Desabilitação de Interrupções:
– Desabilitar interrupções externas ao entrar numa região critica e habilitar ao sair.
– Se o processo não habilitar as interrupções ao sair da região crítica, o sistema pode estar comprometido.
• Instrução Test-and-set:
– Instrução especial que permite ler uma variável, armazenar seu conteúdo em uma outra área e atribuir um novo valor a essa variável.
– Executa sem interrupção – É uma instrução invisível
– Assim, dois processos não podem manipular uma variável compartilhada ao mesmo tempo (exclusão múltua).
Solução de Software
• Fatores para a solução de problemas de sincronização:
– O número de processadores e o tempo de execução
dos processos concorrentes devem ser irrelevantes;
– Um processo, fora de sua região crítica, não pode
impedir que outros processos entrem em suas
próprias regiões críticas;
– Um processo não pode permanecer indefinidamente
esperando para entrar em sua região crítica.
Semáfaros
• Solução mais geral e simples de ser implementada.
• Variável inteira, não negativa, que só pode ser manipulada por duas instruções: DOWN e UP.
• Mutexes (mutual exclusion semaphores):
– Semáfaros aplicados ao problema da exclusão múltua
– Na exclusão múltua, as instruções DOWN e UP funcionam como protocolos de entrada e saída. Valor > 0, recurso liberado, Valor = 0, processo impedido do acesso.
– Processo entra na região crítica executa DOWN, impedindo outros processos do acesso.
– Processo sai da região crítica executa UP, liberando o acesso para outros processos.
Semáfaros
• Semáfaros aplicados ao problema de sincronização condicional:
– Em geral, se existe um processo que deve ser notificado sobre a ocorrência de um evento e um outro capaz de detectar sua ocorrência, pode-se utilizar um semáfaro asociado ao evento esperado para sincronizar ambos os processos. – Semáfaros contadores: úteis quando aplicados na alocação de recursos do
Monitores
• Mecanismos de sincronização de alto nível que tentam tornar mais fácil o desenvolvimento e correção de programas concorrentes.
• Conjunto de procedimentos, variáveis e estrutura de dados definidos dentro de um módulo.
• Somente um processo pode estar executando um dos procedimentos do monitor em um determinado instante.
• Implementação da exclusão mútua nos monitores é realizada pelo compilador. • WAIT – Faz um processo entrar em estado de espera quando uma variável de
condição (estrutura de dados tipo fila) está impedindo a liberação para outros processo.
Troca de Mensagens
• Mecanismo de comunicação e sincronização entre processos. • SEND – Envia uma mensagem a um processo receptor
– SEND (Receptor, Mensagem)
• RECEIVE – Recebe uma mensagem de um processo transmissor – RECEIVE (Emissor, Mensagem)
• Não ocorre exclusão multua.
• Uma mensagem só pode ser lida apos Ter sido enviada. • Pode ocorrer perda de mensagens
• ACK (acknowledgement) – enviada pelo processo receptor para informar o
recebimento da mensagem. Se o emissor não receber um ACK em determinado tempo, reenvia a mensagem.
Troca de Mensagens
• Endereçamento direto – só permite a comunicação entre dois processos.
• Endereçamento indireto – utiliza uma área compartilhada (buffer conhecido como mailbox) onde as mensagens podem ser colocadas pelo emissor e retiradas pelo receptor
• Comunicação síncrona (rendezvous):
– Um processo envia uma mensagem e fica esperando até que o receptor leia a mensagem
– Um receptor tenta receber uma mensagem e fica esperando até que o processo transmissor grave alguma mensagem.
– Dispensa necessidade de buffers.