Sistemas Operacionais Distribuídos Mecanismos de Linguagens e Threads Apresentado por: Júlio Cezar Estrella Wanderlei Pereira Alves Junior Orientação: Prof. Dr. Norian Marranghello Tópicos Abordados Introdução: Classificação dos Sistemas Operacionais Surgimento dos Sistemas Operacionais Distribuídos O que é um SO Distribuído? Threads Control Blocks Comparação entre ramificações e processos Custo de criação e de implementação de ramificações O modelo cliente/servidor Mecanismos de Sincronização Especificação de Atividades Concorrentes Sincronização e Comunicação entre processos Execução não determinística de processos Tópicos Abordados Estruturas de programas Estruturas de dados Estruturas de controle Sincronização de variáveis compartilhadas Semáforos Monitores Regiões críticas condicionais Path Expressions Sincronização por passagem de mensagens Chamada remota a procedimentos Ada Rendevouz Processos Concorrentes Introdução Classificação dos sistemas operacionais quanto ao grau de acoplamento: – – – – Centralizados, Distribuídos, Em Rede Autônomos Critérios de classificação: Autonomia Transparência Interoperabilidade Introdução O que fez surgir os primeiros sistemas distribuídos? Avanços na tecnologia Redes de alta velocidade Microprocessadores poderosos O que atrapalha o desenvolvimento dessa tecnologia? Software! Sistemas Operacionais Distribuídos Motivação: necessidade de compartilhar recursos e informações redução de custos de estações proliferação do uso de redes maturação das tecnologias de software O que é um Sistema Operacional Distribuído Vantagens de um sistema distribuído sobre um sistema centralizado: Melhor relação custo/benefício Facilidade de resolver problemas Maior escalabilidade Maior confiabiliade Vantagens sobre estações de trabalho independentes: Compartilhamento de dados e serviços Melhor comunicação pessoa-a-pessoa Flexibilidade O que é um Sistema Operacional Distribuído Desvantagens de um sistema distribuído Falta de software apropriado Falhas na rede de comunicação Necessidade de se tolerar faltas Segurança O que é um Sistema Operacional Distribuído Considerações para o projeto de um sistema operacional distribuído: Eficiência Robustez Flexibilidade Consistência Transparência Desempenho: Associado a possibilidade de migração dos dados na rede de comunicação Threads O que são threads? Quais suas funcionalidades? Multithreads Exemplo: Netscape com Hot Java Comparação entre ramificações e processos Diferenças Processos Possui 3 estados: PRONTO ATIVO BLOQUEADO Threads Inclui um quarto estado: CONCLUÍDO Custo de criação e implementação de ramificações Onde são implementados? Qual o custo de criação e implementação? Aplicações Processos servidores que prestam serviços à processos clientes Tipos de ramificações Estáticas Dinâmicas Ramificações no servidor ou no núcleo Onde deve ser implementada a ramificação? Quais as vantagens e desvantagens em cada um dos casos? Qual a importância no projeto de ramificações de fluxo de controle? Algumas Aplicações Multithreads Programação Reativa Programação Interativa Paralelismo físico/ distribuição Ramificações em multiprocessadores Como os threads são executados em multiprocessadores? Como fica o desempenho em sistemas multiprocessados? Modelo Cliente-Servidor Não baseado no estabelecimento de uma conexão Vantagens do modelo cliente-servidor Desvantagens do modelo cliente-servidor Primitivas de comunicação Modelo Cliente-Servidor Modelo mais usado para aplicações distribuídas não paralelas Um processo servidor está sempre a espera de comunicação O processo cliente tem a iniciativa de começar a comunicação, quando deseja algum serviço Processos Concorrentes Execução em paralelo Não implica em execução simultânea Casos de execução concorrente: Pseudo-Paralela Paralela Distribuída Processos Concorrentes Objetivos: Reduzir o tempo total de processamento Aumentar a confiabilidade e a disponibilidade Implementar aplicações distribuídas Sincronização e Comunicação de Processos Variáveis Compartilhadas: Semáforo Monitor Região Crítica Condicional Expressão de Caminho Passagem de Mensagem Processamento Seqüencial Concorrente Chamada a Procedimentos Remotos Rendezvous Construções de Linguagens Estrutura do programa Estrutura de dados Estrutura de controle Chamada a procedimentos e ao sistema Semáforo É uma variável inteira positiva Primitivas: P V Classificação: Semáforos binários Semáforos de contagem Semáforo Primitivas: P(S) : se S > 0 então S:=S-1 senão Bloqueie o processo na fila do semáforo V(S) : se algum processo está bloqueado no semáforo S então desbloquear o processo senão S:=S+1 Monitor MONITORES Primitiva de alto nível Conjunto de procedimentos variáveis e estruturas apenas 1 processo pode estar ativo dentro do monitor Variáveis de Condição, WAIT e SIGNAL Regiões Críticas Condicionais Versão estruturada de semáforos Região Crítica é expressa por region-begin-end Condição testada pelo atributo when Expressão de Caminho Path 1:([read], write) end 1: número de atividades simultaneas nos parenteses Chaves: leitores podem ser concorrentes Sincronização por Passagem de Mensagem Forma de comunicação em sistemas distribuídos Assíncrona send não bloqueia Síncrona send bloqueia Chamada remota a procedimentos Objetivo: Procedimentos em outras máquinas chamados como procedimentos locais Facilita implementação de aplicações cliente-servidor Esconde do programador detalhes de comunicação pela rede