Resumos dos capítulos :::

Sistemas Distribuídos

 

  1. Introdução

  2. Características

  3. Paralelismo

  4. Transparência

  5. Gerenciamento

  6. Aplicações

Os tópicos a serem examinados podem ser encontrados nos seguintes capítulos de livros:

  1. Modern Operating Systems, Tanenbaum, cap. 9 em diante

  2. Operating Systems Concepts, Peterson/Silberschatz, caps. 12, 13 e 14

  3. Outros bons livros de sistemas operacionais, nos capítulos sobre sistemas distribuídos

1. Introdução

Para fechar o conteúdo dessa disciplina temos que voltar às suas origens, ou seja, computação de alto desempenho e baixo custo. Como foi dito no início, isso pode ser obtido com o uso de sistemas distribuídos, que nada mais são do que conjuntos de máquinas operando em rede. Daquela definição passamos, durante o semestre, ao estudo dos dois componentes básicos desses sistemas, que são as redes de computadores e os sistemas operacionais.

Nesse capítulo examinaremos como usar esses componentes em conjunto para obter um sistema distribuído. Isso implica em examinar como os mecanismos de gerenciamento de um sistema operacional devem ser modificados se o seu objeto de gerenciamento envolver uma rede de computadores. Pela sua complexidade, o estudo detalhado deste tópico fica para o curso de Projeto de Sistemas Operacionais, bastando nesse momento uma revisão rápida desses sistemas.

2. Características

Um sistema distribuído é mais do que uma rede com servidores espalhados pela mesma (como algumas vezes é dito). Ele envolve certas características que não aparecem numa rede comum, como:

  1. Transparência, que é a característica de livrar o usuário de qualquer conhecimento sobre como o ambiente executa suas tarefas;

  2. Processamento paralelo, que é a capacidade do sistema em oferecer multiprocessamento efetivo caso o usuário necessite (o que é o necessário para computação de alto desempenho), possivelmente sem o conhecimento do usuário sobre isso.

3. Paralelismo

O paralelismo num S.D. é dito de grão largo ou, mais precisamente, fracamente acoplado. Isso significa que o acoplamento (pontos de troca de informação) entre os processos é reduzido. Essa característica vem como consequência de o processo de troca de informações na rede ser bastante lento, sendo no máximo 100 Mbits/s em Ethernet, ou 320ns por palavra (considerando atraso zero no protocolo de rede e que seja possível transmitir apenas 4 bytes, o que é claramente um absurdo), contra 30ns no acesso a uma palavra na memória.

Essa lentidão faz com que se evite ao máximo a troca de informações entre processos, ou como se diz, que o grão de execução sequencial seja mais largo.

Técnicas de como realizar o processamento paralelo se agrupam em modelos mestre-escravo, bag-of-tasks e interacting-peers, sendo que sua programação envolve basicamente a construção de processos que interagem por mecanismos de exclusão mútua e sincronismo. O estudo detalhado desses mecanismos é feito no curso de Programação Concorrente.

4. Transparência

O conceito de transparência é o mais importante em um sistema distribuído. Como dito há pouco, transparência implica em o usuário não precisar saber como o sistema trabalha, o que, num sistema distribuído, implica em vários tipos de transparência, como por exemplo:

  1. execução, quando o usuário não sabe em que máquina o seu programa está executando. Isso ocorre graças ao conceito de migração de processos, em que o sistema move programas (e/ou dados) de uma máquina para outra tentando obter um melhor balanceamento de carga, desempenho, ou mesmo a viabilização de execução (por falta de recursos locais);

  2. acesso, em que o usuário acessa o sistema de forma equivalente, independentemente do ponto em que esteja fazendo isso;

  3. paralelismo, quando o próprio sistema decide sobre a conveniência ou não de se paralelizar a execução de uma tarefa.

5. Gerenciamento

Um sistema distribuído apresenta restrições ao seu gerenciamento que não estão presentes num sistema operacional convencional. Como mencionado, o estudo mais detalhado de um S.O.D. ocorrerá em Projeto de Sistemas Operacionais. Entretanto, precisamos indicar aqui algumas dessas restrições, separadas por módulos de gerenciamento:

  1. Gerenciamento de processos - precisa levar em consideração o fato de que os processos por ele controlados estão em máquinas distintas, exigindo mecanismos mais complexos para o controle de exclusão mútua e sincronismo (pela impossibilidade de uso de memória compartilhada), além de mecanismos para balanceamento de carga entre as máquinas e migração de tarefas;

  2. Gerenciamento de memória - precisa cuidar do fato de termos a possibilidade de compartilhamento de informações entre memórias distintas, o que dificulta enormemente o gerenciamento das caches distribuídas, apenas para citar uma complicação;

  3. Gerenciamento de E/S - que não é muito diferente do convencional, pois é possível imaginar a rede (e tudo que é acessível através dela) como um dispositivo de E/S. O único problema é controlar dispositivos diretamente conectados à rede (impressoras com placas de rede, por exemplo), mas mesmo esse é de simples solução;

  4. Sistema de arquivos - como agora envolvem arquivos em várias máquinas, temos problemas na localização desses arquivos e na manutenção de sua consistência se houverem múltiplas cópias (réplicas) do mesmo.

6. Aplicações

Além das aplicações tradicionais de alto desempenho, sistemas distribuídos podem ser (e são) usados em sistemas de bancos de dados (os chamados SBDD), de automação e controle (tempo-real e redes de sensores), imagens, etc.

Não examinaremos tais aplicações aqui, mas é importante mencionar que o uso de SBDD, STRD, etc., tem aumentado significativamente nos últimos anos, especialmente com a introdução maciça de clusters de estações e arquiteturas dedicadas (Beowulf, por exemplo), além de grades e cloud computing, o que indica que o mercado de trabalho para profissionais com esse tipo de conhecimento (e esses são raros) deve aumentar bastante.

Dentro da ênfase de sistemas de computação esse conhecimento vem dos cursos de Projeto de Sistemas Operacionais, em que se examina como gerenciar um S.O.D.; Redes de Computadores, que examina os detalhes de um protocolo de redes e seu projeto e gerenciamento; Arquiteturas e Organização de Computadores, em que são vistos os aspectos organizacionais de uma máquina (convencional ou não-convencional) e como ela pode ser usada mais eficientemente; e Programação Concorrente, com o estudo de técnicas de construção de programas paralelos e cooperativos.

Outros cursos, como os de Sistemas de Tempo-Real, com o exame das características necessárias ao controle de processos que demandem execução sob restrições de tempo; Modelagem de Sistemas, em que se estudam técnicas para a construção de um modelo computacional para um sistema real; e Técnicas de Simulação, que trata do estudo de como modelos podem ser simulados para a análise e projeto de sistemas, são considerados acessórios ao corpo central da ênfase, mas igualmente importantes para a formação mais completa do profissional de sistemas de computação.
 

 
 
DISCLAIMER
 
 
O conteúdo desta página é de minha total responsabilidade, não representando o pensamento ou posições da UNESP.