Seja bem-vindo ao Linux

Propaganda
1
Seja bem-vindo
ao Linux
Neste Capítulo:
A ligação GNU–Linux ....................
02
A tradição histórica do Linux: UNIX .. 04
O que o Linux tem de tão bom? ..... 05
Visão geral do Linux ......................
09
Recursos adicionais do Linux ........
13
O kernel do Linux foi desenvolvido por Linus Torvalds, um
estudante universitário finlandês que usou a Internet para
disponibilizar gratuitamente o código fonte ao público.
A versão 0.01 foi lançada em setembro de 1991. Este
novo sistema operacional foi resultado de muito trabalho.
Programadores do mundo todo rapidamente estenderam
o kernel e desenvolveram outras ferramentas, adicionando
novas funcionalidades e a mesma que já se encontrava no
BSD e no System V (SVR4), ambos do Unix.
Um produto da Internet que foi desenvolvido com a
colaboração de diversas pessoas do mundo todo, o sistema
operacional Linux é livre. Isto é, seu código fonte é gratuito.
Você pode analisá-lo, redistribuí-lo e modificá-lo. Devido
a essa gratuidade, há programas, códigos, documentações
ou suporte disponíveis e livres de custos em grupos de
discussão, listas de divulgação e outras fontes na Internet.
A definição de software livre da GNU é a seguinte:
1
2
Capítulo 1 Seja bem-vindo ao Linux
Free beer
Cerveja grátis: “Software livre” é uma questão de liberdade, não de preço.
Para entender esse conceito deve-se pensar em “livre” como em “liberdade de
expressão” e não como em “cerveja grátis”.1
A Ligação GNU–Linux
Um sistema operacional é um software de baixo nível que agenda tarefas,
aloca o espaço de armazenamento e lida com as interfaces para os hardwares
periféricos, como impressoras, unidades de disquete, monitor, teclado e mouse.
Um sistema operacional possui duas partes principais: o kernel e os programas de
sistema. A primeira aloca os recursos da máquina a serem utilizados, incluindo
memória, espaço de disco e os ciclos da CPU (p. 861), para outros programas
que são executados no computador. Já a segunda efetua operações de alto nível,
geralmente atuando como servidores em uma relação cliente/servidor. Linux é
o nome do kernel que Linus Torvalds apresentou ao mundo em 1991 e no qual
muitas pessoas têm trabalhado desde então, de modo a aprimorar, estabilizar,
expandir e torná-lo mais seguro.
A história do GNU/Linux
Esta seção apresenta um pouco da história da relação entre a GNU e o Linux.
1983
Richard Stallman (www.stallman.org) anuncia1 o Projeto GNU para a criação
de um sistema operacional, incluindo tanto o kernel quanto os programas de
sistemas e apresenta o Manifesto2 GNU, que começa assim:
GNU, que significa Gnu’s not UNIX (Gnu não é Unix), é o nome do sistema
de software totalmente compatível com o Unix que estou criando para, então,
poder disponibilizá-lo como um sistema livre para quem desejar usá-lo.
Alguns anos depois, ao perceber que havia criado uma certa confusão, Richard
adicionou uma observação ao texto:
Não usei as palavras adequadas aqui. A intenção era dizer que ninguém
teria de pagar por uma ‘permissão’ (direitos autorais) para usar o sistema
GNU. Mas isso não ficou claro e as pessoas estavam interpretando como
se as cópias do GNU devessem ser distribuídas sempre a um preço baixo
ou totalmente de graça. Não foi isso o que quis dizer. É mencionado mais
adiante no manifesto a possibilidade de companhias distribuírem o GNU e
cobrarem certo valor. Foi nesse momento que aprendi a diferenciar ‘livre’,
no sentido de liberdade, de ‘gratuito’, no sentido de preço. O software livre
é aquele que os usuários têm a liberdade de distribuí-lo e modificá-lo. Alguns
podem obter cópias gratuitamente, enquanto outros pagam por elas. Neste
caso, se o dinheiro arrecadado for para ajudar a melhorar o software, melhor
ainda. O importante é que todos que possuem uma cópia do GNU tenham
a liberdade de contribuir com outras pessoas em seu uso.
No manifesto, após ter explicado um pouco sobre o projeto e o que foi conseguido
até então, Richard prossegue:
1. www.gnu.org/gnu/initial-announcement.html
2. www.gnu.org/gnu/manifesto.html
A ligação GNU–Linux
3
Por que devo escrever o GNU?
Para mim a regra de ouro determina que, se gosto de um programa, devo
compartilhá-lo com outras pessoas que também gostam dele. Vendedores
de softwares querem dividir e ganhar os usurários para si, fazendo com
que estes não concordem em compartilhar uns com os outros. Recusome a impedir a solidariedade para com outros usuários dessa forma. Não
posso, em sã consciência, assinar um contrato de confidencialidade ou
de licença de software. Por anos trabalhei no Artificial Intelligence Lab
(Laboratório de Inteligência Artificial) tentando resistir ao máximo a tais
tendências e outras inospitalidades, mas chegou um momento em que
foram longe demais e não pude permanecer em uma instituição que faz
coisas incompatíveis com o meu julgamento.
Portanto, para que eu continue a usar computadores sem sentir vergonha
de mim mesmo, decidi criar um software livre, de modo que funcione com
qualquer outro que não seja livre. Pedi demissão do laboratório de IA para
poder negar ao Instituto de Tecnologia de Massachusetts (MIT) qualquer
tentativa legal que me impedisse de disponibilizar o GNU como desejo.
1991
O projeto GNU tem ido bem até agora. A maioria do sistema operacional GNU,
exceto pelo Kernel, já está completa. Mais tarde, Richard Stallman publica:
No início da década de 1990, separamos do kernel o sistema inteiro (além
de estarmos trabalhando em outro kernel, o GNU HURD,3 que roda sobre
o Mach4). Desenvolver esse Kernel tem sido mais árduo do que esperávamos
e ainda não o terminamos5.
(...) Muitos acreditam que após o Linus Torvalds terminar de escrever
o Kernel, seus amigos olharam em volta, procurando uma idéia para outro
software livre e, por incrível que pareça, praticamente tudo necessário para
criar um sistema voltado para o Unix já estava disponível.
O que encontraram não era mera coincidência, foi o sistema GNU.
O software livre disponível tornou-se um sistema completo, pois, desde
1984, o Projeto GNU tem trabalhado para isso. O Manifesto do GNU
apresentava o objetivo de desenvolver um sistema livre voltado para o Unix.
No Comunicado Inicial desse projeto também estão destacados alguns dos
planejamentos originais para o sistema GNU que já estava quase pronto
quando o Linux surgiu.
Atualmente, o ‘sistema operacional’ GNU roda com total compatibilidade binária
com o Linux sobre os kernels do FreeBSD (www.freebsd.org) e o do NetBSD (www.
netbsd.org) e sobre as versões anteriores do Hurd e do Darwin (developer.apple.
com/darwin), porém sem essa compatibilidade.
O Software é Livre
A tradição do software livre vem desde a época em que o Unix foi lançado para
as universidades a um custo nominal, o que contribuiu para a sua portabilidade e
3. www.gnu.org/software/hurd/hurd.html
4. www.gnu.org/software/hurd/gnumach.html
5. www.gnu.org/software/hurd/hurd-and-linux.html
4
Capítulo 1 Seja bem-vindo ao Linux
O Minix
GLP
sucesso. Porém, essa tradição desapareceu quando o Unix passou a ser comercializado
e os fabricantes enxergavam o código fonte como sua propriedade, tornando-o
efetivamente indisponível. Outro problema com as versões comerciais do Unix
está relacionado à sua complexidade, pois, conforme cada fabricante o modifica
para uma arquitetura específica, ele perde portabilidade e se torna complicado para
ensinar e analisar.
Dois professores criaram sua própria modificação do Unix para fins didáticos: Doug
Comer criou o Xinu (www.cs.purdue.edu/research/xinu.html) e Andrew Tanenbaum,
o Minix (www.cs.vu.nl/~ast/minix.html). Linus Torvalds criou o Linux para suprir as
desvantagens do Minix. Toda vez que devia escolher entre a simplicidade do código e
recursos/eficiência, Tanenbaum optava pela primeira de modo a tornar o Minix mais
fácil de ensinar. Isso significava que esse sistema não possuía muitas das vantagens
desejadas pelas pessoas. Era nesse ponto que o Linux ganhava.
O Linux pode ser baixado gratuitamente pela Internet. Além de poder obter o
código do GNU através dos serviços de correios dos EUA por um preço justo
pelos materiais e frete. Pode-se ajudar a “Free Software Foundation” (Fundação
do Software Livre) através da compra daquele mesmo código (GNU) que vem em
pacotes com preços mais caros ou dos produtos comerciais do Linux (chamados
distribuições) que incluem manual de instalação, software e ajuda.
Os softwares Linux e GNU são distribuídos sob os termos da Licença Pública Geral
da GNU (GNU GPL, sigla em inglês − www.gnu.org/licenses/licenses.html), que
dizem que você tem o direito de copiar, alterar e redistribuir o código escrito no
acordo. Se você redistribuir o código, terá de distribuir a mesma licença com ele,
tornando ambos inseparáveis. Se baixar o código da Internet para um programa
qualquer, como um de contabilidade, por exemplo, que esteja sob os termos da
GPL, modificar o código e, então, redistribuir uma versão executável do programa,
você também terá de distribuir o código fonte alterado, juntamente com o acordo
do GPL. Dessa maneira, se concede os direitos em vez de limitá-los, o que é o
inverso dos termos normais de direitos autorais (copyright), portanto o GPL foi
chamado de copyleft8 (este parágrafo não demonstra uma interpretação de cunho
legal do GPL, mas simplesmente dá uma idéia de como ele funciona. Portanto, se
quiser fazer uso dele, leia os termos completos).
Divirta-se!
O termo-chave para Linux é “Divirta-se!” e sempre aparece em linhas de comando e
documentações. A cultura do UNIX − agora chamado de Linux − está repleta de humor
que pode ser encontrado por todo o sistema. Por exemplo, “pouco” (less) significa
“muito” (more) − o GNU substituiu o utilitário de nome more, que exibia um arquivo
de maneira paginada, por um novo, mais aprimorado, chamado less. O programa
para visualizar documentos PostScript é chamado ghostscript (script fantasma) e um
dos diversos substitutos do editor “vi” se chama “elvis”. Enquanto máquinas com
processadores Intel carregam o logotipo “Intel Inside” do lado de fora, algumas com
o Linux possuem o adesivo "Linux Inside". Pessoas afirmam que já viram o próprio
Linus Torvalds vestindo uma blusa com a estampa “Linus Inside”.
A tradição histórica do Linux: O UNIX
O sistema Unix foi desenvolvido por pesquisadores que necessitavam de uma série de
ferramentas modernas de computação para auxiliá-los em seus projetos. Ele permitiu
a uma equipe que trabalhava em um projeto compartilhar dados e programas
selecionados ao mesmo tempo em que mantinha privadas as outras informações.
O Que o Linux Tem de Tão Bom?
5
Universidades e faculdades tiveram um papel importante na popularização do
sistema operacional Unix ao longo dos quatro anos seguintes. Quando o Unix
tornou-se amplamente disponível, em 1975, a “Bell Labs” o ofereceu a instituições
de educação a um preço nominal. As universidades, por sua vez, usaram-no em suas
turmas de Ciência da Computação de modo que os estudantes se familiarizassem
com ele. Como o Unix era um sistema de desenvolvimento avançado, os estudantes
logo se acostumaram a um ambiente de programação sofisticado. Todos se
formaram, saindo direto para o mercado de trabalho, pois já esperavam trabalhar
em um ambiente tão avançado quanto. Conforme mais desses estudantes ascendiam
no mercado, mais espaço o sistema operacional Unix conquistou, acabou chegando
ao mercado de produção.
Além de apresentar o Unix aos seus estudantes, o Systems Research Group (CSRG,
“Grupo de Pesquisa de Sistemas”) da Universidade de Berkeley, na Califórnia, EUA,
fez significativas alterações e acréscimos ao sistema. Na verdade, suas modificações
tornaram-se tão populares que uma versão do sistema foi chamada de Berkeley
Software Distribution (BSD) do Unix, ou simplesmente Berkeley UNIX (Unix da
Berkely). A outra versão principal é a System V (SVR4) do Unix, que derivou das
versões desenvolvidas e preservadas pela AT&T e o UNIX System Laboratories.
O Que o Linux Tem de Tão Bom?
Aplicativos
Periféricos
Nos últimos anos, o Linux surgiu como um sistema operacional poderoso e inovador
que funciona com o Unix. Sua popularidade ultrapassa aquela dos seus predecessores.
Embora imite o Unix em vários aspectos, o sistema operacional Linux se difere
dele de diversas formas: o kernel do Linux é implementado independentemente
do BSD e do System V; o seu desenvolvimento contínuo ocorre através de esforços
combinados de diversas pessoas pelo mundo e o Linux facilita o acesso ao poder
do Unix para usuários de computadores domésticos ou empresariais. Atualmente,
através da Internet, programadores habilidosos enviam ao Linus Torvalds, ao GNU
ou a outros autores do Linux acréscimos e melhorias para o sistema.
Há disponível para Linux uma rica seleção de aplicativos (gratuitos e comerciais),
além de uma ampla gama de ferramentas variadas para lidar com: imagens, textos,
redes, segurança, administração, servidor Web e muitas outras. Recentemente,
grandes empresas de software, como a IBM (www.ibm.com/linux), têm visto as
vantagens de adotar o Linux e já possuem programadores efetivos cujo trabalho é
desenvolver e programar o kernel do Linux, o GNU, o KDE ou outro software que
rode no sistema. Este segue mais os padrões POSIX, outras distribuições e partes
de outras também o seguem. Para mais informações, veja o tópico Padrões adiante.
Esses fatos significam que o Linux está se tornando cada vez mais a tendência
predominante e é respeitado como uma alternativa atraente a outros sistemas
operacionais mais populares.
Outro aspecto do Linux que atrai os usuários é a impressionante variedade
de periféricos suportados e a velocidade com que aparece o suporte aos novos
periféricos. O Linux geralmente surge com suporte a uma placa de interface ou
periférico antes de qualquer outra empresa. Mas, infelizmente, falta o suporte a
alguns tipos, especialmente a placas de vídeo de marca, pois seus fabricantes não
liberam suas especificações ou o código fonte dos drivers em tempo hábil, se é que
jamais o fazem.
6
Capítulo 1 Seja bem-vindo ao Linux
Software
Plataformas
Emuladores
A quantidade de programas disponíveis também é importante para os usuários,
não apenas o código fonte (que precisa ser compilado), mas também os pacotes
binários, que são de fácil instalação e estão prontos para serem executados. Isso
não significa apenas softwares gratuitos. O Netscape já com suporte a Java, por
exemplo, está disponível no Linux desde o início, mesmo antes de muitas empresas
comerciais oferecerem tal recurso. Atualmente, seu irmão, o Mozilla, também é um
prático navegador, cliente de e-mail e programa de acesso a grupos de discussão,
além de muitas outras funções.
O Linux não é só para plataformas baseadas em Intel, mas também para aquelas
do Power PC, incluindo computadores da Apple (ppclinux), dos baseados no Alpha
da Compaq (NEC Digital Equipment Corporation), no MIPS, no 68K da Motorola
e no S/390 da IBM. Nem é apenas para máquinas com um único processador:
na versão 2.0, ele funciona em computadores com múltiplos processadores (SMP,
sigla em inglês que significa “Multiprocessadores Simétricos”). Já na versão 2.5.2,
o Linux possui um O(1) scheduler (projeto do kernel que agenda processos dentro
de uma quantidade constante de tempo), o que aumenta consideravelmente a
capacidade de expansão em sistemas SMP.
O Linux suporta programas chamados emuladores, que executam códigos feitos para
outros sistemas operacionais. Ao usar esses programas você pode rodar no Linux
alguns softwares do DOS, do Windows e do Macintosh. O Wine (www.winehq.com)
é uma implementação de código aberto do API do Windows sobre o X e o Unix/
Linux. O QEMU (fabrice.bellard.free.fr/qemu) é um emulador de processador que
executa binários x86 do Linux em sistemas que não foram feitos para eles.
Por Que o Linux Faz Sucesso Entre Desenvolvedores e
Fabricantes de Hardware?
Sistemas
operacionais
exclusivos
Sistemas
operacionais
genéricos
Duas marcas no mercado de informática prepararam o terreno para a popularidade
do Unix e do Linux. Primeiramente, os avanços na tecnologia de hardwares geraram
a necessidade para um sistema operacional que pudesse tirar proveito da potência
do hardware disponível. Em meados da década de 1970, os microcomputadores
começaram a ameaçar os mainframes (computadores de grande porte), pois aqueles
possuíam diversos aplicativos capazes de fazer as mesmas funções que estes e com
um custo menor. Mais recentemente, os poderosos chips de processadores de 64
bits, memória barata e abundante e o baixo preço dos discos-rígidos permitiram
que os fabricantes de hardware instalassem sistemas operacionais multiusuário em
computadores de mesa (desktop).
Segundo, com a constante queda do preço dos hardwares, seus fabricantes não
têm mais condições de desenvolver e manter seus próprios sistemas operacionais.
Um fabricante do hardware costumava criar um sistema operacional e,
conseqüentemente, era seu dono (por exemplo, a DEC/Compaq é a dona do
VMS). Mas hoje em dia eles precisam de um sistema genérico com o qual possam
adaptar facilmente às suas máquinas.
Um sistema operacional genérico não é criado pelo fabricante que produz o hardware.
Ele é vendido (Unix, Windows) ou oferecido de graça (Linux). Esse é um sistema
operacional genérico por rodar em diferentes tipos de hardware produzidos por
variados fabricantes. É claro que, se esses podem pagar apenas pelo desenvolvimento
O Que o Linux Tem de Tão Bom?
7
e evitar o custo por unidade (como precisam pagar à Microsoft por cada cópia que
venderem do Windows), os desenvolvedores saem muito mais em conta. Esses, por
sua vez, precisam manter baixos os preços de seus produtos e para isso não têm como
converter seus produtos para rodarem em vários sistemas operacionais exclusivos.
Assim como os fabricantes de hardware, os desenvolvedores de software precisam de
um sistema operacional genérico.
Apesar de o sistema Unix uma vez satisfazer às necessidades dos fabricantes de
hardware e dos pesquisadores por um sistema operacional genérico, com o tempo ele
se tornou cada vez mais exclusivo, conforme fabricantes adicionavam suporte para
recursos especializados e incluíam novas bibliotecas de software e utilitários.
O Linux surgiu para tratar de ambas as necessidades. Ele é um sistema operacional
genérico que tira proveito da potência do hardware disponível.
O Linux Possui Portabilidade
Um sistema operacional portátil é aquele que pode rodar em diversos computadores.
Mais de 95% do sistema operacional do Linux é escrito na linguagem C, é portátil
por ser escrito em uma linguagem de alto nível e independente da máquina (o
compilador do C é escrito em C).
Como o Linux é portátil, pode-se adotá-lo (portá-lo) em diferentes máquinas e
satisfazer requisitos especiais. Por exemplo, usa-se o Linux em computadores
embutidos, como aqueles de telefones celulares, PDAs e decodificadores de TV
a cabo. A estrutura do arquivo tira total proveito dos discos rígidos amplos e
rápidos. Importante também é que o Linux foi originalmente desenvolvido
para ser multiusuário, recurso que não foi pensado posteriormente de modo a
favorecer diversos usuários em um mesmo sistema. Compartilhar a potência do
computador entre muitos usuários e dar-lhes a capacidade de partilhar dados e
programas é o recurso central do sistema.
O Linux, por ser adaptável e tirar proveito do hardware disponível, agora roda
tanto em mainframes quanto em sistemas com diferentes microprocessadores. É esse
aspecto o responsável pela popularidade do Linux. Estes microcomputadores ficam
cada vez mais rápidos e com aproximadamente os mesmos preços anteriores.
O Linux em um microcomputador rápido tornou-se bom o suficiente para
substituir as estações de trabalho em muitos computadores de mesa. O Linux
beneficia tanto aos usuários, que não gostam de ter que aprender um novo sistema
operacional para cada fabricante de hardware, quanto aos administradores de
sistema, que gostam de um ambiente estável de software.
O advento de um sistema operacional padrão ajudou no desenvolvimento os
fabricantes de software. Agora, eles têm condições de tornar disponível a versão
de um produto em máquinas de diferentes fabricantes.
Padrões
Pessoas de companhias em todo o mercado de informática se uniram para desenvolver
o padrão POSIX (Portable Operating System Interface for computer Environments,
ou “Interface de Sistema Operacional Portátil para Ambientes de Computador),
baseado amplamente no System V Interface Definition (SVID) do Unix e outros
esforços de padronização anteriores.
8
Capítulo 1 Seja bem-vindo ao Linux
Tais esforços foram estimulados pelo governo dos EUA, que precisava de um ambiente
de computação padrão para minimizar seus custos de treinamento e logística. Agora,
com esses padrões ganhando cada vez mais aceitação, os desenvolvedores de software
são capazes de desenvolver aplicativos que rodam em todas as versões do Unix, Linux
e outros sistemas que adotaram esses padrões.
A Linguagem de Programação C
Ken Thompson escreveu o sistema operacional Unix em 1969 na linguagem
assembly do PDP-7, a qual dependente da máquina a ser usada: programas
escritos em assembly funcionam apenas em uma única máquina, ou melhor, em
uma “família” delas. O Unix original, portanto, não podia ser transportado
facilmente para rodar em outras máquinas (não era portátil).
A fim de o tornar portátil, Ken desenvolveu a linguagem de programa B, que
era independente da máquina, a partir da linguagem BCPL. Dennis Ritchie
desenvolveu a linguagem C, ao modificar a B, e juntamente com Ken Thompson
reescreveu o Unix em C, no ano de 1973. Esse sistema operacional alterado podia
ser transportado com mais facilidade para rodar em outras máquinas.
Esse desenvolvimento marcou o início de C. Suas raízes revelam algumas das
razões de por que ele é tão poderoso. Usa-se a linguagem C para escrever
programas independentemente da máquina em que irão rodar. Um programador
que desenvolve um programa para ser portátil pode facilmente movê-lo para
outro computador que possua um compilador de C. Essa linguagem também foi
projetada para ser compilada para um código bastante eficiente. Com o advento
do C, um programador não precisava mais recorrer à linguagem assembly para
obter o código que rodaria bem naquela máquina (isso, apenas em termos de
rapidez, pois um assembler sempre produzirá um código mais eficiente do que
uma linguagem de alto nível).
O C é uma boa linguagem de sistemas e altamente estruturado, mas não
necessariamente uma linguagem de alto nível. Você pode escrever um compilador
ou um sistema operacional em C. A linguagem C permite ao programador
manipular bits e bytes, como é necessário ao escrever um sistema operacional.
Mas ela também possui construções de nível mais alto que permitem uma
programação eficiente e modular.
No final da década de 1980, a American National Standards Institute (ANSI,
ou “Instituto Nacional Americano de Padronização”) determinou uma versão
padrão da linguagem C, comumente referida como ANSI C ou C89 (devido ao
ano de publicação do padrão, 1989). Dez anos mais tarde foi publicado o padrão
C99, especialmente suportado pelo compilador “C” (o gcc) do projeto GNU.
Geralmente referem-se à versão original da linguagem como C do Kernighan &
Ritchie (ou K&R), nomes estes dos autores do primeiro livro que descreveu a
linguagem em questão.
Outro pesquisador na Labs Bell, Bjarne Stroustrup, criou uma linguagem de
programação orientada a objeto chamada de “C++”, que tem como base a
linguagem C. Devido ao fato de muitos empregadores hoje em dia adotarem a
programação orientada a objeto, prefere-se o “C++” ao “C” em muitos ambientes.
O compilador “C” do Projeto GNU e seu compilador “C++” (g++) são partes
integrais do sistema operacional Linux.
Visão Geral do Linux
Compiladores
Sistemas de
gerenciamento
de banco de
dados
Utilitários/Shells do GNU
Processadores
de texto
Utilitários
de e-mail e
mensagens
Outros utilitários/shells
9
Formatadores
Sistema X-Window
Kernel 1 do Linux
Hardware
Figura 1.1: Visão em camadas do sistema operacional Linux
Visão Geral do Linux
O sistema operacional Linux possui muitos recursos exclusivos e poderosos. Assim
como outros sistemas, o Linux é um programa de controle para computadores.
Mas como o Unix, ele é também um conjunto bem sucedido de programas
utilitários (ver Figura 1.1) e uma série de ferramentas que permitem aos usuários
conectarem e usarem esses utilitários para construir sistemas e aplicativos.
O Linux Tem uma Interface de Programação do Kernel
O coração do sistema operacional Linux é o seu kernel. Esse é o responsável pela
alocação dos recursos do computador e agendamento das tarefas do usuário, de
modo que cada um partilhe de uma parte justa dos recursos do sistema, incluindo
o acesso à CPU, dispositivos periféricos, como armazenamento em discos, DVD
e CD-ROM, impressoras e unidades de fita. O programa interage com o kernel
através de chamadas ao sistema, funções especiais com nomes bastante conhecidos.
Um programador pode usar uma única chamada ao sistema para interagir com
muitos tipos de dispositivos. Por exemplo, há uma chamada de sistema denominada
“write” (escrita), não há muitos que sejam específicos a um determinado dispositivo.
Quando um programa envia um pedido “write”, o kernel interpreta o contexto e
passa o pedido ao dispositivo adequado. Essa flexibilidade permite que utilitários
antigos funcionem com dispositivos que não existiam quando aqueles foram
originalmente criados. Além disso, é possível mover programas para nova versões
do sistema operacional sem precisar reescrevê-los (levando em conta que a nova
versão reconheça as mesmas chamadas de sistema).
O Linux é Multiusuário
Dependendo do hardware e dos tipos das tarefas executadas pelo computador,
um sistema Linux pode suportar de 1 até mais de 1000 usuários, cada um
10
Capítulo 1 Seja bem-vindo ao Linux
executando uma série diferente de programas ao mesmo tempo. O custo por
usuário de um computador com esse recurso é menor do que o de um que possa
ser usado por apenas uma pessoa. Isso porque uma pessoa geralmente não pode
usar todos os recursos disponíveis em um computador. Ninguém coloca uma
impressora para imprimir constantemente, mantém todo o sistema de memória,
deixa os discos ocupados lendo e escrevendo, mantém conexão da Internet em
uso constante e deixa todos os terminais ocupados, isso tudo ao mesmo tempo.
Mas um sistema operacional multiusuário permite que muitas pessoas usem esses
recursos do sistema quase que simultaneamente. O uso de recursos mais pesados
pode ser maximizado e o custo por usuário minimizado. Há objetos primários em
um sistema operacional multiusuário.
O Linux Pode Executar Muitas Tarefas
O Linux é um sistema totalmente multitarefa, o que permite a cada usuário executar
mais de uma tarefa ao mesmo tempo. Os processos podem se comunicar entre si
sem sofrerem interferências de outro, assim como o kernel é protegido de todos os
processos. Você pode executar diversas tarefas em segundo plano (background)
enquanto dedica toda sua atenção àquela sendo exibida na sua tela, além de poder
alternar entre elas. Se estiver usando o sistema X-Window (ver página 13), você
pode executar programas diferentes em diversas janelas em uma mesma tela e
visualizar todas. Essa capacidade garante uma maior produtividade dos usuários.
O Linux Possui um Sistema de Arquivos
Hierárquico e Seguro
Padrões
Links
Segurança
Um arquivo é uma coleção de informações, como um texto para um memorando
ou relatório, um acúmulo de números de vendas, uma imagem, uma música
ou um programa executável. Cada arquivo é armazenado sob um identificador
único em um dispositivo de armazenamento, como um disco rígido. O sistema
de arquivos do Linux oferece uma estrutura na qual estes estão dispostos em
diretórios e, portanto, em uma organização em árvore. Essa estrutura ajuda os
usuários a acompanharem o grande número de arquivos através do agrupamento
em diretórios de arquivos relacionados. Cada usuário tem um diretório principal,
dentro do qual há diversos subdiretórios necessários (ver Figura 1.2).
Com a idéia de facilitar a vida dos administradores de sistema e dos desenvolvedores
de software, um grupo de pessoas se reuniu na Internet e desenvolveu o FSSTND
(padrão para sistema de arquivos) do Linux, que depois evoluiu para o FHS
(padrão para sistema de arquivos hierárquico) do Linux. Antes desse padrão
ser adotado, os programas principais variavam em localização nas diferentes
distribuições do Linux. Mas hoje você pode, em um sistema Linux, saber
exatamente onde encontrar determinado programa padrão.
Um link permite o acesso a um arquivo determinado através de um ou mais nomes
diferentes (o Windows usa o termo atalho em vez de link). Os nomes alternativos
podem estar ou não no mesmo diretório que o arquivo original. Pode-se usar os
links para fazer o mesmo arquivo aparecer nos diretórios de variados usuários,
facilitando o compartilhamento do arquivo.
Assim como a maioria dos sistemas operacionais multiusuários, o Linux permite
controlar acesso de outros usuários a seus dados . Isso possibilita que usuários
compartilhem dados específicos e programas através de um simples, porém eficiente,
Visão Geral do Linux
11
esquema de proteção. São as permissões de acesso a arquivos que oferecem esse
nível de segurança, elas limitam os usuários que podem ler, escrever ou executar um
arquivo. As Listas de Acesso de Controle (ACL, sigla em inglês) foram recentemente
adicionadas ao kernel do Linux. As ACLs dão aos usuários e administradores um
controle mais restrito sobre as permissões de acesso aos arquivos.
Figura 1.2: Estrutura de sistema de arquivos do Linux.
Shell: Interpretador de Comando e Linguagem
de Programação
Em um ambiente textual, a Shell, um interpretador de comando, funciona como
uma interface entre você e o sistema operacional. Ao digitar um comando na tela,
a Shell o interpreta e invoca o comando pedido. Há disponível no Linux várias
shells, das quais as mais comuns são:
• Bash (Bourne Again Shell): uma versão melhorada do Bourne Shell, uma das
shells originais do Unix.
• Tcsh (TC Shell): uma versão melhorada da versão da C Shell, desenvolvida
como parte do Unix do BSD.
Devido aos usuários geralmente terem sua Shell predileta, um sistema multiusuário
pode ter uma série de shells diferentes em uso. A possibilidade de escolha da Shell
representa um dos poderes do Linux: a capacidade de oferecer uma interface de
usuário personalizada.
Além de executar sua função de interpretar comandos a partir de um teclado e
enviá-los ao sistema operacional, a Shell é uma linguagem de programação de
alto nível. Pode-se organizar os seus comandos em um arquivo para execução
futura. O Linux chama esses arquivos de Shell scripts (scripts Shell). No Windows
e no DOS eles são os batch files (arquivos de lote). A flexibilidade desses scripts
permite aos usuários efetuarem, com certa facilidade, operações complexas,
geralmente através de comandos curtos, além de construir, com um pequeno
esforço, programas elaborados que executam operações altamente complexas.
12
Capítulo 1 Seja bem-vindo ao Linux
Criação de Nome de Arquivo
Ao digitar comandos para serem processados pela Shell, pode-se construir padrões
usando caracteres que possuem significados especiais à Shell. Eles são chamados
de caracteres wildcard. Estes padrões representam um tipo de abreviatura: em
vez de digitar o nome completo dos arquivos, os usuários podem usar apenas
os padrões e a Shell os completará. Esses padrões são chamados de referências
ambíguas a arquivos. Elas podem poupar-lhe do esforço de digitar um nome de
arquivo muito longo ou uma longa série de nomes parecidos. Além disso, ela
pode ser útil quando você sabe apenas uma parte do nome de um arquivo, ou
quando não se lembra exatamente das letras.
Entrada e Saída Independente de Dispositivo
Redirecionamento
Dispositivos (como uma impressora ou um terminal) e discos rígidos, todos
parecem ser vistos como arquivos pelos programas no Linux. Ao dar um
comando a esse sistema operacional, você pode instruí-lo para enviar a saída
para qualquer um dos diversos dispositivos ou arquivos. Esse desvio é chamado
redirecionamento de saída.
Da mesma forma, a entrada de um programa, que normalmente vem de um
teclado, pode ser redirecionada, de modo que venha do arquivo de um disco.
Entrada e saída são independentes de dispositivo, ou seja, é possível redirecionálos para ou a partir de qualquer dispositivo apropriado.
Um exemplo seria o utilitário cat que costuma exibir o conteúdo de um arquivo
na tela. Ao executar um comando cat, você pode facilmente redirecionar sua
saída para um arquivo no disco em vez da tela.
Funções de Shell
Um dos recursos mais importantes da Shell é que os usuários podem usá-la como
uma linguagem de programação.
Devido à Shell ser um interpretador, não compila programas escritos para ela, mas
os interpreta sempre que são carregados a partir do disco. Carregar e interpretar
programas pode consumir muito tempo.
Muitas shells, incluindo o bash, abarcam funções que ficam em sua memória, de
modo que não precisem ser lidos a partir do disco sempre que forem executadas.
A Shell também mantém as funções em um formato interno, de forma que não
seja preciso gastar muito tempo para interpretá-las.
Controle de tarefas (job control)
Este é um recurso de Shell que permite aos usuários trabalharem com várias tarefas
de uma vez, alternando entre elas conforme necessário. Ao iniciar uma tarefa,
geralmente ela fica em primeiro plano, dessa forma conectada ao seu terminal.
Mas com o controle de tarefas você pode mover para segundo plano aquela na
qual está trabalhando, deixando-a ainda em execução enquanto trabalha ou
observa outra coisa no primeiro plano. Então, se uma tarefa que está em segundo
plano requisitar sua atenção, você pode trazê-la de volta para o primeiro e voltar
a trabalhar nela. O conceito de controle de tarefas (job control) surgiu com o
Unix do BSD, na C Shell.
Recursos Adicionais do Linux
13
Uma Grande Coleção de Utilitários Práticos
O Linux possui um conjunto de centenas de programas utilitários, geralmente
chamados de comandos. Eles executam funções que são praticamente exigidas por
qualquer usuário. Um exemplo é o sort, que ordena alfabética ou numericamente
listas (ou grupos de listas) e pode ser usado para classificar por número,
sobrenome, cidade, CEP, número do telefone, idade, tamanho, custo, etc. O sort
é uma ferramenta de programação importante e parte do sistema padrão do
Linux. Outros utilitários permitem aos usuários criar, exibir, imprimir, copiar,
pesquisar e excluir arquivos, assim como editar, formatar e diagramar (formatar
para a impressão) o texto. Os utilitários man (de “manual”) e info exibem a
documentação do próprio Linux.
Comunicação Entre Processos
Pipes e
filtros
O Linux permite ao usuário usar tanto pipes (lê-se “páipes”, barra vertical) quanto
filtros, na linha de comando. Um pipe envia a saída de um programa como a
entrada de outro. Um filtro é uma forma especial de pipe, que processa um fluxo
de dados de entrada que produz um fluxo de dados de saída. Ele processa a saída
de outro programa, alterando-a. A saída do filtro, então, se torna a entrada de
outro programa.
Pipes e filtros freqüentemente unem utilitários para executar uma tarefa específica. Por
exemplo, você pode usar um pipe para enviar a saída do utilitário cat para o sort, um
filtro. Então, usar outro pipe para enviar a saída de sort para um terceiro utilitário, o
lpr, que envia os dados para a impressora. Portanto, em uma única linha de comando
você pode usar três comandos juntos para ordenar e imprimir um arquivo.
Administração do Sistema
Em um sistema Linux, o administrador costuma ser o dono e único usuário, o
que exige muitas responsabilidades. A primeira, talvez seja configurar o sistema
e instalar o software.
Com o sistema pronto e funcionando, o administrador é responsável por baixar e
instalar programas (incluindo a atualização do sistema operacional), fazer backup
e restauração dos arquivos e gerenciar recursos do sistema como impressoras,
terminais, servidores e uma rede local. O administrador do também é responsável
por criar as contas de novos usuários em um sistema multiusuário, desligando o
sistema caso seja necessário, e lidar com os problemas que surgirem.
Recursos Adicionais do Linux
Os desenvolvedores do Linux incluíram recursos do BSD, do System V e do
Solaris da Sun Microsystems, assim como novos recursos. Embora a maioria das
ferramentas encontradas no Unix exista no Linux, em muitos casos elas foram
substituídas por seus equivalentes mais modernos. A seção seguinte descreve
algumas das ferramentas e recursos mais populares disponíveis no Linux.
14
Capítulo 1 Seja bem-vindo ao Linux
GUIs: Interfaces Gráficas para o Usuário
Gerenciador
de área de
trabalho
Gerenciador
de janela
O sistema X-Window (também chamado de X) foi desenvolvido em parte por
pesquisadores no MIT e é a base das GUIs disponíveis para o Linux. Dado um
terminal ou estação de trabalho que suporte o X, um usuário pode interagir com
o computador através de diversas janelas na tela, exibir informações em formato
gráfico ou usar aplicativos específicos de desenho, monitorar processos ou prévisualizar uma saída formatada. O X é um protocolo de comunicação de rede que
permite ao usuário abrir uma janela remota numa estação de trabalho ou sistema
de computador que não esteja na CPU onde se abre tal janela.
Geralmente, duas camadas rodam sob o X: um gerenciador de área de trabalho
e um de janela. O primeiro é voltado para a interface gráfica do usuário, que lhe
permite interagir com programas do sistema através da manipulação de ícones,
em vez da digitação de comandos na Shell. O GNOME (www.gnome.org) e o
KDE (www.kde.org) são os gerenciadores de área de trabalho mais populares.
É um programa que roda sob o gerenciador de área de trabalho e permite abrir
e fechar janelas, iniciar programas e configurar um mouse de modo que este
faça coisas diferentes dependendo de como e onde você clicar. O gerenciador
de janela também dá uma personalização à tela. O Microsoft Windows permite
alterar a cor dos elementos principais em uma janela, mas este gerenciador, no X,
possibilita mudar a aparência completa de sua tela: modificar como uma janela
é e funciona (alterando suas bordas, botões e barras de rolamento), definir uma
área de trabalho virtual, criar menus e muito mais.
Diversos gerenciadores de janela populares rodam no X e no Linux, incluindo
o Metacity (o padrão do GNOME) e o Kwin (o padrão do KDE). Há também
outros, como o Sawfish e o WindowMaker.
Utilitários de Rede e Entre Redes
O suporte à rede no Linux inclui muitos utilitários que lhe permitem acessar
remotamente sistemas em uma variedade de redes. Além de enviar e-mail para
usuários em outros sistemas, você pode acessar arquivos em discos montados
em outros computadores como se estivessem no sistema local, tornar, da mesma
forma, seus arquivos disponíveis para outros sistemas, fazer transferências de
arquivos, executar programas em sistemas remotos enquanto exibe os resultados
no sistema local e efetuar diversas outras operações pelas LANs (redes locais) e
WANs (redes de longa distância), incluindo a Internet.
Na camada ao topo deste acesso de rede está a grande quantidade de aplicativos
que ampliam os recursos do computador pelo mundo. Você pode conversar com
pessoas no mundo todo, coletar informações sobre uma variedade de assuntos e
baixar novos programas da Internet de maneira rápida e confiável.
Desenvolvimento de software
Uma das competências principais do Linux é o rico ambiente de desenvolvimento
de software. Pode-se encontrar compiladores e interpretadores em diversas línguas
de computador. Além do C e do C++, outras linguagens disponíveis para o Linux
são: Ada, Fortran, Java, Lisp, Pascal, Perl, Python, dentre outras.
Exercícios
15
O utilitário bison gera o código de análise de sintaxe, o que facilita a escritura de
programas para construir compiladores (ferramentas que analisam sintaticamente
arquivos que contêm informações estruturadas). O flex gera “escaneadores”, ou
seja, código que reconhece padrões lexicais em um texto. O utilitário make e o
(configure) de configuração automática make, do GNU, facilitam o gerenciamento
de projetos de desenvolvimento complexo. Os sistemas de gerenciamento de código
fonte, como o CVS, simplificam o controle de versão. Diversos depuradores,
incluindo o ups e o gbd, ajudam na identificação e reparo dos defeitos no
software. O compilador C (gcc), do GNU, funciona com o utilitário de definição
de perfil gprof, que auxilia programadores a identificarem possíveis obstruções
na performance de um programa. O compilador C possui opções para efetuar
extensiva verificação do código C, o que pode tornar o código mais portátil e
reduzir o tempo de depuração.
Resumo
O sistema operacional Linux surgiu de uma tradição do Unix para se tornar uma
alternativa popular aos sistemas tradicionais (isto é, o Windows) disponíveis para
hardware de microcomputadores. Os usuários do Unix encontram um ambiente
familiar no Linux, cujas distribuições já possuem os utilitários do Unix e uma
série de ferramentas desenvolvidas para o projeto GNU. Tudo isso, graças a
programadores do mundo todo que contribuíram para esse projeto.
A comunidade Linux está comprometida com o desenvolvimento contínuo deste
sistema. Suporte a novos dispositivos e recursos para microcomputadores são
adicionados logo após a disponibilização do hardware. Além disso, ferramentas
disponíveis no Linux continuam a ser aprimoradas. Com muitos pacotes de
software comerciais disponíveis para esta plataforma e muitos fabricantes de
hardware oferecendo o Linux como seus sistemas operacionais, fica claro que esse
sistema evoluiu muito além de sua proposta original. Ou seja, o que seria apenas
um projeto acadêmico, tornou-se um sistema operacional de escolha acadêmica,
comercial, profissional e para uso pessoal.
Exercícios
1. O que é software livre? Cite três características.
2. Qual o motivo da popularidade do Linux? Por que ele é tão popular no
ambiente acadêmico?
3. O que são sistemas multiusuários? Por que eles deram certo?
4. O que é a Fundação do Software Livre do GNU? O que é Linux? Quais as
partes do sistema operacional Linux e o que cada uma oferece? Quem mais
ajudou a construir e melhorar o sistema?
5. Em qual linguagem é escrito o Linux? Qual a relação dela para com o sucesso
do Linux?
6. O que é um programa utilitário?
7. O que é uma Shell? Como ela trabalha com o kernel e com o usuário?
8. Como você pode usar os programas utilitários e uma Shell para criar seus
próprios aplicativos?
16
Capítulo 1 Seja bem-vindo ao Linux
9. Por que se diz que o sistema de arquivos do Linux é hierárquico?
10. Qual a diferença entre um multiprocessador e um sistema multitarefa?
11. Dê um exemplo de quando você usaria um sistema multitarefa.
12. Cerca de quantas pessoas escreveram o Linux? Por que isso é um caso único?
13. Quais são os termos principais do da Licença Pública Geral (GPL) do GNU?
Download