Prévia do material em texto
Clique para editar o estilo do título mestre Clique para editar o estilo do subtítulo mestre * * * Sistemas Operacionais -Gerência de Processos Ernesto Massa (slides fornecidos pela Prentice Hall e adaptados para esta disciplina) * * * Processos e Threads Processos Threads Comunicação interprocesso Problemas clássicos de IPC Escalonamento * * * Processos Multiprogramação Como vemos a multiprogramação: processos sequenciais independentes Ocupação real do processador * * * Transições de Estado admissão escalonamento espera por evento ou I/O final de execução carga evento ou I/O concluído * * * Estados de Processos Camada mais inferior de um SO em camadas trata interrupções, escalonamento. Acima desta camada estão os processos sequenciais. * * * Processos: Contexto Implementado através dos “Blocos de Controle de Processos” – (BCP), também chamada de “Tabela de Processos”; Dividido em três elementos básicos: Contexto de Software: Id do Processo; Descrição dos Arquivos utilizados; Parâmetros de Escalonamento; Estado Corrente, etc. Contexto de Hardware: Registradores; Dispositivos alocados, etc. Espaço de Endereçamento. * * * Threads (a) Três processos cada um com um thread (b) Um processo com três threads * * * Threads Contexto do Processo Items compartilhados por todas as threads em um processo Contexto da Thread Itens privativos de cada thread * * * Threads Cada thread tem sua própria pilha * * * Uso de Threads Um processador de texto com três threads * * * Uso de Thread Um servidor web com múltiplos threads * * * Threads de Usuário Modelo de pacote de threads de usuário Vantagem Velocidade Desvantagem Gerenciamento de threads no espaço do usuário O Bloqueio de uma thread bloqueia todo o processo * * * Threads de Núcleo Modelo de pacote de threads gerenciado pelo kernel * * * Threads Pop-Up Criação de nova thread quando chega uma mensagem (a) antes da mensagem chegar (b) depois da mensagem chegar * * * Comunicação entre Processos Processos Independentes. Não afetam nem são afetados por outros processos. Processos Cooperados. Compartilham: Memória; Arquivos; Dispositivos de E/S; Etc. * * * Comunicação entre Processos Interprocess Comunication (IPC) Dois processos querem escrever simultaneamente em uma memória compartilhada * * * Condições de Corrida (Disputa) Condições de Corrida: Situações onde dois ou mais processos estão acessando dados compartilhados. O resultado final pode variar de acordo com a ordem de execução. Mecanismo de Sincronização. Garante o compartilhamento de recursos e a comunicação entre os processos. Garante a integridade e a confiabilidade dos dados compartilhados. * * * Condições de Corrida Exemplo 1: Resultado Final: Contador = 8 (ERRO!) 7 Processo A 7+1 Processo B 7-1 1 7 3 7 6 8 2 4 5 6 * * * Condições de Corrida Exemplo 2: Valor armazenado pelo processo B é perdido. 6 5 4 3 próxima entrada 7 Processo A Processo B 1 7 suspenso recebe CPU 2 8 recebe CPU suspenso 3 7 4 7 5 8 6 X 10 Y 9 8 * * * Condições de Corrida Região Crítica: Parte do código onde é feito acesso a recursos compartilhados, e que podem levar a condições de corrida. Ex: Processo A. Código normal Início da Seção Crítica (Protocolo de Entrada) Seção Crítica Término da Seção Crítica (Protocolo de Saída) Código normal * * * Concorrência em programas Enquanto um processo estiver usando um recurso, os outros devem aguardar até que o recurso esteja liberado. Exclusão Mútua. Exclusividade no acesso a um determinado recurso. A exclusão mútua deve afetar os processos concorrentes quando um deles estiver em uma região crítica. * * * Regiões Críticas Quatro condições são necessárias para prover exclusão mútua: Nunca dois processos simultaneamente em uma região crítica Nenhuma afirmação pode ser feita sobre velocidades ou números de CPUs Nenhum processo executando fora de sua região crítica pode bloquear outros processos Nenhum processo deve esperar eternamente para entrar em sua região crítica * * * Regiões Críticas Exclusão mútua usando regiões críticas * * * Soluções de Hardware Desabilitação das interrupções: Solução mais simples para a exclusão mútua; Falha de Proteção: O processo precisa voltar a habilitar as interrupções. Não aplicável para múltiplas CPUs. Este recurso só deve ser permitido ao SO. Instrução Test-and-Set. Utilização de uma variável para testar a possibilidade de executar a região crítica. O teste e o bloqueio é realizado através de uma única instrução (TSL). O processo impedido de executar sua região crítica executa um loop de espera. Gasto de CPU. * * * Soluções de Software Em geral, as soluções por software resolvem a exclusão mútua, mas geram a espera ocupada (Busy Wait): Teste contínuo de uma variável até que ocorra uma mudança no seu valor; O processo impedido de executar sua região crítica executa um loop de espera. Gasto de CPU. * * * Soluções de Software Variável de Travamento; Uma variável é utilizada para informar se algum outro processo está em sua respectiva região crítica; Gera uma nova condições de corrida. Estrita Alternância. Processos se alternam na execução da região crítica; Processos podem estar bloqueados, sem ninguém estar em sua região crítica; É necessário que os processos possuam freqüência semelhante na execução da região crítica. * * * Soluções de Software Estrita Alternância Solução proposta para o problema da região crítica. (a) Processo 0 (b) Processo 1 busy wait * * * Soluções de Software Solução de Peterson: Chamadas a rotinas antes de entrar e após sair da região crítica; A rotina de entrada só retorna quando não houver outro processo executando a sua região crítica. * * * Soluções de Software Solução de Peterson: * * * Soluções de Software Problema de Inversão de Prioridades: Processo com baixa prioridade em sua região crítica; Processo com alta prioridade em busy waiting; Starvation. * * * Soluções de Software Implementações de uso das regiões críticas sem a espera ocupada: Semáforos (Counting Semaphores); Semáforos Binários Mutex (Mutual Exclusion Semaphores); Monitores. * * * Soluções de Software Chamadas sleep e wakeup: Sleep: Coloca o processo chamador no estado de espera. Wakeup: Coloca um outro processo que está em espera no estado de pronto. * * * Soluções de Software Semáforos: Ferramenta de sincronização criada por Dijkstra (1965); Características: Variável inteira; Não negativa. Manipulados exclusivamente por duas operações atômicas: DOWN (generalização do sleep) UP (generalização do wakeup) Implementados como chamada ao sistema.