Upload
informa
View
12.372
Download
0
Embed Size (px)
Citation preview
Sistemas Operacionais Linux
Prof. Dr. Erwin Doescher
2005
Sistemas Operacionais LinuxSistemas Operacionais Linux
Introdução
●Sistemas Operacionais
●Linux e Distribuições
Sistemas Operacionais LinuxSistemas Operacionais Linux
Sistema Operacional● Software (programa) que:
– Gerencia o hardware do computador● Memória● Dispositivos de Entrada/Saída
– Fornece um conjunto de ferramentas que facilitam:● O uso do computador● O desenvolvimento de outros softwares
– Gerencia a execução dos demais softwares
IntroduçãoIntrodução
Sistemas Operacionais LinuxSistemas Operacionais Linux
Linux● Motivo do Sucesso:
– Software Livre – Liberdade de:● Executar o software para qualquer fim● Estudar e Adaptar o código● Redistribuir cópias do software e do código● Redistribuir cópias alteradas do código
garantidas pela Licença GPL
– Excelente estabilidade
– Segurança
IntroduçãoIntrodução
Sistemas Operacionais LinuxSistemas Operacionais Linux
Aplicativos GráficosAmbiente GráficoServidor Gráfico
Aplicativos modo Texto
Ferramentas do Sistema
LinuxEstrutura do Sistema Operacional
IntroduçãoIntrodução
Kernel
Núcleo do sistema
Shells, utilitários (arquivos, processos)
Xfree86, XOrg
Kde, Gnome, WindowMaker, etc
OpenOffice, Gimp, Blender, etc
Apache, vi, emacs,transcode, etc.
Aplicativos GráficosAmbiente GráficoServidor Gráfico
Aplicativos modo Texto
Ferramentas do SistemaKernel
Núcleo do sistema
Shells, utilitários (arquivos, processos)
Xfree86, XOrg
Kde, Gnome, WindowMaker, etc
OpenOffice, Gimp, Blender, etc
Apache, vi, emacs,transcode, etc.
Sistemas Operacionais LinuxSistemas Operacionais Linux
LinuxOrganização do Sistema de Arquivos
– É organizado a partir da raiz ( / )
– Caracter / é usado como separador de caminhos:
/home/jose/programas/C/teste.c
– Cada componente de um caminho deve ter menos que 255 caracteres
– O caminho completo não deve exceder 1023 caracteres
– Caracteres não permitidos em nomes: / e `\0` (nulo)
IntroduçãoIntrodução
Sistemas Operacionais LinuxSistemas Operacionais Linux
LinuxOrganização do Sistema de Arquivos
– Arquivos iniciados com . (ponto) são ocultos
– Espaços devem ser especificados como : '\ '
/home/jose/Um\ diretorio\ longo/texto.txt
– Podese colocar o caminho entre aspas ("):
"/home/jose/Um diretorio longo/texto.txt"
– Um arquivo pode ter múltiplas extensões
– Extensões não são relevantes para a identificação do arquivo: o tipo é determinado pelo conteúdo
IntroduçãoIntrodução
Sistemas Operacionais LinuxSistemas Operacionais Linux
LinuxSistema de Arquivos: Diretórios padrão
– /bin executáveis (para todos usuários)
– /sbin executáveis(apenas superusuário)
– /etc Arquivos de configuração e inicialização
– /dev Dispositivos de Entrada/Saída
– /lib Bibliotecas
– /proc Imagem dos processos em execução
IntroduçãoIntrodução
Sistemas Operacionais LinuxSistemas Operacionais Linux
LinuxSistema de Arquivos: Diretórios padrão
– /var Log, contabilidade e spool
– /usr Executáveis, bibliotecas, etc. (não do sistema)
– /home Diretórios de usuários
– /root Diretório do superusuário
– /boot Diretório do kernel e boot
IntroduçãoIntrodução
Sistemas Operacionais LinuxSistemas Operacionais Linux
Linux● Distribuições
– Componentes do Sistema Operacional são mantidos por comunidades diferentes
– Distribuições agregam estes componentes em um único conjunto
– Diferem em:● Componentes selecionados (depende da finalidade)● Opções de compilação dos componentes● Formas de empacotamento● Estrutura de diretórios (em processo de padronização)
IntroduçãoIntrodução
Sistemas Operacionais LinuxSistemas Operacionais Linux
Linux● Distribuições Exemplos
– Redhat● Atualmente para área empresarial● Nos desktop apoia o desenvolvimento do Fedora
– Mandrake● Componentes compilados para Pentium
– Conectiva● Primeira distribuição Brasileira ● Empresa adquirida pela Mandrake, formando a Mandriva
IntroduçãoIntrodução
Sistemas Operacionais LinuxSistemas Operacionais Linux
Linux● Distribuições Exemplos
– Debian● Mantido por uma comunidade de usuários● Prioriza a estabilidade do sistema
– Gentoo● Componentes devem ser compilados na instalação
– Slackware● Uma das pioneiras
IntroduçãoIntrodução
Sistemas Operacionais LinuxSistemas Operacionais Linux
Conceitos Básicos
●Usuários e Grupos
●Arquivos, Diretórios e Links
●Shell
Sistemas Operacionais LinuxSistemas Operacionais Linux
Usuários e GruposUsuário:
– Para acessar o sistema:● O usuário deve estar cadastrado e logado
– O identificador do usuário (user) permite ao sistema:● Determinar as operações permitidas para o usuário● Determinar o acesso à diretórios (pastas) e arquivos● Determinar o diretório de trabalho (HOME)
– O administrador: superusuário (superuser) ou root
Conceitos BásicosConceitos Básicos
Sistemas Operacionais LinuxSistemas Operacionais Linux
Usuários e GruposGrupos
– Definem conjuntos de usuários
– Um usuário pode pertencer a 1 ou mais grupos
– Usuários de um mesmo grupo tem os mesmos privilégios
– Determinam as operações que um usuário pode ter sobre o sistema
– Fundamental para sistemas multiusuário
Conceitos BásicosConceitos Básicos
Sistemas Operacionais LinuxSistemas Operacionais Linux
Arquivos, Diretórios e LinksArquivos
– Armazenam dados ou programas
– Cada arquivo tem permissões de leitura, escrita e execução
Diretórios– Agrupam arquivos para facilitar localização
– Cada diretório tem permissões de leitura, escrita e execução
Conceitos BásicosConceitos Básicos
Sistemas Operacionais LinuxSistemas Operacionais Linux
Arquivos, Diretórios e LinksLinks
– Identificam Arquivos ou Diretórios em locais distintos
● Alterar um, altera os demais
Links Simbólicos– Não é criado um novo arquivo ou diretório
– O link redireciona para o local correto
Conceitos BásicosConceitos Básicos
Sistemas Operacionais LinuxSistemas Operacionais Linux
Arquivos, Diretórios e LinksExemplos: (apenas nomes)
Conceitos BásicosConceitos Básicos
Arquivo
Diretório Executável Arquivo de link
Link simbólico de diretório
Link simbólico de arquivo
Link simbólico perdido
Sistemas Operacionais LinuxSistemas Operacionais Linux
Arquivos, Diretórios e LinksExemplos: (saída detalhada)
Conceitos BásicosConceitos Básicos
Nome arquivos
Data/ Hora de acesso
Tamanho
Grupo
UsuárioTipo e
Permissões
Número de links
Sistemas Operacionais LinuxSistemas Operacionais Linux
Arquivos, Diretórios e LinksTipos e Permissões (10 campos)
(tipo) (dono) (grupo) (outros)– tipo pode ser:
arquivo regular d diretório
l link simbólico c dispositivo de caracter
b dispositivo de bloco s soquete
p pipe identificado
– (dono), (grupo) ou (outros) blocos de três caracteres cada, na ordem:
r permissão de leitura w permissão escrita
x permissão de execução nega a permissão
Conceitos BásicosConceitos Básicos
Sistemas Operacionais LinuxSistemas Operacionais Linux
Shell– Um interpretador de comandos do sistema
– Funciona como uma interface entre o usuário e o Sistema Operacional
– Ao logar, o usuário inicia um shell (shell de login)
– O usuário escolhe o seu shell podendo ser:● Shell Bourne (/bin/bash) (Linux) ● Shell C (/bin/csh)● Shell Korn (/bin/ksh)● Shell C avançado (/bin/tcsh)● Shell Bourne (/bin/sh) (não Linux)
– Podese mudar o shell com o comando chsh
Conceitos BásicosConceitos Básicos
Sistemas Operacionais LinuxSistemas Operacionais Linux
Curingas– Permitem definir caminhos satisfazendo padrões
– No shell bash os seguintes curingas são válidos:● * substitue uma string qualquer (inclusive nula)● ? substitue um caracter (não nulo)● [c1c2...cN] qualquer dos caracteres c1,c2,..,cN● ~ diretório HOME do usuário
– Exemplos:● ls l *.txt => arquivos com extensão .txt● ls l *.?? => arquivos com extensão de 2 letras● ls l [aeiou]* => arquivos começados com vogal● ls l x??[p97z].tar.* => ????● ls l ~/.bash* => ?????
Conceitos BásicosConceitos Básicos
Sistemas Operacionais LinuxSistemas Operacionais Linux
Processos
●Processos
●Threads
Sistemas Operacionais LinuxSistemas Operacionais Linux
Processos– Um programa em execução
– Caracterizado por:● Código executável● Dados (variáveis do programa)● Registradores da CPU
– Uso Geral– Contador de Programa (PC)– Apontador de Pilha (SP)
● Pilha de Execução● Outras informações relevantes
– Arquivos abertos
ProcessosProcessos
Sistemas Operacionais LinuxSistemas Operacionais Linux
Sistema Operacional Multitarefa– Executa vários processos “simultaneamente”
– Implementado por compartilhamento de tempo:● A CPU é chaveada entre os diversos processos● Um sinal de hardware interrompe periodicamente a CPU● O processo em execução é paralisado● Os valores dos registradores são salvos ● Recuperase os valores dos registradores de outro processo● O outro processo é reiniciado no ponto em que foi
paralisado
– A troca ocorre muito frequentemente, dando ilusão de execução simultânea
ProcessosProcessos
Sistemas Operacionais LinuxSistemas Operacionais Linux
Manipulação de Processos– Processos podem criar novos processos (processos
filhos)
– A execução do processo pai pode esperar ou não o término do processo filho.
– Cada processo possue um número de identificação, denominado de pid.
– Em sistemas multiusuário, os processos possuem dois outros números:
● uid – identifica o usuário dono do processo● gid – identifica o grupo do usuário dono do processo
ProcessosProcessos
Sistemas Operacionais LinuxSistemas Operacionais Linux
Manipulação de Processos– Processos comunicamse entre si através de sinais
– O Sistema Operacional é responsável por encaminhar os sinais para os processos
– Ao receber um sinal para um processo:● O SO verifica se o processo de origem tem uid ou gid
compatível com o processo destino● Se for compatível, o sinal é encaminhado● Se não for compatível, uma mensagem de erro é gerada
ProcessosProcessos
Sistemas Operacionais LinuxSistemas Operacionais Linux
Estados dos Processos– Rodando:
● O processo está usando o processador neste momento● Um único processo por processador pode estar neste estado
– Pronto:● São processos com plenas condições de execução● Aguardam apenas a liberação do processador
– Bloqueado:● Processos que dependem de um evento externo para
prosseguir a execução● Quando o evento ocorre, passam ao estado pronto.
ProcessosProcessos
Sistemas Operacionais LinuxSistemas Operacionais Linux
Estados dos Processos ProcessosProcessos
Rodando
Bloqueado Pronto
Sistemas Operacionais LinuxSistemas Operacionais Linux
Processos no Linux ProcessosProcessos
Comando ps– Mostra os processos do sistema neste momento
– A relação de processos é uma visão estática
– Opções:● e => mostra todos os processos ● f => mostra mais detalhes dos processos● u user => mostra processos do usuário user● w => mostra saída longas em duas linhas
Sistemas Operacionais LinuxSistemas Operacionais Linux
Processos no Linux ProcessosProcessos
Saída do comando ps efw
Sistemas Operacionais LinuxSistemas Operacionais Linux
Processos no Linux ProcessosProcessos
Saída do comando ps fwu erwin
Sistemas Operacionais LinuxSistemas Operacionais Linux
Processos no Linux ProcessosProcessos
Comando top– Mostra os processos do sistema dinamicamente
– comandos:● h => mostra ajuda com os comandos ● u => mostra os processos de um usuário apenas● P => ordena os processos com maior uso de CPU● M => ordena os processos com maior uso de memória● R => mostra em ordem normal/invertida● < ou > => anterior/próximo coluna para ordenação● l,t, m => liga/desliga sumários de carga, tarefas e memória
Sistemas Operacionais LinuxSistemas Operacionais Linux
Processos no Linux ProcessosProcessos
Saída do comando top
Sistemas Operacionais LinuxSistemas Operacionais Linux
Processos no Linux ProcessosProcessos
Comando kill s sin pid– Envia o sinal sin ao processo pid
– kill l mostra os sinais disponíveis, entre eles:● SIGKILL => o processo deve ser encerrado (9)● SIGSTOP => paralisa a execução do processo (19)● SIGCONT => reinicia um processo parado (18)
– Cada sinal tem um inteiro associado
– São equivalentes:● kill s SIGKILL pid● kill KILL pid● kill 9 pid
Sistemas Operacionais LinuxSistemas Operacionais Linux
Processos no Linux ProcessosProcessos
Processos em Foreground– Processos disparados do prompt
– Bloqueiam o prompt até o final do processo
– Podem ser interrompidos com ctrl+C
Processos em Background– São disparados acrescentando um & no final do
comando
– Não bloqueiam o prompt
– Após o comando é retornado o PID do processo
– Somente são interrompidos com kill
Sistemas Operacionais LinuxSistemas Operacionais Linux
Processos no Linux ProcessosProcessos
Passando processos para Background– Pressionando ctrl+z , interrompese o processo
– O comando bg , digitado em seguida, coloca o processo em background
Hierarquia de Processos – Processos disparados de um terminal são filhos do
processo do terminal
– Terminar o processo pai encerra processo em foreground, mas não encerra processos em background
Sistemas Operacionais LinuxSistemas Operacionais Linux
Processos no Linux ProcessosProcessos
Exemplo:
PROGRAMA IMPA
#include <stdio.h>int main(void){ while (1) { printf(“A”); } return 0;}
PROGRAMA IMPB
#include <stdio.h>int main(void){ while (1) { printf(“B”); } return 0;}
SCRIPT RODA1
./IMPA
./IMPB
SCRIPT RODA2
./IMPA &
./IMPB &
Sistemas Operacionais LinuxSistemas Operacionais Linux
Processos no Linux ProcessosProcessos
Saída do Script Roda1:
Sistemas Operacionais LinuxSistemas Operacionais Linux
Processos no Linux ProcessosProcessos
Saída do top rodando Script Roda1:
Sistemas Operacionais LinuxSistemas Operacionais Linux
Processos no Linux ProcessosProcessos
Saída do Script Roda2:
Sistemas Operacionais LinuxSistemas Operacionais Linux
Processos no Linux ProcessosProcessos
Saída do top rodando Script Roda2:
Sistemas Operacionais LinuxSistemas Operacionais Linux
Serviços ou daemons ProcessosProcessos
– São processos disparados na inicialização do SO
– Os scripts dos serviços estão no diretório /etc/init.d/● /etc/init.d/servico start => inicia o serviço● /etc/init.d/servico stop => paralisa o serviço● /etc/init.d/servico status => informa o estado do serviço
– Nem todos os serviços precisam estar ativos
– O linux possue 6 níveis de inicialização
– Cada um deles pode ter serviços diferentes ativados
– O nível a ser usado por padrão está indicado no arquivo /etc/inittab
Sistemas Operacionais LinuxSistemas Operacionais Linux
Scripts de níveis ProcessosProcessos
– Cada nível tem um diretório na forma
/etc/rcN.d onde N é o número do nível
– Cada diretório contém uma seqüência de links para scripts de serviços
– Os links são formados por:● letra K (kill) ou S (start) ● seguidos de um número de dois digítos ● e o nome do script
– Serviços com K são mortos (ordem descendente)
– Serviços com S são iniciados (ordem ascendente)
Sistemas Operacionais LinuxSistemas Operacionais Linux
Scripts de níveis ProcessosProcessos
Comando ntsysv N– Interface amigável para ativar/desativar serviço no
nível N
Comando chkconfig– Permite configurar os links
– chkconfig list ● mostra todos os serviços e os níveis em que aparecem
– chkconfig level N add serv● Adiciona serviço serv ao nível N
Sistemas Operacionais LinuxSistemas Operacionais Linux
Threads– São fluxos de execução dentre de um processo
– Cada processo possui pelos menos uma thread
– Processos com mais de uma thread são denominados de multithread
– As threads de um processo são executadas alternadamente, aparentando execução simultânea
– As threads compartilham os seguintes recursos do processo a que pertencem:
● Espaço de memória● Variáveis globais● Arquivos
ProcessosProcessos
Sistemas Operacionais LinuxSistemas Operacionais Linux
Threads– Cada thread possui um conjunto de registradores e
pilha de execução própria.
– Existem dois tipos de threads:● Threads de usuário: a troca das threads é implementada
pelo próprio programa● Threads de núcleo (kernel): a troca é implementada pelo
sistema operacional
– O uso de threads:● Simplifica a programação de tarefas paralelas● Acelera a execução do programa em computadores com
mais de um processador
ProcessosProcessos
Sistemas Operacionais LinuxSistemas Operacionais Linux
Escalonamento– Escalonador
● Parte do SO responsável por escolher o processo/thread a ser executado
● Implementa o algorítmo de escalonamento
– O algorítmo de escalonamento busca satisfazer cinco objetivos:
● Justiça – Todos processos tem chances iguais● Eficiência – Aproveitar ao máximo o processador● Tempo de Resposta – Responder rápido aos usuários
iterativos● Turnaround – Minimizar o tempo de espera de usuários não
iterativos● Vazão – Executar o maior número de tarefas possíveis
ProcessosProcessos
Sistemas Operacionais LinuxSistemas Operacionais Linux
Escalonamento– Estes objetivos são contraditórios
– Para SO de propósito geral, o algorítmo deve satisfazer parcialmente estes objetivos
Escalonamento Circular ou Round Robin– Cada processo tem uma cota de tempo (quantum)
– Os processos estão em uma fila circular
– Após o seu quantum de tempo, o processo retorna ao final da fila
ProcessosProcessos
Sistemas Operacionais LinuxSistemas Operacionais Linux
EscalonamentoEscalonamento com Prioridade
– Existem processos mais importantes que outros, que devem executar mais rapidamente
– Cada processo recebe um valor numérico de prioridade
– Processos de maior prioridade recebem um quantum de tempo primeiro
– Após executar o quantum, a prioridade é diminuída
– Quando todos os processos tem a prioridade zerada, as mesmas são reiniciadas
ProcessosProcessos
Sistemas Operacionais LinuxSistemas Operacionais Linux
EscalonamentoEscalonamento Garantido
– Em alguns casos, um processo ganha mais um quantum de tempo, para encerrar tarefa que não pode ser interrompida
– Com isto, alguns processos tem mais tempo de execução do que outros da mesma prioridade
– O escalonamento garantido altera a prioridade dinamicamente, garantindo o mesmo tempo de execução
ProcessosProcessos
Sistemas Operacionais LinuxSistemas Operacionais Linux
Escalonamento no Linux– Escalonamento de Threads
– Três classes de Threads:● FIFO em Tempo real
– Primeiro a chegar tem preferência na execução– Só é interrompido por um processo de maior prioridade na mesma
classe● Circular em Tempo real
– Os processos se alternam na execução– Após o quantum de tempo, voltam ao fim da fila
● Tempo Compartilhado– Como na classe anterior, mas com menor prioridade
ProcessosProcessos
Sistemas Operacionais LinuxSistemas Operacionais Linux
Escalonamento no Linux– Cada thread tem prioridades base e de ajuste (nice)
– A prioridade total da thread é dada por:● Prioridade = base – nice
– Valor padrão● base = 20● nice = 0● Portanto, 1 <= prioridade <= 40
– O quantum de tempo:● É um valor inteiro● Inicialmente igual a prioridade● A cada interrupção este número é decrementado
ProcessosProcessos
Sistemas Operacionais LinuxSistemas Operacionais Linux
Escalonamento no Linux– O escalonador calcula a bondade de uma thread:
– Em Tempo real:● Bondade = 1000 + prioridade
– Em Tempo Compartilhado:● Se (quantum > 0) Bondade = quantum + prioridade● Se (quantum = = 0) Bondade = 0
– Assim:● Tempo real tem prioridade sobre as demais● Threads que gastaram toda a thread não rodam
ProcessosProcessos
Sistemas Operacionais LinuxSistemas Operacionais Linux
Escalonamento no Linux– Quando todas as threads, não bloqueadas, zeraram o
seu quantum● O escalonador reinicializa o valor do quantum● Todos os processos são afetados (prontos e bloqueados)● Novo valor:
quantum = (quantum/2) + prioridade● Os processos blooqueados que não gastaram todo o
quantum, recebem um novo quantum maior● Por isso, processos que fazem muito E/S tem maior
preferência
ProcessosProcessos
Sistemas Operacionais LinuxSistemas Operacionais Linux
Escalonamento no LinuxAlterando a prioridade
– Podese alterar a prioridade através do valor nice:
– nice n valor comando● Inicia o processo para comando com nice alterado para
valor, com 20 <= valor <= 19● Usuários comuns só podem usar 0 <= valor <= 19
– renice valor pid● Altera para valor o nice de um processo já iniciado● 20 <= valor <= 19● usuários comuns só podem aumentar o valor atual do nice.
ProcessosProcessos