Sistemas Operacionais II Prof. Fernando Freitas Estudo de Caso 1: UNIX e LINUX Processos no Linux Gerenciamento de memória no Linux O sistema de arquivos do Linux Material adaptado de: TANENBAUM, Andrew S. Sistemas Operacionais Modernos. 2ª edição. Disponível em: http://www.prenhall.com/tanenbaum_br Algumas partes deste material foram atualizadas com base na 3ª edição deste livro. Pearson Education Sistemas Operacionais Modernos 2ª Edição 1
Processos no Linux As entidades ativas no Linux são os processos Cada processo executa inicialmente um único programa e uma única thread Threads podem ser criadas posteriormente O Linux é um sistema multiprogramado Pearson Education Sistemas Operacionais Modernos 2ª Edição 2
Processos no Linux Fork cria novos processos no linux, retornando 0 para filho e PID do filho para o processo pai. Processos comunicam através de canais chamados pipes ou através de sinais ls grep b sort -r tee arquivo.out wc -l Processos só podem emitir sinais para seu grupo de processos, ou seja, seus parentescos. Pearson Education Sistemas Operacionais Modernos 2ª Edição 3
Chamadas ao Sistema para Gerenciamento de Processos O processo progenitor (pai) cria processos progénitos (filhos), os quais, por sua vez, criam outros processos, formando uma árvore de processos. O filho criado pela chamada ao sistema fork() duplica o espaço de memória do pai. Pai e filho(s) executam concorrentemente a partir da instrução a seguir o fork() A função fork() devolve valores diferentes para o processo pai e processo filho permitindo assim o programa pode tomar varias linhas de ação através de uma instrução de controle (if) Pearson Education Sistemas Operacionais Modernos 2ª Edição 4
Chamadas ao Sistema para Gerenciamento de Processos Pearson Education Sistemas Operacionais Modernos 2ª Edição 5
Chamadas ao Sistema para Gerenciamento de Processos Pearson Education Sistemas Operacionais Modernos 2ª Edição 6
Processos no UNIX Criação de processo no Linux Pearson Education Sistemas Operacionais Modernos 2ª Edição 7
Sinais POSIX Sinais necessários para o POSIX Pearson Education Sistemas Operacionais Modernos 2ª Edição 8
Chamadas ao Sistema para Gerenciamento de Processos s é um código de retorno pid é um ID de processo residual é o tempo restante no alarme anterior Pearson Education Sistemas Operacionais Modernos 2ª Edição 9
Shell do POSIX Um shell altamente simplificado Pearson Education Sistemas Operacionais Modernos 2ª Edição 10
Implementação de processos no Linux Informações da tabela de processos Parâmetros de escalonamento Prioridade, qtde de tempo de CPU Imagem da memória Ponteiros para suas tabelas de páginas Sinais Sinais que estão sendo ignorados, capturados, etc. Pearson Education Sistemas Operacionais Modernos 2ª Edição 11
Implementação de processos no Linux Informações da tabela de processos Registradores de máquina Local que salva as informações quando ocorre um desvio de execução para o núcleo Estado da chamada de sistema Informações sobre a chamada de sistema (parâmetros e resultados) Tabela de descritor de arquivo Informações que indicam onde estão os descritores de arquivos (i-node) Pearson Education Sistemas Operacionais Modernos 2ª Edição 12
Implementação de processos no Linux Informações da tabela de processos Contabilidade Tempo gasto de CPU em modo usuário e durante chamadas de sistemas Pilha do Núcleo Pilha fixa a ser usada pela parte do núcleo do processo Miscelânia Estado do processo atual (está esperando evento?, PID, PID do pai, etc) Pearson Education Sistemas Operacionais Modernos 2ª Edição 13
Implementação de processos no Linux Copy on write (copiar-se-escrita) Técnica utilizada nos sistemas Linux para reduzir custos com cópias de memória do processo pai para processo filho Consiste em inicialmente apontar as tabelas de página do filho para as tabelas do pai, e só alocar novos espaços de memória se alguma escrita for solicitada Economia de RAM Pearson Education Sistemas Operacionais Modernos 2ª Edição 14
Escalonamento no Linux O Linux distingue 3 classes de threads para questões de escalonamento: FIFO em tempo real Não preemptivel exceto por outra thread de FIFO de tempo real Chaveamento circular em tempo real Semelhantes aos anteriores, porém preemptíveis e associados ao quantum de tempo Tempo compartilhado Classe de prioridade mais baixa A palavra tempo real vêm do padrão P1003.4 (extensões de tempo real para UNIX) Pearson Education Sistemas Operacionais Modernos 2ª Edição 15
Escalonamento no Linux Possui uma fila de execução (runqueue) que mantém dois vetores: Ativo Threads na fila de execução Expirado Threads que já foram executadas e tiveram seu quantum de tempo expirado antes de concluírem suas tarefas Pearson Education Sistemas Operacionais Modernos 2ª Edição 16
Escalonamento no Linux Quando o vetor de ativos está vazio, é feito uma varredura no vetor de expirados para que as threads passem a fazer parte do vetor de ativos e vice-versa Objetivo de evitar a inanição em threads de baixa prioridade Exceto quando threads FIFO de tempo real tomem todo o tempo da CPU Pearson Education Sistemas Operacionais Modernos 2ª Edição 17
Inicializando o Linux Passos para inicialização 1. BIOS executa POST (Power-On-Self-Test) e detecta e inicializa dispositivos 2. Lê e executa MBR 3. Executa o programa boot 4. Lê o diretório raiz do dispositivo de boot 5. Lê o núcleo no SO e transfere o controle para ele. 6. Cálculo de RAM, desabilitação de interrupção e habilitação de MMU, etc. Pearson Education Sistemas Operacionais Modernos 2ª Edição 18
Inicializando o Linux Passos para inicialização 7. Chama a rotina main em C para iniciar a parte principal do SO 8. Inicializações lógicas 9. Processo de detecção e auto configuração de drivers e dispositivos 10.Alocar processo 0, ajustá-lo e executá-lo (programação do relógio, montagem do sistema de arquivos raiz, criação do init e do daemon de paginação processos 1 e 2) Pearson Education Sistemas Operacionais Modernos 2ª Edição 19
Inicializando o Linux Passos para inicialização 11.Verifica se o sistema é mono ou multi-usuário 12.Login 13.Senha 14.Se ok, carrega shell do usuário, senão senha novamente 15.Pronto, aguarda comandos Pearson Education Sistemas Operacionais Modernos 2ª Edição 20
Inicializando o Linux A seqüência de processos usada para iniciar alguns sistemas Unix Pearson Education Sistemas Operacionais Modernos 2ª Edição 21
Gerenciamento de Memória O espaço de endereçamento de um processo consiste de 3 segmentos: Código Código executável do programa Imutável Dado Variáveis do programa 2 partes: dados inicializados e não incializados (BSS) Página zero estática Pilha Variáveis de ambiente Comando de invocação Pearson Education Sistemas Operacionais Modernos 2ª Edição 22
Gerenciamento de Memória Se mesmo programa executando duas vezes: Segmentos de códigos compartilhados Dados e pilhas nunca são compartilhados, exceto quando um fork é executado Arquivos mapeados na memória Mapeamento de arquivos em parte do espaço de endereçamento do processo Leitura de vetor de bytes na memória ao invés de chamadas E/S Dois ou mais processos podem mapear o mesmo arquivo Pearson Education Sistemas Operacionais Modernos 2ª Edição 23
Arquivos Mapeados em Memória Dois processos podem compartilhar um arquivo mapeado Pearson Education Sistemas Operacionais Modernos 2ª Edição 24
Chamadas ao Sistema para Gerenciamento de Memória s é um código de retorno (-1 se erro) a e addr são endereços de memória len é um comprimento prot controla proteção flags arquivo privado/compartilhado, addr obrigatório/sugestão fd é um descritor de arquivo offset é um deslocamento de arquivo Pearson Education Sistemas Operacionais Modernos 2ª Edição 25
Paginação no Unix/Linux Unix confiava em um processo trocador (swapper) que movimentava processos inteiros entre memória e disco O Linux passou a trabalhar com páginas Daemon de paginação (processo 2 kswapd no linux) verifica e faz alocação e liberação de memória física de acordo com a demanda. Para isto ele é executado a de tempo em tempo. A cada execução ele confere o valor de lostfree (nº mínimos de molduras livres). Se o valor é insuficiente, ele chama o algoritmo de substituição de páginas (uma derivação do algoritmo do relógio que possui 2 ponteiros). Pearson Education Sistemas Operacionais Modernos 2ª Edição 26
Paginação no Unix/Linux Paginar processos grandes é caro. Páginas são alocadas no dispositivo ou partição de paginação somente quando são necessárias Segmentos de dados e pilhas são movidos para uma área de rascunho, mas o código do programa é paginado a partir de seu próprio arquivo binário. Nenhuma cópia de rascunho é usada para o código do programa. Pearson Education Sistemas Operacionais Modernos 2ª Edição 27
Paginação no UNIX Mapa de memória do 4BSD que tem uma entrada para cada página Pearson Education Sistemas Operacionais Modernos 2ª Edição 28
Gerenciamento de Memória Física no Linux Na versão Alpha o Linux utilizava tabelas de páginas de três níveis Pearson Education Sistemas Operacionais Modernos 2ª Edição 29
Mecanismos de Alocação de Linux suporta diversos mecanismos de alocação: Algoritmo do companheiro Vetor contém as cabeças de listas de blocos com tamanhos de 0, 2, 4... Unidades (múltiplos de 2) Fácil localização de um bloco Muita fragmentação interna Memória Alocador de fatias Obtém blocos com algoritmo do companheiro Divide-os em fatias (unidades menores) Gerencia as fatias separadamente Fatias podem estar cheias, parcialmente cheias ou vazias. Pearson Education Sistemas Operacionais Modernos 2ª Edição 30
Mecanismos de Alocação de Memória Operação do algoritmo companheiro (buddy) Pearson Education Sistemas Operacionais Modernos 2ª Edição 31
O Sistema de Arquivos do Linux Características Sequência de 0 ou mais bytes. 255 caracteres Não faz distinção entre arquivos ASCII e binários O proprietário conhece o arquivo, o sistema não se preocupa com isso Qualquer caractere é aceito, exceto NUL, no nome do arquivo Extensões não são obrigatórias, embora desejadas. Extensões ilimitadas em tamanho e quantidade Pearson Education Sistemas Operacionais Modernos 2ª Edição 32
O Sistema de Arquivos do Linux Características Diretórios podem ser usados por conveniência Utiliza / (barra) para separar diretórios Permite caminhos relativos e absolutos Permite a criação de links Permite arquivos especiais para mapear dispositivos de bloco e caractere Pearson Education Sistemas Operacionais Modernos 2ª Edição 33
O Sistema de Arquivos do Linux Diretórios Alguns diretórios importantes encontrados na maioria dos sistemas Linux Pearson Education Sistemas Operacionais Modernos 2ª Edição 34
O Sistema de Arquivos do Linux Links (a) Antes da ligação (b) Depois da ligação Pearson Education Sistemas Operacionais Modernos 2ª Edição 35
O Sistema de Arquivos do Unix Mapeamento de Arquivos Especiais (a) (b) (a) Sistemas de arquivos separados. Ex: Windows 98 (b) Após a montagem. Ex: Linux Pearson Education Sistemas Operacionais Modernos 2ª Edição 36
Arquivos com Impedimento Permite travamento de arquivos refinado Dois tipos de travamento Compartilhado Exclusivo (a) Arquivo com um impedimento (b) Adição de um segundo impedimento (c) Um terceiro impedimento Pearson Education Sistemas Operacionais Modernos 2ª Edição 37
Chamadas ao Sistema para Gerenciamento de Arquivos s é um código de retorno fd é um descritor de arquivo position é um deslocamento no arquivo Pearson Education Sistemas Operacionais Modernos 2ª Edição 38
A Chamada ao Sistema stat Campos retornados pela chamada ao sistema stat Pearson Education Sistemas Operacionais Modernos 2ª Edição 39
Chamadas ao Sistema para Gerenciamento de Diretório s é um código de retorno dir identifica um diretório entradir é uma entrada no diretório Pearson Education Sistemas Operacionais Modernos 2ª Edição 40
Sistema de Arquivos do Unix Esquema do disco em sistemas Unix clássicos Bloco de Boot Não usado Superbloco Informação sobre o Sistema de Arquivos I-nodes Um para cada arquivo. Descrevem os arquivos. Blocos de dados Local de armazenamento de arquivos e diretórios. Pearson Education Sistemas Operacionais Modernos 2ª Edição 41
Sistema de Arquivos do Unix (3) A relação entre a tabela de descritores de arquivos, a tabela de descrição de arquivos abertos e a tabela de i-nodes Pearson Education Sistemas Operacionais Modernos 2ª Edição 42
Sistema de Arquivos Rápido de Berkeley Nomes de diretórios com até 255 caracteres Introdução das chamadas opendir, closedir, readdir e rewindir para garantir portabilidade Introdução da cache de nomes para buscar entradas de diretórios Divisão do disco em grupos de cilindros, cada um com seus superblocos, i-nodes e blocos de dados Evitar longos posicionamentos Introdução de dois tamanhos de blocos. Pearson Education Sistemas Operacionais Modernos 2ª Edição 43
Sistema de Arquivos Rápido de Berkeley a) Um diretório BSD com três arquivos b) O mesmo diretório após a remoção do arquivo volumoso Pearson Education Sistemas Operacionais Modernos 2ª Edição 44
O Sistema de Arquivos do Linux Origem com o MINIX Ext Busca por melhorias 255 caracteres e 2 GB Mais lento que o do Minix Ext2 Melhorias na capacidade, nos nomes dos arquivos e no desempenho Principal sistema de arquivos por vários anos Suporte a vários sistemas utilizando NFS (Network File System) e VFS (Virtual File System Pearson Education Sistemas Operacionais Modernos 2ª Edição 45
Bloco 0 Sistema de Arquivos do Linux ext2 (2º sistema de arquivos estendido) Não usado Contém código para inicialização do sistema Depois dele, a partição é dividida em grupos de blocos, onde cada um contém: Superbloco Informações sobre a organização do sistema de arquivos Descritor de grupo Informações sobre a localização do mapa de bits, o nº de blocos livres e o número de diretórios no grupo Pearson Education Sistemas Operacionais Modernos 2ª Edição 46
Sistema de Arquivos do Linux ext2 (2º sistema de arquivos estendido) Esquema do sistema de arquivos Ext2 do Linux Pearson Education Sistemas Operacionais Modernos 2ª Edição 47
Sistema de Arquivos do Linux ext2 (2º sistema de arquivos estendido) Estrutura do i-node no Linux Pearson Education Sistemas Operacionais Modernos 2ª Edição 48
Sistema de Arquivos do Linux ext3 (sistema de arquivos com diário) Altamente compatível com o ext2 Trabalha com uma espécie de diário onde todas as operações realizadas são descritas em sequência, até que tenham sido concluídas Utiliza um dispositivo de blocos para diário (JBD) para controlar as operações de r/w no diário. Este por sua vez suporta 3 operações: Registro de diário Gerenciador de operações atômicas Transação Pearson Education Sistemas Operacionais Modernos 2ª Edição 49
Sistema de Arquivos do Linux /proc (processo) Consiste basicamente em criar diretórios dentro de /proc para cada processo em execução O nome do diretório é o número PID do processo em decimal Dentro deste diretório ficam os arquivos quem contém informações acerca deste processo Pearson Education Sistemas Operacionais Modernos 2ª Edição 50
NFS - Sistema de Arquivos em Rede a) Exemplos de sistemas de arquivos montados remotamente b) Diretórios são mostrados como quadrados e arquivos como círculos Pearson Education Sistemas Operacionais Modernos 2ª Edição 51
NFS - Sistema de Arquivos em Rede Utiliza 2 protocolos cliente-servidor O primeiro trata da montagem de diretórios Retorna um controle de arquivo se caminho for válido Esse controle identifica de modo único o sistema de arquivo, o disco, o i-node e as informações de segurança Permite montagem estática ou a automontagem O segundo é para acesso a arquivos e diretórios Suporta as chamadas do sistema Linux, exceto as chamadas open e close Utiliza lookup para substituir a chamada open Tem a vantagem de não copiar qualquer informação para as tabelas do sistema. A chamada read tem os parâmetros: controlador do arquivo, deslocamento no arquivo e nº de bytes a ser lido Um servidor com essas caracterísiticas é conhecido como sem estado (stateless) Servidores sem estado, não podem utilizar os travamentos, por isso utilizam a proteção rwx e a proteção por chave pública Pearson Education Sistemas Operacionais Modernos 2ª Edição 52
NFS - Sistema de Arquivos em Rede A estrutura em camadas do NFS Pearson Education Sistemas Operacionais Modernos 2ª Edição 53
Segurança no Linux Alguns exemplos de modos de proteção de arquivos OBS: x em arquivo = execução x em diretório = busca Pearson Education Sistemas Operacionais Modernos 2ª Edição 54
Chamadas ao Sistema para Segurança no Unix s é um código de retorno uid e gid são o identificador de usuário - UID e o identificador de grupo - GID, respectivamente SETUID e GETGID dão permissão de root a usuários temporariamente Pearson Education Sistemas Operacionais Modernos 2ª Edição 55
Exercícios 1. O espaço de endereçamento no UNIX consiste em 3 segmentos. Quais são? Comente sobre eles. 2. Qual algoritmo de substituição de páginas é utilizado pelo Unix. Comente. 3. Qual a função dos processos 1 e 2? 4. Cite pelo menos 4 características do sistema de arquivos do linux. 5. Quais são os tipos de impedimentos permitidos pelo Linux. Comente sobre eles. 6. Comente sobre o sistema de arquivos Ext2. 7. Como é feita a segurança de arquivos no linux. Pearson Education Sistemas Operacionais Modernos 2ª Edição 56
FIM Boa Noite Pearson Education Sistemas Operacionais Modernos 2ª Edição 57