Aula 1 - Resumo de Redes e SO

Propaganda
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
- Aula 1 REVISÃO DE REDES E SISTEMAS OPERACIONAIS
1. INTRODUÇÃO
No atual cenário tecnológico, algumas práticas vêm se destacando bastante, dentre elas a
utilização dos sistemas distribuídos. Baseado em conceitos apresentados nesta disciplina é que é
possível a construção de sistemas complexos de renderização de imagens como o utilizado em
filmes (p. ex. Titanic) ou do projeto Caverna Digital da USP, sem mencionar projetos de
construção de sistemas operacionais destinados especificamente ao processamento distribuído.
Dessa forma, cresce a importância em conhecer a estrutura e peculiaridades dos sistemas
distribuídos. Neste sentido, conhecer e saber aplicar os conceitos e algoritmos dos sistemas
distribuídos é um diferencial no mercado de trabalho e nas pesquisas científicas.
2. REVISÃO DE REDES DE COMPUTADORES
Para a perfeita compreensão dos sistemas distribuídos é necessário relembrar e
compreender conceitos fundamentais de redes de computadores.
2.1. Requisitos da comunicação
Os complexos sistemas de comunicação de dados não usam um único protocolo para
tratar de todas as tarefas de transmissão. Ao contrário, requerem uma pilha de protocolos
cooperativos, algumas vezes chamados de família de protocolos ou mesmo pilha de
protocolos.
Para exemplificar toda essa idéia de comunicação em vários níveis, vamos lembrar a
analogia dos dois filósofos, conforme figura 1.
Cada protocolo envolvido no processo é totalmente independente dos demais, desde que
as interfaces não sejam alteradas.
2.2. Aplicações para redes de computadores
Para utilizar a infraestrutura física de uma rede é necessário que os computadores tenham
aplicações que transmitem e recebem mensagens, onde uma mensagem é constituída por um
grupo de bytes que tenham algum significado.
2.2.1. CLIENTE/SERVIDOR (CS)
A filosofia de desenvolvimento de aplicações, na qual a aplicação é constituída de duas
partes: o Cliente e o Servidor. O Cliente solicita algum serviço e o Servidor atende a solicitação.
1
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
Figura 1 - Dois filósofos
Cada parte pode estar sendo executada em um sistema diferente, isto é, o cliente pode
estar no Windows XP e o Servidor pode estar executando em um servidor Linux Debian.
São exemplos de aplicações cliente-servidor:
- www
- Telnet
- FTP
- SSH
Figura 2 – Cliente/Servidor
Aplicações Cliente/Servidor utilizam funções que estão disponíveis em bibliotecas que
acompanham o TCP/IP. As mais utilizadas são open, send, recv, close;
As bibliotecas fornecem transparência de acesso a rede. Dessa forma, o programador não
precisa conhecer como a rede está estruturada para desenvolver a aplicação.
2
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
2.3. Topologia de Rede
A topologia de uma rede de comunicação refere-se à forma como os enlaces físicos
(cabos) existentes e os nós de uma rede (computadores) estão organizados, determinando
caminhos físicos existentes e utilizáveis entre quaisquer pares de estações conectadas a essa
rede.
As topologias de rede mais conhecidas são:
- Estrela
- Anel
- Barramento
- Mista
2.4. Transmissão da informação pelo meio físico
A transmissão da informação pode dar-se, principalmente, de duas formas:
- Difusão
- Ponto-a-ponto
O primeiro, Links de difusão têm apenas um canal de comunicação compartilhado por
todas as máquinas da rede, onde são transferidos pacotes de um computador para outro ou de
um computador para todos. Cada pacote deve ter um endereço que identificará para qual máquina
é a mensagem dentro da rede na qual ela está inserida.
Existe ainda a possibilidade de haver a difusão para todas as máquinas. Isto se dá com a
utilização de um código especial o campo de endereço. Quando um pacote com esse código é
transmitido, ele é recebido e processado por todas as máquinas da rede. Esse modo de operação é
chamado de difusão ou broadcasting. Alguns sistemas também permitem a transmissão para
um subconjunto das máquinas, o que se conhece como multidifusão ou multicasting.
Em contraste, o segundo tipo, as redes ponto-a-ponto consistem em muitas conexões
entre pares de máquinas individuais. Para ir da origem ao destino, um pacote muitas vezes tem
que visitar várias máquinas intermediárias ou fazer várias rotas com tamanhos diferentes.
Como regra geral (embora existam exceções), redes menores tendem a usar difusão,
enquanto redes maiores em geral são redes ponto-a-ponto.
Exemplo: A transmissão ponto a ponto com um transmissor e um receptor, chamada de
unicasting.
2.5. Classificação da Comunicação segundo a direção da transmissão
A forma de utilização do meio físico que conecta as estações da origem a seguinte
classificação sobre a comunicação no enlace.
- Simplex: A informação vai apenas para um sentido. Ex.: Rádio.
- Half-Duplex: Transmite nos dois sentidos em tempos diferentes. Ex.: Rádio amador.
- Full-Duplex: Transmite e recebe ao mesmo tempo. Ex.: Telefone
3
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
2.6. Modelo de referencia OSI
Modelo surgido em 1983 é atualmente o modelo de referencia no estudo de Redes de
Computadores. É um modelo abstrato de redes, não existem redes implementadas exatamente
segundo modelo de sete camadas, uma vez que as redes não necessitam implementar todas as
camadas. No RM OSI não há o detalhamento de serviços.
Figura 3 – Arquitetura baseada no Modelo de Referência OSI
2.6.1. CONCEITOS FUNDAMENTAIS DO RM OSI
- É estruturado em camadas hierárquicas;
- Cada camada presta serviços para camada superior. Dessa forma cada camada usa
serviços da camada inferior;
- As camadas de mesmo nível “comunicam-se”;
- Uma determinada camada apenas toma conhecimento da camada inferior;
- Interação entre camadas feita através de serviços;
- Existe certa divisão de tarefas entre as camadas;
- É de fácil abstração.
4
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
Figura 4 - Estrutura Funcional
No RM OSI, assim como nos modelos derivados deste, a informação ao passar por cada camada
sobre um processo de empacotamento conforme ilustrado na figura abaixo:
Figura 5 - Processo de empacotamento
2.7. Modelo de Referência TCP/IP
Diferente do RM OSI, este é formado por quatro camadas.
5
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
Figura 6 - Comparativo do RM OSI com o RM TCP
Observe que a camada Internet do RM TCP/IP está em um nível menor que do
correspondente no RM OSI. Isto implica que a camada de Internet realiza funções extras, como a
entrega local de mensagens dentro da mesma rede. Neste caso o IP só trata da entrega e a
decisão de roteamento quando a origem e o destino da mensagem estão situados em redes
distintas.
De modo semelhante o RM TCP/IP combina os aspectos das camadas de apresentação e
de sessão dentro da sua camada de aplicação.
Os protocolos do RM TCP/IP são os padrões em torno dos quais a Internet se
desenvolveu, portanto este modelo de referência ganha credibilidade apenas por causa dos seus
protocolos. Ao contrário, geralmente as redes não são desenvolvidas de acordo com o RM OSI,
embora este seja usado como um guia.
3. REVISÃO DE SISTEMAS OPERACIONAIS
Inicialmente é preciso relembrar como estão organizados os sistemas operacionais.
Figura 7 - Organização do SO
6
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
O Sistema Operacional é um programa de controle, pois controla os dispositivos de
entrada e saída (I/O devices) e os programas que resolvem os problemas dos usuários. Ele
previne erros e o uso impróprio do computador (por exemplo, um usuário não pode destruir os
arquivos de outros usuários).
O Sistema Operacional cria um sistema computacional usável. As aplicações possuem
necessidades em comum que são atendidas pelo sistema operacional. Estas necessidades
correspondem exatamente à alocação e controle dos recursos.
O objetivo do Sistema Operacional é permitir o uso do computador de forma fácil e
eficiente. Pode-se dizer que o Sistema Operacional de um computador é a parte de software que
estende os recursos de hardware da máquina, tornando a utilização do equipamento mais fácil,
mais eficiente e mais confiável.
Recursos gerenciados pelo Sistema Operacional:
- Tempo de CPU
- Espaço de memória
- Espaço em disco
- Periféricos (impressora, etc.)
Os primeiros Sistemas Operacionais não otimizavam o uso da CPU, o que era inaceitável.
Algumas técnicas foram utilizadas para minimizar este problema. Entre elas estão a operação offline, a bufferização e o spooling.
3.1. Multiprogramação
A operação off-line, bufferização e spooling, mesmo utilizadas em conjunto, não garantem
uma utilização eficiente do computador. Um único programa não consegue manter a CPU o tempo
todo ocupada. Por isso surgiu a multiprogramação, que é a execução “simultânea” de vários
programas (vários programas na memória). A multiprogramação aumenta a utilização da CPU,
fazendo com que ela tenha sempre algo para executar. Os primeiros sistemas multiprogramados
foram implementados através de uma extensão da técnica de spooling.
Para obter maior eficiência, o SO procura manter na memória uma mistura de jobs CPUbound e I/O-bound. A multiprogramação aumenta a complexidade do sistema, mas aumenta muito
a sua eficiência.
3.2. Tipos de Sistemas Operacionais
Sem considerar os sistemas para redes de computadores, os sistemas distribuídos e os
sistemas paralelos, pode-se dizer que existem três tipos básicos de Sistemas Operacionais.
3.2.1. SISTEMAS OPERACIONAIS BATCH
Os primeiros sistemas operacionais eram chamados de sistemas batch devido ao fato
7
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
dos jobs semelhantes estarem agrupados em lotes. Isto simplificava a operação do computador
quando todo o I/O era feito através de fitas magnéticas ou cartões perfurados, dispositivos
essencialmente seqüenciais.
3.2.2. SISTEMAS OPERACIONAIS TIME-SHARING
Os sistemas operacionais do tipo time-sharing permitem interação de uma forma eficiente.
Eles são implementados da seguinte forma:
- O sistema operacional dispõe de multiprogramação;
- Cada usuário possui um job ativo vinculado a um terminal;
- A comunicação via terminal é lenta, sobra CPU para os outros;
- Os usuários, ao longo do tempo, compartilham a CPU (time-sharing);
A idéia de um sistema time-sharing foi demonstrada no início dos anos 60 e tornou-se
comum no início da década seguinte. Alguns sistemas operacionais suportavam os dois
ambientes (batch e time-sharing).
3.2.3. SISTEMAS OPERACIONAIS REAL-TIME
Em um sistema de tempo real, o computador está ligado a processos externos (processos
industriais, equipamentos cirúrgicos, etc.) que dependem fundamentalmente dos tempos de
resposta do computador. Sinais dos processos externos acionam o computador através do
sistema de interrupção; se estes sinais não são respondidos prontamente (em microsegundos ou
milisegundos, dependendo da aplicação), os processos externos podem prosseguir de forma
errada ou degradada.
Nas aplicações de tempo real, o computador é apenas uma das peças do sistema (não a
mais importante, em geral) e os “usuários” são os processos externos controlados pelo
computador.
3.3. Serviços do Sistema Operacional
Pode-se dizer que o principal objetivo de um sistema operacional é criar um ambiente para
execução de programas. Seu objetivo é fornecer a infraestrutura e os mecanismos necessários
para levar programas para a memória e supervisionar as execuções dos mesmos. A infraestrutura
resultante fornece diversos tipos de serviços aos aplicativos e aos programadores.
3.3.1. TIPOS DE SERVIÇOS
Serviços para facilitar o uso (aumentar a conveniência de uso do sistema):
- Execução de programas;
- Operações de I/O;
8
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
- Sistema de arquivos;
- Detecção de erros.
3.3.2. SERVIÇOS PARA AUMENTAR A EFICIÊNCIA
- Alocação de recursos;
- Contabilizações;
- Proteção
3.3.3. A VISÃO DO USUÁRIO
O sistema operacional pode ser visto de diferentes ângulos. A visão do usuário é formada
pelas chamadas de sistema disponíveis e pelos programas de sistema (também denominados
utilitários). Com a utilização de interfaces gráficas, o usuário se comunica com o Sistema
Operacional através de ícones e menus (via mouse e teclado). Com isso, deixou de haver a visão
mais detalhada que havia quando a comunicação era textual (via linhas de comandos). Contudo,
mesmo que isto fique escondido, o usuário se comunica com o Sistema Operacional sempre
através de chamadas de sistema.
3.3.4. A VISÃO DO PROGRAMADOR DE SISTEMA
A visão do programador de sistema é diferente. Ele percebe o sistema operacional como
um servidor de interrupções cujo objetivo é administrar os recursos físicos de maneira a criar
facilidades de uso para os usuários.
O sistema operacional é um programa conduzido por eventos. Se não existem programas
para executar ou E/S para fazer, o sistema operacional não faz nada. Neste contexto, um evento é
a ocorrência de uma interrupção (de hardware ou de software).
O sistema operacional é, portanto, dirigido por interrupções. Quando uma interrupção ou
um trap ocorre, o sistema operacional é ativado. O evento sinalizado pode ser uma chamada de
sistema, ou a indicação do término de uma determinada operação de dispositivo, ou ainda um erro
na execução de um programa.
3.3.5. CHAMADAS DE SISTEMA
Os programas utilizam as chamadas de sistema para solicitar serviços ao sistema
operacional. Existem diversos tipos de chamadas de sistema.
Chamadas de sistema para controle de processo ou job:
- Término ou cancelamento de programa;
- Carregar e executar programas;
- Criar e terminar processos;
9
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
- Obter e alterar atributos de processos;
- Esperar a passagem de certo tempo;
- Esperar ou sinalizar a ocorrência de eventos.
Chamadas ligadas à manipulação de arquivos:
- Criar e remover arquivos;
- Abrir, fechar, ler e escrever em arquivos;
- Obter e alterar atributos de arquivos.
Chamadas ligadas à manipulação de dispositivos:
- Requisitar ou liberar dispositivo;
- Ler e escrever em dispositivo;
- Obter e alterar atributos de dispositivos.
Chamadas ligadas à manutenção de informações:
- Obter e alterar hora e data;
- Obter e alterar dados do sistema;
As interrupções por chamada de sistema podem ou não ser atendidas na hora. Por
exemplo, uma chamada de sistema para ler a data pode ser atendida imediatamente.
Entretanto, uma chamada de sistema para ler um setor de disco não poderá ser atendida
imediatamente. O pedido feito será inserido na fila do driver. Enquanto o processo solicitante
aguarda a realização da E/S, o sistema operacional entrega a CPU para outro programa.
Dessa forma surgem diversos tipos de interrupções:
- Interrupção de dispositivo de E/S (I/O devices);
- Interrupção por erro em programa;
3.4. Processos
Como sabemos um Sistema Operacional executa uma série de programas. Em muitas
literaturas job e processos são quase sinônimos. Processo nada mais é que um programa em
execução. Um processo inclui:
- Contador de programa (PC)
- Pilha
- Segmento (área) de dados
Ao executar, o processo muda de “estados”:
- New: processo está sendo criado
- Running: instruções do processo estão executando
10
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
- Waiting: processo está esperando ocorrência de algum evento
- Terminated: processo terminou a execução
Figura 8 - Processos
Os processos para serem executados entram em uma fila e são submetidas a um
escalonamento:
- Fila de “jobs”: conjunto de todos os processos no sistema;
- Fila de prontos (ready queue): conjunto de todos os processos que residem na memória
principal, prontos para executar, mas não estão em execução;
- Filas de dispositivos: conjunto de processos esperando por um dispositivo de I/O
Os processos migram entre as diversas filas do sistema.
Os escalonadores analisam o tipo de processo antes de processá-lo.
Como visto os processos são classificados em:
- I/O-bound processes − delimitados pelo tempo de I/O, gasta mais tempo fazendo I/O do
que computações, muitas pequenas rajadas (bursts) de CPU;
- CPU-bound processes − delimitados pelo tempo de CPU, gastam a maior parte do
tempo fazendo computações; Poucas RAJADAS LONGAS de CPU.
3.5. Processos Cooperantes
Processos Independentes não podem afetar ou serem afetados pela execução de outros
processos.
Processos Cooperantes podem afetar a execução de outros processos cooperantes (ou ter
execução afetada)
Vantagens da cooperação entre processos:
- Compartilhamento de informações
- Aumento da velocidade de computação (speed−up)
11
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
- Modularidade
- Conveniência
3.6. Thread
Uma thread (ou lightweight process) é uma unidade básica de utilização de CPU. Uma
thread consiste de:
- Apontador de instruções (PC)
- Conjunto de registradores
- Espaço de pilha
A Thread é um processo de peso leve ou, também, linha de execução de um processo. A
thread compartilha com outras threads pares (peers):
- A seção de código
- A seção de dados
- Os recursos do SO
Coletivamente tudo isso é conhecido como tarefa (task). Um processo tradicional (ou
heavyweight process) é igual a uma tarefa com uma thread.
Threads provêm um mecanismo que possibilita a um processo seqüencial fazer uma
chamada bloqueante ao Sistema Operacional e ao mesmo tempo obter paralelismo no processo.
3.7. Comunicação entre processos (IPC)
Para a comunicação entre processo são necessários mecanismos de comunicação e
sincronização de suas ações. No sistema de mensagens os processos comunicam-se uns com os
outros sem uso de variáveis compartilhadas.
O Mecanismo de IPC por troca de mensagens provê duas operações:
- Send (message): mensagens de tamanho fixo ou variável
- Receive(message)
Se P e Q querem comunicar, eles precisam:
- Estabelecer um “canal” de comunicação entre si
- Trocar mensagens via send/receive
Para a comunicação é preciso um link de comunicação, seja ele físico (memória
compartilhada, barramento de hardware) ou lógico (propriedades lógicas).
12
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
3.8. Resumo Histórico
a. Computadores iniciais: Caros e Grandes.
b. Anos 50: Com o spooling e a multiprogramação o objetivo era otimizar a utilização da
CPU.
c. Início dos anos 60: Sistemas de tempo compartilhado. Foi o primeiro passo na direção
dos Sistemas Distribuídos, incorporando dois conceitos fundamentais:
Compartilhamento de recursos
Acesso remoto
Os Terminais passam a ter maior capacidade de processamento passando a executar tarefas
principais/comuns em um computador principal. A redução do tamanho, do preço e o aumento da
velocidade no hardware, bem como maiores distâncias e confiabilidade na comunicação foram
evoluções significativas.
d. Final dos anos 60 e início dos anos 70: Surgimento das redes:
Ethernet: LAN
ARPANet: WAN
Surgimento do Sistema Operacional UNIX.
e. Final dos anos 70: Protoloco TCP/IP
f. Início dos anos 80: Estações de trabalho
13
Download