Gerência de Processos: Processos
-
Upload
alexandre-duarte -
Category
Education
-
view
1.862 -
download
11
description
Transcript of Gerência de Processos: Processos
![Page 1: Gerência de Processos: Processos](https://reader033.fdocuments.net/reader033/viewer/2022051212/559516601a28abee748b47b6/html5/thumbnails/1.jpg)
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
![Page 2: Gerência de Processos: Processos](https://reader033.fdocuments.net/reader033/viewer/2022051212/559516601a28abee748b47b6/html5/thumbnails/2.jpg)
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
![Page 3: Gerência de Processos: Processos](https://reader033.fdocuments.net/reader033/viewer/2022051212/559516601a28abee748b47b6/html5/thumbnails/3.jpg)
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
![Page 4: Gerência de Processos: Processos](https://reader033.fdocuments.net/reader033/viewer/2022051212/559516601a28abee748b47b6/html5/thumbnails/4.jpg)
Um processo na memória
![Page 5: Gerência de Processos: Processos](https://reader033.fdocuments.net/reader033/viewer/2022051212/559516601a28abee748b47b6/html5/thumbnails/5.jpg)
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
![Page 6: Gerência de Processos: Processos](https://reader033.fdocuments.net/reader033/viewer/2022051212/559516601a28abee748b47b6/html5/thumbnails/6.jpg)
Diagrama de transição entre os estados de um processo
![Page 7: Gerência de Processos: Processos](https://reader033.fdocuments.net/reader033/viewer/2022051212/559516601a28abee748b47b6/html5/thumbnails/7.jpg)
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
![Page 8: Gerência de Processos: Processos](https://reader033.fdocuments.net/reader033/viewer/2022051212/559516601a28abee748b47b6/html5/thumbnails/8.jpg)
Alternando a CPU entre dois processos
![Page 9: Gerência de Processos: Processos](https://reader033.fdocuments.net/reader033/viewer/2022051212/559516601a28abee748b47b6/html5/thumbnails/9.jpg)
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
![Page 10: Gerência de Processos: Processos](https://reader033.fdocuments.net/reader033/viewer/2022051212/559516601a28abee748b47b6/html5/thumbnails/10.jpg)
Representação do escalonamento de processos
![Page 11: Gerência de Processos: Processos](https://reader033.fdocuments.net/reader033/viewer/2022051212/559516601a28abee748b47b6/html5/thumbnails/11.jpg)
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
![Page 12: Gerência de Processos: Processos](https://reader033.fdocuments.net/reader033/viewer/2022051212/559516601a28abee748b47b6/html5/thumbnails/12.jpg)
Escalonador de médio prazo
![Page 13: Gerência de Processos: Processos](https://reader033.fdocuments.net/reader033/viewer/2022051212/559516601a28abee748b47b6/html5/thumbnails/13.jpg)
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
![Page 14: Gerência de Processos: Processos](https://reader033.fdocuments.net/reader033/viewer/2022051212/559516601a28abee748b47b6/html5/thumbnails/14.jpg)
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
![Page 15: Gerência de Processos: Processos](https://reader033.fdocuments.net/reader033/viewer/2022051212/559516601a28abee748b47b6/html5/thumbnails/15.jpg)
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
![Page 16: Gerência de Processos: Processos](https://reader033.fdocuments.net/reader033/viewer/2022051212/559516601a28abee748b47b6/html5/thumbnails/16.jpg)
Programa em C criando um novo processo
![Page 17: Gerência de Processos: Processos](https://reader033.fdocuments.net/reader033/viewer/2022051212/559516601a28abee748b47b6/html5/thumbnails/17.jpg)
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
![Page 18: Gerência de Processos: Processos](https://reader033.fdocuments.net/reader033/viewer/2022051212/559516601a28abee748b47b6/html5/thumbnails/18.jpg)
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
![Page 19: Gerência de Processos: Processos](https://reader033.fdocuments.net/reader033/viewer/2022051212/559516601a28abee748b47b6/html5/thumbnails/19.jpg)
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
![Page 20: Gerência de Processos: Processos](https://reader033.fdocuments.net/reader033/viewer/2022051212/559516601a28abee748b47b6/html5/thumbnails/20.jpg)
Buffer limitado: solução com memória compartilhada
![Page 21: Gerência de Processos: Processos](https://reader033.fdocuments.net/reader033/viewer/2022051212/559516601a28abee748b47b6/html5/thumbnails/21.jpg)
Processo Produtor
![Page 22: Gerência de Processos: Processos](https://reader033.fdocuments.net/reader033/viewer/2022051212/559516601a28abee748b47b6/html5/thumbnails/22.jpg)
Processo Consumidor
![Page 23: Gerência de Processos: Processos](https://reader033.fdocuments.net/reader033/viewer/2022051212/559516601a28abee748b47b6/html5/thumbnails/23.jpg)
Comunicação entre processos
Processos cooperativos precisam de mecanismos para comunicaç ão entre processos (IPC)
Dois modelos: Troca de mensagens x Memó ria compartilhada
![Page 24: Gerência de Processos: Processos](https://reader033.fdocuments.net/reader033/viewer/2022051212/559516601a28abee748b47b6/html5/thumbnails/24.jpg)
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
![Page 25: Gerência de Processos: Processos](https://reader033.fdocuments.net/reader033/viewer/2022051212/559516601a28abee748b47b6/html5/thumbnails/25.jpg)
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?
![Page 26: Gerência de Processos: Processos](https://reader033.fdocuments.net/reader033/viewer/2022051212/559516601a28abee748b47b6/html5/thumbnails/26.jpg)
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
![Page 27: Gerência de Processos: Processos](https://reader033.fdocuments.net/reader033/viewer/2022051212/559516601a28abee748b47b6/html5/thumbnails/27.jpg)
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
![Page 28: Gerência de Processos: Processos](https://reader033.fdocuments.net/reader033/viewer/2022051212/559516601a28abee748b47b6/html5/thumbnails/28.jpg)
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)
![Page 29: Gerência de Processos: Processos](https://reader033.fdocuments.net/reader033/viewer/2022051212/559516601a28abee748b47b6/html5/thumbnails/29.jpg)
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.
![Page 30: Gerência de Processos: Processos](https://reader033.fdocuments.net/reader033/viewer/2022051212/559516601a28abee748b47b6/html5/thumbnails/30.jpg)
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
![Page 31: Gerência de Processos: Processos](https://reader033.fdocuments.net/reader033/viewer/2022051212/559516601a28abee748b47b6/html5/thumbnails/31.jpg)
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
![Page 32: Gerência de Processos: Processos](https://reader033.fdocuments.net/reader033/viewer/2022051212/559516601a28abee748b47b6/html5/thumbnails/32.jpg)
Comunicação em sistemas cliente-servidor
Sockets Chamada remota de procedimentos (RPC) Chamada remota de métodos (RMI - Java)
![Page 33: Gerência de Processos: Processos](https://reader033.fdocuments.net/reader033/viewer/2022051212/559516601a28abee748b47b6/html5/thumbnails/33.jpg)
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
![Page 34: Gerência de Processos: Processos](https://reader033.fdocuments.net/reader033/viewer/2022051212/559516601a28abee748b47b6/html5/thumbnails/34.jpg)
Comunicação via sockets
![Page 35: Gerência de Processos: Processos](https://reader033.fdocuments.net/reader033/viewer/2022051212/559516601a28abee748b47b6/html5/thumbnails/35.jpg)
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
![Page 36: Gerência de Processos: Processos](https://reader033.fdocuments.net/reader033/viewer/2022051212/559516601a28abee748b47b6/html5/thumbnails/36.jpg)
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