15 de janeiro de 2011

Virtualização: noções de hardware

Antes de aplicar na prática os conceitos de virtualização de hardware e colocar nossas VMs para funcionar é essencial compreender suas origens e necessidades. Aliás, isso vale para qualquer tipo de tecnologia! Se não dominamos seus fundamentos seremos apenas usuários, sem interesse em seu funcionamento; ou fazemos da tecnologia apenas mera curiosidade passageira.

Pior ainda são os pseudo-experts que dizem entender do assunto, mas que sempre se entregam quando "o bicho pega"! Vejo isso todo dia...

Para não cair na arapuca da curiosidade e acabar passando vergonha no mercado de trabalho, na frente do cliente, vamos fazer aqui, nos próximos posts, algumas revisões rápidas de conceitos, primeiramente sobre o que é hardware computacional.

O que é um computador?

Isso vale para qualquer sistema contendo processador, seja o Gameboy falsificado comprado no camelô, o Deep Blue da IBM que faz bilhões de teraflops por segundo, a calculadora do Paraguai e até o controle remoto da sua TV e, é claro, um PC.

O hardware de um sistema computacional é composto basicamente por sete componentes fundamentais. Observe o esquema abaixo: ele representa de forma bem genérica o hardware de um sistema computacional digital moderno.


Blocos do hardware de um sistema computacional genérico.

Sem esses componentes o sistema não existe, simplesmente não é funcional. Vamos resumir cada um?

CPU – Central Processor Unit
Como diz a propaganda, "é o cérebro" do sistema computacional. Existem vários tipos e arquiteturas, mas hoje reinam os CISC e os RISC. Algo como o racional e oemocional, e nunca pergunte qual é o melhor pois é falta de educação. Mas, assim como um cérebro vivo é itútil sem o resto do corpo, precisamos de outros componentes para que este carinha tenha utilidade.
ROM – Read Only Memory
Contém o firmware, o animus, a alma, o caráter do sistema. É aqui que se define a funcionalidade principal do sistema. Dadas as proporções, é basicamente o firmware que diferencia uma calculadora de um Playstation 3. Dentre outras funcionalidades, é responsável pelo pontapé inicial, dar a partida no sistema, o boot.
RAM – Random Access Memory
É onde o processador executa suas tarefas do dia-dia, os programas. Também guarda informações temporárias, variáveis, informações sobre as quais tem que tomar decisões. Assim como no criador, existem muitos niveis e tipos de RAM, variando de acordo com a complexidade que se deseja do sistema.
Clock – Relógio
É o coração do sistema, que dá o ritmo, a cadência, a referência de tempo para impulsionar a “circulação” das informações. Havia uma ligação direta entre velocidade do clock e desempenho do sistema, mas esse (pre)conceito caiu por terra faz alguns anos.
I/O – Input and Output
É por onde o sistema se comunica e interage com o resto do mundo, aqui está a razão primária da existência do sistema, pois é o I/O que permite a comunicação com o usuário final. Na minha visão, é a parte mais importante do sistema.
Power Souce – Fonte de energia
"- Saco vazio não para em pé". Sem alimento, nada sobrevive. A fonte pode ser uma pilha, bateria ou até um gerador de grande porte, passando pela tradicional rede elétrica, é claro.
Bus - Barramentos
São as ligações entre cada um destes componentes e a CPU. Temos barramentos de dados, de apontamento, de controle e status, unidirecional, bidirecional (halfduplex e fullduplex), locais, externos, seriais, paralelos e por aí vai...
Veja que teríamos um post inteiro, vários posts ou até livros inteiros para cada ítem desses se quisessemos nos aprofundar, mas agora não vem ao caso.
Só por curiosidade, compare o sistema acima conosco, seres humanos! Não há uma semelhança incrível? Não é mera coincidência: se um computador tentasse entender o seu gênesis, sua própria criação, estaria lá escrito: “- Fomos feitos à imagem e semelhança de nosso criador...”.

Feito à imagem e semelhança do criador...
Você consegue relacionar os blocos com o criador?

O que é processamento?

Por incrível que pareça, uma CPU só conhece duas coisas na sua vidinha, sendo uma coisa e o contrário dessa coisa, o que costumamos representar como 0 (zero) e 1 (um), ou seja, os bits. Assim, se “zero” é a representação matemática de alguma coisa, o “um” é o contrário dessa coisa, e vice-versa. É o sim e o não, o ligado e o desligado, o aberto e o fechado, o Yin e o Yang...
Note que, nesse contexto, “zero” deixa de significar “o nada” ok? Ele é tão importante e valioso quanto o “um”, já que ele define o próprio “um”.
E o que o processador faz com esses dois opostos?

Um grande representante da humanidade chamado George Boole, baseado nas idéias dos primeiros pensadores gregos e sem sequer imaginar que um dia existiria o Core 2 Quad, provou que apenas quatro operações usando estes “zeros” e “uns” são suficientes para resolver qualquer problema matemático existente, por mais complexo que seja. Esse estudo é descrito na Álgebra Booleana.

AND, OR, XOR e NOT, que em uma linguagem simplista seria: multiplicar, somar com "vai um", somar e inverter. São as operações lógicas fundamentais e é somente isso que uma CPU faz, apenas essas quatro operações que são realizadas milhões de vezes por segundo! Isso é “processar” na visão dos computadores.


AND (E)

OR (OU)

XOR (OU EXCLUSIVO)

NOT (INVERSÃO)
0 . 0 = 0
0 . 1 = 0
1 . 0 = 0
1 . 1 = 1
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 1
0 (+) 0 = 0
0 (+) 1 = 1
1 (+) 0 = 1
1 (+) 1 = 0
0 = 1
1 = 0

Basicamente, quando estamos usando um programa, qualquer programa, estamos ordenando ao computador que execute em conjunto essas operações, de forma extremamente organizada e sincronizada.

A idéia deste artigo não é descrever um computador em toda sua complexidade. Isso seria impossível aqui! É apenas dar um gostinho, uma idéia do que precisamos para virtualizar algo que já é bastante complexo por si só.

Na próxima etapa, teremos uma visão geral sobre o sistema operacional. Até lá...

Esta é uma edição revisada, ampliada e atualizada. A versão anterior não está mais disponível na Internet.

0 comentários neste post

Postar um comentário

Atenção comentarista!
  • Todos os comentários serão rigidamente moderados;
  • Identifique-se! Comentários anônimos não são recomendados;
  • Comentários com três ou mais links serão removidos;
  • Comentários escritos em miguxês ou excesso de gírias serão removidos;
  • Comentários escritos com predominância de maiúsculas serão removidos;
  • Por favor, prove que você é coerente, educado e bem informado: conheça o restante do site, saiba quem somos, sobre o que, para quem e como escrevemos antes de comentar futilidades;
  • Respeite as opiniões dos autores e dos outros comentaristas. Seja breve e sem ofensas;
  • Escreva comentários relevantes e que contribuam de alguma forma para o bem da humanidade;
  • Não seja um inútil social. Lembre-se que o mundo não gira ao seu redor.