Definir formalmente o conceito de processo
Descrever as várias funcionalidades relacionadas à manipulação de processos pelo sistema operacional, incluindo escalonamento, criação, terminação e comunicação
Apresentar as principais formas de comunicação utilizadas por sistemas cliente-servidor
1. Gerências de Processos: Processos
Sistemas Operacionais I
Prof. Alexandre Duarte : http://alexandrend.com
Centro de Informática | Universidade Federal da Paraíba
Estes slides são baseados no material que acompanha o livro Operating
Systems Concepts de Silberschatz, Galvin and Gagne
2. Objetivos
Definir formalmente o conceito de processo
Descrever as várias funcionalidades relacionadas
à manipulaç ão de processos pelo sistema
operacional, incluindo escalonamento, criaç ão,
terminaç ão e comunicaç ão
Apresentar as principais formas de comunicaç ão
utilizadas por sistemas cliente-servidor
3. O conceito de processo
Um sistema operacional executa uma variedade de programas:
Sistemas Batch: jobs
Sistemas de compartilhamento de tempo: programas do
usuário
Usaremos os termos job e processo como sinô nimos
Processo: um programa em execução
Sua execução avança de forma sequencial
Um processo inclui:
Contador de programa
Pilha
Seção de dados
5. Estados de um processo
Durante sua execuç ão um processo muda de
estado inúmeras vezes
novo: O processo estásendo criado
executando: Instruç ões do processo estão
sendo executadas
esperando: O processo aguarda que algum
evento ocorra
pronto: O processo aguarda ser escalonado
para um processador
finalizado: A execuç ão do processo foi
concluída
7. Bloco de Controle de Processo (PCB)
Informaç ões associadas a cada processo
Estado do processo
Contador de programa
Registradores da CPU
Informaç ões para escalonamento da CPU
Informaç ões para gerência de memó ria
Informaç ão para contabilidade
Estados das operaç ões de E/S
9. Filas de escalonamento de processos
Fila de jobs: conjunto de todos os processos do
sistema
Fila de prontos: fila com todos os processos
aguardando apenas pelo escalonamento da CPU
Filas de dispositivo: conjunto de processos
esperando por um dispositivo de E/S
Os processo migram entre as diferentes filas
11. Escalonadores
Escalonador de longo prazo (ou
escalonador de jobs): seleciona qual processo
deve ser trazido para a fila de prontos
Escalonador de curto prazo (ou
escalonador de CPU): seleciona qual
processo deve ser executado e aloca a CPU
13. Escalonadores
O escalonador de curto prazo é invocado muito
frequentemente (milissegundos) ⇒ precisa ser rápido
O escalonador de longo prazo é invocado ocasionalmente
(segundos, minutos) ⇒ pode ser lento
O escalonador de longo prazo controle o grau de
multiprogramação
Processos podem ser descritos como:
Processos limitados por E/S: passam mais tempo
realizando operaç ões de E/S do que computaç ão – várias rajadas
curtas de CPU
Processos limitados por CPU: passam mais tempo fazendo
computaç ão – poucas rajadas muito longas de CPU
14. Criação de processos
Um processo Pai cria processos filho, que, por sua vez,
podem criar outros processos, formando uma árvore de
processos
Geralmente, processos são gerenciados através de um
identificador de processo (pid)
Compartilhamento de recursos
Processos pai e filho compartilham tudo
O processo filho tem acesso a uma parte dos recursos do pai
Pai e filho não compartilham nada
Execução
Pai e filho executam concorrentemente
Pai aguarda até a conclusão da execuç ão do filho
15. Criação de processos
Espaç o de endereç amento
O filho duplica o espaç o do pai
O filho tem um outro programa carregado em seu
espaç o de endereç amento
Exemplos no UNIX
a chamada de sistema fork cria um novo processo
a chamada de sistema exec é utilizada apó s o fork
para substituir o espaç o de memó ria do processo
com um novo programa
17. Encerramento de processos
Um processo executa a sua última instruç ão e solicita
ao sistema operacional que o remova (exit)
Envio de dados da saída de um processo filho para o pai
(via wait)
Os recursos utilizados pelo processo são desalocados
O pai pode finalizar a execuç ão de um processo filho
(abort)
O filho excedeu o limite de recursos alocados
A tarefa atribuída ao filho não é mais necessária
O pai estásendo encerrado
Alguns SOs não permitem processos ó rfãos
Todos os filhos são finalizados: terminaç ão em cascata
18. Processos cooperativos
Processos independentes não podem afetar ou
serem afetados pela execuç ão de outros processos
Processos cooperativos podem afetar e serem
afetados pela execuç ão de outros processos
Vantagens da utilizaç ão de processos cooperativos
Compartilhamento de informação
Velocidade de computação
Modularidade
Conveniência
19. O problema do Produtor/Consumidor
Um paradigma para processos cooperativos
Processos produtores produzem informaç ão que
é consumida por processos consumidores
Buffer-ilimitado não impõem nenhum limite prático
ao tamanho do buffer
Buffer-limitado assume que háum tamanho fixo
para o buffer
23. Comunicação entre processos
Processos cooperativos precisam de mecanismos para
comunicaç ão entre processos (IPC)
Dois modelos: Troca de mensagens x Memó ria compartilhada
24. Troca de Mensagens
Processos se comunicam sem fazer uso de variáveis
compartilhadas
O sistema de IPC oferece duas operações:
send(message)
receive(message)
Se P e Q desejam se comunicar, eles precisam:
estabelecer um canal de comunicaç ão entre si
trocar mensagens utilizando send/receive
Os canais de comunicação podem ser:
físicos (ex., região de memó ria compartilhada, barramento de
hardware)
ló gicos
25. Questões de implementação
Como os canais são estabelecidos?
Um canal pode ser associado a mais de dois
processos?
Quantos canais de comunicaç ão podem ser
estabelecidos entre todos os pares de
processos em comunicaç ão?
Qual é a capacidade de um canal?
O tamanho da mensagem é fixo ou variável?
O canal é unidirecional ou bi-direcional?
26. Comunicação Direta
Os processos precisam ser identificados
explicitamente
send (P, message)
receive(Q, message)
Propriedades do canal de comunicaç ão
Estabelecimento automático
Um único canal exclusivo para cada par de processos
O canal pode ser unidirecional mas geralmente é
bidirecional
27. Comunicação Indireta
As mensagens são enviadas e recebidas de caixas de
mensagens
Cada caixa de mensagem tem um identificador único
Processos só podem se comunicar se compartilharem
uma mailbox
Propriedades do canal de comunicaç ão
Canal estabelecido se os processos compartilham uma
mailbox
Um canal pode ser associado com vários processos
Cada par de processo pode compartilhar diversos canais
de comunicação
Canais podem ser unidirecionais ou bidirecionais
28. Comunicação Indireta
Operaç ões
criar uma nova mailbox
enviar e receber mensagens através de uma
mailbox
destruir uma mailbox
Primitivas definidas como
send(A, message)
receive(A, message)
29. Comunicação Indireta
Compartilhamento de mailbox
P1, P2, e P3 compartilham a mailbox A
P1, envia; P2 e P3 executam o receive ao mesmo tempo.
Quem ficou com a mensagem?
Soluç ões
Permitir que um link só possa ser associado a no máximo
dois processos
Permitir que apenas um processo execute o receive em
um dado instante
Permitir que o sistema escolha arbitrariamente o receptor
e notificar o emissor da escolha.
30. Sincronização
Troca de mensagens pode ser tanto bloqueante quanto não-
bloqueante
Bloqueante é considerada síncrona
send bloqueante faz o emissor esperar até que a
mensagem seja recebida
receive bloqueante faz o receptor esperar até que uma
mensagem esteja disponível
Não-bloqueante é considerada asíncrona
send não-bloqueante faz o emissor enviar a mensagem e
continuar sua execuç ão
receive não-bloqueante faz o receptor receber uma
mensagem válida ou null
31. Buffering
Fila de mensagens associada ao canal
Três opç ões de implementaç ão
Capacidade nula: emissor precisar aguardar pelo
receptor (rendezvous)
Capacidade limitada: emissor precisar aguardar
se o canal estiver cheio
Capacidade ilimitada: emissor nunca aguarda
32. Comunicação em sistemas cliente-
servidor
Sockets
Chamada remota de procedimentos (RPC)
Chamada remota de métodos (RMI - Java)
33. Sockets
Um socket é definido como um ponto final
para comunicaç ão
Concatenaç ão de endereç o IP e porta
O socket 161.25.19.8:1625 se refere a
porta 1625 na máquina 161.25.19.8
A comunicaç ão se dápor meio de pares de
sockets
35. Chamada remota de procedimentos
Abstrai o conceito de chamada de
procedimentos entre processos em um
sistema conectado via rede
Stubs: proxies no lado cliente para o
procedimento real no servidor
O stub no lado cliente localiza o servidor e
empacota os parâmetros do procedimento
O stub no lado servidor desempacota os
parâmetros e invoca a chamada localmente
36. Invocação remota de métodos (RMI)
RMI é a soluç ão Java para RPC
Permite que um programa Java em uma JVM
invoque um método em um objeto criado em uma
outra JVM
Notas do Editor
Está solução só consegue utilizar BUFFER_SIZE -1 posições do buffer e não trata problemas de sincronização