Upload
alexandre-duarte
View
1.862
Download
11
Embed Size (px)
DESCRIPTION
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
Citation preview
Gerências de Processos: Processos
Sistemas Operacionais I
Prof. Alexandre Duarte : http://alexandrend.comCentro 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
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
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
Um processo na memória
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
Diagrama de transição entre os estados de um processo
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
Alternando a CPU entre dois processos
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
Representação do escalonamento de processos
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
Escalonador de médio prazo
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
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
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
Programa em C criando um novo processo
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
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
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
Buffer limitado: solução com memória compartilhada
Processo Produtor
Processo Consumidor
Comunicação entre processos
Processos cooperativos precisam de mecanismos para comunicaç ão entre processos (IPC)
Dois modelos: Troca de mensagens x Memó ria compartilhada
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
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?
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
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
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)
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.
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
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
Comunicação em sistemas cliente-servidor
Sockets Chamada remota de procedimentos (RPC) Chamada remota de métodos (RMI - Java)
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
Comunicação via sockets
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
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