a biblia linux

Click here to load reader

Post on 23-Oct-2015

110 views

Category:

Documents

20 download

Embed Size (px)

TRANSCRIPT

  • ndice 1 Introduo 062 Histrico do Linux 083 Gerncia de Processos 103.1 Consideraes Iniciais 103.1.1 Inicializao (boot do sistema) 103.2 Gerncia do Processo pelo kernel 123.3 Criando e Destruindo um Processo 133.4 Executando Processos 134 Gerncia de Memria 154.1 Gerenciamento de Memria do Linux 154.2 Memria Fsica 164.3 Distribuio da Memria do Processo Usurio 174.4 Inicializao da Memria 184.5 Adquirindo e Liberando Memria 194.6 Paginao (Paging) 224.7 Gerenciamento de Memria Cache 234.7.1 Arquitetura de Memria Cache do Linux (Linux Flush Architecture) 234.7.2 Implementao de Memria Cache 244.7.3 Arquitetura Baseada no SMP 254.7.3.1 Arquitetura Baseada no contexto MMU/CACHE 274.7.4 Contedo de uma Arquitetura Virtual 274.7.5 Implicaes Referentes a Arquitetura 284.7.5.1 Arquitetura baseado no contexto SMP 284.7.5.2 Arquitetura baseado no contexto MMU/CACHE 294.7.6 Como tratar o que a Arquitetura flush no executa com exemplos 294.7.7 Questes Abertas na Arquitetura Cache 305 Sistema de Arquivos do Linux (File System) 315.1 Conceitos Fundamentais 315.1.1 Arquivos 315.1.2 Diretrios 315.1.3 Conta 325.1.4 Tipo de Arquivos 325.1.5 Acesso a Arquivos 335.1.6 Atributos dos Arquivos 335.2 Operaes sobre Arquivos 345.3 Arquivos Compartilhados 355.4 Estrutura do Sistema de Arquivos Linux Realease 1.2 365.4.1 Apresentao 365.4.2 Caractersticas Sistema de Arquivos 365.4.3 Composio dos Diretrios 385.4.3.1 Subdiretrio /bin 395.4.3.1.1 Arquivos e/ou Comandos disponveis em /bin 395.4.3.2 Subdiretrio /boot 405.4.3.3 Subdiretrio /dev 405.4.3.4 Subdiretrio /etc 415.4.3.4.1 Arquivos e/ou Comandos disponveis em /etc 415.4.3.5 Subdiretrio /home 425.4.3.6 Subdiretrio /lib 425.4.3.7 Subdiretrio /mnt 435.4.3.8 Subdiretrio /proc 43

    1

  • 5.4.3.9 Subdiretrio /root (opcional) 435.4.3.10 Subdiretrio /sbin 445.4.3.10.1 Arquivos e/ou Comandos disponveis em /sbin 445.4.3.10.2 Arquivos e/ou Comandos opcionais em /sbin 455.4.3.11 Subdiretrio /tmp 455.4.3.12 A hierrquia /usr 455.4.3.12.1 Subdiretrio /usr (permanente) 465.4.3.12.2 Subdiretrio /usr/x386 475.4.3.12.3 Subdiretrio /usr/bin 475.4.3.12.4 Subdiretrio /usr/dict 475.4.3.12.5 Subdiretrio /usr/etc 475.4.3.12.6 Subdiretrio /usr/include 485.4.3.12.7 Subdiretrio /usr/lib 495.4.3.12.8 Subdiretrio /usr/local 505.4.3.12.9 Subdiretrio /usr/man 505.4.3.12.10 Subdiretrio /usr/bin 525.4.3.12.11 Subdiretrio /usr/share 535.4.3.12.12 Subdiretrio /usr/src 545.4.3.13 A hierrquia /var 545.4.3.13.1 Subdiretrio /var/adm 545.4.3.13.2 Subdiretrio /var/catman 555.4.3.13.3 Subdiretrio /var/lib 565.4.3.13.4 Subdiretrio /var/local 565.4.3.13.5 Subdiretrio /var/ock 575.4.3.13.6 Subdiretrio /var/og 575.4.3.13.7 Subdiretrio /var/name 585.4.3.13.8 Subdiretrio /var/nis 585.4.3.13.9 Subdiretrio /var/preview 585.4.3.13.10 Subdiretrio /var/run 585.4.3.13.11 Subdiretrio /var/spool 585.4.3.13.12 Subdiretrio /var/tmp 595.4.4 Alguns Dilemas sobre o Sistema de Arquivos 595.4.5 Descrio sucinta do contedo dos manuais 616 Pontos Positivos e Negativos 637 Concluso 648 Apndices 65A Comandos Bsicos do Sistema Unix 65B Perguntas mais Frequentes (FAQs) colocadas na Linux BR 77 C Copyrights Linux e Esquema de numerao verso Linux 127D Contrato de Licena. 1289 Bibliografia e Referncias 134

    2

  • 1 - Introduo

    O Linux um clone UNIX de distribuio livre para PCs baseados em processadores 386/486/Pentium.

    O Linux uma implementao independente da especificao POSIX, com a qual todas as verses do UNIX padro (true UNIX) esto convencionadas.

    O Linux foi primeiramente desenvolvido para PCs baseados em 386/486/Pentium, mas atualmente tambm roda em computadores Alpha da DEC, Sparcs da SUN, mquinas M68000 (semelhantes a Atari e Amiga), MIPS e PowerPCs.

    O Linux foi escrito inteiramente do nada, no h cdigo proprietrio em seu interior.

    O Linux est disponvel na forma de cdigo objeto, bem como em cdigo fonte.

    O Linux pode ser livremente distribudo nos termos da GNU General Public License (veja apndice).

    O Linux possui todos as caractersticas que voc pode esperar de um UNIX moderno, incluindo:

    Multitarefa real Memria virtual Biblioteca compartilhada Demand loading Gerenciamento de memria prprio Executveis copy-on-write compartilhados Rede TCP/IP (incluindo SLIP/PPP/ISDN) X Windows

    A maioria dos programas rodando em Linux so freeware genricos para UNIX, muitos provenientes do projeto GNU.

    Muitas pessoas tem executado benchmarks em sistemas Linux rodando em 80486, e tem achado o Linux comparvel com workstations mdias da Sun e da Digital.

    O Linux est disponvel atravs 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 usurio final. O Linux tem se tornado uma alternativa efetiva de custo em relao aos caros sistemas UNIX existentes.

    Um exemplo de pacote de distrribuio do Linux mais populares distribuido pela InfoMagic (http://www.infomagic.com, e-mail info@infomagic.com), a verso LINUX Developers Resource CD-ROM, de dezembro de 1996, contm 6 CD-ROMs, seu contedo sucinto :

    Verso Red Hat 4.0 (instalando kernel 2.0.18) Verso Slackware 3.1 (Slackware 96 - instalando kernel 2.0) Verso Debian GNU/Linux 1.2 X-Windows - Xfree86 version 3.2 Arquivos Linux de tsx-11.mit.edu e sunsite.unc.edu Arquivos GNU de prep.ai.mit.edu Documnetao completa on-line & HOWTOs (Guia de Instalao e Guia do Administrador da

    Rede, em ingls) Softwares demostrao comerciais como : BRU, dbMan, StarOffice, Cockpit, Flagship,

    Smartware, GP Modula-2, Pathfinder, Scriptum, etc.

    3

  • 2. Historia do Linux

    O Kernel do Linux foi, originalmente, escrito por Linus Torvalds do Departamento de Cincia da Computao da Universidades de Helsinki, Finlndia, com a ajuda de vrios programadores voluntrios atravs 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 prprias 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 sero homens e escrevero seus prprios device drivers ? Voc est sem um bom projeto e esta morrendo por colocar as mos 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 ? Ento esta mensagem pode ser exatamente para voc.

    Como eu mencionei a um ms atrs, estou trabalhando em uma verso independente de um S.O. similar ao Minix para computadores AT-386. Ele est, finalmente, prximo do estgio em que poder ser utilizado (embora possa no ser o que voc esteja esperando), e eu estou disposto a colocar os fontes para ampla distribuio. Ele est na verso 0.02... contudo eu tive sucesso rodando bash, gcc, gnu-make, gnu-sed, compresso, etc. nele.

    No dia 5 de outubro de 1991 Linus Torvalds anunciou a primeira verso oficial do Linux, verso 0.02. Desde ento muitos programadores tm respondido ao seu chamado, e tm ajudado a fazer do Linux o Sistema Operacional que hoje.

    Ultimas verses do kernel do Linux

    Release v1.0

    1.0.9

    Data: Sat Apr 16 21:18:02 UTC 1994

    Release v1.1

    1.1.95

    4

  • Data: Thu Mar 2 07:47:10 UTC 1995

    Release v1.2

    1.2.13

    Data: Wed Aug 2 12:54:12 UTC 1995

    Release v1.3

    pre2.0.14

    Data: Thu Jun 6 19:30:56 UTC 1996

    Release v2.0

    2.0.28

    Data: Tue Jan 14 12:33:26 UTC 1997

    ftp://ftp.cs.Helsinki.FI/pub/Software/Linux/Kernel/v2.0/linux-2.0.28.tar.gz

    Release v2.1

    2.1.23

    Data: Sun Jan 26 14:12:18 UTC 1997

    ftp://ftp.cs.Helsinki.FI/pub/Software/Linux/Kernel/v2.1/linux-2.1.23.tar.gz

    3 - Gerncia de Processos

    3.1- Consideraes Iniciais

    Para explicarmos como o Linux gerncia processos, faremos consideraes iniciais sobre o cdigo fonte do kernel do Linux (onde encontramos a implementao da Gerncia de Processos) e a inicializao boot do sistema.

    Neste tpico tentaremos explicar, de uma maneira ordenada o cdigo fonte do Linux, tentando conseguir um bom entendimento sobre como o cdigo fonte est situado e como as caractersticas mais relevantes do UNIX foram implementadas. O objetivo ajuda-lo a se familiarizar com o projeto geral do Linux. Ento, vamos comear por onde o Linux comea: seu sistema de boot.

    Um bom entendimento da linguagem C necessrio para entender este material, assim como familiaridade com conceitos de UNIX e arquitetura dos PCs. Porm, nenhum cdigo C aparecer neste material, mas referencias de onde podem ser encontrados.

    5

  • Qualquer referencia pathname arquivos tem como ponto de partida a arvore principal de fontes, usualmente /usr/src/linux.

    A maioria das informaes reportadas aqui tem como referencia o cdigo fonte do Linux verso 1.0. Referencias a verses posteriores contero o smbolo novo.

    Caso o smbolo no estiver presente, significa que no houveram modificaes aps as verses 1.0.9-1.1.76.

    mais Ocasionalmente um pargrafo como este ocorrer no texto. Indicando onde poderam ser obtidas mais informaes sobre o assunto corrente (geralmente o cdigo fonte).

    3.1.1 - Inicializao (boot do sistema)

    Quando o PC ligado, o processador 80x86 encontra-se em modo real e executa o cdigo contido no endereo 0xFFFF0, que corresponde a um endereo ROM-BIOS. O BIOS do PC realiza alguns testes no sistema e inicializa o v