linux - um estudo de caso
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
Universidade Federal de Mato Grosso
Linux: Um estudo de
caso
Tiago Roberti Sampaio
www.trsampaio.com
Universidade Federal de Mato Grosso
Linux: Um estudo de caso
Universidade Federal de Mato Grosso
Introdução
Sistema de Arquivos
Processos
Gerenciamento de Memoria
Entrada/Saída
Universidade Federal de Mato Grosso
História do Linux
Uma breve história...
Universidade Federal de Mato Grosso
Licença
A liberdade nº 0
A liberdade nº 1
A liberdade nº 2
A liberdade nº 3
Universidade Federal de Mato Grosso
Família Linux
Universidade Federal de Mato Grosso
Processos
Comunicação Entre Processos
Implementação de um processo
Escalonamento
Universidade Federal de Mato Grosso
Processos
Único thread de controle inicial (único Program Counter)
Executa um único programa
Universidade Federal de Mato Grosso
Processos
Daemon
Cron
Cron é necessário?
Universidade Federal de Mato Grosso
ProcessosChamadas relacionadas
Fork: Filho = Pid = 0.
pid_t fork(void);
Universidade Federal de Mato Grosso
ProcessosChamadas relacionadas
Getpid: Fornece o Pid do processo.
pid_t getpid(void);
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
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/
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.
Universidade Federal de Mato Grosso
Comunicação Inter-Processos
Uso do Pipe: Bloqueante.
Uso de Signals.
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
Universidade Federal de Mato Grosso
ProcessoImplementação
Thread: Multi-thread no núcleo.
Chamada Clone: Útil na implementação de threads
Universidade Federal de Mato Grosso
ProcessoEscalonamento
Chaveamento.
FIFO: Não preemptivo.
Circular: Preemptivo e utiliza o quantum.
Tempo Compartilhado: Prioridades.
Universidade Federal de Mato Grosso
ProcessoEscalonamento
Runqueue: faz uso de dois vetores.
Ativo.
Expirado: limite quantum excedido.
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
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)
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
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.
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.
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.
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 .
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;
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.
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
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)
Universidade Federal de Mato Grosso
Dispositivos
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
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.
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.
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
Universidade Federal de Mato Grosso
Sistemas de arquivos
História
I-Nodes
Implementação
Principais Sistemas de arquivos suportados
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.
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
Universidade Federal de Mato Grosso
Principais Sistemas de Arquivos Suportados
EXT
EXT2
EXT3
EXT4
NFS
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
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
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
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 )
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
Universidade Federal de Mato Grosso
NFS
Sistema de arquivos distribuido
Criado para facilitar acesso remoto de arquivos
Utiliza protocolos Cliente/Servidor
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.