Baixe o app para aproveitar ainda mais
Prévia do material em texto
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition, Capítulo 3: Processos Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 2 Capítulo 3: Processos • Conceito de processo • Escalonamento de Processos • Operações em processos • Comunicação entre processos • Exemplos de Sistemas de Comunicação entre Processos - IPC • Comunicação em sistemas cliente-servidor Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 3 Objetivos • Introduzir a noção de processo – um programa em execução, que forma a base de toda computação • Descrever as várias características de processos, incluindo escalonamento (agendamento), criação, término e comunicação • Descrever a comunicação em sistemas cliente-servidor Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 4 Conceito de Processo Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 5 Conceito de Processo • Um sistema operacional executa uma variedade de programas: • Sistemas Batch (lote) – Jobs (tarefas) • Sistemas de Tempo Compartilhado – programas do usuário ou tarefas • OBS.: o livro texto usa os termos job e processo praticamente com o mesmo significado • Processo – um programa em execução • sua execução deve progredir de forma sequencial • Um processo inclui: • Contador de programa • Pilha (stack) • Seção de dados Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 6 Bloco de Controle de Processos (PCB) Informação associada com cada processo • Estado do processo • Número do processo (PID) • Contador de programa • Registradores da CPU • Informações • de escalonamento da CPU • para gerência de memória • de tarifação • de status de E/S Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 7 Estados de um Processo • À medida que um processo executa, seu estado é alterado • new: O processo é criado • running: Instruções são executadas • waiting: O processo está aguardando a ocorrência de algum evento • ready: O processo está aguardando para ser alocado a um processador • terminated: O processo finalizou sua execução Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 8 Escalonamento de Processos Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 9 Troca de Processos pela CPU Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 10 Filas para Escalonamento de Processos • Job queue – Conjunto de todos os processos do sistema • Ready queue – conjunto de todos os processos residindo na memória principal, prontos e aguardando para execução (estado ready) • Device queues – conjunto de processos esperando por um dispositivo de E/S (estado waiting) • Observe que os processos migram entre as várias filas, de acordo com seu estado Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 11 Ready Queue e Várias Device Queues de E/S Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 12 Representação do Escalonamento de Processos Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 13 Escalonadores de Longo e Curto Prazo • Long-term scheduler (ou escalonador de jobs) – seleciona quais processos devem ser trazidos para a ready queue • Short-term scheduler (ou escalonador da CPU) – seleciona qual processo deve ser executado em sequência (daqueles prontos) e faz a alocação da CPU Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 14 Escalonador de Médio Prazo Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 15 Escalonadores(Cont) • Short-term scheduler é chamado frequentemente (milisegundos) ⇒ (deve ser rápido) • Long-term scheduler é chamado com menos frequência (segundos, minutos) ⇒ (pode ser lento) • O LTS controla o grau de multiprogramação • Processos podem ser descritos como: • I/O-bound process – gastam mais tempo fazendo E/S do que computação, muitas rajadas curtas de CPU • CPU-bound process – Gastam mais tempo com computação; poucas rajadas longas de CPU Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 16 Troca de Contexto • Quando a CPU realiza a troca para um outro processo, o sistema deve fazer uma troca de contexto: • salvar o estado do processo antigo (atualizar o PCB na RAM) • carregar (na CPU) o estado salvo (na RAM) do novo processo • O contexto de um processo é representado no PCB • O tempo de troca de contexto gera overhead • O sistema não trabalha de forma útil durante a troca • Tempo dependente do suporte de hardware Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 17 Operações em Processos Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 18 Criação de Processos • Processos Pai criam Processos Filhos, que por sua vez, criam outros processos, formando uma árvore de processos • Geralmente, um processo é identificado e gerenciado via um identificador de processo (pid) • Opções de Compartilhamento de Recursos • Pais e Filhos compartilham todos os recursos • Filhos compartilham um subconjunto dos recursos dos pais • Pais e filhos não compartilham recursos • Execução • Pais e filhos executam concorrentemente (ex.: multi-threading) • Pais aguardam o término de execução dos filhos Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 19 Criação de Processos(Cont) • Espaço de endereçamento • Filho duplica o endereço do pai • Filho possui um programa carregado nele • Exemplo no UNIX • Chamadas de sistema fork criam novos processos • Chamada de sistema exec usada após um fork para substituir o espaço de memória do processo com um novo programa Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 20 Programa em C Forking Separate Process int main() { pid_t pid; /* fork o processo, criando um processo filho */ pid = fork(); if (pid < 0) { /* erro encontrado */ fprintf(stderr, "Falha na criação do processo filho"); exit(-1); }/* OBS (pid >= 0) indica sucesso no fork */ /* OBS (pid == 0) indica o processo filho */ else if (pid == 0) { /* processo filho criado e alocado */ execlp("/bin/ls", "ls", NULL); } /* OBS (pid > 0) indica o processo pai */ else { /*processo pai */ /* pai aguardará o filho completar */ wait(NULL); printf(“Filho completo"); exit(0); } } Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 21 Uma Árvore Típica de Processos no Solaris Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 22 Término de um Processo • Um processo executa sua última instrução e solicita ao sistema operacional a sua remoção (exit) da fila de processos • Mas antes, coleta a saída de dados do filho para o pai (via wait) • Os recursos do processo são desalocados pelo SO • O processo pai pode terminar a execução dos processos filhos (abort) • Processo filho excedeu os recursos alocados • Tarefa associada ao filho não é mais necessária • Se o processo pai está terminando • Alguns sistemas operacionais não permitem o processo filho continuar se o processo pai terminar – Todos os filhos são terminados – terminaçãoem cascata Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 23 Comunicação Inter-Processos Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 24 Comunicação Inter-Processos • Processos em um sistema podem ser independentes ou colaborativos • Um processo colaborativo pode ser afetado por outros processos, incluindo dados compartilhados • Razões para se ter processos colaborativos: • Compartilhamento de informação • Melhoria de desempenho • Modularidade (ex.: spellchecker invocado pelo LaTeX) • Conveniência (ex.: web browser + antivirus) • Processos colaborativos necessitam de comunicação inter-processos - interprocess communication (IPC) • Dois modelos de IPC • Memória compartilhada • Passagem de mensagens Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 25 Modelos de Comunicação Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 26 Colaboração entre Processos • Um processo independente não pode afetar ou ser afetado pela execução de um outro processo • Um processo colaborativo pode afetar ou ser afetado pela execução de outro processo • Vantagens da colaboração entre processos • Compartilhamento de informação • Melhoria de desempenho • Modularidade • Conveniência Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 27 O Problema Produtor-Consumidor • Paradigma de processos colaborativos; o processo produtor produz informação que é consumida por um processo consumidor • unbounded-buffer não restringe limite prático no tamanho do buffer • bounded-buffer assume a existência de um buffer de tamanho fixo Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 28 Bounded-Buffer – Solução de Memória Compartilhada • Dado compartilhado #define BUFFER_SIZE 10 typedef struct { . . . } item; item buffer[BUFFER_SIZE]; int in = 0; //aponta para a próxima posição livre do buffer int out = 0; // aponta para a primeira posição preenchida • OBS.: A solução está correta, mas somente pode usar BUFFER_SIZE-1 elementos Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 29 Bounded-Buffer – Produtor item nextProduced; while (true) { /* produz um novo item e armazena em nextProduced */ while ( ((in + 1) % BUFFER SIZE) == out) //buffer cheio ; /* não faz nada */ // coloca o item produzido no buffer buffer[in] = nextProduced; in = (in + 1) % BUFFER SIZE; } Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 30 Bounded Buffer – Consumidor item nextConsumed; while (true) { while (in == out) //buffer vazio ; /* não faz nada */ // remove um item do buffer nextConsumed = buffer[out]; out = (out + 1) % BUFFER SIZE; /* consome o item contido em nextConsumed */ } Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 31 Comunicação Inter-Processos – Passagem de Mensagens • Mecanismo para processos se comunicarem e sincronizarem suas ações • Sistema de Mensagem – processos se comunicam sem recorrer a variáveis compartilhadas • O mecanismo de IPC fornece duas operações: • send(mensagem) – tamanho da mensagem fixo ou variável • receive(mensagem) • Se P e Q desejam comunicar, eles precisam: • Estabelecer um link de comunicação entre eles • Trocar mensagens via send/receive • Implementação do link de comunicação • física(ex:, memória compartilhada, barramento de hardware) • lógica(ex: propriedades lógicas) Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 32 Questões de Implementação • Como os links são estabelecidos? • Um link pode ser associado com mais de dois processos? • Quantos links podem existir entre cada par de processos de comunicação? • Qual é a capacidade de um link? • O tamanho de uma mensagem que um link pode acomodar é fixo ou variável? • Um link é unidirecional ou bi-direcional? Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 33 Comunicação Direta • Processos devem nomear um ao outro explicitamente: • send (P, mensagem) – envia uma mensagem para um processo P • receive(Q, mensagem) – recebe uma mensagem de um processo Q • Propriedades de um link de comunicação • Links são estabelecidos automaticamente • Um link é associado com exatamente um par de processos de comunicação • Entre cada par existe exatamente um link • O link pode ser unidirecional, mas é normalmente bi-direcional Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 34 Comunicação Indireta • Mensagens são direcionadas e recebidas de caixas de mensagens - mailboxes (também referenciadas como portas) • Cada mailbox tem um único id • Os processos pode comunicar somente se eles compartilharem um mailbox • Propriedades do link de comunicação • O link é estabelecido somente se os processos compartilharem uma caixa de mensagem em comum • Um link pode ser associado com vários processos • Cada par de processos podem compartilhar vários links de comunicação • Um link pode ser uni ou bi-direcional Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 35 Comunicação Indireta • Operações • Criar uma nova caixa de mensagem • Enviar e receber mensagens através da caixa de mensagens • Destruir uma caixa de mensagem • As primitivas são definidas como: send(A, mensagem) – envia uma mensagem para uma caixa de mensagem A receive(A, mensagem) – recebe uma mensagem de um uma caixa de mensagem A Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 36 Comunicação Indireta • Compartilhamento de uma caixa de mensagem • P1, P2, e P3 compartilham uma caixa de mensagem A • P1, envia; P2 e P3 recebem • Quem obtêm a mensagem? • Soluções • Permitir um link ser associado com no máximo dois processos • Permitir somente um processo por vez executar uma operação de recepção • Permitir que o sistema selecione arbitrariamente o receptor. O remetente é notificado que foi o receptor. Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 37 Sincronização • A passagem de mensagem pode ser tanto blocking ou non-blocking • Blocking é considerada síncrona • Blocking send bloqueia o remetente até que a mensagem seja recebida • Blocking receive bloqueia o receptor até que uma mensagem esteja disponível • Non-blocking é considerada assíncrona • Envio Non-blocking o remetente envia a mensagem e continua • Recepção Non-blocking o receptor recebe uma mensagem válida ou null Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 38 Buffering • Fila de mensagens anexadas ao link; implementada em uma de três formas 1. Capacidade zero – 0 mensagem Remetente deve esperar até o destinatário receber a msg 2. Capacidade limitada – tamanho finito de n mensagens. O remetente deve aguardar se o link estiver cheio 3. Capacidade ilimitada – tamanho infinito. O remetente nunca espera Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 39 Exemplos de Comunicação Inter-Processos Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 40 Exemplos de Sistemas IPC - POSIX • Memória compartilhada no POSIX • O processo primeiramente cria um segmento de memória compartilhada segment id = shmget(IPC PRIVATE, size, S IRUSR | S IWUSR); • O processo que quer acesso a esta memória compartilhada deve se anexar a ela shared memory = (char *) shmat(id, NULL, 0);• Agora o processo pode escrever na memória compartilhada sprintf(shared memory, "Writing to shared memory"); • Quando pronto, um processo pode desconectar a memória compartilhada do se espaço de endereçamento shmdt(shared memory); Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 41 Exemplos de Sistemas IPC - Mach • A comunicação no Mach é baseada em mensagens • Mesmo as chamadas de sistema são mensagens • Cada tarefa obtêm duas caixas de mensagens no momento de criação – Kernel e Notify • Somente três chamadas de sistema são necessárias para a transferência de mensagem msg_send(), msg_receive(), msg_rpc() • Caixas de mensagem necessárias para comunicação, criadas via port_allocate() Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 42 Exemplos de Sistemas IPC - Windows XP • Passagem de mensagem via mecanismo (LPC) - local procedure call • Somente funciona entre processos no mesmo sistema • Usa portas (da mesma forma que mailboxes) para estabelecer e manter os canais de comunicação • A comunicação funciona da seguinte maneira: • O cliente abre um handle para o objeto da porta de conexão do subsistema • O cliente envia uma requisição de conexão • O servidor cria duas portas de comunicação privadas e retorna o handle para um deles para o cliente • O cliente e o servidor usam o handle da porta correspondente para enviar mensagens e callbacks e escutar por respostas Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 43 Chamadas Locais de Procedimento no Windows XP Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 44 Comunicação Cliente-Servidor Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 45 Comunicação em Sistemas Cliente-Servidor • Sockets • Chamadas Remotas de Procedimento - Remote Procedure Calls • Pipes • Invocação Remota de Métodos - Remote Method Invocation (Java) Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 46 Sockets • Um socket é definido como um ponto final para comunicação - endpoint for communication • Concatenação do endereço IP e a porta • O socket 161.25.19.8:1625 refere-se à porta 1625 no host 161.25.19.8 • A comunicação consiste entre um par de sockets Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 47 Comunicação com Socket Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 48 Chamadas Remotas de Procedimento - RPC • Chamadas remotas de procedimento (RPC) abstraem as chamadas de procedimento entre processos em sistemas em rede • Stubs – proxy do lado-cliente para o procedimento no servidor • O stub no lado-cliente localiza o servidor e faz o empacotamento - marshalls - dos parâmetros • O stub do lado servidor recebe esta mensagem, desempacota os parâmetros que estavam empacotados, e executa o procedimento no servidor Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 49 Execução de RPC Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 50 Pipes • Agem como um conduíte permitindo a comunicação de dois processos • Questões • A comunicação é unidirecional ou bidirecional? • No caso da comunicação bidirecional, ela é half ou full-duplex? • Deve existir um relacionamento (ex: pai-filho) entre os processos de comunicação? • Os pipes podem ser usados sobre uma rede? Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 51 Pipes Comuns • Os Pipes Comuns permitem a comunicação no estilo padrão produtor- consumidor • O produtor escreve em um extremo - end (o extremo de escrita do pipe) • O consumidor lê no outro extremo (o extremo de leitura do pipe) • Os pipes comuns são portanto, unidirecionais • Requerem um relacionamento pai-filho entre os processos de comunicação Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 52 Pipes Comuns Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 53 Pipes Nomeados • Os pipes nomeados são mais poderosos que os pipes comuns • A comunicação é bidirecional • Não é necessário o relacionamento pai-filho entre os processos de comunicação • Vários processos podem usar o pipe nomeado para comunicação • Fornecido tanto em sistemas UNIX como Windows Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition, Fim do Capítulo 3
Compartilhar