Silberschatz and Galvin 1999 4.1 Operating System Concepts Unidade 4: Processos Conceito de...

34
Operating System Concepts Silberschatz and Galvin 1999 4.1 Unidade 4: Processos Conceito de Processos Agenciamento de Processos Operações em cima de Processos Processos cooperativos Comunicação entre processos

Transcript of Silberschatz and Galvin 1999 4.1 Operating System Concepts Unidade 4: Processos Conceito de...

Page 1: Silberschatz and Galvin 1999 4.1 Operating System Concepts Unidade 4: Processos Conceito de Processos Agenciamento de Processos Operações em cima de Processos.

Operating System Concepts Silberschatz and Galvin 1999 4.1

Unidade 4: Processos

• Conceito de Processos

• Agenciamento de Processos

• Operações em cima de Processos

• Processos cooperativos

• Comunicação entre processos

Page 2: Silberschatz and Galvin 1999 4.1 Operating System Concepts Unidade 4: Processos Conceito de Processos Agenciamento de Processos Operações em cima de Processos.

Operating System Concepts Silberschatz and Galvin 1999 4.2

Conceito de Processos

• Um sistema operacional executa uma programas variados :

– tarefas em lote (batch)

– programas de usuários em tempo compartilhado

• O uso das palavras tarefa (job) e processo é quasi sinônimo.

• Processo – um programa em execução; a execução deve proceder de forma seqüencial.

• Um processo inclui:

– contador de programa

– pilha

– segmentos de código e segmentos de dados

Page 3: Silberschatz and Galvin 1999 4.1 Operating System Concepts Unidade 4: Processos Conceito de Processos Agenciamento de Processos Operações em cima de Processos.

Operating System Concepts Silberschatz and Galvin 1999 4.3

Estado de um processo

• Enquanto um processo executa, ele muda de estado

– novo: O processo esta sendo criado.

– rodando: Instruções estão sendo executadas.

– esperando: O processo espera algum evento.

– pronto: O processo está esperando de tomar conta da CPU.

– Terminado: O processo terminou execução.

Page 4: Silberschatz and Galvin 1999 4.1 Operating System Concepts Unidade 4: Processos Conceito de Processos Agenciamento de Processos Operações em cima de Processos.

Operating System Concepts Silberschatz and Galvin 1999 4.4

Diagram of Process State

Page 5: Silberschatz and Galvin 1999 4.1 Operating System Concepts Unidade 4: Processos Conceito de Processos Agenciamento de Processos Operações em cima de Processos.

Operating System Concepts Silberschatz and Galvin 1999 4.5

Segmento de Controle do Processo (PCB)

Contem informações asociados ao processo.

• Estado do Processo

• informação sobre agenciamento

• Contador de Programa

• registros da CPU

• seletores de segmentos usados

• informações estatísticas

• informação sobre estado de entrada/saída

Page 6: Silberschatz and Galvin 1999 4.1 Operating System Concepts Unidade 4: Processos Conceito de Processos Agenciamento de Processos Operações em cima de Processos.

Operating System Concepts Silberschatz and Galvin 1999 4.6

Process Control Block (PCB)

Page 7: Silberschatz and Galvin 1999 4.1 Operating System Concepts Unidade 4: Processos Conceito de Processos Agenciamento de Processos Operações em cima de Processos.

Operating System Concepts Silberschatz and Galvin 1999 4.7

Chaveamento da CPUde um Processo para outro Processo

Page 8: Silberschatz and Galvin 1999 4.1 Operating System Concepts Unidade 4: Processos Conceito de Processos Agenciamento de Processos Operações em cima de Processos.

Operating System Concepts Silberschatz and Galvin 1999 4.8

Filas de Scheduling de Processos

• Fila de Tarefas – conjunto de todos os processos do sistema.

• Fila de Prontas – conjunto de todos os processos que estão na memória, prontos para rodar.

• Fila de Dispositivos – conjunto de processos esperando por um dispositivo de entrada/saída.

• Processos são passados de uma fila para outra.

Page 9: Silberschatz and Galvin 1999 4.1 Operating System Concepts Unidade 4: Processos Conceito de Processos Agenciamento de Processos Operações em cima de Processos.

Operating System Concepts Silberschatz and Galvin 1999 4.9

A fila de Prontas e várias filas de Dispositivos

Page 10: Silberschatz and Galvin 1999 4.1 Operating System Concepts Unidade 4: Processos Conceito de Processos Agenciamento de Processos Operações em cima de Processos.

Operating System Concepts Silberschatz and Galvin 1999 4.10

Representação de Scheduling de Processos

Page 11: Silberschatz and Galvin 1999 4.1 Operating System Concepts Unidade 4: Processos Conceito de Processos Agenciamento de Processos Operações em cima de Processos.

Operating System Concepts Silberschatz and Galvin 1999 4.11

Schedulers

• Longo prazo – seleciona qual processo é colocado na file de Prontas.

• Curto prazo (ou scheduler da CPU) – seleciona qual processo deve ser o próximo a ser executado e aloca a CPU.

Page 12: Silberschatz and Galvin 1999 4.1 Operating System Concepts Unidade 4: Processos Conceito de Processos Agenciamento de Processos Operações em cima de Processos.

Operating System Concepts Silberschatz and Galvin 1999 4.12

Adicionando Scheduling a médio prazo

Page 13: Silberschatz and Galvin 1999 4.1 Operating System Concepts Unidade 4: Processos Conceito de Processos Agenciamento de Processos Operações em cima de Processos.

Operating System Concepts Silberschatz and Galvin 1999 4.13

Schedulers (Cont.)

• Scheduler a curto prazo é chamado freqüentemente (millisegundos) (deve ser rápido).

• Scheduler a longo prazo é chamado com pouco freqüência (segundos, minutos) (pode ser devagar).

• O scheduler a longo prazo controla o grão de processamento multitarefa.

• Processos podem ser descritos como:

– I/O-bound process – passa mais tempo fazendo entrada/saída do que cálculos, muitas rajadas curtas de uso da CPU.

– CPU-bound process – passa mais tempo fazendo cálculos; poucas e muito longas rajadas de uso da CPU.

Page 14: Silberschatz and Galvin 1999 4.1 Operating System Concepts Unidade 4: Processos Conceito de Processos Agenciamento de Processos Operações em cima de Processos.

Operating System Concepts Silberschatz and Galvin 1999 4.14

Troca de Contexto

• Quando uma CPU chaveia para outro processo, o sistema tem que preservar o estado do processo antigo e carregar o estado do novo processo.

• Troca de contexto é overhead; o sistema não faz nenhum trabalho útil durante a troca.

• O tempo de troca depende do suporte de hardware disponível.

Page 15: Silberschatz and Galvin 1999 4.1 Operating System Concepts Unidade 4: Processos Conceito de Processos Agenciamento de Processos Operações em cima de Processos.

Operating System Concepts Silberschatz and Galvin 1999 4.15

Criação de Processos

• Processos pai criam processos filho, as quais novamente ciram outros processos, formando uma árvore de processos.

• Compartilhamento de recursos

– Pai e filho compartilham todos os recursos;

– Filhos compartilham um subconjunto dos recursos do pai;

– Pai e filho não compartilham nenhum recurso.

• Execução

– Pai e filho executam em paralelo;

– Pai espera até filho termine.

Page 16: Silberschatz and Galvin 1999 4.1 Operating System Concepts Unidade 4: Processos Conceito de Processos Agenciamento de Processos Operações em cima de Processos.

Operating System Concepts Silberschatz and Galvin 1999 4.16

Criação de Processos (Cont.)

• Espaço de endereçamento

– Filho cópia do pai;

– Filho recebe um novo programa carregado para ele.

• Exemplo UNIX

– chamada ao sistema fork cria novo processo

– a chamada execve é usada depois de um fork para substituir o espaço de memória do processo com um programa novo.

Page 17: Silberschatz and Galvin 1999 4.1 Operating System Concepts Unidade 4: Processos Conceito de Processos Agenciamento de Processos Operações em cima de Processos.

Operating System Concepts Silberschatz and Galvin 1999 4.17

Uma árvore típica de processos num sistema UNIX

Page 18: Silberschatz and Galvin 1999 4.1 Operating System Concepts Unidade 4: Processos Conceito de Processos Agenciamento de Processos Operações em cima de Processos.

Operating System Concepts Silberschatz and Galvin 1999 4.18

Terminação de Processos

• O processo executa a última instrução e faz a chamada de sistema exit para o sistema operacional.

– Devolvendo dados para o pai (via wait).

– Os recursos do processo são desalocados pelo sistema operacional.

• Pai pode cancelar a execução de processos filho (abort).

– filho excedeu recursos alocados;

– a tarefa asociada ao filho não é mais necessária;

– pai termina. O sistema operacional não permite que o filho continue

se o pai termina; Terminação em cascata.

Page 19: Silberschatz and Galvin 1999 4.1 Operating System Concepts Unidade 4: Processos Conceito de Processos Agenciamento de Processos Operações em cima de Processos.

Operating System Concepts Silberschatz and Galvin 1999 4.19

Processos cooperativos

• Processos independentes não podem afetar a execução de outro processo.

• Processos cooperativos podem afetar or são afetados por outro processo.

• Vantagem da cooperação de processos

– compartilhar infomações

– aceleração de cáclculo

– modularidade

– simplicidade

Page 20: Silberschatz and Galvin 1999 4.1 Operating System Concepts Unidade 4: Processos Conceito de Processos Agenciamento de Processos Operações em cima de Processos.

Operating System Concepts Silberschatz and Galvin 1999 4.20

O problema produtor-consumidor

• Um paradigma para processos cooperativos: o produtor produz informação que é consumida pelo consumidor.

– buffer sem limite não coloca limite prático no limite do tamanho do buffer

– buffer limitado suponha qhe o tamanho do buffer é limitado.

Page 21: Silberschatz and Galvin 1999 4.1 Operating System Concepts Unidade 4: Processos Conceito de Processos Agenciamento de Processos Operações em cima de Processos.

Operating System Concepts Silberschatz and Galvin 1999 4.21

Buffer limitado –Solução com memória compartilhada

• Dados compartilhados

var n;

type item = … ;

var buffer. array [0..n–1] of item;

in, out: 0..n–1;

• processo produtor

repeat

produce an item in nextp

while in+1 mod n = out do no-op;

buffer [in] :=nextp;

in :=in+1 mod n;

until false;

Page 22: Silberschatz and Galvin 1999 4.1 Operating System Concepts Unidade 4: Processos Conceito de Processos Agenciamento de Processos Operações em cima de Processos.

Operating System Concepts Silberschatz and Galvin 1999 4.22

Buffer limitado (Cont.)

• Consumer process

repeat

while in = out do no-op;

nextc := buffer [out];

out := out+1 mod n;

consume the item in nextc

until false;

• Solution is correct, but can only fill up n–1 buffer.

Page 23: Silberschatz and Galvin 1999 4.1 Operating System Concepts Unidade 4: Processos Conceito de Processos Agenciamento de Processos Operações em cima de Processos.

Operating System Concepts Silberschatz and Galvin 1999 4.23

Threads

• Um thread (ou processo leve) é uma unidade básica de utilização da CPU; ele consiste de:

– contador de programa– conjunto de registros– espaço de pilha

• Um thread compartilha os seguintes elementos com seus threads pares:

– segmento de código,– segmento de dados,– recursos do sistema operacional.

O conjunto forma uma task.

• Um processo pesado tradicional é igual a uma task com um único thread.

Page 24: Silberschatz and Galvin 1999 4.1 Operating System Concepts Unidade 4: Processos Conceito de Processos Agenciamento de Processos Operações em cima de Processos.

Operating System Concepts Silberschatz and Galvin 1999 4.24

Threads (Cont.)

• Dentro de uma tarefa threadeada, enquanto um thread está bloqueado, um outro thread da mesma tarefa pode estar rodando.

– Cooperação de múltiplos threads dentro da mesma tarefa resulta em vazão maior e desempenho melhor.

– Aplicações que precisam compartilhar um buffer comum beneficiam do uso de threads (exemplo produtor-consumidor).

• Threads fornecem um mecanismo que permite que processos seqüenciais efetuem chamadas bloqueiantes ao sistema conseguindo mesmo assim paralelismo na execução.

• Threads como recurso do Kernel (Mach and OS/2).

• Threads a nível de usuário: recurso em cima do kernel através de um conjunto de chamadas de biblioteca (Project Andrew from CMU).

• Abordagem híbrida com threads do kernel ou do usuário (Solaris2).

Page 25: Silberschatz and Galvin 1999 4.1 Operating System Concepts Unidade 4: Processos Conceito de Processos Agenciamento de Processos Operações em cima de Processos.

Operating System Concepts Silberschatz and Galvin 1999 4.25

Multiple Threads within a Task

Page 26: Silberschatz and Galvin 1999 4.1 Operating System Concepts Unidade 4: Processos Conceito de Processos Agenciamento de Processos Operações em cima de Processos.

Operating System Concepts Silberschatz and Galvin 1999 4.26

Threads Support in Solaris 2

• Solaris 2 is a version of UNIX with support for threads at the kernel and user levels, symmetric multiprocessing, and real-time scheduling.

• LWP – intermediate level between user-level threads and kernel-level threads.

• Resource needs of thread types:– Kernel thread: small data structure and a stack; thread

switching does not require changing memory access information – relatively fast.

– LWP: PCB with register data, accounting and memory information,; switching between LWPs is relatively slow.

– User-level thread: only need stack and program counter; no kernel involvement means fast switching. Kernel only sees the LWPs that support user-level threads.

Page 27: Silberschatz and Galvin 1999 4.1 Operating System Concepts Unidade 4: Processos Conceito de Processos Agenciamento de Processos Operações em cima de Processos.

Operating System Concepts Silberschatz and Galvin 1999 4.27

Solaris 2 Threads

Page 28: Silberschatz and Galvin 1999 4.1 Operating System Concepts Unidade 4: Processos Conceito de Processos Agenciamento de Processos Operações em cima de Processos.

Operating System Concepts Silberschatz and Galvin 1999 4.28

Comunicação entre processos (IPC)

• Um mecanismo para permitir processos de se comunicarem e de sincronizarem seus ações.

• Sistema de mensagens - permite comunicação sem uso de variáveis compartilhadas.

• Um mecanismo de IPC apresenta duas funções:– send(message) – mensagem de tamanho fixo ou variável – receive(message)

• Se P e Q querem comunicar, eles precisam de:– estabelecer uma ligação de communicação entre eles– trocar mensagens usando send/receive

• Implementação de uma ligação de comunicação– físico (memória compartilhada, barramento)– lógico (atributos)

Page 29: Silberschatz and Galvin 1999 4.1 Operating System Concepts Unidade 4: Processos Conceito de Processos Agenciamento de Processos Operações em cima de Processos.

Operating System Concepts Silberschatz and Galvin 1999 4.29

Questões de Implementação

• Como cria-se uma ligação?

• Uma ligação pode estar asociada a mais do que dois processos?

• Quantas ligações podem existir entre cada para de processos que estão se comunicando?

• Qual é a capacidade de uma ligação?

• O tamanho de uma mensagem que passa pelo link é fixo ou variável?

• A ligação é unidirecional ou bidirecional?

Page 30: Silberschatz and Galvin 1999 4.1 Operating System Concepts Unidade 4: Processos Conceito de Processos Agenciamento de Processos Operações em cima de Processos.

Operating System Concepts Silberschatz and Galvin 1999 4.30

Comunicação Direta

• Processos precisam chamar um ao outro explicitamente:

– send (P, mensagem) – envie uma mensagem para processo P

– receive(Q, message) – recebe uma mensagem de processo Q

• Propriedades de uma ligação de comunicação

– Ligação criada automaticamente;

– uma ligação é associada com exatamente um par de processos;

– Existe exatamente uma ligação por par de processos;

– A ligação pode ser unidirecional, mas normalmente é bidirecional.

Page 31: Silberschatz and Galvin 1999 4.1 Operating System Concepts Unidade 4: Processos Conceito de Processos Agenciamento de Processos Operações em cima de Processos.

Operating System Concepts Silberschatz and Galvin 1999 4.31

Comunicação Indireta• Mensagens são direcionados a e recebidos de caixas de correio

(também chamado portas).– Cada caixa de correio tem uma id única;– Processos podem comunicar somente se eles compartilham uma

caixa de correio.

• Propriedades de uma ligação de comunicação– ligação existe somente se os processos compartilham uma caixa

de correiro;– uma ligação pode ser associada a muitos processos; – Cada para de processos pode ter vários ligações.– Ligação pode ser unidirecional ou bidirecional.

• Operações– criar uma nova caixa de correio– evniar e receber mensagens– destruir a caixa de correio

Page 32: Silberschatz and Galvin 1999 4.1 Operating System Concepts Unidade 4: Processos Conceito de Processos Agenciamento de Processos Operações em cima de Processos.

Operating System Concepts Silberschatz and Galvin 1999 4.32

Comunicação Indireta (Continuação)

• Compartilhamento de caixas de correio

– P1, P2, e P3 compartilham a caixa de correio A.

– P1, envia; P2 e P3 recebem.

– Quem recebe a mensagem?

• Solução

– Permitir que uma ligação seja associada com no máximo dois processos;

– Permitir que somente um processo a cada vez executa uma operação de recepção;

– Permitir ao sistema de selecionar um receptor arbitrariamente. O remetente é avisado quem era o receptor.

Page 33: Silberschatz and Galvin 1999 4.1 Operating System Concepts Unidade 4: Processos Conceito de Processos Agenciamento de Processos Operações em cima de Processos.

Operating System Concepts Silberschatz and Galvin 1999 4.33

Enfileiramento (Buffering)

• Uma fila de mensagens pertencendo à ligação.

1. Capacidade nula – 0 mensagens;Remetente precisa esperar o receptor (rendezvous).

2. Capacidade limitada – tamanho finito de n mensagens Remetente precisa esperar se fila está cheia;

3. Capacidade ilimitada – tamanho infinito Remetente nunca espera.

Page 34: Silberschatz and Galvin 1999 4.1 Operating System Concepts Unidade 4: Processos Conceito de Processos Agenciamento de Processos Operações em cima de Processos.

Operating System Concepts Silberschatz and Galvin 1999 4.34

Condições de excepção – Tratamento de Erros

• Processo termina

• Mensagem perdida

• Mensagem bagunçada