Linux Por Dentro

download Linux Por Dentro

of 40

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 valor da prioridade esttica

    O valor dependenr do tempo que o processo

    passa no estado de espera

    Quanto mais tempo no estado de espera,maior o valor a ser subtrado da prioridade

    esttica

  • 8/14/2019 Linux Por Dentro

    22/40

    Gerncia do Processador

  • 8/14/2019 Linux Por Dentro

    23/40

    Gerncia de Memria

    Memria virtual

    Permite executar programas maiores que a memria

    fsica (MF)

    Permite criar estruturas de dados maiores que a MF

    Apenas partes dos programas precisam estar na MF

    Processos podem compartilhar bibliotecas,

    utilitrios e programas na MF

    Programas podem ser alocados em qualquer

    posio da MF Permite carregar um nmero maior de processos na

    MF

  • 8/14/2019 Linux Por Dentro

    24/40

    Gerncia de Memria

    Espao de endereamento virtual de 4 GB

    (Intel 32 bits), 64 GB com PAE e 256 TB

    (Intel 64 bits)

    Traduo de endereos, utilizando tabelas

    de pginas

    Pginas de 4 KB (32 bits) ou 8 KB (64 bits)

    Feito em hardware pela MMU (Memory

    Management Unit) Paginao por demanda

  • 8/14/2019 Linux Por Dentro

    25/40

    Gerncia de Memria

    Mapeamento em dois

    nveis para reduzir o

    tamanho das tabelas

    de mapeamento

    Control register 3 (cr3)aponta para o incio da

    tabela diretrio (TD)

    A TD permite chegar na

    tabela de pginas (TP)

    A TP permite chegar noendereo na pgina

    real (page frame)

  • 8/14/2019 Linux Por Dentro

    26/40

    Gerncia de Memria

    Processadores Intel de

    64 bits exigem quatro

    nveis de mapeamento

  • 8/14/2019 Linux Por Dentro

    27/40

    Gerncia de Memria

    O SO controla cada frame na MP utilizando um vetor

    (mem_map)

    Cada elemento do vetor chamado de page descriptor

    (page) de 32 bytes

    Cada page descriptor possui diversas informaes

    sobre uma pgina especfica na MP

  • 8/14/2019 Linux Por Dentro

    28/40

    Gerncia de Memria

    Page descriptor

    Campo _count um contador

    Se o valor -1 o frame est livre

    Se o campo for maior ou igual a zero o frame

    est em uso

    Flag PG_locked indica que o frame est

    bloqueado

    Flag PG_reference indica que o frame foi

    referenciado recentemente

    Flag PG_dirty indica se a pgina foi

    modificada

  • 8/14/2019 Linux Por Dentro

    29/40

    Gerncia de Memria

    Page Frame Reclaiming Algorithm (PFRA)

    Responsvel por manter um nmero mnimo de

    pginas livres para o SO continuar funcionando

    adequadamente

    O PFRA seleciona a pgina a ser liberadaconforme o seu contedo

    Por exemplo, melhor liberar pginas no

    modificadas do que as modificadas

    Pginas modificadas devem ser gravadas em

    disco (page out) antes de liberadas O PFRA seleciona a pgina que tem a menor

    chance de ser referenciada novamente,

    utilizando o algoritmo LRU (Least Recently Used)

  • 8/14/2019 Linux Por Dentro

    30/40

    Gerncia de Memria

    Least Recently Used (LRU)

    O sistema mantem duas listas depginas

    Pginas ativas: contem pginas acessadas

    recentemente Pginas inativas: contem pginas no

    acessadas recentemente

    As pginas trocam de listas em funodo tempo e se foram referenciadas (flag

    PG_reference) Periodicamente, as pginas da lista de

    inativas so liberadas

  • 8/14/2019 Linux Por Dentro

    31/40

    Gerncia de Memria

    Page Frame Reclaiming Algorithm (PFRA)

    Se a quantidade de memria livre

    continuar baixa acionado o Out Off

    Memory Killer (OOMK)

    OOMK ir selecionar um processo

    (vtima) e elimin-lo, para liberar todas as

    suas pginas na MP

  • 8/14/2019 Linux Por Dentro

    32/40

    Gerncia de Memria

    Swapping

    Antes das pginas na memria serem liberadas,

    as pginas devem gravadas em disco (page out)

    Geralmente pginas modificadas

    Quando a pgina novamente referenciadaocorre a leitura da pgina em disco para a

    memria (page in)

    A rea de swapping pode ser uma partio

    inteira ou um arquivo em uma partio

    Podem exitir ao mesmo tempo vrias reas deswap

    Pode ser desativado

  • 8/14/2019 Linux Por Dentro

    33/40

    Sistema de Arquivos

    Existem diversos sistemas de arquivos

    para o Linux, sendo os mais utilizados o

    Ext2 (Second Extended Filesystem) e Ext3

    Os dois sistemas de arquivos so

    compatveis, sendo a grande diferena o

    esquema de journaling oferecido pelo Ext3

    Journaling permite recuperar mais

    rapidamente um filesystem aps alguma

    interrupo no sistema, como uma faltade energia

  • 8/14/2019 Linux Por Dentro

    34/40

    Sistema de Arquivos

    Caractersticas do Ext2

    Permite definir o tamanho do bloco (1 KB

    a 4 KB). Blocos pequenos reduzem a

    fragmentao, porm blocos grandes

    reduzem o nmero de transferncias

    Permite definir o nmero de inodes na

    partio

    Permite reduzir o tempo de busca de

    arquivos

    Realiza a pr-alocao de blocos para

    evitar a fragmentao dos arquivos

  • 8/14/2019 Linux Por Dentro

    35/40

    Sistema de Arquivos

    Formato de um filesystem Ext2

  • 8/14/2019 Linux Por Dentro

    36/40

    Sistema de Arquivos

  • 8/14/2019 Linux Por Dentro

    37/40

    Gerncia de E/S

  • 8/14/2019 Linux Por Dentro

    38/40

    Referncias: Livros e Papers

    Linux Kernel Development, 2 ed., Robert

    Love, Sams Publishing, 2005

    Understanding the Linux Kernel, 3 ed.,

    Daniel Bovet, Marco Cesati, ORelly, 2005 Professional Linux Kernel Architecture,

    Wolfgang Mauerer, Wrox, 2008

    Understanding the Linux 2.6.8.1 CPU

    Scheduler, Josh Aas, SGI, 2005

  • 8/14/2019 Linux Por Dentro

    39/40

    Referncias: Sites

    www.levenez.com/unix/

    www.kernel.org

    www.gnu.org

    www.distrowatch.com

  • 8/14/2019 Linux Por Dentro

    40/40

    www.infnet.edu.br

    [email protected]

    2122-8800

    Esta palestra est disponvel em:

    Ministrada por

    E-mail:

    http://www.infnet.edu.br/http://www.infnet.edu.br/