Processos e Threads

Propaganda
Sistemas Operacionais
Processos e Threads
Thiago Leite
<[email protected]>
Processos e Threads
•
Processo
•
Programa em execução
•
Todo processo é um programa?
•
Mais: o programa é apenas parte do estado.
•
Menos: programas podem gerar vários
processos.
Processos e Threads
•
Abstração de processo
•
permite execução de múltiplas tarefas
(multiprogramação)
•
prevenir que um processo interfira em outro
Processos e Threads
•
Cada processo possui um espaço de
endereçamento
•
•
recursos de auxílio ao processo
O processo e seu respectivo espaço de
endereçamento chamam-se “imagem do núcleo”
Processos e Threads
•
Espaço de endereçamento
•
Programa executável
•
Dados do programa
•
Registradores
•
Arquivos abertos
•
Alarmes pendentes
•
Listas de processos relacionados
Processos e Threads
•
Segmentos de um processo Unix
•
Pilha
•
•
Heap
•
•
variáveis não inicializadas
Data
•
•
extensão da memória
BSS (Block Memory Starting with Symbol)
•
•
conjunto de instruções de uma sub-rotina
variáveis inicializadas
Texto
•
instruções do programa
Processo Unix
Área de Endereçamento
Processos e Threads
•
Multiprogramação
•
vários processos em memória
•
vários fluxos de execução
•
processos desconhecem o momento que serão
executados
•
apenas um contador de programa real
Multiprogramação
Somente um processo ativo em um determinado
instante
Processos e Threads
•
Sistema operacional lida com a Tabela de
Processos
•
estruturas de cada processo em execução
Processos e Threads
•
Árvore de Processos
•
Pode criar um ou mais processos filhos
•
Processos filhos também podem criar processos
filhos
Árvore de Processos
Relação entre processos
Processos e Threads
•
Hierarquias de processos
•
Em Unix todos os processos
compõe uma árvore com a
raíz o INIT
•
Em Windows todos os
processos são iguais
Processos e Threads
•
Chamadas de sistema de gestão de processos
•
criação e término de processos
•
requisitar mais memória ou esperar o término de
outro processo
Processos e Threads
•
Momentos em que os processos geralmente são
criados
•
Início do sistema
•
Execução de uma chamada de sistema de
criação
•
Requisição do usuário
•
Início de tarefa em lote (batch)
Processos e Threads
•
Processos podem ser criados em
•
Foreground
•
Background
Processos e Threads
•
Processos em Foreground
•
processos sujeitos a interação do usuário
•
usualmente processos do terminal de comandos
ou GUI
Processos e Threads
•
Processos em Background
•
daemons em Unix
•
•
Disk And Execution
MONitor
serviços em Windows
Processos e Threads
•
Fluxo de dados para processos em Unix
•
entrada padrão
saída de
•
•
saída normal
saída com erro
entrada
Processo
saída
Processos e Threads
•
Término de processo
•
Saída normal (voluntário)
•
Saída por erro (voluntário)
•
Erro fatal (involuntário)
•
Cancelamento por outro processo (involuntário)
Processos e Threads
•
Comunicação entre processos
•
processo envia saída para entrada de outro
processo
•
dois processos solicitando o mesmo recurso
•
um processo depende de outro para realizar
uma tarefa
Pipe Unix
Saída de um processo e entrada de outro
Processos e Threads
•
Processos em Unix
•
PID (Process IDentifier)
•
identificação de um processo
•
número utilizado para manipular os processos
e enviar sinais (alarmes)
Processos e Threads
•
Processos em Unix
•
Possui um UID (User IDentifier) associado
•
Vários UIDs podem pertencer a um GID
(Group IDentification)
•
Sistemas baseados em Unix possuem um UID
especial com super-poderes.
Processos e Threads
•
Outros elementos de processos em Unix
•
Ambiente de execução (Ex: PATH)
•
Diretório de trabalho
•
Instruções do programa
•
Registradores e Pilha de instruções
•
Heap (alocação de memória dinâmica)
•
Descritores de arquivos
•
Ações de sinais
•
Bibliotecas compartilhadas
•
Sistema de comunicação entre processos (filas de mensagens, pipes ou memória
compartilhada)
Informações sobre Processos
comando “ps”
Processos e Threads
•
A Tabela de Processos em sistemas Unix-like
usualmente é representada por /proc
•
Em Linux procfs é um sistema de arquivos virtual
com a Tabela de Processos
Tabela de Processos
Sistema virtual de arquivos que representa a tabela de
processos
Processos e Threads
•
Significado de alguns elementos de /proc
•
cmdline - comando e opções associados ao processo
•
cwd - diretório de trabalho do processo.
•
environ - variáveis de ambiente criadas pelo processo
•
exe - executável do processo
•
fd - descritores de arquivos utilizados
•
maps - regiões de memória ocupadas pelo processo
Ciclo de vida de um processo
da concepção do processo ao término
Processos e Threads
•
Estados principais de um processo
• Em execução (realmente usando a CPU)
• Pronto (executável; esperando seu momento)
• Bloqueado (esperando recursos)
Ciclo de vida de um processo
Mudança possíveis de estados de um processo
Processos e Threads
•
O momento das interrupções depende do tipo de
sistema a adotar
•
Preemptivo (processos podem ser interrompidos
sem consentimento)
•
Não-preemptivo (processos que decidem o
momento de parar)
Processos e Threads
•
Sistema preemptivo
•
Escalonador (invisível ao processo)
•
Interrupções
•
Inicialização
•
Bloqueio
Processos e Threads
•
Escalonador
•
Utiliza a Tabela de Processos
•
Manipulador de processos (process handler)
•
Salvar registradores
•
Alterar ponteiro da pilha
•
Rotinas em linguagem Assembly
Processos e Threads
•
Escalonamento
1. Hardware guarda contador de programa atual
2. Hardware carrega o novo contador de programa
3. Rotinas Assembly salvam os registradores
4. Rotinas Assembly carregam novos registradores
5. Serviço de interrupção em C carrega os buffers
6. Escalonador decide quem será o próximo a executar
7. Procedimentos em C retornam comando às rotinas Assembly
8. Rotina Assembly inicia o processo atual
Processos e Threads
•
Principais métodos de escalonamento
•
FIFO (First-In-First-Out) ou FCFS (First-Come-First-Served)
•
•
SJF (Shortest Jog First), SPN (Shortest Process Next) e SRT (Shortest Remaning
Time)
•
•
menor tarefa será executada primeiro
Por prioridade
•
•
primeiro a chegar em pronto é o primeiro a ser executado
processos são associados a prioridades. Processos com prioridades iguais
obedecem ao FIFO.
Round-Robin ou circular
•
revezamento com preempção
9.2 / SCHEDULING ALGORITHMS
0
5
10
15
A
B
C
D
E
First-come-first
served (FCFS)
A
B
C
D
E
Round-robin
(RR), q ! 1
A
B
C
D
E
Round-robin
(RR), q ! 4
Shortest process
next (SPN)
A
B
C
D
E
Processo
Tempo de
chegada
Tempo de
Processament
o
A
B
C
D
E
0
2
4
6
8
3
6
4
5
2
FIFO ou FCFS
Shortest remaining
time (SRT)
A
B
C
D
E
Exemplo de escalonamento
Highest response
ratio next (HRRN)
A
B
C
20
415
Algoritmo de tarefa mais curta (SJF)
Processos de menor carga têm prioridade
D
E
Shortest process
next (SPN)
Shortest remaining
time (SRT)
Highest response
ratio next (HRRN)
A
B
C
D
E
A
B
C
D
E
A
B
C
D
E
Feedback
q!1
Feedback
q ! 2i
A
B
C
D
E
Processo
Tempo de
chegada
Tempo de
Processament
o
A
B
C
D
E
0
2
4
6
8
3
6
4
5
2
A
B
C
D
E
Exemplo de Escalonamento por
SJF, SPN e SRT
0
5 escalonamento
10
Exemplo
de
Figure 9.5
15
20
A Comparison of Scheduling Policies
The normalized turnaround time for process Y is way out of line compared to the
Algoritmo por Prioridade
Processos de maior prioridade possuem preferencia
Processo B possui maior prioridade de execução
P = Pronto
E = Execução
W = Espera
Exemplo de Escalonamento por
Prioridade
Processos de menor prioridade apenas serão escalonados
se não houver outros processos de maior prioridade
Algoritmo Round-Robin ou Circular
Algoritmo “democrático”
C
D
E
A
B
C
D
E
Round-robin
(RR), q ! 1
A
B
C
D
E
Round-robin
(RR), q ! 4
Shortest process
next (SPN)
Shortest remaining
time (SRT)
Highest response
ratio next (HRRN)
A
B
C
D
E
A
B
C
D
E
Processo
Tempo de
chegada
Tempo de
Processament
o
A
B
C
D
E
0
2
4
6
8
3
6
4
5
2
A
B
C
D
E
Escalonamento Round-Robin
Feedback
q!1
com Adiferentes tempos de preempção
B
C
D
E
Processos e Threads
•
Métodos compostos de escalonamento
•
Fila Múltipla (Multilevel Queue)
•
•
divide a fila de prontos em várias filas separadas, com
base em alguma propriedade do processo. Cada fila
possui seu próprio algoritmo de escalonamento
Fila Múltipla com Realimentação (Multilevel Feedback
Queue)
•
identifica dinamicamente o comportamento de cada
processo, ajustando assim suas prioridades de execução
e mecanismos de escalonamento.
Algoritmo Fila Múltipla
diferentes filas para diferentes tipos de processos
Escalonador com Fila Múltipla
diferentes filas para diferentes tipos de processos podendo
os processos mudarem de fila em tempo de execução
Processos e Threads
•
Tipos de processos
•
•
CPU Bound
•
Uso intensivo da CPU
•
Poucas operações de Entrada/Saída
•
Pode monopolizar a CPU dependendo do tipo de algoritmo de
escalonamento utilizado
I/O Bound
•
Orientado a Entrada/Saída
•
Devolve deliberadamente o uso da CPU
Cenários de uso da CPU
grau de multiprogramação diante diferentes tipos de
processos
Processos e Threads
•
Threads
•
“Miniprocessos”
•
Múltiplas atividades simultâneas
•
Compartilhamento do espaço de endereçamento
•
Criar threads é cem vezes mais rápido
Vida e Morte
Processos e Threads
Processos e Threads
•
Exemplo do uso de Threads
•
Editor WYSIWYG (What You See Is What You Get)
•
Edição e resultado simultâneo
•
O Microsoft Word e BrOffice.org são exemplos
de editores WYSIWYG
Editor de texto com três Threads
cada thread de forma concorrente realizando diferentes
instruções dentro do mesmo processo
Servidor Web Multithread
thread dispatcher delegando funções para threads
escravas
Processos e Threads
•
Condições de corrida
•
processos que compartilham dados
•
•
ex: spool de impressão
dois processos acessam a mesma região e
ocasionalmente entrem em conflito
•
ex: dois processos acham o mesmo espaço
livre e gravam no local
Condição de corrida
Dois processos incluindo arquivos a serem impressos no
spool ao mesmo tempo
Processos e Threads
•
Exclusão mútua
•
apenas um processo poderá acessar
determinado recurso por vez
•
o código de um processo que faz uso de recurso
compartilhado chama-se “região crítica”
Processos e Threads
•
Condições para acesso a dados compartilhados
•
dois processos nunca podem estar
simultaneamente em suas regiões críticas
•
nenhum processo fora de sua região crítica
poderá bloquear outro processo
•
nenhum processo deverá esperar eternamente
por sua região crítica
Condição de corrida
Exclusão mútua usando regiões críticas
Processos e Threads
•
Espera ociosa
•
espera para que um processo deixe sua região
crítica e possa realizar o mesmo
•
expectativa de espera por um tempo razoável
Processos e Threads
•
Semáforos
•
proposto por Edsger
Dijkstra em 1965
•
utilizada em sistemas
multiprogramados
•
variável protegida para
controle de recursos
compartilhados
Processos e Threads
•
Operações sobre semáforos são atômicas
•
inicialização
•
operação wait
•
operação signal
Processos e Threads
•
Inicialização de semáforo
•
recebe valor inteiro indicando quantos
processos poderão ter acesso simultâneo a um
recursos compartilhado
Processos e Threads
•
Operação wait em semáforos
•
decrementa o valor do semáforo
•
se esse possuir valor 0, esse é colocado em
estado de espera ociosa
Processos e Threads
•
Operação signal em semáforos
•
se houver um processo em espera ociosa, esse
é acordado
•
se não houver processo em espera ociosa, o
valor do semáforo é incrementado
Processos e Threads
•
Os processos fazem uso de
uma estrutura FIFO para uso
do Semáforo
Processos e Threads
•
Mutex
•
tipo mais simples de semáforo
•
semáforo binário, onde o recurso está disponível
ou não
Condição de corrida
Chave de Acesso ao Recurso Compartilhado com Mutex
Revisão
•
Processo
•
PID
•
Estados de um processo em
Unix
•
Concorrência
•
Processos em Unix
•
Multiprogramação
•
UID
•
Escalonador
•
Espaço de endereçamento
•
GID
•
Manipulador de processos
•
Tabela de processos
•
ps
•
Algoritmos de Escalonamento
•
Imagem do núcleo
•
kill
•
Otimização do uso da CPU
•
Árvore de processos
•
Término de processo
•
Threads
•
Subprocessos
•
Shell Unix
•
Condições de corrida
•
Chamadas de sistema (system
calls)
•
Hierarquias de processos
•
Região crítica
•
Comunicação entre processos
•
Semáforos
•
Estados de um processo
•
Exclusão mútua
•
Diagrama de estados de
processo
•
Mutex
•
•
•
Criação de processos
Foreground
Background
Laboratório
•
Comandos Bash Shell
•
ls - listar o conteúdo de um diretório ou
informações sobre um arquivo
$ ls
•
cd - navegar entre diretórios
$ cd diretorio
Laboratório
•
Comandos Bash Shell
•
cat - exibe e concatena arquivos
$ cat arquivo1 arquivo2
•
grep - filtra uma entrada por uma string
$ grep filtro arquivo
Laboratório
•
Comandos Bash Shell
•
echo - imprime uma mensagem
$ echo “Ola Mundo”
•
rm - remove arquivos do sistema
$ rm arquivo
Laboratório
•
Comandos Bash Shell
•
sudo - solicitar execução em modo Super
Usuário
$ sudo comando
•
su - autenticar-se como Super Usuário
$ su
Laboratório
•
Uso do pipe ( | ) em Bash Shell
$ cat arquivo1 arquivo2 | grep filtro
Laboratório
•
Comandos Bash Shell
•
; - finalização de um comando
comando1 ; comando2
•
\ - continuação de um mesmo comando em
várias linhas
comando \
continuaçãocomando;
Laboratório
•
Redirecionamento de entradas e saídas em Bash Shell
•
< - entrada padrão
comando < arquivo_com_argumentos
•
> ou >> - saída padrão
comando > arquivo_saida
•
2> ou 2>> - saída de erro
comando 2>> arquivo_erro_apendice
•
2>&1 - saída padrão e de erros
comando 2>&1 arquivo_saidas
Laboratório
•
Comandos em Bash Shell
•
& - execução de um comando em segundo plano (background)
comando &
•
jobs - apresenta comandos em background
[1]+ Running
•
comando &
fg - traz processo novamente para o foreground
fg 1
•
bg - leva um processo para background
bg 1
Laboratório
•
Comandos em Bash Shell
•
ps - obtém informações sobre os processos do
sistema
ps aux
•
kill - envia um sinal para um determinado PID
kill -9 1000
Download