21 de janeiro de 2011

Virtualização: noções de S.O.

Um bom aprendizado se faz em etapas e precisamos ter uma base para explicar um conceito mais complexo.

Em um post anterior ficamos um pouco mais íntimos do hardware de um computador. Dando prosseguimento aos fundamentos abordaremos os conceitos básicos de sistema operacional, outro tópico essencial para entender o funcionamento das VMs.


O que é um sistema operacional?

Sistema operacional, que agora em diante reduzirei para SO, e a camada de software do sistema computacional que faz a ligação entre os aplicativos, o usuário e o hardware.

Veja o diagrama abaixo com muita atenção. Ele representa de forma bastante simplificada os blocos que formam um sistema operacional moderno e as ligações entre eles.

Assim como vimos no caso do hardware, este sistema genérico serve para qualquer plataforma computacional que siga o modelo que vimos no artigo anterior.


Blocos simplificados de um SO moderno

Um S.O. moderno e completo é composto basicamente de 6 partes:

Núcleo ou Kernel
É o sistema em si, a caixa preta que faz a "tradução" dos comandos das linguagens de mais alto nível como Delphi, Pascal, C, Visual Basic, entre outras, para a linguagem de máquina que realmente é compreensível pelo processador.

É o núcleo quem controla o acesso dos programas ao processador, à memória e aos outros recursos de hardware. 
UI/GUI – User Interface / Graphics User Interface
Permite que o usuário tenha “controle” sobre o sistema e acesso a muitos recursos do hardware. É a ligação primordial entre o usuário e o sistema.

Alguns sistemas adotam interfaces gráficas (ícones, mouse, arrastar,...) para facilitar seu uso, essas são chamadas de Interfaces gráficas, como é o caso do Windows Explorer e Aero adotadas na família Windows e KDE ou Gnome, adotadas na plataforma Linux.

Pode-se ainda operar em interfaces de modo texto como o MSDOS, Windows Powershell e o Bash. Essas são menos intuitivas, mas não menos poderosas e são plenamente adotadas por administradores, por exemplo.
API – Application Programming Interface
São os recursos que o SO disponibiliza para os programas e que facilitam tando a vida dos programadores.

Por exemplo: já observou a janela "Abrir" do MSPaint e a mesma opção no Word? Elas não são idênticas? Na verdade, essas janelas não são do Word ou do Paint, mas sim um recurso disponibilizado na API do SO...

A janela "Abrir" é fornecida pela API do sistema e não pela aplicação.

NOS - Network Operation System
Essa parte cuida do acesso aos recursos de rede, inclusive permitindo que aplicativos que não são para rede, possam usá-la. Permite conexões via protocolos específicos ou mais genéricos e hoje, é parte essencial de qualquer SO.
DOS - Disk Operation System
Cuida do acesso às unidades de armazenamento, discos (físicas e lógicas), arquivos e pastas.
Device Drivers - Drivers de dispositivos
Fazem a ligação entre o sistema operacional e o hardware. Ao contrário do que a maioria pensa, todos os hardwares precisam de drivers para serem operados pelo sistema, inclusive mouse, teclado, HD, CD-ROM, etc. com os quais nunca nos preocupamos em instalar drivers. O próprio S.O. Já instala alguns device drivers para componentes padrão.

Mesmo os recursos do processador, como FPU, gerenciamento de energia e virtualização, necessitam de device drivers e no Windows vemos isso no “Gerenciador de dispositivos”.

Ao contrário do que muito pensam quem faz os drivers são os fabricantes dos dispositivos e não do SO. Quando pegamos um dispositivo incompatível com o Linux ou Windows, sempre reclamamos que o Linux é ruim ou xingamos a Microsoft, mas teríamos sim que reclamar com o fabricante do aparelho...
O SO representa a plataforma sobre a qual os aplicativos rodam e se ligam ao hardware, correto? Então, a "intimidade" do SO com o hardware e as aplicações é que constitui uma plataforma única, um dos motivos porque, por exemplo, programas compilados para Windows não funcionam com outros SO e vice-versa.

Vale lembrar também que o sistema operacional, assim como os aplicativos e os device drivers ficam residentes na memória (ROM ou RAM) enquanto o sistema está funcionando, daí ser tão importante para o processador, vir acompanhado de memória suficiente para conter o SO (ou pelo menos partes dele), os device drivers e as aplicações que estão funcionando.

Antes de concluir, respondo algumas questões comuns:

Se o SO e os programas rodam na RAM, pra servem os HDs no PC?

Na verdade, não precisamos do HD (disco rígido) para rodar o sistema operacional: vemos isso nos sistemas Live CD como Ubuntu e Kurumin e em sistemas que rodam de disquetes, de flash drives e pela rede. A unidade de disco é apenas um armazenamento permanente para o S.O. e aplicativos, além de dados e documentos do usuário. Assim, tudo, mas tudo mesmo que está rodando no seu PC neste instante está na RAM e tem que ser colocado nela para ser acessível ao processador.

Quando o PC da boot, parte do processo é buscar as partes essenciais do SO vistas acima e alguns aplicativos e colocá-los na RAM. Isso porque o processador não “entende” unidades de disco. Discos são tão lentos que simplesmente inviabilizariam o uso do processador, por isso ele, o processador, é programado para acessar quase tudo diretamente na RAM e o resto do sistema tem que “se virar” em colocar os dados na RAM para que o processador os processe.
Mas a evolução dos HDs permitiu seu uso como extensão da memória principal. Basicamente, o SO inclui o espaço do HD em seu sistema de endereçamento, informado aos aplicativos que existe mais memória RAM do que a realidade. É o que chamamos de memória virtual, mas isso é assunto para o futuro...


Processo de carga e troca do HD com a RAM.

Um dos segredos de uma máquina poderosa está na RAM, quanto maior e mais rápida ela for, melhor o processador fará seu trabalho, devido a esta intimidade com a RAM e ao menor uso do disco rígido pois mais programas e dados caberão na RAM ao mesmo tempo.

Gostaram? Breve, continuaremos, então aproveite para tirar as dúvidas...

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

2 comentários neste post

Pergunta: Imagino que, se uso um aplicativo dentro dum ambiente S.O. virtualizado, estou "replicando" um software; virtualizar sofware (Sistema operacional, p.ex.) não implica obrigatoriamente em virtualizar o Hardware?
Se uso um sistema operacional estou replicando software + hardware (ao menos o software/driver que representa esse hardware); o S.O. virtual para executar algumas funções necessariamente tem de estar vinculado a um driver de um hardware que pode não existir fisicamente na máquina onde ele roda, de fato correto?

Wallace,

A idéia de "replicar" aqui não é muito confortável. O que é virtualizado na verdade é exatamente o hardware, daí o nome da tecnologia ser "Virtualização de Hardware", onde um aplicativo "simula" um hardware completo de um computador dentro de outro, o que permite instalar o SO e posteriormente os DRIVERS e os aplicativos. Isso é fato, inclusive porque, se você usa um SO proprietário em um hardware virtual, a licença para este deve ser adquirida, pois trata-se de um "novo" hardware, diferente do hardware real onde tudo isso opera. Os drivers usados no sistema virtual também são diferentes do usado no sistema real. Isso porque o hardware simulado não é igual ao hardware real.

Sei que o conceito é um tanto confuso, principalmente para quem tem pouca intimidade com a parte "chutável" do sistema computacional. ;-)

Momento "Discovery Channel": na prática, biologicamente falando(?), temos um "Gêmeo parasita" completamente desenvolvido, dentro de nosso PC hospedeiro. Um PC dentro de outro PC, com vídeo, som, rede e principalmente BIOS próprios e até com vontade própria! Gêmeos não são réplicas!

Mas, se "matamos" ou desligamos o hospedeiro, o parasita também morre por inanição, pois eles compartilham o mesmo sistema disgestivo, ou seja, a fonte de energia e a comunicação com o "mundo real"!

Mais ou menos isso, Hehehehe!

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.