estudo de caso 1: unix e linuxblog.unifimes.edu.br/.../06/estudo-de-caso-unix-linux.pdfescalonamento...
TRANSCRIPT
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1
Estudo de Caso 1: UNIX e LINUX
Processos no Linux
Gerenciamento de memória no Linux
O sistema de arquivos do Linux
Sistemas Operacionais II
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.
Prof. Fernando Freitas
Pearson Education Sistemas Operacionais Modernos – 2ª Edição
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
2
Pearson Education Sistemas Operacionais Modernos – 2ª Edição
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.
3
Pearson Education Sistemas Operacionais Modernos – 2ª Edição
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)
4
Pearson Education Sistemas Operacionais Modernos – 2ª Edição
Chamadas ao Sistema para
Gerenciamento de Processos
5
Pearson Education Sistemas Operacionais Modernos – 2ª Edição
Chamadas ao Sistema para
Gerenciamento de Processos
6
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 7
Processos no UNIX
Criação de processo no Linux
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 8
Sinais POSIX
Sinais necessários para o POSIX
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 9
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 10
Shell do POSIX
Um shell altamente simplificado
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 11
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 12
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 13
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 14
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 15
Escalonamento no Linux
O Linux distingue 3 classes de threads para questões deescalonamento:
• 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 16
Escalonamento no Linux
Possui uma fila de execução (runqueue) quemanté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 suastarefas
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 17
Escalonamento no Linux
Quando o vetor de ativos está vazio, é feito umavarredura no vetor de expirados para que as threadspassem a fazer parte do vetor de ativos e vice-versa
• Objetivo de evitar a inanição em threads de baixaprioridade
• Exceto quando threads FIFO de tempo realtomem todo o tempo da CPU
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 18
Inicializando o Linux
Passos para inicialização
1. BIOS executa POST (Power-On-Self-Test) edetecta 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 paraele.
6. Cálculo de RAM, desabilitação de interrupçãoe habilitação de MMU, etc.
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 19
Inicializando o Linux
Passos para inicialização
7. Chama a rotina main em C para iniciar a parteprincipal do SO
8. Inicializações lógicas
9. Processo de detecção e auto configuração dedrivers e dispositivos
10.Alocar processo 0, ajustá-lo e executá-lo(programação do relógio, montagem dosistema de arquivos raiz, criação do init e dodaemon de paginação – processos 1 e 2)
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 20
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 senhanovamente
15.Pronto, aguarda comandos
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 21
Inicializando o Linux
A seqüência de processos usada para iniciar
alguns sistemas Unix
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 22
Gerenciamento de Memória
O espaço de endereçamento de um processoconsiste 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 23
Gerenciamento de Memória
Se mesmo programa executando duas vezes:– Segmentos de códigos compartilhados
– Dados e pilhas nunca são compartilhados, excetoquando 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 mesmoarquivo
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 24
Arquivos Mapeados em Memória
Dois processos podem compartilhar um arquivo mapeado
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 25
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 26
• 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).
Paginação no Unix/Linux
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 27
• 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.
Paginação no Unix/Linux
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 28
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 29
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 30
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
• 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.
Mecanismos de Alocação de
Memória
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 31
Operação do algoritmo companheiro (buddy)
Mecanismos de Alocação de
Memória
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 32
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 33
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 34
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 35
(a) Antes da ligação (b) Depois da ligação
O Sistema de Arquivos do Linux
Links
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 36
(a) Sistemas de arquivos separados. Ex: Windows 98
(b) Após a montagem. Ex: Linux
O Sistema de Arquivos do Unix
Mapeamento de Arquivos Especiais
(a) (b)
Pearson Education Sistemas Operacionais Modernos – 2ª Edição
Arquivos com Impedimento
(a) Arquivo com um impedimento
(b) Adição de um segundo
impedimento
(c) Um terceiro impedimento
• Permite travamento de arquivos refinado
• Dois tipos de travamento
• Compartilhado
• Exclusivo
37
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 38
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 39
A Chamada ao Sistema stat
Campos retornados pela chamada ao sistema stat
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 40
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 41
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 42
A relação entre a tabela de descritores de arquivos, a tabela
de descrição de arquivos abertos e a tabela de i-nodes
Sistema de Arquivos do Unix (3)
Pearson Education Sistemas Operacionais Modernos – 2ª Edição
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.
43
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 44
a) Um diretório BSD com três arquivos
b) O mesmo diretório após a remoção do arquivo volumoso
Sistema de Arquivos Rápido de
Berkeley
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 45
O Sistema de Arquivos do Linux
• Origem com o MINIX
– Busca por melhorias
• Ext
– 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 46
Sistema de Arquivos do Linuxext2 (2º sistema de arquivos estendido)
• Bloco 0
– 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 47
Esquema do sistema de arquivos Ext2 do Linux
Sistema de Arquivos do Linuxext2 (2º sistema de arquivos estendido)
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 48
Estrutura do i-node no Linux
Sistema de Arquivos do Linuxext2 (2º sistema de arquivos estendido)
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 49
• 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
Sistema de Arquivos do Linuxext3 (sistema de arquivos com diário)
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 50
• 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
Sistema de Arquivos do Linux
/proc (processo)
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 51
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 52
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 53
A estrutura em camadas do NFS
NFS - Sistema de Arquivos
em Rede
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 54
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 55
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 56
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.
Exercícios
Pearson Education Sistemas Operacionais Modernos – 2ª Edição
FIM
Boa Noite
57