Saltar para o conteúdo

Sistema operativo: diferenças entre revisões

Origem: Wikipédia, a enciclopédia livre.
Conteúdo apagado Conteúdo adicionado
m Revertidas edições por 200.211.58.130 para a última versão por Al Lemos (Huggle)
Linha 9: Linha 9:


==História==
==História==
Carlos zucaCarlos zucaCarlos zucaCarlos zucaCarlos zucaCarlos zuca

Na primeira geração de computadores (aproximadamente 1945-1955), que eram basicamente construídos com válvulas e painéis, os sistemas operacionais "não existiam". Os programadores, que também eram os operadores, controlavam o computador por meio de chaves, fios e luzes de aviso.
Na primeira geração de computadores (aproximadamente 1945-1955), que eram basicamente construídos com válvulas e painéis, os sistemas operacionais "não existiam". Os programadores, que também eram os operadores, controlavam o computador por meio de chaves, fios e luzes de aviso.



Revisão das 12h52min de 5 de fevereiro de 2009

Estimativa do uso atual de sistemas operativos segundo uma amostra de computadores com acceso a Internet (Fonte: W3counter).

Um sistema operativo (português europeu) ou sistema operacional (português brasileiro) é um programa ou um conjunto de programas cuja função é servir de interface entre um computador e o usuário.

Segundo alguns autores (Silberschatz et al, 2005; Stallings, 2004; Tanenbaum, 1999), existem dois modos distintos de conceituar um sistema operacional:

  • pela perspectiva do usuário ou programador (visão top-down): é uma abstração do hardware, fazendo o papel de intermediário entre o aplicativo (programa) e os componentes físicos do computador (hardware); ou
  • numa visão bottom-up, de baixo para cima: é um gerenciador de recursos, i.e., controla quais aplicações (processos) podem ser executadas, quando, que recursos (memória, disco, periféricos) podem ser utilizados.

A sigla usual para designar esta classe de programas é SO (em português) ou OS (do inglês Operating System).

História

Carlos zucaCarlos zucaCarlos zucaCarlos zucaCarlos zucaCarlos zuca Na primeira geração de computadores (aproximadamente 1945-1955), que eram basicamente construídos com válvulas e painéis, os sistemas operacionais "não existiam". Os programadores, que também eram os operadores, controlavam o computador por meio de chaves, fios e luzes de aviso.

Na geração seguinte (aproximadamente 1955-1965), foram criados os sistemas em lote (batch systems), que permitiram melhor uso dos recursos computacionais. A base do sistema operacional era um programa monitor, usado para enfileirar tarefas (jobs). O usuário foi afastado do computador; cada programa era escrito em cartões perfurados, que por sua vez eram carregados, juntamente com o respectivo compilador (normalmente Fortran ou Cobol), por um operador, que por sua vez usava uma linguagem de controle chamada JCL (job control language).

No início da computação os primeiros sistemas operacionais eram únicos, pois cada mainframe vendido necessitava de um sistema operacional específico. Esse problema era resultado de arquiteturas diferentes e da linguagem de máquina utilizada. Após essa fase, iniciou-se a pesquisa de sistemas operacionais que automatizassem a troca de tarefas (jobs), pois os sistemas eram monousuários e tinham cartões perfurados como entrada (eliminando, assim, o trabalho de pessoas que eram contratadas apenas para trocar os cartões perfurados).

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 BSD (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.

Visão geral

Um sistema operativo pode ser visto como um programa de grande complexidade que é responsável por todo o funcionamento de uma máquina desde o software a todo hardware instalado na máquina. Todos os processos de um computador estão por de trás de uma programação complexa que comanda todas a funções que um utilizador impõe à máquina. Existem vários sistemas operativos; entre eles, os mais utilizados no dia a dia, normalmente utilizados em computadores domésticos, são o Windows, Linux, OS/2 e Mac OS X.

Um computador com o sistema operativo instalado poderá não dar acesso a todo o seu conteúdo dependendo do utilizador. Com um sistema operativo, podemos estabelecer permissões a vários utilizadores que trabalham com este. Existem dois tipos de contas que podem ser criadas num sistema operativo, as contas de Administrador e as contas limitadas. A conta Administrador é uma conta que oferece todo o acesso à máquina, desde a gestão de pastas, ficheiros e software de trabalho ou entretenimento ao controlo de todo o seu Hardware instalado. A conta Limitada é uma conta que não tem permissões para aceder a algumas pastas ou instalar software que seja instalado na raiz do sistema ou então que tenha ligação com algum Hardware que altere o seu funcionamento normal ou personalizado pelo Administrador. Para que este tipo de conta possa ter acesso a outros conteúdos do disco ou de software, o administrador poderá personalizar a conta oferecendo permissões a algumas funções do sistema como também poderá retirar acessos a certas áreas do sistema.

O sistema operativo funciona com a iniciação de processos que este irá precisar para funcionar correctamente. Esses processos poderão ser ficheiros que necessitam de ser frequentemente actualizados, ou ficheiros que processam dados úteis para o sistema. Poderemos ter acesso a vários processos do sistema operativo a partir do gestor de tarefas, onde se encontram todos os processos que estão em funcionamento desde o arranque do sistema operativo até a sua utilização actual. Pode-se também visualizar a utilização da memória por cada processo, no caso de o sistema operativo começar a mostrar erros ou falhas de acesso a programas tornando-se lento, pode-se verificar no gestor de tarefas qual dos processos estará bloqueado ou com elevado número de processamento que está a afectar o funcionamento normal da memória.

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.

Classificações

Em relação ao seu projeto (arquitetura), segundo Tanenbaum (1999):

  • Kernel monolítico ou monobloco: o kernel consiste em um único processo executando numa memória protegida (espaço do kernel) executando as principais funções. Ex.: OS/2, Windows, Linux, FreeBSD.
  • Microkernel ou modelo cliente-servidor: o kernel consiste de funções mínimas (comunicação e gerenciamento de processos), e outras funções, como sistemas de arquivos e gerenciamento de memória, são executadas no espaço do usuário como serviços; as aplicações (programas) são os clientes. Ex.: GNU Hurd, Mach.
  • Sistema em camadas: funções do kernel irão executar em camadas distintas, de acordo com seu nível de privilégio. Ex.: Multics.
  • Monitor de máquinas virtuais: fornece uma abstração do hardware para vários sistemas operacionais. Ex.: VM/370, VMware, Xen.

Quanto à capacidade de processamento, pode-se usar a seguinte classificação:

  • Monotarefa: pode-se executar apenas um processo de cada vez Ex.: MS-DOS.
  • Multitarefa: além do próprio SO, vários processos de utilizador (tarefas) estão carregados em memória, sendo que um pode estar ocupando o processador e outros ficam enfileirados, aguardando a sua vez. O compartilhamento de tempo no processador é distribuído de modo que o usuário tenha a impressão que vários processos estão sendo executados simultaneamente. Ex: OS/2, Windows, Linux, FreeBSD e o Mac OS X.
  • Multiprocessamento: o SO distribui as tarefas entre dois ou mais processadores.
  • Multiprogramação: o SO divide o tempo de processamento entre vários processos mantendo o processador sempre ocupado.

Referências

  • BACH, Maurice J. The design of the Unix operating system. Upper Saddle River: Prentice Hall. 1990.
  • BOVET Daniel P.; CESATI, Marco. Understanding de Linux kernel. 3.ed. Sebastopol: O'Reilly. 2005.
  • MCKUSICK, Marshall K.; NEVILLE-NEIL, George V. The design and implementation of the FreeBSD operating system. Upper Saddle River: Addison-Wesley. 2004.
  • RUSSINOVITCH, Mark E.; SOLOMON, David A. Microsoft Windows internals. 4.ed. Redmond: Microsoft Press. 2005.
  • SILBERSCHATZ, Avi; GALVIN, Peter B.; GAGNE, Greg. Operating system concepts. 7.ed. Hoboken: Wiley. 2005.
  • STALLINGS, William. Operating systems: internals and design principles. 5.ed. Upper Saddle River: Pearson Prentice Hall. 2004.
  • TANENBAUM, Andrew. Sistemas operacionais modernos. Rio de Janeiro: LTC. 1999.

Ver também

Ícone de esboço Este artigo sobre informática é um esboço. Você pode ajudar a Wikipédia expandindo-o.

Predefinição:Link FA