Meio Bit » Baú » Hardware » Browsers não são sistemas operacionais, ok?

Browsers não são sistemas operacionais, ok?

05/04/2009 às 0:55

Há tempos eu leio em blogs, fóruns e portais uma analogia entre browsers e sistemas operacionais. É um simples caso de falta de conhecimento técnico. É inadimissível um engenheiro, cientista da computação ou analista de sistemas fazê-lo; porém, é uma metáfora razoável para pessoas de outras áreas compreenderem computação na nuvem ou software + serviços.

Mas sabemos quem é o público do Meio Bit. São pessoas envolvidas com tecnologia, formadoras de opinião, mas vindas de diferentes bases de formação. A maioria é “o amigo que entende de computadores”. Então, vamos entender de uma vez por todas, porque é tão errado chamar um browser de sistema operacional e ficar imunizado aos apelos marketeiros e publicitários que aparecem o tempo todo.

Arquitetura de Computadores 101

O modelo de computador pessoal foi criado pelo matemático húngaro John von Neuman. Abaixo, a imagem mostra o esquema, bastante simplificado.

vonnewumman

A computação moderna depende de inúmeras camadas para fazer com os equipamentos acima mostrem uma imagem ou vídeo na tela ou imprimam um documento. Rodar uma extensão do Firefox e um serviço na rede, então, são muitos níveis acima.

4-4-2009 21-18-43

Nível n: Aplicações fortemente distribuídas, com delegação de serviços por rede ou internet. Por exemplo, o serviço de games online que promete transmitir o jogo para a máquina das pessoas, usando pouco ou nenhum processamento local. Há uma enorme necessidade por conexões de alta qualidade, rápidas e de baixa latência.

Nível 9: Não há como determinar a hierarquia de software mais serviços. Parte dele roda localmente e parte remotamente. A agregação de serviços é externa e transparente. Inúmeras vias de acesso são possíveis e há sincronização entre dispositivos como desktops, smartphones, notebooks, etc. Há limitações quanto a complexidade do que pode ser feito, como colaboração em tempo real na edição de documentos, ainda é uma piada.

Nível 8: Quem desenvolve aplicativos em ActionScript para o Flash ou C# para o Silverlight está operando nessa camada. O JavaScript também e há limitações de acesso aos recursos da máquina e chamadas de sistema operacional por questão de segurança. Estão sendo criados atalhos específicos como acesso à placa de vídeo e ao sistema de arquivos e permitir acesso a alguns recursos locais.

4-4-2009 20-33-07

Nível 7: Os aplicativos ficam nessa camada. Alguns deles são escritos usando várias linguagens, APIs e Frameworks. Junto deles, novas abstrações foram construídas. O Firefox, por exemplo, mostrou-se muito mais do que um browser e virou uma plataforma de aplicações. Uma extensão que roda no Firefox 3.0, irá funcionar da mesma forma no Mac, Windows e Linux.

Nível 6: A máquina virtual java foi escrita em C, ou seja, uma camada abaixo. Mas em compensação, programas escritos para ela ficam livres de serem específicos para algum sistema operacional ou linguagem específica de máquina. Na verdade, ele emula o nível 2 para seus programas. Python e Ruby são interpretados, ou seja, não exigem compilação para serem executados pois o interpretador o faz enquanto lê o código. Há queda de performance, mas a vantagem é produtividade.

Nível 5: Quem cria aplicativos como o uTorrent, o faz usando linguagens de alto nível como o C/C++, mas compiladas específicamente para um sistema operacional. A performance de aplicativos escritos aqui é em média 20% superior ao do nível de máquinas virtuais.

4-4-2009 21-00-28

Nível 4: O Assembly ou Linguagem de Montagem é a representação para humanos do que existe no nível 2. Partes do sistema operacional são criadas nesse nível, mas apenas o essencial, já que é muito caro manter e codificar código ASM.

Nível 3: É um aplicativo que usa as instruções fundamentais para construir serviços ou chamadas de sistema. Precisam ser escritos e compilados para um nível 2 específico. O sistema operacional é o responsável por criar e ler arquivos, transmitir informações através de uma placa de rede e controlar o fluxo de informações transmitido entre o HD e a memória RAM (gerenciamento de memória). Ele orquestra como sua máquina funciona.

Nível 2: O Instruction Set Architecture (ISA) é a camada entre os compiladores e o hardware. Um programa escrito em C tem como objetivo final criar código que possa ser interpretado nesse nível. Ou seja, criar um compilador para uma máquina específica requer conhecimento profundo do hardware.

4-4-2009 20-30-06

Nível 1: São os agregados de componentes lógicos que criam as unidades de processamento como a unidade de ponto flutuante ou cache interno de uma CPU.

Nível 0: Circuitos combinacionais, portas lógicas e nomes como flip-flops aparecem aqui. A vida digital, os zeros e uns começa nessa camada. Abaixo dela, temos os circuitos analógicos. A Ciência da Computação e a Engenharia Elétrica compartilham esse nível.

Nível –1: Aqui é a camada exclusiva da Engenharia Elétrica e dos Físicos. É a camada que representa transístores, corrente elétrica, elétrons e campos magnéticos. É o nível analógico da computação digital. Aqui os zeros e uns são reações elétricas.

Como chamar o browser?

O browser pode ser chamado de plataforma de aplicações, ambiente de software, sistema de aplicativos, computação na nuvem ou algum outro nome marketeiro ainda não inventado, mas pelamordedeus, não chame ele de sistema operacional. Chame ele de BAFOX (Browser Applications Framework Over XML) ou qualquer acrônimo estranho que preferir.

Na próxima vez que alguém disser que o browser faz tudo e o sistema operacional é irrelevante, diga: BURRO PRA BARALHO! (letra intencionalmente trocada)

Fontes: Organização Estruturada de Computadores (Tanenbaum), Computer Architecture: A Quantitative Approach (Hennessy & Patterson), PC Architecture (Karbo)

relacionados


Comentários