Linux Por Dentro

of 40

  • date post

    30-May-2018
  • Category

    Documents

  • view

    220
  • download

    0

Embed Size (px)

Transcript of Linux Por Dentro

  • 8/14/2019 Linux Por Dentro

    1/40

    Linux Internals:

    Linux Visto por Dentro

    por

    Luiz Paulo Maia

    [email protected]

  • 8/14/2019 Linux Por Dentro

    2/40

    Luiz Paulo Maia

    Mestre em Informtica pelo NCE/UFRJ, ps-

    graduado em marketing pela PUC-Rio e graduado

    em Informtica pela PUC-Rio

    Trabalhou na Elebra, atual HP, Light e ANP, alm de

    scio-diretor da Training Autor dos livros Arquitetura de Sistemas

    Operacionais e Arquitetura (4ed., LTC, 2007) de

    Redes de Computadotes (1ed., LTC, 2009)

    Autor do simulador SOsim

    Coordenador da Graduao de Gesto da TI do

    Infnet, alm das formaes em Microsoft e Linux

  • 8/14/2019 Linux Por Dentro

    3/40

    Sumrio

    Histrico

    Caractersticas

    Arquitetura do Sistema

    Processos e Threads

    Gerncia do Processador

    Gerncia de Memria

    Sistema de Arquivos

    Gerncia de Entrada/Sada

  • 8/14/2019 Linux Por Dentro

    4/40

    Histrico

    1

    9

    7

    6

    1

    9

    6

    9

    U N I C S

    1

    9

    7

    1

    U N I X V 1

    U N I X V 6

    1

    9

    8

    8

    1

    9

    7

    9

    U N I X V 7

    1

    9

    8

    1

    S y s te m I I I

    1

    9

    8

    2

    S y s t e m V

    1

    9

    8

    4

    S V R 2

    1

    9

    8

    6

    S V R 3

    S V R 4

    1

    9

    9

    2

    S V R 4 . 2

    X e n i x

    M i n i x

    A I XC h o r u s

    S C O U n i x

    L i n u x

    U n i x W a r e

    1 B S D

    1

    9

    8

    6

    1

    9

    7

    8

    1

    9

    7

    9

    2 B S D

    1

    9

    8

    0 3 B S D4 B S D

    1

    9

    8

    1

    4 . 1 B S D

    1

    9

    8

    3

    4 . 2 B S D

    4 . 3 B S D

    1

    9

    9

    3

    4 . 4 B S D

    U l t r i x

    S u n O S

    M a c h

    I r i x

    F r e e B S D

    O p e n B S D

    O S F / 1S o l a r i s

  • 8/14/2019 Linux Por Dentro

    5/40

    Histrico

    From: [email protected] (Linus Benedict Torvalds)

    Newsgroups: comp.os.minix

    Subject: What would you like to see most in minix?

    Summary: small poll for my new operating system

    Message-ID:

    Date: 25 Aug 91 20:57:08 GMT

    Organization: University of Helsinki

    Hello everybody out there using minix -

    I'm doing a (free) operating system (just a hobby, won't be big and

    professional like gnu) for 386(486) AT clones. This has been brewing

    since april, and is starting to get ready. I'd like any feedback on

    things people like/dislike in minix, as my OS resembles it somewhat

    (same physical layout of the file-system (due to practical reasons)

    among other things).

    I've currently ported bash(1.08) and gcc(1.40), and things seem to work.

    This implies that I'll get something practical within a few months, and

    I'd like to know what features most people would want. Any suggestions

    are welcome, but I won't promise I'll implement them :-)

  • 8/14/2019 Linux Por Dentro

    6/40

    Histrico

    1991: desenvolvido inicialmente pelo

    filands Linus Torvalds para um PC-386

    1994: kernel 1.0

    1996: kernel 2.0 e 2.1 1999: kernel 2.2.0 e 2.3.0

    2001: kernel 2.4.0 e 2.5.0

    2003: kernel 2.6.0

    2004: kernel 2.2.26

    2009: kernel 2.4.37.2 e 2.6.30.1

  • 8/14/2019 Linux Por Dentro

    7/40

    Caractersticas

    Mais de seis milhes de linhas de cdigoem C e assembly

    Mais de 14.000 arquivos, ocupando mais de230 MB

    Cdigo fonte disponvel sobre a licenaGNU GPL (General Public License)

    No oferece interface grfica, utilitrios,compiladores, ferramentas de

    gerenciamento Diversas distribuies: Red Hat, CentOS,

    Fedora, Debian, Slackware, Ubuntu

  • 8/14/2019 Linux Por Dentro

    8/40

    Caractersticas

    Multiprogramao / Multitarefa

    Multiusurio

    Multiprocessamento simtrico

    Suporte a sistemas NUMA

    Kernel reentrante e carga de mdulos sob demanda

    Interrupes e excees

    Semforos e spin locks

    Processos e threads (lightweight process)

    Memria virtual, memria compartilhada e mapped

    files

  • 8/14/2019 Linux Por Dentro

    9/40

    Arquitetura do Sistema

  • 8/14/2019 Linux Por Dentro

    10/40

    Processos e Threads

    Processo a instncia de um programaem execuo

    Por exemplo, se existem 16 usuriosutilizando o editor vi, existem, pelo

    menos, 16 processos, um para cadausurio, porm os processos podemcompartilhar o mesmo cdigo executvelna memria (reentrncia)

    Process descriptor a estrutura de dadosque materializa o processo dentro do SO epossui todas as informaes necessriaspara a execuo do processo

  • 8/14/2019 Linux Por Dentro

    11/40

    Processos e Threads

    Process descriptor

    Estado

    PID

    Prioridade

    Espao deendereamento

    Terminais

    associados

    Arquivos abertos

    Sinais recebidos

    Ponteiros para

    outras estruturas

  • 8/14/2019 Linux Por Dentro

    12/40

    Processos e Threads

    Processos so criados pela system call fork()

    O processo que executa o fork() considerado o

    processo pai e o processo criado o processo

    filho

    Processo filho herda o cdigo fonte e a rea dedados do processo pai, mas implementando a

    tcnica de copy-on-write

    Todos os processos so descendentes do

    processo init, criado ao trmino do boot do SO

    Processos so eliminados pela system call exit()

    O programa a ser executado definido pela system

    call exec()

  • 8/14/2019 Linux Por Dentro

    13/40

    Processos e Threads

    Os processos so

    organizados em uma

    lista duplamente

    encadeada, chamada

    task list

  • 8/14/2019 Linux Por Dentro

    14/40

    Processos e Threads

    Threads permitem que partes de cdigo do mesmoprocesso possam ser executadas concorrentementee compartilhem o mesmo espao de endereamento

    Por exemplo, um editor de texto permite adigitao do texto, enquanto feita a correoortogrfica, o documento salvoperiodicamente, um outro documento impressoetc.

    Threads so semelhantes a idia de processos esubprocessos, porm oferecem melhordesempenho, pois compartilham o mesmo espaode endereamento e outros recursos, como

    arquivos O Linux utilizada o conceito de lightweight process,

    implementado pela biblioteca POSIX pthread, emmodo usurio

    Threads so criados pela system call clone()

  • 8/14/2019 Linux Por Dentro

    15/40

    Processos e Threads

    Estados e

    mudanas de

    estados

  • 8/14/2019 Linux Por Dentro

    16/40

    Gerncia do Processador

    Preempo por tempo

    Cada processo possui uma fatia de tempo para executar

    Ao trmino da fatia de tempo o processo retirado da

    UCP e outro processo executado

    O processo retirado poder voltar a executar

    posteriormente

    A fatia de tempo dinmica e depende da prioridade do

    processo

  • 8/14/2019 Linux Por Dentro

    17/40

    Gerncia do Processador

    Preempo por tempo

    Existem duas listas de processos prontos: Ativos: processos prontos que no esgotaram suas fatias

    de tempo

    Expirados: processos prontos que j esgotaram suas fatias

    Os processos so colocados inicialmente na lista ativa Os processos quando sofrem preempo por tempo noperdem o restante da fatia de tempo e permacem nalista ativa

    Quando o processo termina a sua fatia de tempo, colocado na lista expirada e recalculada a sua fatia de

    tempo Os processos prontos na lista expirado seroexecutados apenas quando todos os outros processosesgotarem suas fatias de tempo

  • 8/14/2019 Linux Por Dentro

    18/40

    Gerncia do Processador

    Preempo por prioridade

    Se um processo de maior prioridade

    ficar pronto, o processo em execuo

    interrompido, colocado no estado

    de pronto e o processo de maior

    prioridade assume o processador

    Processos de mesma prioridade so

    tratados no esquema de fila circular

  • 8/14/2019 Linux Por Dentro

    19/40

    Gerncia do Processador

    O algoritmo de escalonamento foi

    complementamente alterado da verso do kernel

    2.4 para a 2.6

    Na verso 2.6, o nmero de processos

    prontos no implica no tempo do

    escalonamento

    Os objetivos principais do escalonador so:

    reduzir o tempo de resposta de aplicaes

    interativas, aumentar o throughtput e evitar

    starvation O escalonador tenta identificar o tipo do

    processo: IO-bound ou CPU-bound, para

    beneficiar os processos IO-bound

  • 8/14/2019 Linux Por Dentro

    20/40

    Gerncia do processador

    Nveis de prioridade

    140 nveis, sendo zero a maior prioridadee 139 a menor

    Prioridades entre 0 e 99 so chamadas

    de tempo real: no existe fatia de tempo,logo no existe preempo por tempoapenas por prioridade

    Prioridades entre 100 e 139 existem aspreempes por tempo e prioridade

  • 8/14/2019 Linux Por Dentro

    21/40

    Gerncia do Processador

    Escalonamento dinmico permite que o sistema

    ajuste a prioridade dos processos

    Todo processo tem uma prioridade esttica

    atribuda quando o processo criado,

    geralmente 120 ou nice(0) A prioridade dinmica calculada somando ou

    diminuindo um va