quinta-feira, 31 de março de 2011

Encontramos no youtube um vídeo bem simples, sobre a história do unix que conta com um depoimento de Ken Thompson, um dos programadores que criou o Unix, vejam:

sábado, 26 de março de 2011

VANTAGENS:

            O Linux é sem dúvida a melhor opção de Unix para PC, pois possui todas as características de um UNIX moderno, tais como: multitarefa real, multiusuário, memória virtual, biblioteca compartilhada, interface gráfica (X Windows), entre outros. O Linux possui centenas de comandos embutidos, chamados utilitários e ferramentas, cada ferramenta é um programa distinto, destinado a fazer uma tarefa específica de forma rápida e eficaz. Como é um sistema aberto é extremamente flexível (o utilizador tem acesso ao fonte do sistema) é outro ponto positivo.
            Diversos grupos de estudo do Linux no mundo inteiro garantem actualizações do software praticamente mensais. Além disto, cada nova versão contem dispositivos periféricos que são lançados no mercado.
            O Linux tem um excelente mercado a nível académico, o que faz com que possa haver constantes melhoras no software, pois grande parte dos melhores professores/pesquisadores de sistemas operacionais colaboram para o seu desenvolvimento tecnológico.

DESVANTAGENS:

            O suporte técnico é um dos pontos fracos do sistema, é feito basicamente através da Internet. Além disto, a documentação do Linux é escassa, apesar de já haver muitas revistas do género e maioritariamente a informação vem de fontes na Internet.  
O número de aplicativos é limitado e não existe perspectiva de entrada de grandes companhias de software desenvolvendo aplicativos para Linux, sem aplicativos não há como um sistema se tornar popular no mundo dos PCs.
            O sistema de arquivos varia de uma distribuição para outra, tornado difícil a vida do administrador de sistema, que muitas vezes tem dificuldade de descobrir o que é essencial em cada subdirectoria, limpar, criar, preparar, verificar, encontrar e montar outros sistemas de arquivos (possivelmente em máquinas remotas), todas estas tarefas podem ser dificultadas se não encontrarmos os arquivos aonde esperamos.
            A administração e a operação de um modo geral é bem mais complexa em um ambiente Unix, inclusive o Linux, do que no ambiente DOS/Windows, o que dificulta sua popularização.

sexta-feira, 25 de março de 2011

Um pouco da história do UNIX

O projeto GNU (G is not Unix) é mais antigo (1983) que o Linux (que se refere ao Kernel desenvolvido por Linus Torvalds em 1989), a questão é que o GNU era praticamente um SO pronto, com interpretador de comandos e algumas aplicações, porém lhe faltava o Kernel (núcleo do sistema operacional), Richard Stallman soube da mensagem enviada por Linus nos tempos da Usenet e chegaram na conclusão que ambos estavam desenvolvendo um novo Sistema Operacional de código fonte aberto com basicamente o mesmo objetivo e filosofia, um possuia o Kernel pronto e outro possuia todo o sistema porém sem Kernel, em 1992 o Projeto GNU se juntou ao Linux e nascia então o GNU/Linux.

Algumas curiosidades históricas:

1) O Unix foi precedido por um sistema chamado Multics desenvolvido pela Bell Labs (AT&T), General Eletric e MIT, o Multics era um sistema monousuário e monotarefa e não conseguiu atingir seu propósito, ainda sim o último sistema rodando Multics só foi desativado em 30 de Agosto de 2000 exatamente as 17:08 UTC no Canadá.

2) Dois engenheiros da AT&T, Ken Thompson e Dennis Ritchie fanáticos por um jogo chamado Space Travel perderam acesso ao sistema e decidiram portar o jogo para um computador PDP-7 que estava parado, nascia um novo sistema operacional que a princípio foi chamado de Unics, o novo SO foi assim chamado pois ao contrário do Multics era multitarefa (time sharing) e multiusuário e Ken Thompson achou engraçado fazer essa alusão ao Multics, o mais interessante do Unics é que este foi idealizado para ser altamente "portável" e rodar em praticamente qualquer hardware existente, uma das premissas de sua criação era construir um SO de programador para programadores, mais tarde o Unics foi portado para uma máquina PDP-11, posteriormente o Unics foi escrito em linguagem C (linguagem também criada por Dennis Ritchie) e devido a essa particularidade finalmente o Unics se tornava realmente um sistema portável.

3) Não se sabe ao certo quando e porquê o Unics veio a ser chamado de Unix, algumas teorias dizem que foi por puro marketing, outros dizem que era uma limitação do sistema em usar um nome com 5 caracteres, a teoria mais plausível é a da própria Bell Labs que diz que o Unix assim como a Fenix ressurgiu das próprias cinzas graças ao esforço multiorganizacional de seus idealizadores em criar um sistema multitarefa seguro, esse trabalho em equipe e a filosofia em que o sistema foi concebido era algo inimaginável nos anos 60, desde então o Unics passou a ser chamado Unix herdando a letra "x" da "Fenix".

4) Richard Stallman decidiu criar um SO do tipo Unix gratuito pq muitos programadores que contribuíram para o aperfeiçoamento do Unix foram injustiçados quando a AT&T decidiu se apropriar do sistema que fora fruto do trabalho destes.

5) Ao contrário do que muitos pensam Linus Torvalds não escreveu o Linux Kernel do zero, reza a lenda que Linus ao ver seu tio sofrendo na pobre interface shell do DOS decidiu escrever um sistema operacional mais flexível e poderoso, que fosse multi-tarefa e lhe permitisse explorar mais o hardware disponível.Para isso ele usou como base o Kernel do Minix (SO tipo Unix escrito por Andrew Tannenbaum)

6) Assim como acontece no GNU/Linux o Unix também possui muitas variantes, o que dificulta um pouco o trabalho dos profissionais dessa área, conceitualmente as variantes Unix se diferem das variantes GNU/Linux pois as primeiras são adaptadas ao hardware específico de um fabricante, temos como exemplo o HP-UX da HP, o AIX da IBM, o Solaris da SUN (que possui também versão para plataforma x86), o Irix da Silicon Graphics, entre outros.

7) Aqui acho que vou assustar muita gente, muitos associam a Microsoft só ao Windows mas até ela já teve seu Unix que se chamava Xenix, posteriormente esse foi vendido para a SCO mas ainda sim serviu de base para o desenvolvimento do MS-DOS, aliás o MS-DOS embora conceitualmente seja muito diferente do Unix estruturalmente possui várias semelhanças, como redirecionamento de dispositivos de I/O, pipes "|", estruturas de arquivos e alguns comandos.


sexta-feira, 18 de março de 2011

UNIX

O Unix é um sistema operacional portátil, multitarefa e multiusuário.
O unix começou como um passatempo de um jovem pesquisador e tornou-se um empreendimento que gera bilhões de dólares envolvendo universidades, corporações multinacionais, agências governamentais, e entidades internacionais de padronização.
Nosanos 40 e 50, existia um problema da maneira que os computadores eram utilizados, ou seja, era preciso o usuário enviar ao centro de processamento de dados um job em cartões perfurados, para que estes fossem processados. 
Para tentar solucionar tal impasse, o sistema de compartilhamento de tempo foi inventado no Darmouth College e no M.I.T. Em pouco tempo, os pesquisadores do M.I.T se juntaram ao da General Electric e os do Bell Labse desenvolveram um sistema de segunda geração,esse não fez sucesso, pois ele foi escrito em PL/I - uma linguagem muito pesada, com compilador muito ineficiente.
Com esse fracasso, a equipe do Bell Labs fez com que um de seus pesquisadores, Ken Thompson , começasse a reescrever o Multics, em linguagem de máquina usando um PDP-7. A denominação veio a partir de outro pesquisador, Brian Kernighan, chamando o sistema de Unics.O trabalho de Thompson teve logo adesão de Dennis Ritchie. A partir daí, o unix saiu do PDP-7 para os então modernos PDP-11/20, logo depois PDP-11/45 e para o PDP-11/70, sendo que estas duas últimas máquinas dominaram o mercado durante toda a década de 70. Com estas evoluções, Thompson reescreveu o Unix na linguagem B e posteriormente Ritchie desenvolveu a linguagem C, e escreveu um compilador para ela.
Em 1974, Ritchie e Thompson publicaram um artigo sobre o Unix, que teve seu devido reconhecimento com o recebimento do Turing Award. Com isso muitas universidades começaram a solicitar ao Bell Labs cópias do Unix. Apesar do compilador C ser muito eficiente e rápido, ele só gerava código objeto para o PDP-11 além de considerar que todos os números inteiros eram de 16 bits, que todos os ponteiros eram de 16 bits também, e que a máquina possuia três registradores disponíveis para armazenamento temporário.
Uma das primeiras universidades a adquirir o Unix versão 6 foi a University of California at Berkeley, com o código fonte disponível. Sendo assim o pessoal de Berkeley, foi capaz de analisar e modificar o sistema, chegando a produzir o 1SBD.
Em 1983 é lançado o System V da AT&T e o 4.2 BSD. O SV incluía o pacote IPC (shm, msg, sem) para comunicação entre processos. 
Surgiram outras versões do SV com a inclusão de novas características como sharedlibs no SVR4.O 4.2BSD foi talvez uma das mais importantes versões do UNIX. O seu software de conexão de redes tornava muito fácil a tarefa de conectar computadores UNIX a redes locais. Nessa versão é que foram integrados os softwares que implementam TCP/IP e sockets.
Em 1988 foi lançado o SVR4. Este sistema era um merge de releazes anteriores do SV, BSD e SunOs, uma implementação decendente de BSD. 
O 4.4BSD foi lançado em 1992 para várias plataformas: HP 9000/300, Sparc, 386, DEC e outras, mas não em VAX. Entre as novas características estão: Novo sistema de memória virtual baseado em Mach 2.5 e Suporte ISO/OSI (baseado em ISODE)
A nova versão, SunOs 5.x está baseada no SVR4, embora tenha herdado algumas características do SunOs 4.x. O novo sistema operacional da Sun, Solaris 2.x, é um SO que engloba SunOs 5.x, Open Network Computing e Open Windows.

sexta-feira, 4 de março de 2011

Cloud Computing (Computação nas nuvens) - Continuação

* Software as a Service (SaaS)

Intimamente ligado à Cloud Computing está o conceito de Software as a Service (SaaS) ou, em bom português, Software como Serviço. Em sua essência, trata-se de uma forma de trabalho onde o software é oferecido como serviço, assim, o usuário não precisa adquirir licenças de uso para instalação ou mesmo comprar computadores ou servidores para executá-lo. Nesta modalidade, no máximo, paga-se um valor periódico - como se fosse uma assinatura - somente pelos recursos utilizados e/ou pelo tempo de uso.
Para entender melhor os benefícios do SaaS, suponha que uma empresa que tem vinte funcionários necessita de um software para gerar folhas de pagamento. Há várias soluções prontas para isso no mercado, no entanto, a empresa terá que comprar licenças de uso do software escolhido e, dependendo do caso, até mesmo hardware para executá-lo. Muitas vezes, o preço da licença ou mesmo dos equipamentos pode gerar um custo alto e não compatível com a condição de porte pequeno da empresa.
Se, por outro lado, a empresa encontrar um fornecedor de software para folhas de pagamento que trabalha com o modelo SaaS, a situação pode ficar mais fácil: essa companhia poderá, por exemplo, oferecer esse serviço através de Cloud Computing e cobrar apenas pelo número de usuários e/ou pelo tempo de uso.
Dessa forma, a empresa interessada paga um valor baixo pelo uso da aplicação. Além disso, hardware, instalação, atualização, manutenção, entre outros, ficam por conta do fornecedor. Também é importante levar em conta que o intervalo entre a contratação do serviço e o início de sua utilização é extremamente baixo, o que não aconteceria se o software tivesse que ser instalado nos computadores do cliente. Este só precisa se preocupar com o acesso ao serviço (no caso, uma conexão à internet) ou, se necessário, com a simples instalação de algum recurso mínimo, como um plugin no navegador de internet de suas máquinas.
IBM e HP são dois exemplos de companhias que já oferecerem soluções em SaaS: HP SaaS; IBM SaaS.
Há também conceitos derivados, utilizados por algumas companhias para diferenciar os seus serviços, entre eles:
- Platform as a Service (PaaS): Plataforma como Serviço. Trata-se de um tipo de solução mais amplo para determinadas aplicações, incluindo todos (ou quase todos) os recursos necessários à operação, como armazenamento, banco de dados, escalabilidade (aumento automático da capacidade de armazenamento ou processamento), suporte a linguagens de programação, segurança e assim por diante;
- Database as a Service (DaaS): Banco de Dados com Serviço. O nome já deixa claro que esta modalidade é direcionada ao fornecimento de serviços para armazenamento e acesso de volumes de dados. A vantagem aqui é que o detentor da aplicação conta com maior flexibilidade para expandir o banco de dados, compartilhar as informações com outros sistemas, facilitar o acesso remoto por usuários autorizados, entre outros;
- Infrastructure as a Service (IaaS): Infraestrutura como Serviço. Parecido com o conceito de PaaS, mas aqui o foco é a estrutura de hardware ou de máquinas virtuais, com o usuário tendo inclusive acesso a recursos do sistema operacional;
- Testing as a Service (TaaS): Ensaio como Serviço. Oferece um ambiente apropriado para que o usuário possa testar aplicações e sistemas de maneira remota, simulando o comportamento destes em nível de execução.

* Exemplos de aplicações em Cloud Computing

Os termos Cloud Computing e Computação nas Nuvens são relativamente recentes, como você já sabe, mas se analisarmos bem, veremos que a ideia não é, necessariamente, nova. Serviços de e-mail, como Gmail e Yahoo! Mail; discos virtuais na internet, como Dropbox; sites de armazenamento e compartilhamento de fotos ou vídeos, como Flickr e YouTube. Todos são exemplos de aplicações que, de certa forma, estão dentro do conceito de Cloud Computing. Note que todos esses serviços não executam no computador do usuário e este pode acessá-los de qualquer lugar, muitas vezes sem necessidade de instalar aplicativos em sua máquina ou de pagar licenças de software. No máximo, paga-se um valor periódico pelo uso do serviço ou pela contratação de recursos adicionais, como maior capacidade de armazenamento de dados, por exemplo.
Abaixo, uma breve lista de serviços que incorporam bem o conceito de Cloud Computing:
- Google Apps: esse é um pacote de serviços que o Google oferece que contém aplicativos de edição de texto, planilhas e apresentações (Google Docs), serviço de agenda (Google Agenda), comunicador instantâneo integrado (Google Talk), e-mail com o domínio da empresa (por exemplo, contato@infowester.com), entre outros. Todos esses serviços são processados pelo Google e o cliente só precisa criar as contas do usuário. O Google Apps oferece pacotes gratuitos e pagos, de acordo com o número de usuários. Um dos maiores clientes do Google Apps é a Procter & Gamble, que contratou os serviços para mais de 130 mil colaboradores;
- Amazon: a Amazon é um dos maiores serviços de comércio eletrônico do mundo. Para suportar o volume de vendas no período de Natal, a empresa montou uma superestrutura de processamento e armazenamento de dados, que acaba ficando ociosa na maior parte do ano. Foi a partir daí que a companhia teve a ideia de "alugar" esses recursos, com serviços como o Simple Storage Solution (S3), para armazenamento de dados, e Elastic Compute Cloud (EC2), para uso de máquinas virtuais. É possível saber mais sobre as soluções oferecidas pela Amazon nesta página;
- Live Mesh: esta é um tecnologia da Microsoft direcionada ao segmento doméstico. Sua proposta principal é a de permitir que o usuário acesse o seu desktop e seus documentos de qualquer computador, com a diferença de que todos os seus arquivos ficam nas nuvens, isto é, no servidores da Microsoft. Para saber mais sobre esse serviço, veja esta matéria publicada no Blog InfoWester;
- Panda Cloud Antivirus: como o nome indica, este é um programa antivírus da Panda Software, mas com uma grande diferença: a maior parte do trabalho necessário à ferramenta para pesquisar e eliminar malwares fica por conta das "nuvens". Com isso, de acordo com a Panda, essa solução acaba evitando que o antivírus deixe o computador lento;
- Aprex: brasileiro, o Aprex oferece um conjunto de ferramentas para uso profissional, como calendário, gerenciador de contatos, lista de tarefas, disco virtual, blog, serviço de e-mail marketing, apresentações, entre outros. Tudo é feito pela Web e, no caso de empresas, é possível até mesmo inserir logotipo e alterar o padrão de cores das páginas. Há opções de contas gratuitas e pagas.

* Conclusão
Na verdade, qualquer tentativa de definir o que é Cloud Computing pode não ser 100% precisa. Isso porque as ideias por trás da noção de Computação nas Nuvens são muito novas e as opiniões de especialistas em computação ainda divergem. Mas a noção básica é a que foi explicada neste artigo.
É claro que ainda há muita coisa por fazer. Por exemplo, a simples ideia de determinadas informações ficarem armazenadas em computadores de terceiros (no caso, os fornecedores de serviço), mesmo com documentos garantindo a privacidade e o sigilo, preocupam pessoas e, principalmente, empresas, motivo pelo qual esse ponto precisa ser melhor estudado. Além disso, há outras questões, como o problema da dependência de acesso à internet: o que fazer quando a conexão cair? Algumas companhias já trabalham em formas de sincronizar aplicações off-line com on-line, mas tecnologias para isso ainda precisam evoluir bastante.
De qualquer forma, o futuro aponta para esse caminho. Além das mencionadas empresas neste artigo, companhias como Dell, Intel, Oracle e Microsoft já estão trabalhando nas mais variadas soluções para Cloud Computing. Esta última, por exemplo, já até anunciou o Azure, uma plataforma própria para a execução de aplicações nas "nuvens".


Cloud Computing (Computação nas nuvens)

* O que é Cloud Computing (Computação nas nuvens)?

A denominação Cloud Computing é conhecida no Brasil como Computação nas Nuvens ou Computação em Nuvem. Nesse post você entenderá melhor sobre esse conceito.

* Entendendo a Cloud Computing

Estamos habituados a utilizar aplicações instaladas em nossos próprios computadores, assim como a armazenar arquivos e dados dos mais variados tipos neles. No ambiente corporativo, esse cenário é um pouco diferente, já que nele é mais fácil encontrar aplicações disponíveis em servidores que podem ser acessadas por qualquer terminal autorizado por meio de uma rede. A principal vantagem desse modelo está no fato de ser possível, pelo menos na maioria das vezes, utilizar as aplicações mesmo sem acesso à internet ou à rede. Em outras palavras, é possível usar esses recursos de maneira off-line. Entretanto, todos os dados gerados estarão restritos a esse computador, exceto quando compartilhados em rede, coisa que não é muito comum no ambiente doméstico. Mesmo no ambiente corporativo, isso pode gerar algumas limitações, como a necessidade de se ter uma licença de um determinado software para cada computador, por exemplo.
A evolução constante da tecnologia computacional e das telecomunicações está fazendo com que o acesso à internet se torne cada vez mais amplo e cada vez mais rápido. Em países mais desenvolvidos, como Japão, Alemanha e Estados Unidos, é possível ter acesso rápido à internet pagando-se muito pouco. Esse cenário cria a situação perfeita para a popularização da Cloud Computing, embora esse conceito esteja se tornando conhecido no mundo todo, inclusive no Brasil. Com a Cloud Computing, muitos aplicativos, assim como arquivos e outros dados relacionados, não precisam mais estar instalados ou armazenados no computador do usuário ou em um servidor próximo. Esse conteúdo passa a ficar disponível nas "nuvens", isto é, na internet. Ao fornecedor da aplicação cabe todas as tarefas de desenvolvimento, armazenamento, manutenção, atualização, backup, escalonamento, etc. O usuário não precisa se preocupar com nada disso, apenas com acessar e utilizar. Um exemplo prático desta nova realidade é o Google Docs, serviço onde os usuários podem editar textos, fazer planilhas, elaborar apresentações de slides, armazenar arquivos, entre outros, tudo pela internet, sem necessidade de ter programas como o Microsoft Office ou OpenOffice.org instalados em suas máquinas. O que o usuário precisa fazer é apenas abrir o navegador de internet e acessar o endereço do Google Docs para começar a trabalhar, não importando qual o sistema operacional ou o computador utilizado para esse fim. Neste caso, o único cuidado que o usuário deve ter é o de utilizar um navegador de internet compatível, o que é o caso da maioria dos browsers da atualidade. 

* Algumas características da Cloud Computing

Conforme já dito, uma das vantagens da Cloud Computing é a possibilidade de utilizar aplicações diretamente da internet, sem que estas estejam instaladas no computador do usuário. Mas, há outras significativas vantagens:
- na maioria dos casos, o usuário pode acessar determinadas aplicações independente do seu sistema operacional ou de hardware;
- o usuário não precisa se preocupar com a estrutura para executar a aplicação: hardware, procedimentos de backup, controle de segurança, manutenção, entre outros, ficam a cargo do fornecedor do serviço;
- compartilhamento de dados e trabalho colaborativo se tornam mais fáceis, uma vez que todos os usuários acessam as aplicações e os dados do mesmo lugar: a "nuvem". Muitas aplicações do tipo já são elaboradas considerando essas possibilidades;
- dependendo do fornecedor, o usuário pode contar com alta disponibilidade, já que, se por exemplo, um servidor parar de funcionar, os demais que fazem parte da estrutura continuam a oferecer o serviço;
- o usuário pode contar com melhor controle de gastos. Muitas aplicações em Cloud Computing são gratuitas e, quando é necessário pagar, o usuário só o fará em relação aos recursos que usar ou ao tempo de utilização. Não é, portanto, necessário pagar por uma licença integral de uso, tal como acontece no modelo tradicional de fornecimento de software;
- dependendo da aplicação, o usuário pode precisar instalar um programa cliente em seu computador. Mas, neste caso, todo ou a maior parte do processamento (e até mesmo do armazenamento de dados) fica por conta das "nuvens".
Note que, independente da aplicação, com a Cloud Computing o usuário não necessita conhecer toda a estrutura que há por trás, ou seja, ele não precisa saber quantos servidores executam determinada ferramenta, quais as configurações de hardware utilizadas, como o escalonamento é feito, onde está a localização física do datacenter, enfim. O que importa ao usuário é saber que a aplicação está disponível nas nuvens, não importa de que forma.


(...) Continua no próximo post.