Beruflich Dokumente
Kultur Dokumente
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
Conclusão 13
Referências Bibliográficas 14
2
1. Apresentação
"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ê.
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.
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.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.
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).
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.
9
7. Gerenciamento de Memória
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
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