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
Download

10 de abril