Anda di halaman 1dari 14

CENTRO FEDERAL DE ENSINO TECNOLÓGICO DA PARAÍBA

Curso de Tecnologia em Telemática


Disciplina: Sistemas Operacionais

O Sistema Operacional Linux

Herval Freire de Albuquerque Júnior


hervald@terra.com.br
Índice
Apresentação 3

Histórico: O sistema Unix 4

Características do Linux 5

Arquitetura 6

Arquivos e Diretórios 7

Entrada e Saída 9

Gerenciamento de Memória 10

Manipulação de Processos 11

Comparativo: Windows x Linux 12

Conclusão 13

Referências Bibliográficas 14

2
1. Apresentação

O Linux foi originalmente concebido por Linus Torvalds do Departamento de


Ciência da Computação da Universidades de Helsinki, Finlândia, com a ajuda de vários
programadores voluntários através da Internet.
O projeto inicial consistia em uma modificação do Minix, um pequeno sistema
operacional baseado no UNIX. Ele tentou criar, em suas próprias palavras, "um Minix
melhor que o Minix" ("a better Minix than Minix"). Depois de algum tempo de projeto,
Torvalds contatou programadores do mundo todo com uma mensagem de news
convidativa:

"Você suspira por melhores dias do Minix-1.1, quando homens serão homens e escreverão
seus próprios "device drivers" ? Você está sem um bom projeto e esta morrendo por
colocar as mãos em um S.O. no qual você possa modificar de acordo com suas
necessidades ? Você está achando frustrante quando tudo trabalha em Minix ? Chega de
atravessar noites para obter programas que trabalhem correto ? Então esta mensagem
pode ser exatamente para você.

Como eu mencionei a um mês atrás, estou trabalhando em uma versão independente de um


S.O. similar ao Minix para computadores AT-386. Ele está, finalmente, próximo do estágio
em que poderá ser utilizado (embora possa não ser o que você esteja esperando), e eu
estou disposto a colocar os fontes para ampla distribuição. Ele está na versão 0.02...
contudo eu tive sucesso rodando bash, gcc, gnu-make, gnu-sed, compressão, etc. nele."

Em 5 de outubro de 1991 foi anunciada a primeira versão do Linux - a 0.02 - que


desde então tem sofrido constantes modificações e melhoramentos.

Hoje, existe um grande número de implementações de UNIX/LINUX - algumas


ainda mantendo até mesmo partes de código do projeto original saído dos laboratórios da
AT&T - e outras completamente reescritas. Toda esta variedade permite a execução do
Linux em virtualmente qualquer ambiente - de handhelds a supercomputadores. O Linux,
especificamente, é um sistema de distribuição livre preparado para PCs de arquitetura x86
com variantes para alguns outros sistemas - Sparcs, M68000 e PowerPC, por exemplo.
Cultuado por muitos e odiado por outros, o fato é que o Linux é um Sistema
Operacional que vem se popularizando a cada dia e ganhando mais e mais força e destaque
no cenário da computação. Em uma época na qual "redes de computadores" e "sistemas
distribuídos" são cada vez mais valorizadas, o Linux propoe-se como a solução. Em uma
época de supervalorização do preço do software, a idéia subversiva de "software gratuito e
para todos" impulsiona este cada vez mais popular sistema operacional.

3
2. Histórico: o sistema Unix

O Unix nasceu no início dos anos 60 - no princípio, a Bell Labs (uma divisão
interna da AT&T, na época) estava envolviva em um projeto de sistemas operacionais com
o MIT e a General Eletrics - o sistema foi chamado de Multics e englobava todas as idéias
interessantes sobre sistemas operacionais que eles poderiam reunir. O Multics não deu certo
- apesar de todas as boas idéias, a junção de tudo acabou por formar um pacote que não
trabalhava bem. A Bell Labs decidiu desistir do projeto.
Um dos cientistas envolvidos no projeto do Multics, Ken Thompson, começou então
a buscar algum novo trabalho. Thompson achou um pequeno computador (um equipamento
da Digital Corp. PDP-7), com o qual começou a desenvolver programas relacionados com a
astronomia e astronáutica (calculadores de órbitas de satélites, calendários lunares, jogos de
guerra espaciais, etc.), em um ambiente muito mais primitivo que o Multics. Para facilitar o
trabalho, Thompson decidiu escrever um sistema operacional novo para o PDP-7 com base
nas idéias do Multics - um sistema monousuário (o nome Unics é uma referência a este
fato) de pequeno porte. A primeira versão do sistema operacional tinha restrições no
tamanho do nome dos arquivos, o que forçou a encurtar o nome para 4 caracteres - o
"UNIX" foi criado e evoluiu desde então.

2.1. A evolução do UNIX


O UNIX desenvolveu-se e ganhou popularidade dentro do Bell Labs - foram
desenvolvidos aplicativos e posteriormente criada uma linguagem especialmente para o
ambiente, na qual o UNIX foi reescrito - a linguagem C.
O UNIX já havia sido bastante melhorado e várias características foram adicionadas
ao sistema original, que rapidamente evoluiu para um sistema multi-usuário.
Na década de 70, muitos estudiosos já tinham ouvido falar do UNIX e receberam
cópias para avaliação. O sistema se propagou no meio acadêmico e conquistou uma legião
de projetistas e novos desenvolvedores. Era possível adicionar novas características ou
mesmo portar o sistema para outras plataformas com relativa facilidade - e o UNIX se
espalhou e se fragmentou. Daí nasceu o sistema Linux – uma remontagem de uma versão
do UNIX conhecida como Posix.

4
3. Características do Linux
Por ser um sistema derivado do Unix, o Linux apresenta diversas características
presentes nos sistemas Unix:
• Multitarefa real: o Linux suporta múltiplos processadores e processamento em
paralelo – além de dar suporte a multiprogramação e execuções “em paralelo”
com um só processador (divisão de tempo entre os processos)
• Memória virtual: O Linux suporta a expansão de memória para disco
• Biblioteca compartilhada: as bibliotecas são utilizadas pelos diversos
aplicativos/programas
• "Demand loading": dados são colocados em memória à medida que for
necessário
• Gerenciamento de memória próprio: o Linux não necessita de outros
gerenciadores de memória, cuidando da fragmentação por si só.
• Rede TCP/IP (incluindo SLIP/PPP/ISDN): todas as diretivas de rede já estão
prontas no próprio kernel
• X Windows: o Linux incorpora, na maioria de suas implementações, interfaces
gráficas para facilitar a vida do usuário. Vale ressaltar que esta interface não é
incorporada ao Kernel, como em alguns outros sistemas operacionais

A grande maioria dos programas do Linux são freewares – muitos provenientes do projeto
GNU (uma tentativa de dar suporte ao software gratuito e prestar apoio legal aos
programadores)

5
4. Arquitetura
O Linux é um sistema operacional dividido em camadas separadas - como todo
sistema derivado da plataforma UNIX, o Linux é composto de um núcleo, uma camada de
Programas de Sistema e uma camada superior, onde ficam todas as demais aplicações. As
duas camadas superiores (aplicações e programas de sistema) se comunicam com o núcleo
através das chamadas System Calls - rotinas de chamada ao núcleo do sistema.
O Kernel (núcleo) é o responsável por controlar discos, iniciar programas e executá-
los corretamente, além de alocar recursos para os processos, prover o controle de rede e de
dispositivos. Apesar de todas as suas funcionalidades, porém, o Kernel não executa nada
sozinho, apenas fornecendo recursos para os programas de sistema. Outra função do núcleo
é fornecer uma interface entre o hardware e o software, impedindo um acesso direto aos
componentes físicos da máquina (controladoras, portas, etc). Esta interface é feita através
dos drivers.
Os Programas de Sistema utilizam os recursos do Kernel para implementar
funcionalidades do sistema - eles utilizam o Kernel para gerenciar os recursos da máquina.
Estes programas, que vêm juntamente com o próprio sistema, são responsáveis por diversas
atividades de gerenciamento - como os programas de manutenção de discos, os serviços de
rede e o telnet. O sistema virtual de arquivos (VFS) é outro programa de sistema bastante
usado e será abordado no próximo tópico, Arquivos e Diretórios.

4.1. O Shell
O Shell ou “concha” é um programa especial do sistema que define a interface do
mesmo com o usuário. O Shell define os comandos disponíveis ao usuário – assim sendo, o
mesmo só tem acesso aos recursos do Shell. O Shell padrão do Linux possui incorporado a
ele uma linguagem de script e funciona em modo texto, além de dar suporte a várias
interfaces gráficas

6
5. Arquivos e diretórios
5.1. Visão Geral
O sistema de arquivos do Linux é organizado em uma estrutura de árvore de
diretórios - sendo o raiz (root) simbolizado por '/'. Abaixo do raíz, temos diversos outros
diretórios, como /bin (executáveis), /lib (bibliotecas), /dev (dispositivos), /usr (programas),
/home (arquivos pessoais de usuários), /var (arquivos temporários e de log), etc. Porém toda
esta divisão não é obrigatória e pode não estar presente em todos os sistemas Linux. O Unix
prevê uma divisão de acordo com o propósito - dispositivos são organizados em um
diretório, arquivos de usuários em outro, e assim sucessivamente.
A nomenclatura dos arquivos em Linux é livre - não há limite para o número de
caracteres e os mesmos não apresentam necessariamente uma extensão.

5.2. O Sistema de Arquivos Virtual


O Linux define arquivos como um mecanismo de abstração conhecido como Virtual
File System - todos os dispositivos do sistema operacional são tratados igualmente, como
arquivos. Para que haja tal flexibilidade (uma impressora e um documento de texto são
"vistos" da mesma maneira no sistema), a plataforma UNIX não interfere na estrutura dos
arquivos, deixando esta tarefa por conta do usuário.
Os arquivos suportados pelo Linux se classificam em arquivos de diretório, arquivos
regulares, arquivos especiais de caracteres e arquivos especiais blocados, a saber:
- Arquivos regulares: arquivos que contém informações de usuários - arquivos texto,
por exemplo. Um arquivo regular pode ser ainda de um tipo especial chamado 'Link' - o
arquivo é uma referência a outro arquivo do sistema, não "existindo" fisicamente.
- Arquivos diretórios: arquivos usados na manutenção do sistema de arquivos - eles
representam os diretórios da árvore de diretórios (i.e., têm a função das 'pastas' do
Windows)
- Arquivos especiais de caracteres e blocados: arquivos representativos de
dispositivos - representam as portas seriais, impressoras, terminais e dispositivos de rede,
por exemplo.

5.3. Contas
Cada usuário em um sistema Unix/Linux precisa de uma Conta para acessar os
arquivos do sistema – cada conta tem uma senha e nível de acesso, o que garante que um
usuário só terá acesso a determinados arquivos. As contas são classificadas em Grupos de
usuários, nos quais todos possuem o mesmo nível de acesso. O administrador (root) do
sistema possui a prioridade mais alta, tendo acesso a todos os arquivos da árvore de
diretórios.

5.4. Atributos dos arquivos


Cada arquivo tem necessariamente um nome e um conjunto de dados. Além destes
dados, cada arquivo armazena também atributos especiais de acesso: por ser um sistema
multiusuário, o acesso a um arquivo no Linux é restrito a nível de Sistema Operacional e
tem permissões de leitura, escrita e execução. Estas restrições se aplicam ao proprietário e
ao grupo que ele pertence separadamente - assim, um mesmo arquivo pode ter permissão de

7
leitura/escrita/execução para seu proprietário e apenas leitura para todos os demais usuários
do seu grupo, por exemplo.
Outro atributo especial presente em todo arquivo é o seu tipo - um arquivo pode ser
identificado como um Diretório, Arquivo ou Link).

5.5. O Sistema de Arquivos em Rede (NFS)


O Linux conta com outros sistemas de arquivos – um exemplo é o sistema de
arquivos especial para rede NFS - Network File System. Desenvolvido pela Sun, é um
sistema de compartilhamento de arquivos que deixa as aplicações distribuídas transparentes
para o sistema - uma operação em uma máquina qualquer na rede é prontamente enviada
para todas as demais, que atualizam seus sistemas de arquivos - o uso do NFS faz com que
todos os arquivos pareçam estar na mesma máquina, mesmo que os mesmos encontrem-se
em vários computadores diferentes.

8
6. Entrada e Saída
6.1. Visão Geral
Nos sistemas Linux em geral, existe uma grande preocupação pela uniformidade
dos atendimentos - o sistema deve garantir o atendimento de um HD da mesma forma que
atende uma impressora, por exemplo.
Todos os tratamentos de E/S são feitos de maneira síncrona. Um processo que
requisita uma E/S é suspenso pelo Sistema Operacional até que tenha sua solicitação
atendida, quando então é liberado para prosseguir.
Como em quase todos os Sistemas Operacionais, cada dispositivo do sistema
precisa de um driver apropriado para funcionar. Os Drivers são adicionados ao Kernel
sempre que se acrescenta um novo dispositivo ao sistema.
Os dispositivos de E/S são integrados ao sistema de arquivos e são acessíveis da
mesma forma que qualquer arquivo no Linux, com comandos de leitura e gravação - assim,
gravar em um arquivo de texto e imprimir em uma impressora são ações idênticas ao
usuário.

6.2. Drivers de dispositivo


Os drivers são a interface entre o hardware e o kernel. Os programas comunicam-se
com o Kernel, que “conversa” com os dispositivos através do driver apropriado. No
ambiente Linux, existem 2 tipos de drivers distintos – Os drivers de bloco, cuja transmissão
é feita em blocos de dados são mais utilizados em dispositivos com altas taxas de
transmissão entre eles e a memória; e os Drivers de terminal, cuja transmissão é feita
caractere por caractere.
Quando se utiliza o driver de bloco, sempre que é solicitada uma entrada ou saída de
dados, o kernel verifica se o dado bloco já está preparado na memória e faz a devida
transferência entre a memória e o dispositivo. O driver de terminal é utilizado sempre que
não existe um drived de bloco específico para a comunicação e em situações especiais.

9
7. Gerenciamento de Memória

O Kernel do Linux é responsável pela gerência de todos os recursos do sistema,


incluindo a memória – assim, ele deve gerenciar que partes da memória estão ou não
disponíveis, alocar e desalocar processos e gerenciar a memória de forma a utilizar disco
quando necessário.
A liberação de memória é feita por uma técnica denominada Swapping – quando a
memória se encontra cheia, o sistema trata de retirar algumas páginas da memória para o
disco. O algoritmo utilizado é denominado de ‘procura circular’: todas as páginas são
marcadas com um bit de acesso e um bit de alteração. Sempre que a página é referenciada,
seu bit de acesso é setado como um – se a página for alterada, seu bit de alteração é setado.
Quando o sistema precisa liberar páginas de memória, este coloca em disco primeiro as
páginas que contenham os dois bits em zero – dando segunda prioridade às páginas não-
acessadas recentemete (isto é: bit de acesso = 0). Quando o processo vai para disco, o
sistema checa o bit de alteração para determinar se é preciso uma atualização dos dados no
disco, e então libera o espaço de memória. O Swapping é realizado periodicamente, para
garantir uma presença satisfatória de memória livre no sistema. A área de disco utilizada é
denominada ‘área de Swap’ ou ‘área de troca’.
Além do Swapping, o Linux utiliza o gerenciamento de memória virtual “com
paginação por demanda”: dessa forma, páginas de memória só são trazidas do disco para a
memória quando são referenciadas.

10
8. Manipulação de Processos
8.1. Introdução
O Linux é um sistema com multiprogramação - cada usuário pode ter vários
processos em atividade ao mesmo tempo, o que pode crescer exponencialmente com o
aumento do número de usuários.
O sistema classifica os processos com números - quando o sistema é ativado,
chama-se o init (processo número 1), que é sempre o primeiro processo do sistema.
Processos são gerenciados na estrutura "pai-filho": um processo pode criar vários
processos-filhos, que por sua vez podem chamar outros processos-filhos. Cada processo -
tanto o pai quanto os filhos - tem seu próprio espaço de endereçamento de memória, o que
impede que um processo invada uma área pertencente a outro. Os processos são
identificados por um código dce identificação (pid), fornecido pelos processos-pai as
processos-filhos.
A comunicação entre processos é feita através dos pipes - canais de troca de
mensagem: quando se utiliza um pipe, a saída de um processo é direcionada para a entrada
de outro diretamente, sem o uso de arquivos temporários

8.2. Escalonamento
O Kernel do Linux utiliza-se de semáforos e monitores para tratar a exclusão mútua.
O escalonamento dos processos é feito com múltiplas filas de realimentação com níveis de
prioridade - sendo os processos do kernel prioritários sobre os processos do usuário.
Apenas processos em estados de “pronto” permanecem na fila de processos
executáveis. Processos que solicitam E/S ou suspensos são retirados da fila – e
readicionados na mesma quando voltarem ao estado de “pronto”.
Na maioria dos sistemas Linux, o escalonamento é realizado de acordo com o tempo
em execução total do processo em memória – processos com mais tempo de execução têm
menos prioridade que processos ainda não executados – assim, um processo novo sempre
ganha a prioridade sobre um processo que já acumulou muito tempo de execução. Porém
isto não é uma regra – existem implementações do Linux que dão prioridade aos processos
com mais tempo em memória (escalonamento FIFO), como é o exemplo do Solaris

11
9. Comparativo WINDOWS x LINUX
Muito se fala a respeito das diferenças entre os dois sistemas mais difundidos no
mercado. Um comparativo entre os dois sistemas operacionais mostra toda a profundidade
destas diferenças - e os prós e contras de cada sistema

9.1. Quadro comparativo

WINDOWS LINUX
PRÓ PRÓ
Amplamente utilizado e conhecido Quase tudo e de graça e nunca pirata
Muito voltado para o usuário leigo Estável e robusto.
Existem dezenas de milhares de programas e jogos de O sistema ou alguns componentes dele é atualizado
todos os tipos diariamente e novos programas famosos estão sendo
preparados.
Fácil de usar e configurar Muito flexível, pode ser usado num palmtop ou num
servidor.
Interface simples e eficiente Há vários interfaces diferentes, independentes do
núcleo.
É Plug and Play É o mesmo em vários computadores diferentes, como
PC e Sun.
É bem conhecido por qualquer programador Com o código fonte disponível, pode ser totalmente
refeito se preciso.

CONTRA CONTRA
Muito instável Poucos programas são realmente bons e há poucos
jogos.
Usuários avançados se irritam com "automatismo" Herdou os vícios técnicos do Unix, scripts e vários
níveis de acesso.
A maioria dos programas são comerciais e caros Alguns modems, placas de som e vídeo podem não
ser reconhecidos.
Pouco flexível, não permite muitas configurações O excesso de opções torna a configuração um tanto
diferentes complexa.
Interface e parte do sistema e alterações não são bem As interfaces são superficiais e dão pouco controle do
vindas sistema

12
10. Conclusão
O Linux é um sistema operacional do tipo Unix desenvolvido para a plataforma
IBM-PC. Ele possui a robustez, segurança e flexibilidade do Unix. O Linux foi
desenvolvido com uma arquitetura aberta (open source), o que dá mais liberdade para o
desenvolvimento de software. Por outro lado, ainda não existe um grande mercado para o
sistema - que por ter uma filosofia "freeware", não atraiu a atenção de gigantes do software,
como Microsoft, Borland, Corel, etc.
O Linux também é um sistema de difícil suporte técnico - quase tudo tem que ser
resolvido através de manuais e 'howtos' conseguidos pela internet.
A ampla utilização do Linux em ambiente acadêmico garante, contudo, o
desenvolvimento constante e sólido do sistema - com milhões de acadêmicos trabalhando
em seu desenvolvimento em todo o mundo, o Linux se destaca como um sistema seguro e
bem organizado.
Por sua imagem séria, pouco se aposta na popularização do sistema em
computadores domésticos - o Linux é um sistema projetado por programadores para
programadores, o que afasta o sistema do público geral e de uma consequente
popularização. Entretanto, sua ótima performance em máquinas servidoras e em sistemas
dedicados e de grande porte fazem do Linux uma alternativa barata, eficaz e confiável -
além de funcional em diversas plataformas.

13
11. Referências Bibliográficas
Livros:
Lars Wirzenius, Guia do Administrador de sistema Conectiva

Homepages:
http://www.geocities.com/SiliconValley/Network/9035/intro.html
http://www.equipejabu.hpg.com.br/solaris.htm
http://www.geocities.com/Baja/Mesa/9474/
http://unix123.8m.com/menu.htm
http://www.cade.com.br/infsofsounix.htm
http://www.linuxhangar.hpg.com.br/
http://sites.uol.com.br/hypolito/

14