• Nenhum resultado encontrado

Sistemas Operacionais I Parte V Operações nos Processos. Roteiro. Prof. Gregorio Perez Introdução. Operações nos Processo

N/A
N/A
Protected

Academic year: 2021

Share "Sistemas Operacionais I Parte V Operações nos Processos. Roteiro. Prof. Gregorio Perez Introdução. Operações nos Processo"

Copied!
10
0
0

Texto

(1)

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)

________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________

(2)

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

________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________

(3)

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)

raiz

raiz pagedaemon

pagedaemon swapperswapper initinit usuário 1

usuário 1 usuário 2usuário 2 usuário 3usuário 3

________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________

(4)

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

________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________

(5)

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

________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________

(6)

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 processos

v 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

________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________

(7)

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

________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________

(8)

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

Sockets

Remote Procedure Calls (RPC)

Remote Method Invocation (RMI - Java)

________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________

(9)

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

________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________ ________________________

(10)

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 Operacionais

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

Referências

Documentos relacionados