12. Sistema Operacional - A Alma do Computador

Um computador, visto somente como um gabinete composto de circuitos eletrônicos, cabos e fontes de alimentação (hardware), não tem nenhuma utilidade. É através de programas (software) que o computador consegue armazenar dados em discos, imprimir relatórios, gerar gráficos, realizar cálculos, entre outras funções.(Machado e Maia, 1997)

De forma simplificada o computador pode ser considerado como uma máquina de níveis, ou camadas, onde o hardware ocuparia o primeiro nível, seguido do sistema operacional e finalmente os utilitários e aplicativos permitindo o seu uso pelos usuários.

Figura 62. Visão do computador como uma máquina de níveis.

Visão do computador como uma máquina de níveis.


O sistema operacional é um conjunto de programas que permite ao usuário utilizar os recursos do sistema (processador, memória, discos, impressoras etc) e gerencia o compartilhamento dos recursos entre diferentes tarefas e usuários de forma organizada. O compartilhamento de recursos permite, por exemplo, que mais de um usuário possa utilizar concorrentemente, discos, impressoras, linhas de comunicação etc.(Machado e Maia, 1997)

Utilitários são todos os programas que realizam tarefas de uso rotineiro, tais como listar o conteúdo de um diretório "ls", copiar arquivos "cp", cirar diretórios "mkdir" etc, assim como os compiladores interpretadores, depuradores etc, usados no desenvolvimento de outros programas.

Aplicativos são os programas usados pelos usuários para tarefas específicas, editores de texto (emacs), navegadores (Netscape), programas para manipulação de imagens (Gimp), programas para automação etc.

12.1. O Sistema Operacional GNU/Linux

12.1.1. Unix -> Minix -> Linux

Antes de falar do Linux, vamos voltar às origens e falar do Unix e do Minix.

Na década de 60 o MIT (Massachussets Institute of Technology), a Bell Labs (subsidiária da AT&T) e a General Electric (GE) se uniram para desenvolver o sistema operacional MULTICS (MULTiplexed Information and Computing Service), o qual não foi levado adiante. E teria ficado quase que totalmente esquecido se Ken Thompson, um dos pesquisadores da Bell Labs, não tivesse usado o MULTICS para desenvolver o UNICS (UNiplexed Information and Computing Service), posteriormente chamado Unix.

O sistema Unix foi inicialmente desenvolvido com a linguagem assembly. Em 1972 Thompson e Dennis Ritchie, também da Bell Labs, reescreveram o sistema usando uma linguagem chamada B. Essa linguagem foi posteriormente modificada, dando origem à linguagem C, na qual, mais tarde, o Unix seria todo reescrito.

Mesmo tendo criado e desenvolvido o Unix, a AT&T não podia comercializá-lo na época devido às leis americanas antimonopólio, que impediam seu envolvimento no mercado de computadores. Apesar dessa limitação, a AT&T manteve a licença para o Unix mas distribuiu o sistema operacional para as universidades, incluindo o código fonte, por uma taxa nominal. Por isso o Unix se difundiu rapidamente no ambiente acadêmico. (Machado e Maia, 1997)

A partir de 1984, a AT&T foi autorizada pelo governo americano a comercializar o sistema que tinha desenvolvido com o todo o respaldo da legislação de direito autoral. Nessa ocasião as universidades não tinham recursos para pagar pela licença de uso do Unix e os pesquisadores não queriam ter sua liberdade acadêmica limitada por direitos autorais e por isso alguns pesquisadores iniciaram o desenvolvimento de alternativas gratuitas para o Unix.

Com esse objetivo, Andrew Tannenbaum desenvolveu o Minix como um clone (gratuito) do Unix que não utilizava código-fonte do Unix e portanto não infringia os direitos autorais da AT&T.

O Linux nasceu como o projeto de um único homem, Linus Torvalds (na ocasião, um estudante da Universidade da Finlândia em Helsinque) que queria sua própria alternativa para o Minix, nas suas próprias palavras, "um Minix melhor que o Minix".

Figura 63. Linus Torvalds aos 35 anos, criador do kernel Linux (Fonte: Wikipedia) e o piguim Tux, mascote do Linux. (Fonte: Wikipedia)

Linus Torvalds aos 35 anos, criador do kernel Linux (Fonte: Wikipedia) e o piguim Tux, mascote do Linux. (Fonte: Wikipedia)


No dia 5 de outubro de 1991 Linus Torvalds anunciou a primeira versão "oficial" do Linux, versão 0.02. Desde então muitos programadores têm se envolvido no projeto, e têm ajudado a fazer do Linux o sistema operacional que é hoje.

12.1.2. Stallman -> FSF -> GNU

Não podemos falar do Linux sem falar de Richard Stallman, da Free Software Foundation (FSF) e do projeto GNU.

O esforço da comunidade acadêmica para criar alternativas ao Unix acabou levando à criação da FSF liderada por Richard Stallman. A FSF é uma organização sem fins lucrativos, fundada em 1985 e que se dedica criar uma infra-estrutura legal para garantir a liberdade sobre a cópia, redistribuição, entendimento e modificação de programas de computadores. A filosofia da FSF pode ser resumida nas palavras do próprio Stallman: "eu acredito que a regra de ouro exige que, se eu gosto de um programa, preciso compartilhá-lo com outras pessoas que gostam dele"

A FSF desenvolveu a General Public License (GPL - Licença Pública Geral) que estabelece 4 liberdades:

  1. A liberdade de executar o programa, para qualquer propósito (liberdade n nº 0)

  2. A liberdade de estudar como o programa funciona e adaptá-lo para as suas necessidades (liberdade nº 1). O acesso ao código-fonte é um pré-requisito para esta liberdade.

  3. A liberdade de redistribuir cópias de modo que você possa ajudar ao seu próximo (liberdade nº 2).

  4. A liberdade de aperfeiçoar o programa, e liberar os seus aperfeiçoamentos, de modo que toda a comunidade se beneficie deles (liberdade nº 3). O acesso ao código-fonte é um pré-requisito para esta liberdade.

Importante notar que não necessariamente código-fonte aberto corresponde a software gratuito. Se um software estiver sob a licença GPL, ele pode ser vendido por qualquer valor. A única restrição é que as fontes devem ser disponibilizadas, e a pessoa que recebe o software passa a ter todos os direitos sobre ele (Renata Apgaua, 2004).

Stallman começou a trabalhar no projeto Not Unix um sistema operacional que deveria ser compatível com o sistema operacional UNIX, porém não deveria utilizar-se do código fonte do UNIX. Stallman escolheu o nome GNU porque este nome, além do significado original do mamífero Gnu, é um acrônimo recursivo de: GNU is Not Unix (em português: GNU não é Unix).

A partir de 1984 Stallman e vários programadores, que abraçaram a causa, desenvolveram as peças principais de um sistema operacional, como compilador de linguagem C, editores de texto, etc.

Em 1991 o sistema operacional já estava quase pronto, mas faltava o principal, que é o kernel (núcleo) do sistema operacional. O grupo liderado por Stallman estava desenvolvendo um kernel chamado Hurd. Porém, em 1991, aconteceu algo que mudou o rumo da História: Linus Torvalds entra em cena com um kernel que poderia usar todas as peças do sistema operacional GNU. Este kernel ficou conhecido como Linux, contração de Linus e Unix.

Atualmente, o sistema operacional GNU com o kernel Linux é conhecido como GNU/Linux, que é como o projeto solicita aos utilizadores que se refiram ao sistema completo, embora a maioria das pessoas se referem ao sistema apenas como Linux por uma questão de comodidade.

Figura 64. Richard Matthew Stallman, fundador da FSF (Fonte: Wikipedia) e o Logotipo do projeto GNU.(Fonte: Wikipedia)

Richard Matthew Stallman, fundador da FSF (Fonte: Wikipedia) e o Logotipo do projeto GNU.(Fonte: Wikipedia)


12.2. Componentes Básicos do Linux

O Linux pode ser dividido em uma série de módulos, permitindo aos desenvolvedores trabalharem de forma independente e com mais eficiência. Os módulos podem ser agrupados em pelo menos seis categorias: kernel (núcleo do sistema), network (rede), init, daemons, shells, utilitários e o X Window.

12.2.1. Kernel

O kernel é a parte mais importante de qualquer sistema operacional. Ele permite a comunicação do software (programas) com o hardware do computador. O kernel se comunica com o hardware através dos respectivos drivers de cada componente. Por exemplo, para o uso da placa de rede é necessário o uso de um driver específico envia e recebe as mensagens para e da placa de rede.

Ao instalar um novo dispositivo (Ex: placa de aquisição A/D) e ele não for detectado pelo Linux, é possível acrescentar um módulo de driver ao kernel para permitir o uso do novo dispositivo.

Outras partes do kernel gerenciam o sistema de arquivos do Linux, memória etc.

12.2.2. Network

Os serviços de rede englobam uma outra categoria muito característica do Linux permitindo não apenas a organização de redes como também o funcionamento de de aplicativos que rodam em uma única máquina com uma estrutura cliente/servidor, como é o caso do sistema de interfaces gráficas (X Window).

12.2.3. Init

O processo init é o primeiro programa executado pelo kernel de qualquer sistema operacional Linux na sua inicialização. Ele é responsável pelo carregamento do shell, para conexão no sistema (login) bem como inúmeros outros scripts.

12.2.4. Daemon

Um daemon é um programa de computador que roda em background, ao invés de ser controlado diretamente por um usuário. No Linux, vários daemons podem executar simultaneamente inúmeros serviços tais como iniciar a rede, disponibilizar páginas Web, imprimir arquivos etc.

Comumente os daemons têm nomes que terminam com a letra "d", por exemplo, syslogd é o daemon que gerencia o log do sistema (system log).

12.2.5. Shells e Utilitários

Shells e Utilitários se comunicam com o kernel mas não acessam diretamente o hardware.

O shell é um programa que age como uma interface entre o usuário e o sistema operacional, aceitando comandos do usuário e executando-os. O shell mais comum do Linux é conhecido como bash, uma abreviação de Bourne Again Shell.

Comandos utilitários são todos os pequenos programas que realizam tarefas de uso rotineiro, tais como listar o conteúdo de um diretório "ls", copiar arquivos "cp", criar diretórios "mkdir" etc.

12.2.6. X Window

O Linux "monta" a Interface Gráfica a partir de diferentes módulos. Os gerenciadores de janela KDE e Gnome, os mais comuns no mundo Linux, se comunicam com o servidor X Window numa estrutura cliente-servidor, o que permite uma grande versatilidade para a escolha e configuração da Interface Gráfica.

Figura 65. Gerenciadores de Janelas KDE e GNOME. Os dois gerenciadores de janelas mais populares no mundo Linux.

Gerenciadores de Janelas KDE e GNOME. Os dois gerenciadores de janelas mais populares no mundo Linux.


12.3. Diretórios no Linux

Assim como os usuários, o sistema operacional também organiza seus arquivos por meio de diretórios (ou pastas). No Windows/DOS, o diretório raiz é indicado pela barra invertida (\) precedida por uma letra e dois pontos (Ex: C:\). No Linux, este diretório é identificado simplesmente pela barra normal (/) e é o chamado diretório root.

Figura 66. Diretórios no Linux.

Diretórios no Linux.


o contrário do Windows, que reconhece, um "raiz" para cada dispositivo ou unidade de armazenamento (Ex: A:\, C:\ , D:\ ), no Linux há somente um único raiz, que corresponde ao dispositivo ou partição onde o sistema está instalado.

Os demais dispositivos de armazenamento (disquete, CD-ROM, outras partições do HD, etc) são acessados como subdiretórios do raiz. Mas para isso precisam ser montados. Esses subdiretórios precisam ser criados e indicado ao sistema que é a partir dali que o sistema deverá acessá-lo. Normalmente eles são instalados no diretório /mnt (Ex: /mnt/cd_rom, /mnt/floppy etc).

12.4. Dispositivos no Linux

Ao contrário do Windows, no Linux os dispositivos físicos precisam estar associados a um arquivo, os quais ficam localizados no diretório /dev. Destacamos os nomes das portas seriais, de grande importância para o controle de equipamentos em laboratório.

Figura 67. Dispositivos no Linux.

Dispositivos no Linux.


12.5. Fontes de Informação sobre Linux

Recomendamos o(a) leitor(a) conhecer e/ou aprofundar seus conhecimentos sobre Linux para o seu uso como uma poderosa plataforma para a Automação em Laboratório.

Recomendamos alguns sítios em português:

Bons estudos!