“Os sistemas operacionais existem porque espera-se que a computação seja mais fácil com eles do que sem eles”                                          Abraham Silberschatz

 

Este é o primeiro de uma série de 3 artigos que tentam mostrar de forma resumida o que seria um S.O. e como eles geralmente são compostos, além de mostrar uma visão histórica da evolução de tais sistemas.

Introdução

Quando perguntam para você que S.O. você utiliza, logo vem a resposta: Windows, Linux ou Mac. E se lhe pedirem para definir o que é um S.O. você saberia responder?

Neste artigo ficará claro que não utilizamos diretamente um S.O. e qual é sua verdadeira finalidade. Também será esclarecido que não existe um definição absoluta sobre o que é um S.O. e porque é mais fácil entendê-lo pelo que ele faz do que pelo que ele é.

O que seria um Sistema Operacional?

A principal finalidade de um sistema computacional é executar software. Com o software o computador torna-se útil para os usuários, pois é através dele que navegamos na Internet, escrevemos nossos documentos, salvamos e editamos nosso arquivos e outras inúmeras atividades que justificam o seu uso. O software pode ser divido, segundo [2], em duas linhas:

programas de sistema: têm a finalidade de gerenciamento dos recursos utilizados (memória, CPU, dispositivos de I/O). Geralmente ficam na retaguarda e são imperceptíveis aos usuários. Exemplos deste tipo de programas são os S.O.s;

programas aplicativos: executam as tarefas que os usuários desejam. São os programas que os usuários utilizam diretamente. Exemplos deste tipo de programas são navegadores web (Firefox, Opera, Internet Explorer), editores de texto (BrOffice Writer, MS Office Word), jogos e demais programas que você utiliza no seu computador.

Um sistema de computador pode ser bastante complexo, pois pode conter um ou mais processadores, alguns milhares de bytes de memória, discos rígidos, impressoras, placas de rede e outros dispositivos de entrada e saída(I/O). Escrever programas que lidam de forma correta e segura com toda essa complexidade juntamente com dificuldade associada ao desenvolvimento de software é algo bastante difícil e trabalhoso de ser feito (programar em Assembly é um saco!). Devido a todos esses problemas encontrados pelos programadores, ao longo dos anos ficou evidente a necessidade de encontrar uma maneira de isolar o hardware do software (programas aplicativos). Como uma solução a essa necessidade forma criados os Sistemas Operacionais.

Definição de sistema operacional.

Existem muitas definições diferentes na literatura sobre o que é um S.O. Na realidade, os próprios autores da área reconhecem que não existe uma definição unânime sobre o que é um S.O. A seguir serão mostradas algumas das definições mais aceitas.

Tanenbaum & Woodhull (2000, p. 17) define um sistema operacional como “o programa de sistema mais fundamental de um sistema computacional”. Já [1] diz que tais sistemas “servem simplesmente para proporcionar um ambiente no qual os outros programas possam desempenhar tarefas úteis”.

Os dois autores propõem que um sistema operacional pode ser visto de maneiras diferentes dependendo de quem está olhando. As definições de ambos os autores são semelhantes, mas valem a pena ser citadas.

Para [2] um S.O. pode ser visto como

uma máquina estendida ou máquina virtual que é mais fácil de programar, escondendo do programador a verdade sobre o hardware;

como gerenciador de recursos, onde o S.O. existe para gerenciar todas as partes de um sistema complexo e seus recursos (memória, CPU, dispositivos de I/O).

[1] diz que um S.O. pode ser compreendido segundo dois pontos de vista:

do ponto de vista do usuário: onde a perspectiva que o usuário tem em relação ao S.O. muda dependendo da interface que estiver sendo utilizada para a comunicação entre o usuário e o sistema computacional. Pense nas diferenças que um S.O.s voltada a usuários de PCs e um S.O. voltada para servidores. Os S.O.s de PCs são projetados com maior ênfase na facilidade de utilização e intereção com os usuários, possuem interfaces mais ricas e diversificadas; os S.O.s projetados para servidores tem uma maior cuidado na alocação e disponibilidade dos recursos, muitas vezes utilizam-se de recursos que os tornam tolerantes a falhas (sistemas distribuídos e clusters, por exemplo) e deixam de lado a questão da interação com o usuário (geralmente servidores não possuem interfaces gráficas);

do ponto de vista do sistema: “o S.O. é o programa mais íntimo do hardware. Ele funciona como um alocador de recursos. Ao lidar com solicitações por recursos numerosos e possivelmente concorrentes, o S.O. precisa decidir como alocar tais recursos a programas e usuário específicos de modo que o sistema de computação possa ser operado com eficiência e justiça.” Silberschatz et al (2004, p. 4).

Assim, segundo [1], a definição mais comum é que o S.O. é o programa que permanece em execução no computador durante todo o tempo em que o computador está ligado, ou seja, o que é conhecido como kernel. Os demais programas seriam todos programas aplicativos.

Serviços oferecidos por um Sistema Operacional

Segundo [1], é mais fácil definir um sistema operacional pelo que ele faz do que pelo que ele é, mas mesmo isso pode ser complicado. Todos os S.O.s tem alguns serviços em comum, que geralmente são:

Execução de programas;

meios para a realização de operações de I/O;

manipulação de arquivos e diretórios de forma transparente;

permitir a comunicação de forma segura e sincronizada entre os programas que estão sendo executados;

detecção e tratamento de possíveis erros;

Todos estes serviços são destinados aos programadores, tornando mais fácil a tarefa de programar.

CONCLUSÃO

Um S.O. é um programa de sistema bastante complexo. Sua principal finalidade é abstrair o hardware dos programadores e dos aplicativos. Eles ficam na retaguarda, cuidando para que o sistema computacional funcione corretamente. Bons S.O.s passam desapercebidos pelos usuários e facilitam a vida dos programadores.

Não existe uma definição universalmente aceita sobre o que é ou o que deve compor um S.O. Um S.O. pode assumir papéis e ter composições diferentes dependendo de para quem foi projetado ou quem o utiliza.

Espero que tenham gostado dessa parte inicial de uma resumida introdução sobre sistemas operacionais.

Para poder entender de uma forma mais completa um S.O. e como ele vem ajudando todos nós, desenvolvedores e usuários, devemos procurar entender como eles se desenvolveram durante todos esses anos, mas isso é uma assunto a ser tratado em um outro artigo.

 

REFERÊNCIAS:

[1] Abraham Silberschatz et al. Fundamentos de Sistemas Operacionais – 6ª edição, Livros Técnicos e Científicos (LTC), 2004.

[2] Andrew S. Tanenbaum & Albert S. Woodhull, Sistemas Operacionais: Projeto e implementação – 2ª edição. Bookman, 2000

Anúncios