Sistemas Operacionais I
Parte V – Operações nos Processos
Prof. Gregorio Perez
[email protected] 2007 ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________
2007 Sistem as Operacionais I - SO I Parte V - prof. Gregorio Perez 2
Roteiro
Introdução
Operações nos Processo
v Criação v Término
v Processos Cooperativos v Comunicação entre Processos
Questões ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ Operações nos Processos
Introdução
Os processos podem executar de forma concorrente SO provê mecanismos especiais
v Criação
v Destruição (término) v Processos Cooperativos v Comunicação inter-processos
• Interprocess communication (IPC)
________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________
2007 Sistem as Operacionais I - SO I Parte V - prof. Gregorio Perez 4
Criação
Um processo pode criar novos processos
v O processo criador é chamado de processo pai
v O processo criado é chamado de processo filhoou subprocesso v Exatamente um processo pai cria um processo filho
v Quando um processo pai é destruído, o SO pode responder de
duas formas:
• Destruir todos os processos filhos do processo pai destruído
• Permitir os processos filhos continuarem independentes de seus pais
________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________
2007 Sistem as Operacionais I - SO I Parte V - prof. Gregorio Perez 5 Operações nos Processos
Criação
Processo Pai cria processos filhos
v Processos filhos podem criar novos processos filhos v Árvore de processos
Compartilhamento recursos
v Pais e filhos compartilham todos os recursos v Filhos compartilham um
subconjunto dos recursos dos pais
v Pais e filhos não compartilham recursos
Execução
v Pais e filhos executam concorrentemente
v Pai espera até que o filho acabe
A A B B CC DD G G F F E E H H I I ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ Operações nos Processos
Criação
Espaço de endereços
v Cópia filha do processo pai
v Filho contém um programa carregado
Exemplo do UNIX
v Processo é identificado por um número inteiro
(identificador de processo)
v Cópia filha do processo pai
v A chamada de sistemaforkcria novo processo que consiste em
uma cópia do espaço de endereçamento do processo original • Permite que o processo pai se comunique facilmente com o filho • Ambos continuam a execução da instrução após fork
• Código de retorno de forkézero para o filho, enquanto o identificador de processo filho é retornado ao pai
________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________
2007 Sistem as Operacionais I - SO I Parte V - prof. Gregorio Perez 7 Operações nos Processos
Criação
Exemplo do UNIX
v Filho contém um programa carregado
v Pode substituir o espaço de memória do processo por um novo
programa
v A chamada de sistemaexeclpusada após um fork
v A chamada execlpcarrega um arquivo binário na memória e inicia a execução
v Os 2 processos podem se comunicar e depois seguir seu caminho v O pai pode criar mais filhos ou emitir uma chamada waitaté o
término do filho fork() fork() exec() exec() wait wait exit() exit() prossegue pai filho ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________
2007 Sistem as Operacionais I - SO I Parte V - prof. Gregorio Perez 8 Criação
Nova imagem do processo criada em “C”
#include <stdio.h>int main(int argc, char *argv[]) { int pid;
pid = fork(); /* cria outro processo */
if (pid < 0) { /* ocorreu erro na execução do Fork */ fprintf(stderr, “Falha no Fork ");
exit(-1); }
else if (pid == 0) { /* processo filho */ execlp("/bin/ls","ls",NULL);
exit(1); }
else { /* processo pai */
wait(NULL); /* pai espera o término do filho */ printf(“Filho terminou "); exit(0); } } ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ Criação
Árvore de Processos (UNIX)
raizraiz pagedaemon
pagedaemon swapperswapper initinit usuário 1
usuário 1 usuário 2usuário 2 usuário 3usuário 3
________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________
2007 Sistem as Operacionais I - SO I Parte V - prof. Gregorio Perez 10
Árvore de Processos (Linux)
klogd klogd pdflush
pdflush kswap
kswap khubdkhubd loginlogin bash bash
xfs xfs
vi
vi myprogmyprog fingerfinger init init ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________
2007 Sistem as Operacionais I - SO I Parte V - prof. Gregorio Perez 11 Criação
Árvore de Processos (Solaris)
Sched Pid = 0 Fsfhush pid = 3 Pageout pid = 2 Init pid = 1 inetd pid = 140 sdt_shel pid = 340 dtlogin pid = 251 telnetdeamon pid = 7776 Csh pid = 7778 Xsession pid = 284 Netscape
pid = 7785 pid = 8105Emacs pid = 1400Csh ls
pid = 2123 pid = 2536Cat
________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ Operações nos Processos
Término
Processo executa uma última instrução e pede para o SO que o termine (exit)
v Saída de dados do filho para o pai (via wait)
v Recursos dos processo são liberados pelo SO
Pai pode terminar a execução do processo filho (abort)
v Filho pode ter excedido os recursos alocados v Tarefa associada ao filho não é mais requerida v Se pai está saindo (término do pai)
Término em Cascata
v Alguns SO (p.e., VMS) não permitem que filho continue sem pai v Todos os filhos são eliminados (término em cascata)
v Normalmente, este término em cascata é iniciado pelo SO
________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________
2007 Sistem as Operacionais I - SO I Parte V - prof. Gregorio Perez 13 Operações nos Processos
Processos Cooperativos
ProcessosIndependentes
v Processo nãopode afetar ou ser afetado pela execução de outro
processo
ProcessosCooperativos
v Processo pode afetar ou ser afetado pela execução de outro
processo
Vantagens dos processos cooperativos
v Compartilhamento de Informações v Velocidade de Computação v Modularidade v Conveniência ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________
2007 Sistem as Operacionais I - SO I Parte V - prof. Gregorio Perez 14 Processos Cooperativos
Produtor - Consumidor
Paradigma para processos cooperativos
ProcessoProdutorproduz informação que é consumida por um processo Consumidor
v Programaproduz caracteres que são
consumidos pelo dispositivo de impressão
v Compiladorproduz código assembly que é consumido pelo montador
Execução Concorrente
v Buffer é preenchido pelo Produtor v Buffer é esvaziado pelo Consumidor
________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ Processos Cooperativos
Produtor - Consumidor
Produtor consome um item enquanto um Consumidor está consumindo outro item
Produtor e Consumidor devem ser sincronizados
v Consumidor não tentar consumir um item ainda não produzido v Consumidor deve esperar a produção
Buffer não limitado
v Não há limite prático no tamanho do buffer v Produtor sempre pode produzir novos itens Buffer limitado
v Assume que há um tamanho fixo do buffer v Produtor deve esperar se buffer estiver cheio
________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________
2007 Sistem as Operacionais I - SO I Parte V - prof. Gregorio Perez 16
Solução para Memória Compartilhada
public classBufferLimitado implements Buffer {
private static final intBUFFER_SIZE = 5; // tamanho do Buffer private intcount; // número de itens no buffer
private intin; // aponta para próxima posição livre private intout; // aponta próxima posição cheia private Object[ ] buffer;
publicBufferLimitado() { // buffer inicialmente está vazio count = 0; in = 0; out = 0;
buffer = newObject[BUFFER_SIZE]; }
public voidinserir (Objectitem) { // produdores chamam este método ...
}
public Objectremover () { // consumidores chamam este método ... } } ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________
2007 Sistem as Operacionais I - SO I Parte V - prof. Gregorio Perez 17 Produtor – Consumidor (Buffer Limitado)
Solução para Memória Compartilhada
public voidinserir (Objectitem) { while(count == BUFFER_SIZE)
; // não faz nada -- nenhum buffer livre ++count; // acrescenta um item ao buffer buffer[in] = item;
in = (in + 1) % BUFFER_SIZE; }
public Objectremover () { Objectitem;
while(count == 0)
; // não faz nada -- nada para consumir --count; // remove um item do buffer
item = buffer [out];
out = (out + 1) % BUFFER_SIZE; returnitem; } ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ Operações nos Processos
Comunicação entre Processos
Interprocess Communication(IPC) Mecanismo que permite aos processosv Comunicarem entre si v Sincronizarem suas ações
Sistema de Mensagens
v Comunicação semcompartilhar o mesmo espaço de
endereçamento
Ambientes Distribuídos
v Particularmente útil
v Processos em diferentes computadores
________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________
2007 Sistem as Operacionais I - SO I Parte V - prof. Gregorio Perez 19 Comunicação entre Processos
Sistema de Troca de Mensagens
Recurso IPC fornece pelo menos duas operações
v send(mensagem) – tamanho fixo ou variável v receive(mensagem)
Mensagem de Tamanho Fixo
v Implementação (nível do sistema) mais simples
v A programação é mais difícil
Mensagem de Tamanho variável
v Implementação (nível do sistema) mais complexa v A programação é mais simples
________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________
2007 Sistem as Operacionais I - SO I Parte V - prof. Gregorio Perez 20 Comunicação entre Processos
Sistema de Troca de Mensagens
Se dois processos Pe Q querem se comunicar, devem:
v Estabelecer um link de comunicação entre eles v Trocar mensagens através de send/receive
Implementação do link de comunicação
v física (p.e., memória compartilhada, barramento, ...) v lógica (p.e., propriedades lógicas)
Implementação Lógica
v Comunicação direta ou indireta v Comunicação simétrica ou assimétrica v Buffering automático ou explícito v Enviar por cópia ou por referência v Mensagem de tamanho fixo ou variável
________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ Sistema de Troca de Mensagens
Comunicação Direta
Destino ou Remetente devem ser identificados explicitamente
v send (P, mensagem) envia mensagem para P v receive (Q, mensagem) recebe mensagem de Q
Propriedades do canal (link) de comunicação
v Um canal é estabelecido automaticamente
v Um canal é associado com exatamente um par de processos
v Entre cada par existe exatamente um canal
v O canal pode ser unidirecional, mas normalmente é bidirecional
________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________
2007 Sistem as Operacionais I - SO I Parte V - prof. Gregorio Perez 22
Comunicação Simétrica e Assimétrica
Simétrico
v Remetente é conhecido v send (P, mensagem) v receive (Q, mensagem)
Assimétrico
v Remetente não é conhecido
v send (P, mensagem) v receive (id, mensagem) ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________
2007 Sistem as Operacionais I - SO I Parte V - prof. Gregorio Perez 23 Sistema de Troca de Mensagens
Comunicação Indireta
O enviou e recebimento é feito por caixas de correio (portas)
v Dois processos só podem se comunicar se tiverem uma caixa de
correio em comum
v send (A, mensagem) - envia mensagem para a caixa de correio A v receive (A, mensagem) - recebe mensagem da caixa de correio A
Propriedades do canal (link) de comunicação
v Um canal é estabelecido apenas se a par de processos tiverem
uma caixa de correio compartilhada
v Um canal pode ser associado a mais de dois processos
v Entre cada par podem existir vários canais diferentes v O canal pode ser unidirecional ou bidirecional
________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ Sistema de Troca de Mensagens
Comunicação Cliente Servidor
SocketsRemote Procedure Calls (RPC)
Remote Method Invocation (RMI - Java)
________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________
2007 Sistem as Operacionais I - SO I Parte V - prof. Gregorio Perez 25 Comunicação Cliente Servidor
Sockets
Soquetes são definidos como ponto final da comunicação
Concatenação de endereço IP e porta Soquete161.25.19.8:1625
v porta 16251625 v host 161.25.19.8161.25.19.8
Comunicação é realizada entre um par de soquetes socket (146.86.5.20:1625) socket (146.86.5.20:1625) Host X (146.86.5.20) socket (161.25.19.8 :80) socket (161.25.19.8 :80) web server (161.25.19.8) ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________
2007 Sistem as Operacionais I - SO I Parte V - prof. Gregorio Perez 26 Comunicação Cliente Servidor
Remote Procedure Calls (RPC)
Chamadas de Procedimento Remotos (RPC)São chamadas de procedimentos abstratas entre processos em sistemas em rede
Stubs indicador no lado do cliente para o procedimento real no servidor O stub do lado do cliente
v localiza o servidor e disponibiliza os parâmetros
O stub do lado do servidor
v recebe a mensagem
v desempacota os parâmetros disponibilizados v realiza o procedimento no servidor
________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ Comunicação Cliente Servidor
Remote Method Invocation (RMI)
Invocação Remota de Métodos
Mecanismo em Java™ similar aos RPCs Permite que um programa em Java em uma máquina invocar um método em um objeto remoto Programa java Programa java JVM Objeto remoto Objeto remoto JVM val = server.metodoQualquer(A,B) stub
stub skeletonskeleton
A, B, metodoQualquer
A, B, metodoQualquer
Boolean return valor
Boolean return valor
boolean metodoQualquer(Object x, Object y) {
// implementação de metodoQualquer ...
}
cliente
cliente Objeto remoto Objeto remoto
________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________
2007 Sistem as Operacionais I - SO I Parte V - prof. Gregorio Perez 28
Questões
Quantos pais um filho pode ter ? Explique
O que é uma árvore de processos ?
Como pode ocorrer o
compartilhamento de recursos entre processos pais e filhos O que ocorre com o processo filho quando um processo pai é terminado ?
Um processo pai pode terminar um processo filho ?
Por que um processo pai terminaria um processo filho ?
O que é um processo cooperativo ?
O que pode acontecer se um processo cooperativo tiver buffer limitado ? Quando ocorre um “término em cascata” ? Explique ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________
2007 Sistem as Operacionais I - SO I Parte V - prof. Gregorio Perez 29 Operações nos Processos
Questões
Quais são os benefícios e as desvantagens de cada um dos seguintes? Considere os níveis tanto do sistema quanto do programador.
v Comunicação síncrona e assíncrona
v Buffer automático e explícito
v Mensagens de tamanho fixo e
de tamanho variável
Por que é vantajoso criar uma hierarquia de processos em vez de uma lista encadeada ?
Sinais são interrupções de software que notificam ao processo que um evento ocorreu. Diferentes de mensagens, sinais não permitem que processos especifiquem dados para trocar com outros processos e dependem do SO e das interrupções suportadas por um processador. Por que Sistemas Distribuídos adotam troca de mensagem e não sinais ? ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________
Referência Bibliográfica
Sistemas Operacionaisv Deitel, Deitel e Choffnes;
v Ed. Pearson 3a Edição v www.prenhall.com/deitel_br
Sistemas Operacionais, Conceitos e Aplicações
v A. Silberschatz, P. Galvin, G. Gagne; v Ed. Campus Tradução da 6a Edição v www.wiley.com/college/silberschatz6e/ 0471417432/slides/slides.html
Sistemas Operacionais Modernos
v Andrew Tanenbaum; v Ed. Pearson 2a Edição
v www.prenhall.com/tanenbaum_br ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________