quarta-feira, 28 de outubro de 2009

Página de Rosto

Índice

  • Introdução de Sistemas Operacionais
  • A Espinha Dorsal do Sistema Operacional
  • História
  • O que um sistema operacional faz?
  • Funcionamento
  • Quais são os tipos de sistemas operacionais?
  • Interface de uso

Sistemas Operacionais

Introdução de sistemas operacionais

Se você tem um computador, já ouviu falar sobre os sistemas operacionais. Qualquer computador de mesa ou laptop que você compra normalmente já vem com o Windows instalado. Já os computadores Macintosh rodam o sistema operacional OS X. Muitos servidores corporativos utilizam os sistemas operacionais Linux ou UNIX. O sistema operacional (SO) é a primeira coisa que o computador carrega. Sem um sistema desse tipo, o computador se torna inútil.

Recentemente começaram a surgir sistemas operacionais para pequenos computadores. Se você gosta de investigar os dispositivos eletrônicos, vai descobrir que existem sistemas operacionais em dispositivos que usamos todos os dias, de celulares a pontos de acesso sem fios. Os computadores utilizados nestes pequenos dispositivos se tornaram tão poderosos que hoje eles podem até rodar um sistema operacional e aplicativos. Um computador de um celular moderno é mais poderoso do que um computador de mesa há 20 anos. Esta evolução é coerente e faz parte de um processo de desenvolvimento natural. Geralmente, você pode fazer alterações no funcionamento de qualquer dispositivo que rode um sistema operacional. Isto não é uma feliz coincidência. Como os sistemas operacionais são feitos de códigos portáveis, em vez de circuitos físicos permanentes, eles podem ser alterados sem que seja necessário descartar o dispositivo inteiro.

A espinha dorsal do sistema operacional

Nem todos os computadores têm sistemas operacionais. O computador que controla o forno de microondas da sua cozinha, por exemplo, não precisa de um. Um forno de microondas realiza um conjunto bastante específico de tarefas e as informações de entrada são bastante simples (um teclado numérico e alguns botões com ações pré-definidas). O hardware também é simples e nunca muda. Para um computador como esse, um sistema operacional seria completamente desnecessário. Isso aumentaria os custos de desenvolvimento e produção e complicaria um processo que é bastante simples. O computador de um forno de microondas sempre executa o mesmo programa codificado por hardware.

Em outros dispositivos, o sistema operacional cria a possibilidade de:

  • realizar uma variedade de tarefas;
  • interagir com os usuários de forma complexa;
  • acompanhar as necessidades que mudam com o tempo.

Todos os computadores de mesa têm sistemas operacionais. Os mais comuns são os da família Windows, da Microsoft, o OS X, sistema operacional do Macintosh desenvolvido pela Apple, o Linux, sistema operacional desenvolvido por Linus Torvalds e pela comunidade de desenvolvedores de software open source, e a família UNIX de sistemas operacionais (que foram desenvolvidos por uma série de pessoas, empresas e colaboradores). Existem ainda centenas de outros sistemas operacionais desenvolvidos para aplicações específicas como mainframes, robótica, manufatura, sistemas de controle em tempo real e etc.


História

Um dos primeiros sistemas operacionais de propósito geral foi o CTSS, desenvolvido no MIT. Após o CTSS, o MIT, os laboratórios Bell da AT&T e a General Eletric desenvolveram o Multics, cujo objetivo era suportar centenas de usuários. Apesar do fracasso comercial, o Multics serviu como base para o estudo e desenvolvimento de sistemas operacionais. Um dos desenvolvedores do Multics, que trabalhava para a Bell, Ken Thompson, começou a reescrever o Multics num conceito menos ambicioso, criando o Unics (em 1969), que mais tarde passou a chamar-se Unix. Os sistemas operacionais eram geralmente programandos em assembly, até mesmo o Unix em seu início. Então, Dennis Ritchie (também da Bell) criou a linguagem C a partir da linguagem B, que havia sido criada por Thompson. Finalmente, Thompson e Ritchie reescreveram o Unix em C. O Unix criou um ecossistema de versões, onde destacam-se: System V e derivados (HP-UX, AIX); família BSC (FreeBSD, NetBSD, OpenBSD, etc.), Linux e até o Mac OS X (que deriva do Mach e FreeBSD).

Na década de 1970, quando começaram a aparecer os computadores pessoais, houve a necessidade de um sistema operacional de utilização mais fácil. Em 1980, William (Bill) Gates e seu colega de faculdade, Paul Allen, fundadores da Microsoft, compram o sistema QDOS ("Quick and Dirty Operating System") de Tim Paterson por $50.000, batizam-no de DOS (Disk Operating System) e vendem licenças à IBM. O DOS vendeu muitas cópias, como o sistema operacional padrão para os computadores pessoais desenvolvidos pela IBM. IBM e Microsoft fariam, ainda, uma parceria para o desenvolvimento de um sistema operacional multitarefa chamado OS/2. Após o fim da breve parceria a IBM seguiu sozinha no desenvolvimento do OS/2.
No começo da década de 1990, um estudante de computação finlandês postou um comentário numa lista de discussão da Usenet dizendo que estava desenvolvendo um kernel de sistema operacional e perguntou se alguém gostaria de auxiliá-lo na tarefa. Este estudante chamava-se Linus Torvalds e o primeiro passo em direção ao tão conhecido Linux foi dado naquele momento.

O que um sistema operacional faz?

No nível mais simples, o sistema operacional realiza duas tarefas:

  1. Gerencia os recursos de hardware e software do sistema. Em um computador de mesa, esses recursos incluem o processador, a memória, o espaço em disco etc. Em um telefone celular, o sistema operacional gerencia o teclado, a tela, a agenda, a bateria e a conexão de rede;
  2. Proporciona uma maneira estável e consistente para lidar com o hardware, sem ter de conhecer todos os detalhes do hardware.

A primeira tarefa, ou seja, o gerenciamento de recursos de software e hardware é uma tarefa extremamente importante. Diversos programas e métodos de entrada de dados competem pela atenção da CPU (Unidade Central de Processamento) e demandam memória, espaço em disco e largura de banda de entrada/saída. O sistema operacional faz o papel do bom pai. Ele cuida para que cada aplicativo tenha os recursos necessários para o funcionamento e gerencia a capacidade limitada do sistema para atender a todos os usuários e aplicativos.

A segunda tarefa é fornecer uma interface consistente para os aplicativos. A interface é especialmente importante se mais de um tipo de computador utiliza o sistema operacional ou se o hardware do computador é constantemente atualizado. Uma API (Application Program Interface - Interface de Programação de Aplicativos) permite que o desenvolvedor do software escreva um programa em um computador e tenha um alto nível de segurança de que este aplicativo vai rodar em outro computador do mesmo tipo, mesmo que a quantidade de memória e a área de armazenamento sejam diferentes.

Mesmo que um computador seja único, um sistema operacional assegura que os aplicativos continuem funcionando após as atualizações de hardware. Isso acontece porque é o sistema operacional, e não o aplicativo, que gerencia o hardware e a distribuição dos seus recursos. Um dos desafios do desenvolvedor de sistemas operacionais é criar um sistema flexível o suficiente para reconhecer hardwares de milhares de fabricantes diferentes. Os sistemas atuais podem acomodar milhares de impressoras, drivers e periféricos especiais em qualquer combinação possível.

Funcionamento

Um sistema operacional possui as seguintes funções:

  1. gerenciamento de processos;
  2. gerenciamento de memória;
  3. sistema de arquivos;
  4. entrada e saída de dados.

Gerenciamento de processos

O sistema operacional multitarefa é preparado para dar ao usuário a ilusão que o número de processos em execução simultânea no computador é maior que o número de processadores instalados. Cada processo recebe uma fatia do tempo e a alternância entre vários processos é tão rápida que o usuário pensa que sua execução é simultânea.

São utilizados algoritmos para determinar qual processo será executado em determinado momento e por quanto tempo.

Os processos podem comunicar-se, isto é conhecido como IPC (Inter-Process Communication). Os mecanismos geralmente utilizados são:

  • sinais,
  • pipes,
  • named pipes,
  • memória compartilhada,
  • soquetes (sockets),
  • semáforos,
  • trocas de mensagens.

O sistema operacional, normalmente, deve possibilitar o multiprocessamento (SMP ou NUMA). Neste caso, processos diferentes e threads podem ser executados em diferentes processadores. Para essa tarefa, ele deve ser reentrante e interrompível, o que significa que pode ser interrompido no meio da execução de uma tarefa.

Gerenciamento de memória

O sistema operacional tem acesso completo à memória do sistema e deve permitir que os processos dos usuários tenham acesso seguro à memória quando o requisitam.

Vários sistemas operacionais usam memória virtual, que possui 3 funções básicas:

  1. assegurar que cada processo tenha seu próprio espaço de endereçamento, começando em zero, para evitar ou resolver o problema de relocação (Tanenbaum, 1999);
  2. prover proteção da memória para impedir que um processo utilize um endereço de memória que não lhe pertença;
  3. possibilitar que uma aplicação utilize mais memória do que a fisicamente existente.

Sistema de arquivos

A memória principal do computador é volátil, e seu tamanho é limitado pelo custo do hardware. Assim, os usuários necessitam de algum método para armazenar e recuperar informações de modo permanente.

Um arquivo é um conjunto de bytes, normalmente armazenado em um dispositivo periférico não volátil (p.ex., disco), que pode ser lido e gravado por um ou mais processos.

O sistema de arquivos é a estrutura que permite o gerenciamento de arquivos—criação, destruição, leitura, gravação, controle de acesso, etc.

Quais são os tipos de sistemas operacionais?


Existem 4 tipos básicos de sistemas operacionais. Eles são divididos em grupos relacionados com o tipo de computador que controlam e o tipo de aplicativos que suportam. Estas são as categorias mais abrangentes:

  • sistema operacional de tempo real (RTOS - Real-time operating system). É utilizado para controlar máquinas, instrumentos científicos e sistemas industriais. Geralmente um RTOS não tem uma interface para o usuário muito simples e não é destinado para o usuário final, desde que o sistema é entregue como uma "caixa selada". A função do RTOS é gerenciar os recursos do computador para que uma operação específica seja sempre executada durante um mesmo período de tempo. Numa máquina complexa, se uma parte se move mais rapidamente só porque existem recursos de sistema disponíveis, isto pode ser tão catastrófico quanto se uma parte não conseguisse se mover porque o sistema está ocupado.
  • monousuário, monotarefa. O sistema operacional foi criado para que um único usuário possa fazer uma coisa por vez. O Palm OS dos computadores Palm é um bom exemplo de um moderno sistema operacional monousuário e monotarefa.
  • monousuário, multitarefa. Este tipo de sistema operacional é o mais utilizado em computadores de mesa e laptops. As plataformas Microsoft Windows e Apple MacOS são exemplos de sistemas operacionais que permitem que um único usuário utilize diversos programas ao mesmo tempo. Por exemplo, é perfeitamente possível para um usuário de Windows escrever uma nota em um processador de texto ao mesmo tempo em que faz download de um arquivo da Internet e imprime um e-mail.
  • multiusuário. Um sistema operacional multiusuário permite que diversos usuários utilizem simultaneamente os recursos do computador. O sistema operacional deve se certificar de que as solicitações de vários usuários estejam balanceadas. Cada um dos programas utilizados deve dispor de recursos suficientes e separados, de forma que o problema de um usuário não afete toda a comunidade de usuários. Unix, VMS e sistemas operacionais mainframe como o MVS são exemplos de sistemas operacionais multiusuário.

Tela do sistema operacional Mac OS X Panther



É importante diferenciar os sistemas operacionais multiusuário dos sistemas operacionais monousuário que suportam rede. O Windows Server e o Novell Open Enterprise Server podem suportar centenas ou milhares de usuários em rede, mas os sistemas operacionais em si não são sistemas multiusuário de verdade. O administrador do sistema é o único "usuário" do Windows Server ou do Novell Open Enterprise Server. O suporte à rede e todos os usuários remotos são, do ponto de vista do sistema operacional, um programa sendo executado pelo administrador.


Interface de Uso

Os sistemas operacionais fornecem abstração de hardware para que seus recursos possam ser usados de maneira correta e padronizada, mas para ser possível operar um computador, é necessário fornecer também uma interface para que o usuário possa desfrutar dos recursos do sistema. Atualmente existem dois tipos de interface: o GUI (graphical user interface), conhecida também por interface gráfica, e o CUI (command-line interface), sendo essa mais conhecida como interface de linha de comando.

GUI (Graphical user interface)

Nesse tipo de interface, o usuário tem a disposição um ambiente de trabalho composto por menus, ícones, janelas e outros itens disponíveis. O usuário interage com esse tipo de interface usando o mouse, podendo também usar o teclado e teclas de atalho. É possível fazer todo tipo de tarefa usando interface gráfica, como edição de vídeos e imagens, sendo somente alguns tipos muito específicos de tarefas que se saem melhor em linha de comando. Acrescentar facilidade de uso e agilidade é o objetivo da GUI, tendo a desvantagem de consumir muito mais memória que interfaces de linha de comando. Em sistemas unix-likes, existe a possibilidade de escolher o gerenciador de janelas a utilizar, aumentando em muito a liberdade de escolha do ambiente.


CUI (Command-line user interface)

Além da interface gráfica, existe a interface de linha de comando, que funciona basicamente com a digitação de comandos, sendo nesse relativamente pouco interativa. Os comandos digitados são interpretados por um interpretador de comandos, conhecidos também por shells, bastante comuns em sistemas unix-likes. Um exemplo de interpretador de comandos seria o Bash. Usada geralmente por usuários avançados e em atividades específicas, como gerenciamento remoto, utiliza poucos recursos de hardware em comparação a interface gráfica. Nesse tipo de ambiente, raramente se usa o mouse, embora seja possível através do uso da biblioteca ncurses no desenvolvimento dos softwares.


Bibliografia

  • Introdução de sistemas operacionais

http://informatica.hsw.uol.com.br

  • A espinha dorsal do Sistema Operacional

http://informatica.hsw.uol.com.br/

  • História

http://pt.wikipedia.org

  • O que um sistema operacional

http://informatica.hsw.uol.com.br

  • Funcionamento

http://pt.wikipedia.org

  • Quais são os tipos de sistemas operacionais?

http://informatica.hsw.uol.com.br

  • Interface de Uso

http://pt.wikipedia.org