Capítulo 4: Processos
Processos
• Conceito de Processo
• Escalonamento de Processos
• Operações sobre Processos
• Processos Cooperativos
• Comunicação entre Processos
• Comunicação em Sistemas ClienteServidor
Operating System Concepts
4.2
Silberschatz, Galvin and Gagne 2002
Conceito de Processo
• Um SO executa vários programas
• Sistemas Batch
•serviços (jobs)
• Sistemas de tempo compartilhado
(Time-sharing)
•programas de usuário ou tarefas
• Serviço e processo são sinônimos
Operating System Concepts
4.3
Silberschatz, Galvin and Gagne 2002
Conceito de Processo (cont.)
• Processo – um programa em
execução
• a execução de um processo é
sequencial
• Um processo inclui:
• Contador de instruções (PC)
• Pilha (stack)
• Seção de dados
Operating System Concepts
4.4
Silberschatz, Galvin and Gagne 2002
Estado do Processo
• Um processo passa por vários
estados
• Novo
• Em execução
• Em espera
• Pronto
• Terminado
Operating System Concepts
4.5
Silberschatz, Galvin and Gagne 2002
Diagrama de Estado dos
Processos
Operating System Concepts
4.6
Silberschatz, Galvin and Gagne 2002
Bloco de Controle de Processos
• Guarda informações associadas a
um processo
• Estado do processo
• Contador de instruções
• Registradores da CPU
• Alocação da CPU
• Gerenciamento de memória
• Contabilidade
• Estado de operações de E/S
Operating System Concepts
4.7
Silberschatz, Galvin and Gagne 2002
PCB
Operating System Concepts
4.8
Silberschatz, Galvin and Gagne 2002
Transferência da CPU entre
processos
Operating System Concepts
4.9
Silberschatz, Galvin and Gagne 2002
Filas para Escalonamento
• Fila de Processos
• Todos os processos do sistema
• Fila de Processos Prontos
• Na memória principal
• Prontos para entrar em execução
• Fila de Dispositivos
• Esperando por um dispositivo de E/S
Operating System Concepts
4.10
Silberschatz, Galvin and Gagne 2002
Diagrama das Filas
Operating System Concepts
4.11
Silberschatz, Galvin and Gagne 2002
Escalonamento de Processos
Operating System Concepts
4.12
Silberschatz, Galvin and Gagne 2002
Escalonadores
• Escalonador de longo prazo
• Quais processos devem ser
carregados na memória
• Escalonador de curto prazo
• Qual processo que deve ser
executado
• Aloca a CPU
Operating System Concepts
4.13
Silberschatz, Galvin and Gagne 2002
Escalonamento de médio prazo
Operating System Concepts
4.14
Silberschatz, Galvin and Gagne 2002
Escalonadores (cont.)
• O escalonador da CPU é usado
muito freqüentemente
• Tem que ser rápido
• O escalonador de processos é
usado pouco freqüentemente
• Pode ser lento
Operating System Concepts
4.15
Silberschatz, Galvin and Gagne 2002
Escalonadores (cont.)
• O escalonador controla o grau de
multiprogramação
• Processos podem ser descritos
como
• Dependentes de E/S
• Dependentes da CPU
• Mistura ideal de processos
• Um pouco de cada
Operating System Concepts
4.16
Silberschatz, Galvin and Gagne 2002
Mudança de Contexto
• Para transferir o controle da CPU
• É preciso
• salvar o estado do processo antigo
• carregar o estado do novo processo
• O tempo de mudança de contexto é
desperdiçado
• O sistema não realiza trabalho útil
• Duração depende do hardware
Operating System Concepts
4.17
Silberschatz, Galvin and Gagne 2002
Criação de processos
• Processo pai cria processos filho
• Filhos criam outros processos
• Resultando árvore de processos
• Forma de compartilhamento de
recursos entre pais e filhos
• todos
• Um subconjunto
• Nenhum
Operating System Concepts
4.18
Silberschatz, Galvin and Gagne 2002
Criação de Processos
• Modos de execução
• Pai e filhos executam concorrentemente
• Pai espera até que os filhos terminem a
execução
• Espaço de endereços
• Filho é cópia do pai
• Filho tem um programa que deve ser
carregado para sua execução
Operating System Concepts
4.19
Silberschatz, Galvin and Gagne 2002
Exemplo - UNIX
• Chamada ao sistema fork cria
um novo processo
• exec usada após fork para
substituir o espaço de memória
do processo com novo programa
Operating System Concepts
4.20
Silberschatz, Galvin and Gagne 2002
Árvore de processos em um
sistema UNIX
Operating System Concepts
4.21
Silberschatz, Galvin and Gagne 2002
Término de Processos
• Depois do último comando uma
chamada ao SO (exit) é feita para
remover o processo do sistema
• Dados de saída do filho para o pai
(via wait)
• Recursos do processo são dealocados pelo sistema operacional
Operating System Concepts
4.22
Silberschatz, Galvin and Gagne 2002
Término de processos
• O processo pai pode terminar a
execução dos filhos (abort)
• Filho excedeu recursos alocados
• A tarefa atribuida ao filho não é mais
necessária
• O processo pai está terminando
• O SO não permite que a execução de um
processo filho continue se a do seu pai já
terminou
• Finalização em cascata
Operating System Concepts
4.23
Silberschatz, Galvin and Gagne 2002
Processos Cooperativos
• Processos independentes
• não podem afetar ou serem
afetados pela execução de outro
processo
• Processos cooperativos
• podem afetar ou serem afetados
pela execução de outro processo
Operating System Concepts
4.24
Silberschatz, Galvin and Gagne 2002
Processos Cooperativos (cont.)
• Vantagens de processos
cooperativos
• Compartilhamento de informações
• Aumento de velocidade de
processamento
• Modularidade
• Conveniência
Operating System Concepts
4.25
Silberschatz, Galvin and Gagne 2002
Produtor-Consumidor
• Paradigma para processos
cooperativos.
• Dois casos
• Área de armazenamento ilimitada
• Área de armazenamento limitada
Operating System Concepts
4.26
Silberschatz, Galvin and Gagne 2002
Área limitada – Solução de
memória compartilhada
• Dado compartilhado
#define BUFFER_SIZE 10
Typedef struct {
. . .
} item;
item buffer[BUFFER_SIZE];
int in = 0;
int out = 0;
• Máximo BUFFER_SIZE-1 elementos
Operating System Concepts
4.27
Silberschatz, Galvin and Gagne 2002
Área limitada – Processo
Produtor
item nextProduced;
while (1) {
while(((in+1)%BUFFER_SIZE)==
out); /* do nothing */
buffer[in] = nextProduced;
in = (in + 1) % BUFFER_SIZE;
}
Operating System Concepts
4.28
Silberschatz, Galvin and Gagne 2002
Área limitada – Processo
Consumidor
item nextConsumed;
while (1) {
while (in==out);
/* do nothing */
nextConsumed = buffer[out];
out = (out + 1) % BUFFER_SIZE;
}
Operating System Concepts
4.29
Silberschatz, Galvin and Gagne 2002
Comunicação entre Processos
• Mecanismo para
• Comunicação
• Sincronização de processos
• Sistema de mensagens
• sem uso de memória
compartilhada
Operating System Concepts
4.30
Silberschatz, Galvin and Gagne 2002
Comunicação entre Processos
• Duas operações:
• Send (mensagem)
• tamanho da mensagem fixa ou variável
• Receive (mensagem)
• Para processos P e Q se comunicarem,
eles precisam:
• Estabelecer um canal de comunicação entre
eles
• Trocar mensagens via send/receive
Operating System Concepts
4.31
Silberschatz, Galvin and Gagne 2002
Comunicação entre Processos
• Implementação do canal de
comunicação
• Física (por exemplo, memória
compartilhada)
• Lógica (por exemplo,
propriedades lógicas)
Operating System Concepts
4.32
Silberschatz, Galvin and Gagne 2002
Questões de implementação
• Como são estabelecidos os
canais?
• Um canal pode estar associado a
mais de dois processos?
• Quantos canais podem existir
entre cada par de processos?
Operating System Concepts
4.33
Silberschatz, Galvin and Gagne 2002
Questões de implementação
• Qual é a capacidade de um canal?
• Um canal pode acomodar
mensagens de tamanho variáveis?
• O canal é unidirecional ou
bidirecional?
Operating System Concepts
4.34
Silberschatz, Galvin and Gagne 2002
Comunicação Direta
• Os processos devem indicar
explicitamente o seu par
• Send (P, mensagem) – envia
mensagem para o processo P
• Receive (Q, mensagem) –
recebe mensagem do processo Q
Operating System Concepts
4.35
Silberschatz, Galvin and Gagne 2002
Propriedades do Canal
(Comunicação Direta)
• Canais estabelecidos
automaticamente
• Canal associado exatamente com
um par de processos
• Canal normalmente bidirecional
Operating System Concepts
4.36
Silberschatz, Galvin and Gagne 2002
Comunicação Indireta
• Mensagens são enviadas e
recebidas em caixas postais
(portas)
• Cada caixa postal tem uma
identidade
• Processos só podem se
comunicar se compartilharem
uma caixa postal
Operating System Concepts
4.37
Silberschatz, Galvin and Gagne 2002
Propriedades do Canal
(Comunicação Indireta)
• O canal estabelecido somente se
processos compartilham caixa postal
• Um canal pode ser associado com
vários processos
• Cada par de processos pode
compartilhar vários canais de
comunicação
• Canal unidirecional ou bidirecional
Operating System Concepts
4.38
Silberschatz, Galvin and Gagne 2002
Comunicação Indireta
• Operações
• Criar nova caixa postal
• Enviar e receber mensagens
• Destruir caixa postal
• Primitivas são definidas como:
Send (A, mensagem) – envia mensagem para
caixa postal A
Receive (A, mensagem) – recebe mensagem
da caixa postal A
Operating System Concepts
4.39
Silberschatz, Galvin and Gagne 2002
Comunicação Indireta
• Compartilhamento de caixa postal
• P1, P2, e P3 compartilham caixa postal A
• P1 envia; P2 e P3 recebem
• Quem pega a mensagem?
• Soluções
• Canal só pode ser associado 2 processos
• Permitir que apenas um processo execute
a operação receive por vez
• Permitir que o SO selecione o recipiente.
Remetente notificado sobre quem recebeu
Operating System Concepts
4.40
Silberschatz, Galvin and Gagne 2002
Sincronização
• Passagem de mensagem pode ser
ou blocante ou não-blocante
• Blocante é síncrona
• Não-blocante é assíncrona
• As primitivas send e receive
podem ser ou bloqueantes ou nãobloqueantes
Operating System Concepts
4.41
Silberschatz, Galvin and Gagne 2002
Buffering
• Fila de mensagens associada ao canal
• Implementada de três maneiras
• Capacidade zero
• 0 mensagens. Remetente deve esperar
pelo recipiente (rendez-vous)
• Capacidade limitada
• n mensagens. Remetente deve esperar
se o canal estiver cheio
• Capacidade ilimitada
• comprimento infinito. Remetente nunca
bloqueado
Operating System Concepts
4.42
Silberschatz, Galvin and Gagne 2002
Comunicação Cliente-Servidor
• Sockets
• Chamadas de
Procedimentos Remotos
(RPC)
• Invocação do Método
Remoto (RMI - Java)
Operating System Concepts
4.43
Silberschatz, Galvin and Gagne 2002
Sockets
• Final de um canal de comunicação
• Usa concatenação de endereço IP e
porta como identificador
• O socket 161.25.19.8:1625
• porta 1625
• host 161.25.19.8
• Comunicação feita entre pares de
sockets
Operating System Concepts
4.44
Silberschatz, Galvin and Gagne 2002
Comunicação entre Sockets
Operating System Concepts
4.45
Silberschatz, Galvin and Gagne 2002
Chamada de Procedimento
Remoto
Transforma chamadas remotas em “locais”
• Stubs
• No servidor
• recebe
mensagem
• recolhe
parâmetros
• executa
procedimento
• No cliente
• substituto
(proxy) do
procedimento
• localiza o
servidor
• junta os
parâmetros
Operating System Concepts
4.46
Silberschatz, Galvin and Gagne 2002
Execução de RPC
Operating System Concepts
4.47
Silberschatz, Galvin and Gagne 2002
Invocação do Método Remoto
• Mecanismo em Java similar a
RPC
Operating System Concepts
4.48
Silberschatz, Galvin and Gagne 2002
Recolhimento de Parâmetros
Operating System Concepts
4.49
Silberschatz, Galvin and Gagne 2002
Download

ppt