Gerência de Processos: Processos

Preview:

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

Recommended