Introdução
O que
são sistemas de computação
O que é
Computação de Alto Desempenho
Como se
pode obter CAD
CAD de
baixo custo
Redes de
computadores e sistemas distribuídos
O restante da disciplina
1. Sistemas de Computação
Não existe uma definição
clara do que seriam sistemas de computação. Para o
CNPq, por exemplo, dentro de sistemas de computação
aparecem os sistemas digitais, compiladores, etc. Em nosso caso
consideraremos apenas os sistemas que servem de interface entre o
hardware e os programas aplicativos utilizados pelos usuários
do sistema. Embora menos abrangente, essa definição permite identificar
mais precisamente a atuação desses sistemas, evitando perder o foco
com detalhes de arquitetura de computadores ou linguagens formais.
Partindo desse ponto de vista fica claro
que os sistemas de computação englobam sistemas que
permitem fazer um uso eficiente das máquinas, o que inclui
sistemas operacionais e protocolos de redes de computadores, entre
outras coisas.
2. Computação de Alto
Desempenho
Entende-se Computação de
Alto Desempenho (CAD daqui por diante) como a área da
computação preocupada com a criação de
condições para que processamentos de elevada carga
computacional possam ser executados em intervalos de tempo factíveis,
isto é, permitir que programas que levariam anos para
fornecerem resultados em uma máquina comum possam faze-lo em
bem menos tempo (horas ou dias), por exemplo.
Alguns exemplos de áreas que necessitam CAD são:
-- Física
de Altas Energias, em que se analisam volumes gigantescos de dados
(muito acima de Terabytes hoje em dia), coletados em meses de experimentos e que
levariam alguns séculos para serem completamente examinados
em equipamentos convencionais.
-- Bioinformática,
em que o volume de dados (em genômica, por exemplo) também
é gigantesco.
-- Controle
de Energia Elétrica, em que é preciso analisar
diversas possibilidades de ação (em caso de
curto-circuito, por exemplo) e tomar a decisão correta de
forma quase que instantânea. Nesse caso, uma máquina
convencional levaria alguns minutos para tomar a decisão, o
que inviabiliza a sua execução antes da piora da
situação.
-- Mineração de dados,
em que o volume de dados é alto e o processo de análise
envolve uma quantidade elevada de restrições. Isso, por exemplo,
é a base de funcionamento de mecanismos de busca como Google e outros.
3. Como obter CAD
CAD é obtida, sempre, através
da paralelização das atividades a serem executadas pelo
programa. Isto significa, por exemplo, fazer um programa que some
duas matrizes linha por linha e não elemento por elemento,
como fazemos. Para tanto, cada linha é entregue para um
processador do sistema, que se encarrega de parte da tarefa e devolve
os resultados para quem estiver interessado neles.
Fica claro então que uma condição
necessária para a obtenção de CAD é a
existência de vários elementos de processamento no
sistema. A quantidade de elementos vai depender do grau de
paralelismo do problema resolvido e da disponibilidade de recursos
(dinheiro) existente. Máquinas com tal capacidade tem o seu
preço iniciando em cerca de 500 mil dólares e indo bem além
dos 50 milhões de dólares.
Deve ter ficado claro também, que outro
componente importante em CAD é o mecanismo responsável pela comunicação
entre os elementos de processamento. De forma simples, isso pode ser
feito através do compartilhamento da memória ou através de uma
estrutura de rede de computadores.
Do ponto de vista de arquitetura essas
máquinas podem ser classificadas de várias formas (como
deve ser visto no curso de Organização e Arquitetura de
Computadores), sendo que para o nosso caso interessa apenas uma
classificação rudimentar entre sistemas fortemente
acoplados e sistemas fracamente acoplados, assim definidos:
-- Fortemente
acoplados: são sistemas em que a conexão entre os
vários elementos de processamento é feita, em geral,
através de memória e barramentos compartilhados. Isto
implica em máquinas de alto custo e de grande velocidade de
processamento global (graças ao pouco tempo gasto em
comunicação).
-- Fracamente acoplados: são
sistemas em que a conexão é feita através de
redes (o que implica em atrasos consideráveis de
comunicação), trazendo uma grande redução
no custo do sistema.
4. CAD de baixo custo
Do item anterior pode ser percebido que
é possível obter (dentro de certas restrições
é claro) CAD a um baixo custo. Para tanto se usam sistemas
fracamente acoplados, que possuem um custo menor de implantação.
Outras vantagens de tais sistemas são sua modularidade, que
permite que o grau de paralelismo possa ser ampliado máquina a
máquina, e sua maior utilização, pois como temos
máquinas individualmente funcionais, podemos aproveitar a
capacidade de processamento de cada uma delas, mesmo que a tarefa não
exija alto desempenho.
A principal desvantagem da utilização
desses sistemas está ligada ao custo alto de comunicação.
Essa comunicação faz com que tais sistemas tenham um
desempenho bastante inferior ao dos sistemas fortemente acoplados.
Apesar disso, o seu uso tem se tornado cada vez mais intenso através
da popularização dos sistemas distribuídos.
5. Sistemas distribuídos
O uso de sistemas distribuídos,
que nada mais são do que redes de computadores com ambientes
especialmente configurados para a paralelização de suas
atividades e serviços, tem possibilitado o crescimento no
número de sistemas de alto desempenho em uso. Entretanto, o
funcionamento de um sistema distribuído é possível
apenas graças a um ambiente de hardware e software
preparado para a interação de programas. Isso implica,
em outras palavras, na necessidade de um sistema operacional capaz de
operar sobre várias máquinas e na existência de
máquinas capazes de se comunicar entre si.
A infraestrutura de hardware é
necessária para que a comunicação entre os
programas paralelos possa ser feita de forma coordenada, sem a
criação de eventuais problemas relacionados com a
heterogeneidade das máquinas paralelas. Isto implica na
criação de um protocolo de tradução entre
as várias "linguagens" faladas nas diferentes
máquinas.
Já a infraestrutura de software
é mais trabalhosa para ser obtida, uma vez que para tanto é
necessário que se transforme os mecanismos de gerenciamento de
um sistema operacional convencional em mecanismos que operem sobre
várias máquinas. Isto é feito para que o
paralelismo possa ser aproveitado de modo transparente ao usuário,
isto é, deve ser possível ao usuário solicitar a
execução de um determinado programa e esse programa ser
executado em qualquer máquina (ou mais de uma), sem que o
usuário perceba que isso está ocorrendo.
6. A disciplina
No restante desse curso examinaremos
como é feita a construção de um sistema
operacional (convencional por simplicidade) e de uma rede de
computadores (protocolos de comunicação). Ao final do
semestre é esperado um bom domínio sobre esses tópicos,
de tal forma que o aluno possa posteriormente realizar o projeto
completo de um S.O. e estudar com mais profundidade os problemas
relacionados aos sistemas distribuídos, além de poder
iniciar o projeto de uma rede de computadores.
A partir deste capítulo
introdutório o curso prossegue, inicialmente examinando alguns
dos requisitos básicos para a existência de uma rede de
computadores e posteriormente, em momentos adequados, são
examinados os mecanismos de gerenciamento de um sistema operacional
convencional, que serão mapeados futuramente para o caso de um
sistema distribuído.
Dos alunos espera-se sempre a leitura
prévia, nos livros indicados, dos tópicos a serem
examinados em sala de aula. Primeiro por garantir uma melhor
compreensão do que será ali discutido e segundo por
permitir uma maior familiaridade com os livros usados na disciplina.
|