Sistema operativo
Origem: Wikipédia, a enciclopédia livre.
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).
Índice |
[editar] História
Na primeira geração de computadores (aproximadamente 1945-1955), os computadores eram tão grandes que ocupavam salas imensas. Foram 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. Nomes como Howard Aiken (Harvard), John von Neumann (Instituto de Estudos Avançados de Princeton), John Adam Presper Eckert Jr e William Mauchley (Universidade da Pennsylvania) e Konrad Zuse (Alemanha) formaram, com suas contribuições, a base humana para o sucesso na construção dos computadores primitivos.
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).
| Esta página ou secção foi marcada para revisão, devido a inconsistências e/ou dados de confiabilidade duvidosa. Se tem algum conhecimento sobre o tema, por favor verifique e melhore a consistência e o rigor deste artigo. Considere utilizar {{revisão-sobre}} para associar este artigo com um WikiProjeto. |
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.
[editar] 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.
[editar] Funcionamento
Um sistema operacional possui as seguintes funções:
- gerenciamento de processos;
- gerenciamento de memória;
- sistema de arquivos;
- entrada e saída de dados.
[editar] 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.
[editar] 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:
- 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);
- prover proteção da memória para impedir que um processo utilize um endereço de memória que não lhe pertença;
- possibilitar que uma aplicação utilize mais memória do que a fisicamente existente.
[editar] 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.
[editar] 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.
[editar] Exemplos de Sistemas Operacionais
[editar] 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.
[editar] Ver também
- Pseudo-Sistema Operacional
- Sistema distribuído
- Lista de sistemas operativos
- Inter-Process Communication
- Sistemas Operacionais On-line
- Sistema operacional em disco
| Este artigo é um esboço sobre Informática. Você pode ajudar a Wikipédia expandindo-o. |

