Capítulo 4: Processos Processos • Conceito de Processo • Escalonamento de Processos • Operações sobre Processos • Processos Cooperativos • Comunicação entre Processos • Comunicação em Sistemas ClienteServidor Operating System Concepts 4.2 Silberschatz, Galvin and Gagne 2002 Conceito de Processo • Um SO executa vários programas • Sistemas Batch •serviços (jobs) • Sistemas de tempo compartilhado (Time-sharing) •programas de usuário ou tarefas • Serviço e processo são sinônimos Operating System Concepts 4.3 Silberschatz, Galvin and Gagne 2002 Conceito de Processo (cont.) • Processo – um programa em execução • a execução de um processo é sequencial • Um processo inclui: • Contador de instruções (PC) • Pilha (stack) • Seção de dados Operating System Concepts 4.4 Silberschatz, Galvin and Gagne 2002 Estado do Processo • Um processo passa por vários estados • Novo • Em execução • Em espera • Pronto • Terminado Operating System Concepts 4.5 Silberschatz, Galvin and Gagne 2002 Diagrama de Estado dos Processos Operating System Concepts 4.6 Silberschatz, Galvin and Gagne 2002 Bloco de Controle de Processos • Guarda informações associadas a um processo • Estado do processo • Contador de instruções • Registradores da CPU • Alocação da CPU • Gerenciamento de memória • Contabilidade • Estado de operações de E/S Operating System Concepts 4.7 Silberschatz, Galvin and Gagne 2002 PCB Operating System Concepts 4.8 Silberschatz, Galvin and Gagne 2002 Transferência da CPU entre processos Operating System Concepts 4.9 Silberschatz, Galvin and Gagne 2002 Filas para Escalonamento • Fila de Processos • Todos os processos do sistema • Fila de Processos Prontos • Na memória principal • Prontos para entrar em execução • Fila de Dispositivos • Esperando por um dispositivo de E/S Operating System Concepts 4.10 Silberschatz, Galvin and Gagne 2002 Diagrama das Filas Operating System Concepts 4.11 Silberschatz, Galvin and Gagne 2002 Escalonamento de Processos Operating System Concepts 4.12 Silberschatz, Galvin and Gagne 2002 Escalonadores • Escalonador de longo prazo • Quais processos devem ser carregados na memória • Escalonador de curto prazo • Qual processo que deve ser executado • Aloca a CPU Operating System Concepts 4.13 Silberschatz, Galvin and Gagne 2002 Escalonamento de médio prazo Operating System Concepts 4.14 Silberschatz, Galvin and Gagne 2002 Escalonadores (cont.) • O escalonador da CPU é usado muito freqüentemente • Tem que ser rápido • O escalonador de processos é usado pouco freqüentemente • Pode ser lento Operating System Concepts 4.15 Silberschatz, Galvin and Gagne 2002 Escalonadores (cont.) • O escalonador controla o grau de multiprogramação • Processos podem ser descritos como • Dependentes de E/S • Dependentes da CPU • Mistura ideal de processos • Um pouco de cada Operating System Concepts 4.16 Silberschatz, Galvin and Gagne 2002 Mudança de Contexto • Para transferir o controle da CPU • É preciso • salvar o estado do processo antigo • carregar o estado do novo processo • O tempo de mudança de contexto é desperdiçado • O sistema não realiza trabalho útil • Duração depende do hardware Operating System Concepts 4.17 Silberschatz, Galvin and Gagne 2002 Criação de processos • Processo pai cria processos filho • Filhos criam outros processos • Resultando árvore de processos • Forma de compartilhamento de recursos entre pais e filhos • todos • Um subconjunto • Nenhum Operating System Concepts 4.18 Silberschatz, Galvin and Gagne 2002 Criação de Processos • Modos de execução • Pai e filhos executam concorrentemente • Pai espera até que os filhos terminem a execução • Espaço de endereços • Filho é cópia do pai • Filho tem um programa que deve ser carregado para sua execução Operating System Concepts 4.19 Silberschatz, Galvin and Gagne 2002 Exemplo - UNIX • Chamada ao sistema fork cria um novo processo • exec usada após fork para substituir o espaço de memória do processo com novo programa Operating System Concepts 4.20 Silberschatz, Galvin and Gagne 2002 Árvore de processos em um sistema UNIX Operating System Concepts 4.21 Silberschatz, Galvin and Gagne 2002 Término de Processos • Depois do último comando uma chamada ao SO (exit) é feita para remover o processo do sistema • Dados de saída do filho para o pai (via wait) • Recursos do processo são dealocados pelo sistema operacional Operating System Concepts 4.22 Silberschatz, Galvin and Gagne 2002 Término de processos • O processo pai pode terminar a execução dos filhos (abort) • Filho excedeu recursos alocados • A tarefa atribuida ao filho não é mais necessária • O processo pai está terminando • O SO não permite que a execução de um processo filho continue se a do seu pai já terminou • Finalização em cascata Operating System Concepts 4.23 Silberschatz, Galvin and Gagne 2002 Processos Cooperativos • Processos independentes • não podem afetar ou serem afetados pela execução de outro processo • Processos cooperativos • podem afetar ou serem afetados pela execução de outro processo Operating System Concepts 4.24 Silberschatz, Galvin and Gagne 2002 Processos Cooperativos (cont.) • Vantagens de processos cooperativos • Compartilhamento de informações • Aumento de velocidade de processamento • Modularidade • Conveniência Operating System Concepts 4.25 Silberschatz, Galvin and Gagne 2002 Produtor-Consumidor • Paradigma para processos cooperativos. • Dois casos • Área de armazenamento ilimitada • Área de armazenamento limitada Operating System Concepts 4.26 Silberschatz, Galvin and Gagne 2002 Área limitada – Solução de memória compartilhada • Dado compartilhado #define BUFFER_SIZE 10 Typedef struct { . . . } item; item buffer[BUFFER_SIZE]; int in = 0; int out = 0; • Máximo BUFFER_SIZE-1 elementos Operating System Concepts 4.27 Silberschatz, Galvin and Gagne 2002 Área limitada – Processo Produtor item nextProduced; while (1) { while(((in+1)%BUFFER_SIZE)== out); /* do nothing */ buffer[in] = nextProduced; in = (in + 1) % BUFFER_SIZE; } Operating System Concepts 4.28 Silberschatz, Galvin and Gagne 2002 Área limitada – Processo Consumidor item nextConsumed; while (1) { while (in==out); /* do nothing */ nextConsumed = buffer[out]; out = (out + 1) % BUFFER_SIZE; } Operating System Concepts 4.29 Silberschatz, Galvin and Gagne 2002 Comunicação entre Processos • Mecanismo para • Comunicação • Sincronização de processos • Sistema de mensagens • sem uso de memória compartilhada Operating System Concepts 4.30 Silberschatz, Galvin and Gagne 2002 Comunicação entre Processos • Duas operações: • Send (mensagem) • tamanho da mensagem fixa ou variável • Receive (mensagem) • Para processos P e Q se comunicarem, eles precisam: • Estabelecer um canal de comunicação entre eles • Trocar mensagens via send/receive Operating System Concepts 4.31 Silberschatz, Galvin and Gagne 2002 Comunicação entre Processos • Implementação do canal de comunicação • Física (por exemplo, memória compartilhada) • Lógica (por exemplo, propriedades lógicas) Operating System Concepts 4.32 Silberschatz, Galvin and Gagne 2002 Questões de implementação • Como são estabelecidos os canais? • Um canal pode estar associado a mais de dois processos? • Quantos canais podem existir entre cada par de processos? Operating System Concepts 4.33 Silberschatz, Galvin and Gagne 2002 Questões de implementação • Qual é a capacidade de um canal? • Um canal pode acomodar mensagens de tamanho variáveis? • O canal é unidirecional ou bidirecional? Operating System Concepts 4.34 Silberschatz, Galvin and Gagne 2002 Comunicação Direta • Os processos devem indicar explicitamente o seu par • Send (P, mensagem) – envia mensagem para o processo P • Receive (Q, mensagem) – recebe mensagem do processo Q Operating System Concepts 4.35 Silberschatz, Galvin and Gagne 2002 Propriedades do Canal (Comunicação Direta) • Canais estabelecidos automaticamente • Canal associado exatamente com um par de processos • Canal normalmente bidirecional Operating System Concepts 4.36 Silberschatz, Galvin and Gagne 2002 Comunicação Indireta • Mensagens são enviadas e recebidas em caixas postais (portas) • Cada caixa postal tem uma identidade • Processos só podem se comunicar se compartilharem uma caixa postal Operating System Concepts 4.37 Silberschatz, Galvin and Gagne 2002 Propriedades do Canal (Comunicação Indireta) • O canal estabelecido somente se processos compartilham caixa postal • Um canal pode ser associado com vários processos • Cada par de processos pode compartilhar vários canais de comunicação • Canal unidirecional ou bidirecional Operating System Concepts 4.38 Silberschatz, Galvin and Gagne 2002 Comunicação Indireta • Operações • Criar nova caixa postal • Enviar e receber mensagens • Destruir caixa postal • Primitivas são definidas como: Send (A, mensagem) – envia mensagem para caixa postal A Receive (A, mensagem) – recebe mensagem da caixa postal A Operating System Concepts 4.39 Silberschatz, Galvin and Gagne 2002 Comunicação Indireta • Compartilhamento de caixa postal • P1, P2, e P3 compartilham caixa postal A • P1 envia; P2 e P3 recebem • Quem pega a mensagem? • Soluções • Canal só pode ser associado 2 processos • Permitir que apenas um processo execute a operação receive por vez • Permitir que o SO selecione o recipiente. Remetente notificado sobre quem recebeu Operating System Concepts 4.40 Silberschatz, Galvin and Gagne 2002 Sincronização • Passagem de mensagem pode ser ou blocante ou não-blocante • Blocante é síncrona • Não-blocante é assíncrona • As primitivas send e receive podem ser ou bloqueantes ou nãobloqueantes Operating System Concepts 4.41 Silberschatz, Galvin and Gagne 2002 Buffering • Fila de mensagens associada ao canal • Implementada de três maneiras • Capacidade zero • 0 mensagens. Remetente deve esperar pelo recipiente (rendez-vous) • Capacidade limitada • n mensagens. Remetente deve esperar se o canal estiver cheio • Capacidade ilimitada • comprimento infinito. Remetente nunca bloqueado Operating System Concepts 4.42 Silberschatz, Galvin and Gagne 2002 Comunicação Cliente-Servidor • Sockets • Chamadas de Procedimentos Remotos (RPC) • Invocação do Método Remoto (RMI - Java) Operating System Concepts 4.43 Silberschatz, Galvin and Gagne 2002 Sockets • Final de um canal de comunicação • Usa concatenação de endereço IP e porta como identificador • O socket 161.25.19.8:1625 • porta 1625 • host 161.25.19.8 • Comunicação feita entre pares de sockets Operating System Concepts 4.44 Silberschatz, Galvin and Gagne 2002 Comunicação entre Sockets Operating System Concepts 4.45 Silberschatz, Galvin and Gagne 2002 Chamada de Procedimento Remoto Transforma chamadas remotas em “locais” • Stubs • No servidor • recebe mensagem • recolhe parâmetros • executa procedimento • No cliente • substituto (proxy) do procedimento • localiza o servidor • junta os parâmetros Operating System Concepts 4.46 Silberschatz, Galvin and Gagne 2002 Execução de RPC Operating System Concepts 4.47 Silberschatz, Galvin and Gagne 2002 Invocação do Método Remoto • Mecanismo em Java similar a RPC Operating System Concepts 4.48 Silberschatz, Galvin and Gagne 2002 Recolhimento de Parâmetros Operating System Concepts 4.49 Silberschatz, Galvin and Gagne 2002