linux - um estudo de caso

46
Linux: Um estudo de caso Tiago Roberti Sampaio www.trsampaio.com Universidade Federal de Mato Grosso

Upload: tiago-r-sampaio

Post on 16-Jun-2015

164 views

Category:

Software


2 download

DESCRIPTION

Linux é um termo utilizado para se referir a sistemas operativos (português europeu) ou sistemas operacionais (português brasileiro) que utilizem o núcleo Linux. O núcleo Linux foi desenvolvido pelo programador finlandês Linus Torvalds, inspirado no sistema Minix. O seu código fonte está disponível sob a licença GPL (versão 2) para que qualquer pessoa o possa utilizar, estudar, modificar e distribuir livremente de acordo com os termos da licença.

TRANSCRIPT

Page 1: Linux - Um estudo de caso

Universidade Federal de Mato Grosso

Linux: Um estudo de

caso

Tiago Roberti Sampaio

www.trsampaio.com

Page 2: Linux - Um estudo de caso

Universidade Federal de Mato Grosso

Linux: Um estudo de caso

Page 3: Linux - Um estudo de caso

Universidade Federal de Mato Grosso

Introdução

Sistema de Arquivos

Processos

Gerenciamento de Memoria

Entrada/Saída

Page 4: Linux - Um estudo de caso

Universidade Federal de Mato Grosso

História do Linux

Uma breve história...

Page 5: Linux - Um estudo de caso

Universidade Federal de Mato Grosso

Licença

A liberdade nº 0

A liberdade nº 1

A liberdade nº 2

A liberdade nº 3

Page 6: Linux - Um estudo de caso

Universidade Federal de Mato Grosso

Família Linux

Page 7: Linux - Um estudo de caso

Universidade Federal de Mato Grosso

Processos

Comunicação Entre Processos

Implementação de um processo

Escalonamento

Page 8: Linux - Um estudo de caso

Universidade Federal de Mato Grosso

Processos

Único thread de controle inicial (único Program Counter)

Executa um único programa

Page 9: Linux - Um estudo de caso

Universidade Federal de Mato Grosso

Processos

Daemon

Cron

Cron é necessário?

Page 10: Linux - Um estudo de caso

Universidade Federal de Mato Grosso

ProcessosChamadas relacionadas

Fork: Filho = Pid = 0.

pid_t fork(void);

Page 11: Linux - Um estudo de caso

Universidade Federal de Mato Grosso

ProcessosChamadas relacionadas

Getpid: Fornece o Pid do processo.

pid_t getpid(void);

Page 12: Linux - Um estudo de caso

Universidade Federal de Mato Grosso

ProcessosChamadas relacionadas

Waitpid: Chamada bloqueante.

pid_t waitpid(pid_t pid, int *status, int options);

0, espera qualquer processo do grupo

-1, espera qualquer processo

>0, espera o processo nº pid

Page 13: Linux - Um estudo de caso

Universidade Federal de Mato Grosso

ProcessosChamadas relacionadas

Exec: Substitui a imagem.

execl, execlp, execle, execv, execvp, execvpe – executa um arquivo

int execvp(const char *file, char *const argv[]);

Cria uma instância do shell para buscar o arquivo *file

Diretório padrão /usr/bin/

Page 14: Linux - Um estudo de caso

Universidade Federal de Mato Grosso

ProcessosChamadas relacionadas

Sigaction: Modifica a ação de um sinal recebido pelo processo.

Signal vs Sigaction: Interrupções durante a execução do *handler.

Page 15: Linux - Um estudo de caso

Universidade Federal de Mato Grosso

Comunicação Inter-Processos

Uso do Pipe: Bloqueante.

Uso de Signals.

Page 16: Linux - Um estudo de caso

Universidade Federal de Mato Grosso

ProcessoImplementação

Task_struct: Representação de um processo.

PCB: Lista duplamente encadeada no núcleo.

Criado pela chamada Fork().

Copy on Write

Page 17: Linux - Um estudo de caso

Universidade Federal de Mato Grosso

ProcessoImplementação

Thread: Multi-thread no núcleo.

Chamada Clone: Útil na implementação de threads

Page 18: Linux - Um estudo de caso

Universidade Federal de Mato Grosso

ProcessoEscalonamento

Chaveamento.

FIFO: Não preemptivo.

Circular: Preemptivo e utiliza o quantum.

Tempo Compartilhado: Prioridades.

Page 19: Linux - Um estudo de caso

Universidade Federal de Mato Grosso

ProcessoEscalonamento

Runqueue: faz uso de dois vetores.

Ativo.

Expirado: limite quantum excedido.

Page 20: Linux - Um estudo de caso

Universidade Federal de Mato Grosso

Gerenciamento de Memoria

Chamadas de sistema relacionadas

Implementação do Gerenciador

Gerenciador de memória física

Mecanismo de alocação de memória

Paginação no linux

PFRA

Page 21: Linux - Um estudo de caso

Universidade Federal de Mato Grosso

Gerenciamento de Memoria

Espaço de endereçamento é composto de código, dados e pilha.

Código (instruções de máquina, tamanho fixo)

Dados (variáveis dinâmicas)

Pilha (variáveis de ambiente: argumentos da linha de comando)

Page 22: Linux - Um estudo de caso

Universidade Federal de Mato Grosso

Chamadas de Sistema Relacionadas

Mmap: mapeia um bloco para a memória

Munmap: remove um arquivo mapeado

Bkr: Altera o tamanho do segmento de dados

Page 23: Linux - Um estudo de caso

Universidade Federal de Mato Grosso

Implementação do Gerenciador

Cada processo recebe 3GB de espaço virtual. (32 bits)

E 1GB reservado para a tabela de páginas e dados do núcleo.

Um novo espaço pode ser criado com Fork+Escrita e modificado pelo Exec.

Page 24: Linux - Um estudo de caso

Universidade Federal de Mato Grosso

Gerenciamento de Memória Física

Três zonas de memória:

ZONE_DMA: para operações DMA.

ZONE_NORMAL: páginas normais.

ZONE_HIGHMEM: páginas com endereços altos e não permanentemente mapeadas.

O kernel mantém um estrutura de zonas para cada um.

Page 25: Linux - Um estudo de caso

Universidade Federal de Mato Grosso

Gerenciamento de Memória Física

Memória Principal formada por:

Núcleo.

Mapa de Memória.

Moldura de páginas.

Page 26: Linux - Um estudo de caso

Universidade Federal de Mato Grosso

Mecanismo de alocação de Memória

O espaço de endereçamento se encontra dividido em áreas homogêneas contíguas e alinhadas em página.

Separa e gerencia unidades fatiadas .

Page 27: Linux - Um estudo de caso

Universidade Federal de Mato Grosso

Paginação no Linux

Implementada pelo núcleo e outra parte por um processo chamado daemon de paginação

O Linux faz distinção entre quatro tipos de páginas:

Não recuperáveis;

Trocável;

Sincronizável;

Descartável;

Page 28: Linux - Um estudo de caso

Universidade Federal de Mato Grosso

PFRA

Responsável por manter o reabastecimento de páginas livres a serem usadas .

Ele tenta recuperar as páginas mais fáceis e depois as mais difíceis.

Durante o PFRA as páginas ficam ativas ou inativas.

As inativas podem sofrer despejo.

Page 29: Linux - Um estudo de caso

Universidade Federal de Mato Grosso

Entrada e Saída

Transmissão de rede

Chamada de sistema para E/S

Implementação E/S

Módulos

Page 30: Linux - Um estudo de caso

Universidade Federal de Mato Grosso

Entrada e Saída

Arquivos especiais (/dev).

Esses arquivos são divididos em duas categorias:

Blocos;

Caracteres;

Cada dispositivo tem um número associado (primário/secundário)

Page 31: Linux - Um estudo de caso

Universidade Federal de Mato Grosso

Dispositivos

Page 32: Linux - Um estudo de caso

Universidade Federal de Mato Grosso

Transmissão de Rede

Implementada em soquetes. Estes são os tipos mais comuns:

1) Fluxo confiável de bytes orientado a conexão;

2) Fluxo confiável de pacotes orientado à conexão;

3) Transmissão não confiável de pacotes;

TCP e UDP

Page 33: Linux - Um estudo de caso

Universidade Federal de Mato Grosso

E/SChamadas de Sistema

Apesar de cada dispositivo ter um arquivo especial associado a ele, não necessita sempre de chamadas especiais para ser acessado.

Page 34: Linux - Um estudo de caso

Universidade Federal de Mato Grosso

Implementação E/S

Feita por um conjuntos de drivers e cada dispositivo tem seu próprio. Sua função é interfacear o dispositivo e o núcleo.

Page 35: Linux - Um estudo de caso

Universidade Federal de Mato Grosso

Módulos

Módulos são trechos de códigos que podem ser carregados enquanto o sistema está em execução

Page 36: Linux - Um estudo de caso

Universidade Federal de Mato Grosso

Sistemas de arquivos

História

I-Nodes

Implementação

Principais Sistemas de arquivos suportados

Page 37: Linux - Um estudo de caso

Universidade Federal de Mato Grosso

Estrutura dos I-Nodes

Permissões do arquivo

Tipo

identificação do grupo relativo e do dono

tempos (último acesso, última alteração do i-node, última alteração do arquivo, etc.)

contador de referências (quando uma referência do arquivo é apagada o contador de referências é decrementado, quando esse contador chega a zero, o i-node e os blocos alocados para o arquivo são liberados)

tamanho em bytes e endereço dos blocos alocados para o arquivo.

Page 38: Linux - Um estudo de caso

Universidade Federal de Mato Grosso

Implementação

VFS (Virtual File System)

Superbloco

Dentry

I-Node

Estrutura de dados Arquivo

Suporte a diversos sistemas de arquivos

Page 39: Linux - Um estudo de caso

Universidade Federal de Mato Grosso

Principais Sistemas de Arquivos Suportados

EXT

EXT2

EXT3

EXT4

NFS

Page 40: Linux - Um estudo de caso

Universidade Federal de Mato Grosso

EXT

Surgiu a partir do MINIX FS

Extended File System

Nomes de arquivos de até 255 caracteres

Sistema de Arquivos de até 2GiB

Tamanho de Arquivos de até 2GiB

Page 41: Linux - Um estudo de caso

Universidade Federal de Mato Grosso

EXT2

Evolução do EXT

Second Extended File System

Nomes de arquivos de até 255 caracteres

Sistema de Arquivos de até 4TiB

Tamanho de Arquivos de até 2GiB

Page 42: Linux - Um estudo de caso

Universidade Federal de Mato Grosso

EXT2

Superbloco

I-Node

Grupo de Blocos

Mapa de bits de blocos

Mapa de bits de I-Nodes

tabelas de I-Nodes

Page 43: Linux - Um estudo de caso

Universidade Federal de Mato Grosso

EXT3

Evolução do EXT2

Third Extended File System

Implementa Jornaling ( Diario )

Nomes de arquivos de até 255 caracteres

Sistema de Arquivos de até 16TiB ( blocos de 4KiB )

Tamanho de Arquivos de até 2TiB ( blocos de 4KiB )

Page 44: Linux - Um estudo de caso

Universidade Federal de Mato Grosso

EXT4

Surgiu a partir de uma bifurcação no desenvolvimento do EXT3

Fourth Extended File System

Nomes de arquivos de até 255 caracteres

Sistema de Arquivos de até ~2EiB

Tamanho de Arquivos de até 16TiB

Page 45: Linux - Um estudo de caso

Universidade Federal de Mato Grosso

NFS

Sistema de arquivos distribuido

Criado para facilitar acesso remoto de arquivos

Utiliza protocolos Cliente/Servidor

Page 46: Linux - Um estudo de caso

Universidade Federal de Mato Grosso

Bibliografia

CARRIER, Brian. File system forensic analysis. Upper Saddle River: Addison-Wesley, 2005.

TANENBAUM, Andrew S. - Sistemas Operacionais Modernos - Tradução Ronaldo A. L. Gonçalves, Luís A. Consularo, Luciana do Amaral Teixeira - Revisão técnica Raphael Y. de Camargo - São Paulo: Pearson Prentice Hall, 2009. 3. ed.