Encontra-se Disponível na sessão de Downloads o conteúdo completo desse assunto, um tutorial completo com comandos básicos e utilização desse poderoso Sistema Operacional.
Linux
1 - Introdução
O Linux é um clone UNIX de distribuição livre para PCs
baseados em processadores 386/486/Pentium.
O Linux é uma implementação independente da especificação POSIX, com a qual
todas as versões do UNIX padrão (true UNIX) estão convencionadas.
O Linux foi primeiramente desenvolvido para PCs baseados em 386/486/Pentium, mas
atualmente também roda em computadores Alpha da DEC, Sparcs da SUN, máquinas
M68000 (semelhantes a Atari e Amiga), MIPS e PowerPCs.
O Linux foi escrito inteiramente do nada, não há código proprietário em seu
interior.
O Linux está disponível na forma de código objeto, bem como em código fonte.
O Linux pode ser livremente distribuído nos termos da GNU General Public
License (veja apêndice).
O Linux possui todos as características que você pode esperar de um UNIX
moderno, incluindo:
A maioria dos programas rodando em Linux são freeware
genéricos para UNIX, muitos provenientes do projeto GNU.
Muitas pessoas tem executado benchmarks em sistemas Linux rodando em 80486, e
tem achado o Linux comparável com workstations médias da Sun e da Digital.
O Linux está disponível através da Internet por meio de centenas de sites FTP.
O Linux está sendo usado hoje em dia por centenas e centenas de pessoas pelo
mundo. Está sendo usado para desenvolvimento de softwares, networking (intra-office
e Internet), e como plataforma de usuário final. O Linux tem se tornado uma
alternativa efetiva de custo em relação aos caros sistemas UNIX existentes.
Um exemplo de pacote de distrribuição do Linux mais populares é distribuido
pela InfoMagic (http://www.infomagic.com, e-mail [email protected]), a versão
LINUX Developer’s Resource CD-ROM, de dezembro de 1996, contém 6 CD-ROMs, seu
conteúdo sucinto é :
2 - Historia Do Linux
O Kernel do Linux foi, originalmente, escrito 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.
Linus Torvalds iniciou cortando (hacking) o kernel como um projeto particular,
inspirado em seu interesse no Minix, um pequeno sistema UNIX desenvolvido por
Andy Tannenbaum. Ele se limitou a criar, em suas próprias palavras, "um
Minix melhor que o Minix" ("a better Minix than Minix"). E depois
de algum tempo de trabalho em seu projeto, sozinho, ele enviou a seguinte
mensagem para comp.os.minix:
" 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."
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 respondido ao seu chamado, e têm ajudado a fazer do Linux o Sistema Operacional que é hoje.
3 - Gerência de Processo
Para explicarmos como o Linux gerência processos, faremos considerações iniciais sobre o código fonte do kernel do Linux (onde encontramos a implementação da Gerência de Processos) e a inicialização "boot" do sistema.
Neste tópico tentaremos explicar, de uma maneira ordenada o código fonte do Linux, tentando conseguir um bom entendimento sobre como o código fonte está situado e como as características mais relevantes do UNIX foram implementadas. O objetivo é ajuda-lo a se familiarizar com o projeto geral do Linux. Então, vamos começar por onde o Linux começa: seu sistema de boot.
Um bom entendimento da linguagem C é necessário para entender este material, assim como familiaridade com conceitos de UNIX e arquitetura dos PCs. Porém, nenhum código C aparecerá neste material, mas referencias de onde podem ser encontrados.
Qualquer referencia "pathname" à arquivos tem como ponto de partida a arvore principal de fontes, usualmente /usr/src/linux.
A maioria das informações reportadas aqui tem como referencia o código fonte do Linux versão 1.0. Referencias a versões posteriores conterão o símbolo. Caso o símbolo não estiver presente, significa que não houveram modificações após as versões 1.0.9-1.1.76.
Ocasionalmente um parágrafo como este ocorrerá no texto. Indicando onde poderam ser obtidas mais informações sobre o assunto corrente (geralmente o código fonte).
4 - Gerência de Memória
A execução do LMM (Linux Memory Manager) exige uma estratégia de paginação com uma copy-on-write confiando nas 386 páginas auxiliares. Um processo alcança suas tabelas de páginas de seu parent (durante um fork ) com as entradas marcadas como read-only ou trocado. Então, se o processo tenta escrever para este espaço de memória e a página é uma copy on write page, isto é copiado e a página marcada read-write. Um exec ( ) resulta na leitura de uma página ou mais do executável. O processo então erra em qualquer outra página que precisar.
Cada processo tem uma tabela de página que significa que pode acessar 1 Kb de tabela de página indicando para 1 Kb de 4 Kb, páginas que é 4 Gb de mémoria. Um diretório de página do processo é iniciado durante um Fork por copy-page-tables. O processo inativo tem seu diretório de página inicializado durante a sequência de inicialização.
Cada processo usuário tem uma tabela descritória local que contém um código de segmento e um segmento de dados. Estes segmentos usuários extendem de 0 para 3 Gb (0 X c 0000000). Nos espaços usuários, endereços lineares e endereços lógicos são idênticos.
No 80386, endereços lineares vão de 0 Gb para 4 Gb. Um endereço linear indica uma posição particular de memória dentro deste espaço. Um endereço linear não é um endereço físico --- isto é um endereço virtual. Um endereço lógico consiste de um seletor e um offset. O seletor indica para um segmento e o offset diz que distância na seção o endereço é localizado.
O código Kernel e o segmento de dados são seções privilegiados definidos na tabela descritora global e extende de 3Gb para 4Gb. O Swapper - page - dir é organizado para que estes endereços lógicos e físicos sejam idênticos no espaço Kernel.
O espaço 3Gb acima aparece no process page directory como indicadores para tabelas de páginas Kernel. Este espaço é invisível para o processo no user mode, mas o modo privilegiado é acionado, por exemplo, para sustentar um sistema de ligação. O modo surpevisor é inserido dentro do contexto do processo atual então a tradução do endereço ocorre com respeito ao diretório de página do processo, mas usando segmentos Kernel. Isto é idêntico no mapeamento produzido com o uso de swapper - pg - dir e segmentos Kernel como ambos diretórios de páginas usa a mesma tabela de página neste espaço. Apenas task [0] (A tarefa inativa, ás vezes chamada de "tarefa trocadora" por razões históricas, mesmo assim isto não tem relação com trocas nos implementos Linux) usa o swapper - pg - dir diretamente.
A vantagem é que sempre que o endereço linear é acima de 0 X c 0000000 tudo usa a mesma tabela de páginas Kernel (Kernel page Tables).
O monte usuário permanece no topo do segmento de dados do usuário e desce. O Kernel Stack não é uma bonita estrutura ou segmento de dados que eu possa apontar com um "aqui é um Kernel Stack". Um Kernel Stack_frame (uma página) é associada com cada novo processo criado e é usado sempre que o Kernel opera dentro do contexto deste processo. Coisas ruins aconteceriam se Kernel Stack descesse abaixo de seu corrente stack frame. [ Onde o Kernel Stack é guardado? Eu sei que há um para cada processo, mas onde isto é armazenado quando isto não está sendo usado? ]
Páginas usuários podem ser roubados ou trocados - Um user page é um que é mapeado abaixo de 3 Gb em uma tabela de páginas usuários. Esta região não contém page directories ou page tables. Apenas páginas sujas são trocadas.
Menores alterações são necessárias em alguns lugares ( testes para limites de memória vem para a mente) para prover suporte para definidos segmentos programados. [ Há agora uma modificação - |c| + O sistema de ligação usado por dosane, Wine, Twin, and Wabi para criar segmentos arbitrários. ]
5 - Conceitos Fundamentais
Conceitualmente, arquivos são mecanismos de abstração que fornece uma forma de armazenar e recuperar informações em disco. A características mais importante de qualquer mecanismo abstração é a forma de identificar os objetos como os quais o mecanismo trata.
Quando um processo cria um arquivo, é preciso que tal arquivo receba um nome, normalmente dado pelo processo. Quando tal processo termina sua execução, o arquivo continua a existir, podendo ser acessado por outros processos, usando para tanto o nome atribuido ao arquivo.
O Linux faz distinção entre nome maiúsculos e minúsculos. Normalmente um nome de arquivo é composto de nome e uma extensão, separada por ponto no Linux, o tamanho da extensão, se houver, fica a critério do usuário, e uma arquivo pode até ter duas ou mais extenções, exemplo : prog.c.Z.
Não há limite de números de caracteres utilizados para dar nome a arquivos.
O Sistema Operacional Linux, olha o arquivo como uma sequência de byte, sem nenhuma estrutura, isto dá uma flexibilidade espantosa ao sistema de arquivo. Os programas de usuários, podem colocar o que desejarem nos arquivos e identificá-los da forma que lhe for mais conveniente, o Unix não influência em NADA nesta processo de identificação.
5.1 - Diretórios
Para tratar dos arquivos, o sistema operacional normalmente lança mão do diretórios, no caso do Linux diretórios hierárquico,vide figura 01. Os diretórios são um tipo de arquivo.
No Linux todos os arquivos fazem parte de um diretório, assim eles são mantidos e organizados, os diretórios são meios de oferecer endereços dos arquivos, de maneira que o SO possa acessá-los rapidamente e facilmente, ao entra pela primeira vez em sua conta, o usuário já esta em um subdiretório denominado subdiretório de entrada.
5.2 - Conta
É uma senha que é aberta pelo administrador do sistema (denominado de root) onde o usuário indentifica-se para o computador, que então dá acesso ao seu diretório de entrada, onde você pode executar os comandos permitidos a sua senha. Nos SO padrão Unix, a conta é obrigatória para todos, a figura 02 mostra um exemplo de abertura de conta no Linux.
5.3 - Arquivos
O Linux suporta arquivos regulares, arquivos de diretório, arquivos especiais de caracteres e arquivos especiais blocados.
Os arquivos regulares são aqueles que contém informações de usuários, por exemplos, tipo ASCII. Arquivos diretórios são arquivos usado na manutenção do sistema de arquivo. Arquivos especiais de caracteres estão diretamente ligado à entrada/saída e são usados para dispositivos seriais de entrada/saída, tais como terminais, impressoras e rede. Os arquivos especiais blocados são usado modelar dispositivos.
O Sistema Operacional Linux, bem como os demais SO, trata o acesso a arquivos de forma radômica, ou seja, seus byte ou registros podem ser lidos em qualquer ordem.
Cada arquivo tem necessariamente um nome e um conjunto dados. Além disso, o Sistema Operacional associa a cada arquivo algumas outras informações que chamaremos de atributos de arquivos. O Sistema de Arquivo do Linux permite restringir o acesso aos arquivos e diretórios permitindo que somente determinados usuários possam acessá-los. A cada arquivo e diretório é associado um conjunto de permissões. Essas permissões determinam quais usuários podem ler, escrever, ou alterar um arquivo, e no caso de arquivos executáveis como programas, quais usuários podem executá-lo. Se um usuário tem permissão de execução de um diretório, significa que ele pode realizar buscas dentro daquele diretório, e não executá-lo como se fosse programa.
5.4 - Operações sobre arquivos
Os arquivos existem para armazenar informações e permitir a sua recuperação. As Chamadas de Sistemas mais comum relacionadas ao Sistema de Arquivo Linux são chamadas que operam sobre arquivos individuais ou envolvendo diretórios e sistema de arquivos como um todo .
A chamada CREAT não só cria um arquivo, mas também abre esta arquivo para escrita, indepedente do modo de proteção especificado para ele. O descritor de arquivo que a chama retorna, fd, pode ser usado para escrever no arquivo. Se a chamada CREAT for executada sobre um arquivo existente, esta arquivo será truncado para o comprimento 0, desde que os direitos do arquivos assim o permitam.
Para que um arquivo existente possa ser lido ou escrito, é necessário que ele seja primeiramente aberto e se ele esta aberto para leitura, escrita ou para ambas as operações. Várias opções podem ser especificadas. O descritor de arquivo que a chamada retorna pode então ser usado para leitura ou escrita. Posteriormente, o arquivo deve ser fechado através da chamada CLOSE, cuja execução torna o descritor de arquivo disponível para ser novamente utilizado numa chamada CREAT ou OPEN subseqüente.
A chamada READ é utilizada para ler o arquivo, os bytes lidos vêm em posição corrente de leitura. O processo que faz a chamada deve indicar a quantidade de informação a ser lida e providenciar um buffer para possibilitar a leitura.
A chamada WRITE, os dados são escritos no arquivo, geralmente a partir da posição corrente. Se tal posição for a de final de arquivo, o tamanho do mesmo cresce. Se a posição corrente no momento da escrita estiver no meio do arquivo, os dados existente nesta posição estaram perdidos para sempre, pois a operação de write escreve os novos dados em cima dos antigos.
Apesar da maioria dos programas ler e escrever arquivos sequëncialmente, em algumas aplicações os programas devem ser capaz de acessar randomicamente qualquer parte do arquivo. Associado a cada arquivo, existe um ponteiro que indica a posição corrente do arquivo. Quando a leitura ou escrita for seqüêncial, em geral, ele aponta para o próximo byte a ser lido ou a ser escrito. A chamada LSEEK têm três parâmetros: o primeiro do descritor de área para o arquivo, o segundo é a posição do arquivo, o terceiro informa se a posição é relativa ao inicio do arquivo, à posição corrente ou final do arquivo. O valor que o LSEEK retorna é a posição absoluta no arquivo após a mudança no ponteiro.
Para cada arquivo o Linux mantem o modo do arquivo (regular, diretório ou arquivo especial), seu tamanho, o instante da última modificação, e outra informações pertinentes. Os programas podem verificar estas informações, usando a chamada STAT. Seu primeiro parâmetro é o nome do arquivo. O segundo é um ponteiro para a estrutura onde a informação solicitada deve ser colocada.
As chamadas do sistema relacionadas com os diretórios ou com o sistema de arquivo como um todo , em vez de um arquivo específicos. Os diretórios são criados utilizando as chamadas MKDIR e RMDIR, respectivamente. um diretórios o pode ser removido se estiver vazio.
A ligação de um arquivo cria uma nova entrada no diretório que aponta para um arquivo existente. A chamada LINK cria esta ligação. Os seus parâmetros especificam os nome originais e novo, respectivamente. As entrada do diretórios são removidas via UNLINK. Quando a última ligação para um arquivo é removida, é automaticamente apagada . Para um arquivo que nunca foi ligado, o primeiro UNLINK faz com que ele desapareça.
Os diretórios de trabalho é especificado pela chamada CHDIR. Sua execução faz com que haja mudança na interpretação dos nome dos caminhos realtivos.
A chamada CHMODE torne possível a mudança do modo um arquivo, ou seja, de seus bits de proteção.
5.5 - Arquivos Compartilhados
Quando vários usuários estão trabalhando juntos em um projeto, ele comumente precisam compartilhar arquivos. Em decorrência disto, muitas vezes é conveniente que um arquivo compartilhado apareça simultâneamente em diretórios diferentes que pertençam a diferentes usuários. A conecção entre um diretório e um arquivo compartilhado é chamada de ligação (link). O próprio sistema de arquivo é um gráfico acíclico dirigido , ou DAG, em vez de árvore. No Linux os blocos do disco não são listados no diretório, mas numa estrutura de dados associada ao próprio arquivo. Esta estrutura é chamada nó-i, é a forma como o Linux implementa compartilhamento arquivo.
6 - Pontos Positivos e negativos
O Linux é sem dúvida a melhor opção de Unix para PC, pois possui todas as características um UNIX moderno, tais como : multitarefa real, multiusuário, memória virtual, biblioteca compartilhada, interface gráfica (X Windows) etc. O Linux possui centenas de comandos embutidos, chamado utilitários e ferramentas, cada ferramenta é um programa distinto, destinado a fazer um tarefa específica de forma rápida e segura, vide item 5.4.3 - Compisição dos diretórios do Linux.
O fato de ser um sistema aberto é extremamente flexível (usuário tem acesso ao fonte do sistema) é outro ponto positivo.
O preço é outro atrativo US$ 44,00 (no Brasil, US$ 22,00 nos E.U.A), incluem 6 CD’s do Linux Developer’s Resourses CD-ROM, distribuido pela InfoMagic.
Diversos grupos de estudo do Linux no mundo inteiro garante atualizações do software praticamente mensais. Aliado a isto, cada nova versão incorpora dispositivos perífericos que são lançado no mercado, trazendo a seu usuário suporte as mais recentes conquista da indústria do hardware.
O Linux tem excelente mercado a nível acadêmico, o que nos faz crer constantes melhoras no software, pois grande parte dos melhores professores/pesquisadores de sistemas operacionais colaboram para o seu desenvolvimneto tecnológico.
A documentação é detalhada e completa (em inglês), em português é bastante escassa (ponto negativo). Toda a documentação pode ser facilmente acessada pela internet em diversos sites ou na documentação que acompanha o software.
O suporte técnico é um dos pontos fracos do sistema, é feito basicamente através da internet, não existe nenhuma empresa no Brasil especializada no suporte ao Linux.
O número de aplicativos é limitado e não existe a curto prazo pespectiva de entrada de grandes software house desenvolvendo aplicativos para Linux, sem aplicativos não há como um sistema se tornar popular no mundo dos PCs.
O sistema de arquivos varia de um distribuição a outro, tornado difícil a vida do administrador de sistema, que muitas vezes tem dificuldade de descobrir o que essencial em cada subdiretório, limpar, criar, preparar, verificar, encontar e montar outros sistemas de arquivos (possívelmente em máquinas remotas), todas estas tarefas podem ser dificultadas se não encontrarmos os arquivos aonde esperamos.
A administração e a operação de um modo geral é bem mais complexa em um ambiente unix, inclusive o Linux, do que no ambiente DOS/Windows, o que dificulta sua popularização.
A Interface Gráfica X-Windows, Xfree86 versão 3.2, ainda precisa ser melhorada, principalmente os aplicativos que são desenvolvidos para a mesma, ainda muito pobres comparada com a GUI do Windows95.
7 - Conclusão
O Linux, é um sistema operacional do tipo Unix, o padrão System V esta embutido no seu kernel, foi desenvolvido para a plataforma IBM-PC, sendo assim, ele possui a robustez e segurança e flexibilidade do Unix. Além disso ele possui uma interface gráfica chamada de X Windows(XFree86 versão 3.2, por exemplo, existe outrasinterface gráfica), que é semelhante a do Windows 95, menos sofisticada, menos aplicativos e menos elaborada, porém funcional.
O Projeto Linux foi desenvolvido para ser uma arquitetura aberta, você terá toda a liberdade de desenvolver software para sua plataforma. Os fontes são distribuidos junto com o produto. Por outro lado, não existe um grande mercado para a plataforma Linux, sendo assim, as grandes softwares houses do mundo, como a Microsoft, Lotus, Corel, Borland, Novell, etc não se preocuparam em desenvolvem aplicativos para ele. O desenvolvimento de aplicativos ainda é pequeno, colaboradores, em sua maioria pesquisadores, desenvolve os softwares e a distribuição é feita, preferencialmente, no mesmo pacote a preços módicos, todo o pacote custa no Brasil US$ 44,00 (US$ 22,00 nos USA), pode ser comprado utilizando qualquer Cartão de Crédito Internacional.
Outro problema do Linux é a falta de suporte técnico, não existe a nível comercial no Brasil, as informações são obtidas através de diversos manuais contidos no software, ou através da internet. Existe uma farta documentação disponível na rede, diversos servidores WWW (World Wide Web), lista de discussões (serviços que permite o intercâmbio de mensagem entre vários usuários, funciona como uma extensão do correio eletrônico, onde qualquer mensagem enviada a este endereço fictício, conhecido como alias, e reenviada automaticamente para todos os endereços da lista associada), Netnews ou USENET ou NEWS (semelhante a lista de discussão, só que as mensagem são enviadas a um determinado computador da rede que as reenvia em bloco, para outros computadores que aceitam o serviço), FTP (File Transfer Protocol, serviço básico de tranferência de arquivos na rede), etc.
O mercado do Linux no Brasil é restrito, praticamente, ao meio acadêmico e alguns provedores da Internet (ex.: Universidade Federal de Goiás utiliza como roteador e servidor de WWW em algumas unidade acadêmicas). É difícil acreditar no crescimento do mercado Linux no Brasil a curto e a médio prazo fora deste nincho de mercado, devido a sua dificuldade de operação, o Linux foi projetado por programadores para programadores, a fim de ser utilizado em ambiente onde a maioria dos usuários tenha uma certa experiência, soma-se a isto a falta de software para a plataforma Linux que dificulta a sua popularização. As empresas que utilizam o Unix comercialmente na plataforma RISC, utilizam sistemas proprietários desenvolvidos por empresas como Sun, IBM, Dec, etc, que fazem tanto o hardware quanto SO, embora exista versões do Linux para algumas destas plataformas (ex. Sun) não acreditamos no crescimento do Linux neste mercado, pois é estritamente fechado.
Apesar disto, o Linux é uma opção séria como sistemas operacional do tipo Unix para o mundo PC, podemos recomendá-lo sem medo de errar, se sua empresa ou aplicação precisar de um sistema com as características do Unix, é você possue máquinas Intel ou compatíveis, pode utillizá-lo é a melhor opção hoje e com grandes possibilidades de crescimento nesta faixa de mercado.