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
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

Gerência de Processos: Processos

  • 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 formalmenteo 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 deprocesso  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
  • 4.
  • 5.
    Estados de umprocesso  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
  • 6.
    Diagrama de transiçãoentre os estados de um processo
  • 7.
    Bloco de Controlede 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
  • 8.
    Alternando a CPUentre dois processos
  • 9.
    Filas de escalonamentode 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
  • 10.
  • 11.
    Escalonadores  Escalonador delongo 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
  • 12.
  • 13.
    Escalonadores  O escalonadorde 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
  • 16.
    Programa em Ccriando um novo processo
  • 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  Processosindependentes 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 doProdutor/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
  • 20.
    Buffer limitado: soluçãocom memória compartilhada
  • 21.
  • 22.
  • 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  Osprocessos 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  Asmensagens 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  Compartilhamentode 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 demensagens 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 demensagens 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 sistemascliente- 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
  • 34.
  • 35.
    Chamada remota deprocedimentos  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 demé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

  • #21 Está solução só consegue utilizar BUFFER_SIZE -1 posições do buffer e não trata problemas de sincronização